標(biāo)題: 在52單片機(jī)中利用中斷與定時(shí)器完成數(shù)碼管顯示功能 [打印本頁(yè)]

作者: 晴無(wú)怡    時(shí)間: 2023-5-31 00:08
標(biāo)題: 在52單片機(jī)中利用中斷與定時(shí)器完成數(shù)碼管顯示功能
我想實(shí)現(xiàn)的功能是按下INT0口的按鍵實(shí)現(xiàn)學(xué)號(hào)的顯示,按下INT1口的按鍵實(shí)現(xiàn)數(shù)碼管第一個(gè)位置的數(shù)從0到f的循環(huán)。但是我編號(hào)代碼后,只能實(shí)現(xiàn)第一個(gè)功能即按下INT0口的按鍵實(shí)現(xiàn)學(xué)號(hào)的顯示,再按先INT1的按鍵沒(méi)有反應(yīng)。代碼與Proteous的仿真圖見(jiàn)附件。代碼用了定時(shí)器中斷。求助大佬,怎么回事。十分感謝。

屏幕截圖 2023-05-30 235741.png (47.25 KB, 下載次數(shù): 36)

屏幕截圖 2023-05-30 235741.png

代碼.rar

24.83 KB, 下載次數(shù): 10

仿真圖.rar

50.78 KB, 下載次數(shù): 4


作者: man1234567    時(shí)間: 2023-5-31 08:15
1、學(xué)號(hào)是個(gè)什么鬼 ?
2、拉電阻不是串電阻。
作者: yzwzfyz    時(shí)間: 2023-5-31 08:22
審題:
1、按鍵1,做A事件。所以你先編寫(xiě)一個(gè)程序CXA,完成A事件。
2、按鍵2,做B事件。所以你先編寫(xiě)一個(gè)程序CXB,完成B事件。
3、編程識(shí)別按鍵1、按鍵2。
將以上整合一下就可以了:
識(shí)別到按鍵1,就調(diào)用CXA;識(shí)別到按鍵2,就調(diào)用CXB。
作者: LaoYuTou    時(shí)間: 2023-5-31 08:59
不要在中斷中設(shè)置死循環(huán),根據(jù)中斷優(yōu)先級(jí),最高優(yōu)先級(jí)里的死循環(huán)是不會(huì)被打斷,也就是其他中斷無(wú)效。
解決方法:
1、中斷中程序要少;
2、設(shè)置標(biāo)志,在中斷中只修改標(biāo)志;
3、在主程序中根據(jù)標(biāo)志判斷執(zhí)行的程序段。
作者: wulin    時(shí)間: 2023-5-31 12:14


  1. #include <reg51.H>

  2. unsigned char XUEHAO[]={2,0,2,1,3,9,1,5};
  3. unsigned char NixieTable[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7f,0x39,0x3f,0x79,0x71};
  4. unsigned char count;

  5. void main()
  6. {
  7.         TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  8.         TH0=(65536-918)/256; //初值高位,定時(shí)1ms
  9.         TL0=(65536-918)%256;//初值低位
  10.         TR0 = 1;                        //timer0 start running
  11.         ET0 = 1;                        //enable timer0 interrupt
  12.         EA = 1;                         //open global interrupt switch
  13.         while (1);                      //loop       
  14. }


  15. void tm0_isr() interrupt 1
  16. {
  17.         TH0=(65536-918)/256; //初值高位,定時(shí)1ms
  18.         TL0=(65536-918)%256;//初值低位
  19.         P0=0x00;
  20.         P2=~(0x01<<count);
  21.         P0=NixieTable[XUEHAO[count]];
  22.         count=++count%8;
  23. }
復(fù)制代碼








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