|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机流水灯例程分析 $ f: n5 X3 l( b0 |" i
3 Q( ?6 N2 V& x( U, p
) Q- c* D6 t* B8 h% ^$ k
void main()
/ V l4 R3 l* o{+ y0 ^+ F8 y6 F- k$ |2 G Y
% _# {0 C+ B' c
temp=0xfe; 把0xfe转化为二进制为 1111 1110; {4 o: n+ G; B9 s6 j+ U: I1 D
while(1)
, b) R2 n1 g: A9 j{
5 w: j( L7 z3 n% }, {9 ^for(num1=0;num1<3;num1++) for循环,,3次 此for内程序 执行3此4 n# J+ ^8 \8 [! j% G5 G) P
{ - w; f* I1 h4 D5 S# |
for(num=0;num<8;num++) for循环,,8次 对应八个流水灯 此for程序执行八次
: d2 N& G% B `7 `! s { A) X5 Z7 P9 V' {0 {
P1=temp; 把temp的值0xfe赋给P1口此时只亮第一盏灯
( y- z. ]0 ?/ s( n% k8 k beep=0; 蜂鸣器报警
: c7 U9 ~, R, H- x; X delay(100); 延时
5 I% v7 f' R0 V/ ^. w# a4 s temp=_crol_(temp,1); temp移位,一位 此时temp=0xfd,二进制为1111 1101# t5 G; R' r7 H) M
P1=0xff; LED全灭;% f2 s3 R/ ^0 G7 K
beep=1; 关闭蜂鸣器% i1 x( O) K l% s' Q! ~
delay(100); 延时% ^+ `. o0 I* I. Z
}
- H# M4 X' v5 a+ L) U" C }
5 V. O/ ]8 J. A在第二次循环中,首先把temp的值(0xfd)赋给P1口,蜂鸣器报警,# Q. F5 N1 k* E& P
延时 temp再次移位移位fb 转换为二进制为1111 1011LED全灭,关3 b3 I# k& n0 ~" o, R: ^$ z
闭蜂鸣器 延时2 `/ a. V* h6 o x3 U
此程序现象分析:蜂鸣器报警,流水灯流动,LED全部熄灭,蜂鸣器关闭,此现象依次循环
6 K+ r* K8 j& A% \/ ]5 V/ d$ `7 i! a* U. J9 U* @% x" O8 e; ]/ }1 f
+ p y( d- p2 s
流水灯程序分析/ D) m' D# z9 B- M6 a8 I- i
void main()8 U# Z/ Z4 h- P' n+ h
{$ ~1 O& H% h' N" P
temp=0xfe; 初始化temp值二进制为1111 1110
, `2 @7 Z; b) Y& v. PP1=temp;, s3 P: B1 Z( j% Q5 P, `
while(1): ` g; \$ k7 z. R( v" @2 \# K; A+ Y
{8 Z" z6 g0 L! D! E2 s
temp=_crol_(temp,1); temp移位为 1111 1101
8 A' i9 J% Z' b/ g0 t2 h delay(100); 延时
0 D- @9 f7 s- Q T J6 {$ r3 b P1=temp; 将temp值0xfd即1111 1101赋给P1口 输出. ~2 ]: ]3 F; o+ N
} u" J$ o: \ |
}
8 ^) O, l% i |) K8 y此函数运行过程为 temp移位 P1输出,temp移位 P1输出 依次类推$ \& W$ F4 _8 V$ B0 {
|
|