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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
/*        名称:74HC595串入并出芯片应用
& S5 q9 w) a. u        说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器,$ S! U2 S" b0 q6 d5 n
        本例利用74HC595,通过串行输入数据来控制数码管的显示。8 p' V) ?3 Y# e6 s' |
*/( M, _' _- B9 V& H3 u
#include<reg51.h>
- ~8 U' o# L1 P) q# m! v+ _! T#include<intrins.h>' @, ]$ j0 l; |- D* X7 U1 m& W
#define uchar unsigned char
& M) J& e6 l2 r1 }#define uint unsigned int$ E. N7 R7 w% T! y# {
sbit SH_CP=P2^0;                //移位时钟脉冲: \9 W/ u& r: R, x% \
sbit DS=P2^1;                        //串行数据输入, s4 K4 a4 q6 Q! z8 M8 o7 S3 i4 I' u
sbit ST_CP=P2^2;                //输出锁存器控制脉冲3 e7 i: V8 r) X0 u6 B: V8 O
uchar temp;
9 r1 u3 i" f  |& Puchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
7 z$ S% W1 I: T  V0 H/ e. v//延时
( l% q, w% Z1 V" E# G. v9 Pvoid DelayMS(uint ms)
' ^' Y1 O6 x$ y7 b* V{1 i2 q9 ~% `& ]  V6 u) z
        uchar i;
9 I! X6 p' X1 B4 O        while(ms--) for(i=0;i<120;i++);3 m; Y6 b& z7 d  y* A
}
* K: [$ w5 e- U6 ?9 l- d7 p//串行输入子程序
1 A9 d' d+ w: T" c( N6 rvoid In_595()3 q! @) T. I7 E% P5 {) q' `. {& B
{! ]  I0 r; h9 T8 Z
        uchar i;
7 X: Q. t3 A! `* F2 |        for(i=0;i<8;i++)7 e" z3 ?# k9 E8 j6 g- `
        {/ Q* m) e' E1 H3 Z
                temp<<=1;DS=CY;% Z2 `3 f: \! i5 Q3 D# A% O
                SH_CP=1;                //移位时钟脉冲上升沿移位1 Q, R0 ~2 V1 G- _
                _nop_();_nop_();1 X" e1 o, |& n' S9 d. V" W
                SH_CP=0;  D6 ^5 x" l4 Z* x# n
        }
5 r) [% g! X( ~+ @2 m! M* T+ G+ j  ~  e2 E}
' _1 z6 x9 y9 N( I$ @- }//并行输出子程序, \( }7 y# B( |# A
void Out_595()
! p6 X& y) v. l' V4 s6 t; O{
$ S7 J- F4 C; @        ST_CP=0;_nop_();- D, x# C' c) q( h% _) T+ Z! k6 e
        ST_CP=1;                //上升沿将数据送到输出锁存器
; _8 v$ Z0 {: M  R        _nop_();
3 ?6 F4 R0 \% r+ h0 G) X        ST_CP=0;                //锁存显示数据
& d  u. h( u, i2 R}# F: e3 a/ P8 O/ I1 z; K
//主程序
, w9 k/ m" j/ g( F$ s: e8 G9 ]void main()' K, t" O  \6 H0 K% ]2 @
{
- z0 G# `, o0 m        uchar i;7 _& j0 Z3 q7 ?& [" G. P/ X8 w, z
        while(1)+ R5 u/ E9 b& f, w
        {
; J: R7 }- f; L; t5 Z" \( z                for(i=0;i<10;i++)2 e% \3 }  W* X9 D
                {) J3 j4 f. H  O$ Q* I* Z% K
                        temp=DSY_CODE[ i];
: K* B( T; |7 R                        In_595();                        //temp中的一字节数据串行输入74HC595
6 |, W9 d# X8 E7 n8 b                        Out_595();                        //74HC595移位寄存数据传输到存储寄存器并出现在输出端
& M" A; I3 ~1 I- K7 b- D2 C1 e                        DelayMS(200);9 `2 s# Z  o$ Y7 U$ h7 W
                }               & K- ~6 q; h" j1 |
        }
: p+ H, m# x/ [) c6 R# B}1 ^% A/ c* a' v) j
--------------In_595()-------------这个函数啥意思?都没看到有定义啊
" N' E+ e+ H2 `9 y9 D) u

9 n6 P2 v0 a2 p) T3 i) S% l* M% ?

该用户从未签到

2#
发表于 2021-11-15 13:45 | 只看该作者
void In_595()7 R3 K! k5 h' G6 _0 R9 E
{
- v* N; E( Q2 E# ]" Z        uchar i;
# e: T! @" i; O- I" l7 z, m7 y        for(i=0;i<8;i++)- H, d/ A  Y, Y! E- t3 c+ L. b
        {
' W! M3 n2 ^% E- \                temp<<=1;DS=CY;( e7 O- K1 m; Y, ^4 B; W" L4 _0 w4 x
                SH_CP=1;                //移位时钟脉冲上升沿移位
2 r, ~; D; S0 ]3 b2 b6 z                _nop_();_nop_();
8 z- `0 n6 ~! h' {, g; B                SH_CP=0;
8 v/ S# W  @" n  G        }& n$ z, _+ w% u" Y) d/ _
}
( g% @- G* I9 a4 z
# r, e. M5 {: w4 M) m) @7 ]1 U* a上面就是 In_595() 的原函数。

该用户从未签到

3#
发表于 2021-11-15 14:20 | 只看该作者

8 t' X: _3 @3 E( X你这C语言学的,如果在调用之前定义,就不用声明,如果在调用之后定义,就需要声明一下,然后就可以在调用之后去定义这个函数。
' d8 ~/ ~9 U' }4 l4 P3 @7 ?9 R$ m还有,你都没有搞清楚声明和定义的意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-20 03:28 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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