|
我想使用單片機定時器T0產生的中斷制作跑馬燈
單片機程序源碼:
- #include<reg51.h>
- void main(void)
- {
- EA = 1;
- ET0 = 1;
- TMOD = 0x01;
- TH0 = 15536 / 256;
- TL0 = 15536 % 256;
- TR0 = 1;
- P0 = 0xfe;
- while(1)
- ;
- }
- void Time0(void) interrupt 1 using 0
- {
- P0 <<= 1;
- if (P0 != 0xff)
- P0 |= 1;
- else
- P0 = 0xfe;
- TH0 = 15536 / 256;
- TL0 = 15536 % 256;
- }
復制代碼 這樣的話八個led只會執行一次循環后無反應
而將P0 <<= 1;if (P0 != 0xff)
P0 |= 1;
else
P0 = 0xfe; 換成_crol_(P0, 1);后,
效果如圖:
希望各位解答一下這兩種情況的原因
|
|