|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
51单片机流水灯例程分析
3 V3 \9 s) w2 F9 L" A6 ?5 [% I4 y! m
5 G' K- C6 N# V8 ?$ q: {8 y
void main()
5 n6 ]7 d. ^1 {5 m) F& m, _{
" c% T6 W" N; }% v% f. s- K. d$ ^1 p. C2 Z& ~, ~/ A2 _
temp=0xfe; 把0xfe转化为二进制为 1111 1110
9 s5 h0 o. s8 J" T8 xwhile(1)
. `- z: e! i F{
2 o1 s( j1 {( vfor(num1=0;num1<3;num1++) for循环,,3次 此for内程序 执行3此* ]6 U+ X# H0 }# }) p1 H
{
9 X# g5 v7 p; E7 c3 E for(num=0;num<8;num++) for循环,,8次 对应八个流水灯 此for程序执行八次
' l) Z, x% D# i: P* q1 T {
# l2 x! ?$ u: k# Z! {5 [ P1=temp; 把temp的值0xfe赋给P1口此时只亮第一盏灯
1 Y6 ^2 |1 _" I! i. ~: i9 j. F beep=0; 蜂鸣器报警4 F( o" u8 Y' J w# I
delay(100); 延时
* v. M ^( ^! t) e temp=_crol_(temp,1); temp移位,一位 此时temp=0xfd,二进制为1111 1101
/ K- g1 ^ H5 f4 ~5 S5 m P1=0xff; LED全灭;) E: M, v$ \8 f6 a) Y
beep=1; 关闭蜂鸣器
- V" ]7 n2 i7 b delay(100); 延时8 c( w* O, Y$ F+ S; d: {4 Y
}6 ?& T1 w; v% j/ N: Q
}1 C6 o4 Y5 }. U) G1 g( Q# o
在第二次循环中,首先把temp的值(0xfd)赋给P1口,蜂鸣器报警," o+ v: p9 m* s6 s) @/ L9 j
延时 temp再次移位移位fb 转换为二进制为1111 1011LED全灭,关! H) @% S8 y/ T. Y
闭蜂鸣器 延时
( V0 L, O1 c+ i8 }; h" b此程序现象分析:蜂鸣器报警,流水灯流动,LED全部熄灭,蜂鸣器关闭,此现象依次循环
3 w$ u0 K" y, l
8 u8 O. v+ g* d) q$ U0 n. ]$ V' M% l
流水灯程序分析* C$ N, _6 q3 k& l/ r" L% i
void main()" G: v$ A- T) l! v6 I) Q; M
{
! x0 t7 s' `% D* `0 R8 ~. G. Ytemp=0xfe; 初始化temp值二进制为1111 11108 s( L: b8 A* h0 ^2 P
P1=temp;4 X' e9 R# c% V6 y& A! u
while(1)
_3 s0 [2 h! Y6 {3 |3 D( i{( l8 e: |5 x. ^) T( K$ V
temp=_crol_(temp,1); temp移位为 1111 1101
s: {5 x! A: X5 _ delay(100); 延时1 R) f; H G( k/ f2 w6 I" v8 h; M& _
P1=temp; 将temp值0xfd即1111 1101赋给P1口 输出$ ^: F5 u" B6 U7 i
}
0 E' U5 X. h0 c: d}8 `2 O ~) r; W& g# H/ E2 B
此函数运行过程为 temp移位 P1输出,temp移位 P1输出 依次类推
' B& @: Z/ t3 h6 r# Q |
|