![]() |
發布時間: 2021-9-9 14:57
正文摘要:本帖最后由 王披風 于 2021-9-9 17:18 編輯 第一次運用單片機的外部中斷,但不知道什么原因中斷里邊的程序并沒有執行,串口也打開了,是在開發板上進行調試的,單片機是STC89C52RC程序如下: #include <REGX52 ... |
wulin 發表于 2021-9-9 21:59 想請問一下,怎么不用硬件操作,直接在在主程序中打開外部中斷,自動開啟,下邊這個程序我以為是我自己用到了標志位,可是我發現我在板子上看結果,發現我把主程序的外部中斷打開給注釋了,還是一樣的結果,所以我不知道是不是我自己壓根都沒用到外部中斷。只是程序在主程序中順序執行了。大佬解答一下,這個問題困惑好久了。 #include <REGX52.H> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar num,num1; uchar table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; bit flag; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void extern0()interrupt 0 { flag=~flag; } void main() { IT0=1; EX0=1; EA=1; while(1) { for(num=0;num<6;num++) { wela=1; P0=table2[num]; wela=0; P0=0xff; P0=0x00; dula=1; P0=table1[num]; dula=0; delayms(500); if(flag=~flag) { for(num1=0;num1<8;num1++) { P1=table3[num1]; delayms(500); } P1=0xff; } } } } |
xuyaqi 發表于 2021-9-9 18:38 #include <REGX52.H> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; uchar num,num1; uchar table1[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d}; uchar table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; uchar table3[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; bit flag; void delayms(uint xms) { uint i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void extern0()interrupt 0 { flag=~flag; } void main() { IT0=1; EX0=1; EA=1; while(1) { for(num=0;num<6;num++) { wela=1; P0=table2[num]; wela=0; P0=0xff; P0=0x00; dula=1; P0=table1[num]; dula=0; delayms(500); if(flag=~flag) { for(num1=0;num1<8;num1++) { P1=table3[num1]; delayms(500); } P1=0xff; } } } } 這樣改了一下,我發現外部中斷不用寫也是同樣的調試結果,反而是程序在主程序中順序執行了,并沒有用到這個外部中斷。 |
wulin 發表于 2021-9-9 21:59 感謝大佬,我自己的程序按了S2和S14中斷也打開了,謝謝指點,茅塞頓開呀,感覺打開了新天地。非常感謝 |
當按鍵按下時,會有彈動,會發出N次中斷申請。你如何保證每次按下,只中斷一次呢? |
用杜邦線一端接地另一端觸碰P3.2觸發外部中斷,同時按下S2、S14也可觸發外部中斷。數碼管交替顯示012345和6789Ab。
|
中斷占得時間應盡量短,你在外中斷里又是for,又是延時是不對的,完全可以在中斷設置標志,在主循環里做處理。 |
這個是要實現什么功能呢? |
這個是要實現什么功能? |
電ac 發表于 2021-9-9 16:54 你好,這個方法我以前自己調試的時候設置過,但是還是沒有用,我把原理圖放在了附錄,感謝指點 |
電ac 發表于 2021-9-9 16:54 改了,我之前自己調試的時候就改正過,我把原理圖放在了附件可以看下, |
你那個電路圖有沒有?還有就是把IT0=1,設置成下降沿觸發方式 |