找回密码
 注册
关于网站域名变更的通知
查看: 233|回复: 2
打印 上一主题 下一主题

单片机C语言没定义的函数怎么理解?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-11-15 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
/*        名称:74HC595串入并出芯片应用
. s$ L* F8 D1 ~5 e; r3 w7 z        说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器,  q0 }) _: }1 o
        本例利用74HC595,通过串行输入数据来控制数码管的显示。
  s3 F& K) B! \: ]$ k*/
# Z; a3 F. P1 ~2 v#include<reg51.h>* k8 ~( M2 ^) c- p( M2 D  c
#include<intrins.h>
1 M" s7 d# P/ y1 y7 ?#define uchar unsigned char
1 h8 Q# O% X- Z0 h3 c+ G: r#define uint unsigned int1 w3 j/ ~) P8 o9 ]. a
sbit SH_CP=P2^0;                //移位时钟脉冲! D3 c9 s" @9 [# W& T: s
sbit DS=P2^1;                        //串行数据输入5 \; h8 f7 Z  [' s4 L9 `
sbit ST_CP=P2^2;                //输出锁存器控制脉冲; @  @( _0 l; _0 I
uchar temp;% x7 w" @  [$ l) L0 ~, y5 D
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
6 C# y8 K4 @0 r; R+ e4 V7 ^//延时
( B2 Y; o0 K& J- |. V9 K4 avoid DelayMS(uint ms)# B+ }2 r5 @" h6 M! t# J$ x
{
1 Q( {. D9 O) x$ h+ ?        uchar i;5 b1 {! W. J) {, g% U2 ~1 Z
        while(ms--) for(i=0;i<120;i++);' v) J4 Z# a$ ?# c$ p4 W- k7 E
}' W- K) \( A# ~  n9 i' ]+ D
//串行输入子程序
3 U/ e3 n3 X0 ^: c% Avoid In_595()7 v7 Y3 g1 H7 ], T: ~0 G0 y( _
{- s! g1 `; v3 x7 {, a
        uchar i;  m8 @- B6 S6 q) L, c2 T$ \% ?* E
        for(i=0;i<8;i++)" P) t, m8 z2 ~: M) K1 X9 e
        {0 d/ S  D; e2 T8 F
                temp<<=1;DS=CY;
7 o5 K$ o' Z( D9 g4 @                SH_CP=1;                //移位时钟脉冲上升沿移位
& Q$ b" `  D# s  \3 f                _nop_();_nop_();" q1 l/ s% D- j( g
                SH_CP=0;
9 c; x. Q+ o' p1 f% |8 V* y! k        }" w2 ?# x2 j8 E$ G
}
6 P- K1 d$ e* E1 t! P: H//并行输出子程序- y" }! H4 E8 _( J: W% y
void Out_595()# Y% v, |, C& d7 a3 q$ e% S
{
, Z$ ?9 p" B2 J9 E        ST_CP=0;_nop_();  \! z: M' Q8 c
        ST_CP=1;                //上升沿将数据送到输出锁存器! G) Y3 y* C9 {$ \: T' e: |4 }
        _nop_();# N; a: b2 B- z5 r* |& H
        ST_CP=0;                //锁存显示数据$ W1 b) E" |) m+ e# r4 e$ k
}+ F: d8 _: S) T- W8 @
//主程序( H; s, L. G/ C6 Z8 z
void main()
; A2 \$ o. O& m{7 I9 q) y7 m$ ~: S" n
        uchar i;4 K. _. C+ \: H3 A& E9 b3 E8 B0 u/ h
        while(1)
9 ~. v9 G8 ~. G' B) t5 U        {( u5 O* x- Y/ c5 o+ S
                for(i=0;i<10;i++)7 K$ P4 e* \  w4 ~1 i- {
                {! {/ g- G+ U( d/ s4 [  z  y
                        temp=DSY_CODE[ i];& a/ F: x4 J: m) \; b0 `
                        In_595();                        //temp中的一字节数据串行输入74HC595
0 f: ~+ N2 k5 x5 M( R7 }  {                        Out_595();                        //74HC595移位寄存数据传输到存储寄存器并出现在输出端
6 F! |+ d; }! o, H/ D4 f                        DelayMS(200);6 S7 `) p" u/ _( i" S+ W3 }
                }               
8 `5 p# O( x  k        }
; T; d( v0 T9 K}
6 [, M$ X( M( z--------------In_595()-------------这个函数啥意思?都没看到有定义啊* y% K1 w: _% P
* r4 n0 X6 L/ y$ ^

该用户从未签到

2#
发表于 2021-11-15 13:45 | 只看该作者
void In_595()4 Z, V  }6 G% v& j2 {- S
{: K! s# M/ C; ?" y: M. P9 t, a" c! q
        uchar i;
" r5 A% a" ~  S+ b        for(i=0;i<8;i++)1 k8 w! h) O- }
        {
0 Q( l' v( o. u9 }# p+ B. S: }# G0 y                temp<<=1;DS=CY;
' e) b9 E6 k; t" Z/ \+ m                SH_CP=1;                //移位时钟脉冲上升沿移位3 Q0 ]  E0 {) m  p9 j4 }
                _nop_();_nop_();" p% k" x. R( s7 L* |2 P
                SH_CP=0;
) `5 \. y, ~3 t3 H1 U0 O        }) ?6 _/ P( h; N1 F" d, Q
}
' v$ k2 E2 M# \# A5 u7 U
0 v1 y2 b2 w& U9 [" D9 O% U: N上面就是 In_595() 的原函数。

该用户从未签到

3#
发表于 2021-11-15 14:20 | 只看该作者
* x1 G& }7 E9 D$ c  a& V3 K; G
你这C语言学的,如果在调用之前定义,就不用声明,如果在调用之后定义,就需要声明一下,然后就可以在调用之后去定义这个函数。
( G. Y3 b2 D' b; t8 F0 V5 l8 M还有,你都没有搞清楚声明和定义的意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-10 06:23 , Processed in 0.156250 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表