|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机流水灯例程分析 # |2 [- E' ?8 G( r
& x4 P" t8 q+ z7 p
- M, d6 T5 f1 b& V
void main()
% S) u2 w. l0 ?7 _' U1 S{
* T# f5 B/ A3 k U& v3 ]3 G. B3 o6 [0 _: ~( h. u
temp=0xfe; 把0xfe转化为二进制为 1111 1110
" L! b4 l6 y" G* A3 `; Mwhile(1)
& `" [$ o5 j0 u% q{ ' I. P/ Q5 H. g5 k
for(num1=0;num1<3;num1++) for循环,,3次 此for内程序 执行3此
2 E9 J9 x% J% U0 @( t B& { { / n" k( u1 m. b7 p0 J/ T) {& \
for(num=0;num<8;num++) for循环,,8次 对应八个流水灯 此for程序执行八次. ~* { S r% ^6 u# l4 ~( Z0 }
{
, z+ @* g7 l3 e9 _ P1=temp; 把temp的值0xfe赋给P1口此时只亮第一盏灯8 \4 \. ~' ~! z- Y% Y z$ W
beep=0; 蜂鸣器报警
+ D8 r7 e* u$ u" {2 I delay(100); 延时5 x2 [/ T( K( Z0 z0 I7 r
temp=_crol_(temp,1); temp移位,一位 此时temp=0xfd,二进制为1111 1101
5 B g% L: g) U E7 P D+ { P1=0xff; LED全灭;' d) D" D! ?* [& W5 J( T
beep=1; 关闭蜂鸣器
+ _! @; c3 m3 E! p delay(100); 延时
( h g( ^ S7 a& M: s }
. H8 J! C X9 {( c; K* q; h$ Z ? } P& A+ }( J; Z9 N# s' T
在第二次循环中,首先把temp的值(0xfd)赋给P1口,蜂鸣器报警,
0 w: L+ ^ [- D# T4 g5 c+ I+ P延时 temp再次移位移位fb 转换为二进制为1111 1011LED全灭,关
/ V' a2 e% I8 v7 |闭蜂鸣器 延时
' s/ P5 }+ r' S! Q此程序现象分析:蜂鸣器报警,流水灯流动,LED全部熄灭,蜂鸣器关闭,此现象依次循环9 x7 K/ h5 X3 V% J1 b. H
( t& p# ~0 i5 B& k# `3 Z6 k) P. }! m- X
流水灯程序分析7 t" h5 E1 ]( ~" |) ?6 A
void main()/ O9 }* Y) l7 B
{
* w) }" b2 V6 J1 [5 b+ ~) z6 l# ptemp=0xfe; 初始化temp值二进制为1111 1110 ?5 b8 k9 ?. N* ~$ L! `, t
P1=temp;$ x1 \7 y/ H" s, o% H
while(1)- W! N; q4 e: e$ j1 m7 ^- \# r% N
{$ F) s" g5 x8 v8 o* q/ b
temp=_crol_(temp,1); temp移位为 1111 1101
6 Z* x4 Q2 u2 r. q' K delay(100); 延时 n9 F9 }* S7 h# }( l+ a: y
P1=temp; 将temp值0xfd即1111 1101赋给P1口 输出* ]6 h, g+ h5 q% Z5 \
}& E* E- R! T4 z
}
: K% X! Z5 d& c+ W. _1 L此函数运行过程为 temp移位 P1输出,temp移位 P1输出 依次类推
+ D6 a& P) X1 F/ ~8 s7 K q0 Y/ c |
|