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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
/*        名称:74HC595串入并出芯片应用' Q9 ^6 V) h( D( J
        说明:74HC595是具有一个8位串入并出的移位寄存器和一个8位输出寄存器,
. F6 e: ^' n4 R        本例利用74HC595,通过串行输入数据来控制数码管的显示。7 w5 r+ ?6 q3 c& y5 ], k
*/7 B3 p$ t7 z! `' p% I
#include<reg51.h>) V: Q% d- l( a8 P9 R' [
#include<intrins.h>
0 [! Y! b$ F/ f" \#define uchar unsigned char! U8 ~  E4 T) b6 P) i
#define uint unsigned int
$ m; B2 D. |. v! {! @3 E# Nsbit SH_CP=P2^0;                //移位时钟脉冲8 @; b- J" J0 {- q1 F
sbit DS=P2^1;                        //串行数据输入
! x9 c/ f3 b5 c9 usbit ST_CP=P2^2;                //输出锁存器控制脉冲
9 w) T( f: @( R+ Zuchar temp;! W' z8 a1 N  W8 H
uchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};* W4 ~) s/ |# A) o% m5 q+ _  F
//延时% v- U0 Z5 \1 }2 S/ X
void DelayMS(uint ms)' @* ~# t8 y' [" i
{- c- l( ?, E* b! B- i, T" H- O
        uchar i;
$ q  |7 a1 |: e5 I3 V        while(ms--) for(i=0;i<120;i++);
8 {7 z* F% r' J* z9 L% _}% t8 m3 \0 x8 |; R3 M9 C
//串行输入子程序
* A, v( X2 o0 j- Q2 e2 evoid In_595()
7 s" I% `8 X/ W! @{' d" g- p. \% s. Z$ j/ k3 A$ Q
        uchar i;" b% S0 ]' N3 W/ c- `) a+ G6 y
        for(i=0;i<8;i++)6 D# s9 @! g" H
        {
; y  q! R3 E4 J9 @3 I# s+ c                temp<<=1;DS=CY;
* q7 |% Z/ n$ w2 [: W                SH_CP=1;                //移位时钟脉冲上升沿移位- a2 s) L: f. I' k, ^
                _nop_();_nop_();" U' p" e% d' \# i/ N$ S2 P& e
                SH_CP=0;& f0 e$ d7 h6 J, T9 o; B
        }
2 O! ^! c$ y- a2 ~* G* }}3 P( R# K% ?9 q6 x) _" e
//并行输出子程序4 a/ B4 ~* s5 ]
void Out_595()
) i( g' j4 Y" b! L+ p1 N# O{
4 Z& {! t" s' W- K3 ~6 e        ST_CP=0;_nop_();" {; c) N& G. G, h2 l, X
        ST_CP=1;                //上升沿将数据送到输出锁存器4 \; T. c4 N/ ?/ ~1 U
        _nop_();# a- t; ^7 m! W8 A
        ST_CP=0;                //锁存显示数据+ o6 W# c4 a; ?: h( i
}* \: W9 \/ p9 w, \
//主程序
+ C& w4 g5 e# V5 @5 Y" hvoid main()7 h6 g" O2 a) l, @9 F" E
{
) ^# W+ N. H6 `3 g. }% l        uchar i;
0 G: f* ^# a9 S- z: {        while(1)" u. h+ A) Q6 f
        {
' s7 g; B" T: w( Q/ `                for(i=0;i<10;i++)
( ^, h( r8 Y" q+ z! g6 e                {
* H& b4 C' q- |& k+ [2 C9 D                        temp=DSY_CODE[ i];
! G" C9 G8 v( p9 c                        In_595();                        //temp中的一字节数据串行输入74HC595) n. F- L! M6 f- T, a
                        Out_595();                        //74HC595移位寄存数据传输到存储寄存器并出现在输出端5 x" Z8 h4 b0 d* v8 l  ^
                        DelayMS(200);
% f  l* {* A, e/ B( C4 P9 _5 e                }               ( ~9 N: S/ [3 ?; ]) f
        }5 R( L4 y# Y  @* j" u
}5 R. e2 l8 Q# C3 \+ X
--------------In_595()-------------这个函数啥意思?都没看到有定义啊
! d% w, ?) @1 p0 \+ N  B" i/ K1 U+ d
2 w  J  q2 {/ F# @

该用户从未签到

2#
发表于 2021-11-15 13:45 | 只看该作者
void In_595()/ N% B( l! b( G8 a0 X
{
& h& \4 j% i1 L+ z( r        uchar i;2 `, Y' n9 c" v4 y; Q
        for(i=0;i<8;i++)
8 |3 e% C& m/ q        {5 ^( O$ f* r! |4 ~- V9 n
                temp<<=1;DS=CY;. E- o, ~6 B$ g% \+ Y0 d# U8 v
                SH_CP=1;                //移位时钟脉冲上升沿移位  E; Q/ `; \2 }5 k% `
                _nop_();_nop_();
, ]. `6 g' e- z3 Z0 ?$ e" v2 Q                SH_CP=0;4 s% ~) m- t$ g6 `1 j
        }, ]- E' z/ ^( Z2 j1 g- ]: r
}" n: r/ C! A( O$ B& _. k' ]# ?8 o+ \

& J9 O* A0 m1 @9 ~2 {7 e8 A上面就是 In_595() 的原函数。

该用户从未签到

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

5 M0 s% L. b' `; L, j你这C语言学的,如果在调用之前定义,就不用声明,如果在调用之后定义,就需要声明一下,然后就可以在调用之后去定义这个函数。, D5 e2 Z, o# K/ p" c# Y/ ]
还有,你都没有搞清楚声明和定义的意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-15 04:18 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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