欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 關(guān)于51單片機(jī)定時中斷的程序問題? [打印本頁]

作者: xunuo    時間: 2018-12-10 22:03
標(biāo)題: 關(guān)于51單片機(jī)定時中斷的程序問題?
我想使用單片機(jī)定時器T0產(chǎn)生的中斷制作跑馬燈

單片機(jī)程序源碼:
  1. #include<reg51.h>

  2. void main(void)
  3. {
  4.         EA = 1;
  5.         ET0 = 1;
  6.         TMOD = 0x01;
  7.         TH0 = 15536 / 256;
  8.         TL0 = 15536 % 256;
  9.         TR0 = 1;
  10.         P0 = 0xfe;
  11.         while(1)
  12.                 ;
  13. }

  14. void Time0(void) interrupt 1 using 0
  15. {
  16.         P0 <<= 1;
  17.         if (P0 != 0xff)
  18.                 P0 |= 1;
  19.         else
  20.                 P0 = 0xfe;         
  21.         TH0 = 15536 / 256;
  22.         TL0 = 15536 % 256;
  23. }
復(fù)制代碼
這樣的話八個led只會執(zhí)行一次循環(huán)后無反應(yīng)
而將P0 <<= 1;if (P0 != 0xff)
P0 |= 1;
else
P0 = 0xfe; 換成_crol_(P0, 1);后,
效果如圖:
希望各位解答一下這兩種情況的原因


QQ截圖20181206232137.png (120.4 KB, 下載次數(shù): 18)

QQ截圖20181206232137.png

作者: mosqu    時間: 2018-12-11 09:28
P0 <<= 1;
        if (P0 != 0xff)
                P0 |= 1;
        else
                P0 = 0xfe;
P0到0xff的時候執(zhí)行else P0 = 0xfe,然后下一個定時觸發(fā)的時候又左移一位,變成0xff在這里重復(fù)了

_crol_();你有沒有加頭文件intrins.h的
作者: HC6800-ES-V2.0    時間: 2018-12-11 10:36
我已經(jīng)試驗出這個結(jié)果:
你說:換成_crol_(P0, 1);后

這個應(yīng)該是P0=_crcl_(P0,1),結(jié)果就是正確的
作者: HC6800-ES-V2.0    時間: 2018-12-11 10:53
總算搞清楚了。
這樣改就對了:
        P2 <<= 1;
             P2 |= 1;
        if(P2 == 0xff)
               P2 = 0xfe;
你自己想想流程吧,有點考人,呵呵
作者: xunuo    時間: 2018-12-21 00:18
HC6800-ES-V2.0 發(fā)表于 2018-12-11 10:36
我已經(jīng)試驗出這個結(jié)果:
你說:換成_crol_(P0, 1);后


謝謝指導(dǎo)
作者: xunuo    時間: 2018-12-21 00:18
mosqu 發(fā)表于 2018-12-11 09:28
P0

謝謝提醒




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1