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

標題: Proteus數碼管0~F顯數時引入外部中斷,為何不能完全停止,而是以更長的周期繼續運行 [打印本頁]

作者: T_Trigger    時間: 2019-10-31 00:23
標題: Proteus數碼管0~F顯數時引入外部中斷,為何不能完全停止,而是以更長的周期繼續運行

小白一杖,剛接觸單片機,按照郭天祥師傅的單片機教程,在proteus中仿真4位數碼管顯示0~F時,引入EX0=1;IT0=0;電平觸發的外部中斷,并點亮P1^0的LED。
仿真時發現當中斷產生時,LED燈點亮,數碼管是以幾倍的周期繼續依次顯示,而并非真正的停在中斷時的某一位上。
請各位大神不吝賜教,感激萬分。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit beef=P2^3;
sbit d1=P1^0;
void delay(uint);
uchar num;
uchar code table[]=
        {
        0x3f,0x06,0x5b,0x4f,
        0x66,0x6d,0x7d,0x07,
        0x7f,0x6f,0x77,0x7c,
        0x39,0x5e,0x79,0x71
        };

void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
void exter0() interrupt         0
{
        d1=0;
}

void main()
{
        EA=1;
        EX0=1;
        IT0=0;
        wela=1;    //位選擇
        P0=0xf0;
        wela=0;
        while(1)
        {
                 for(num=0;num<16;num++)
                      {
                         d1=1;
                         dula=1;                 
                         P0=table[num];
                         dula=0;
                         delay(500);
                   }
        }
}



作者: wulin    時間: 2019-10-31 06:18
IT0=0;是外部低電平觸發中斷,按鍵按下,INT0始終處于觸發狀態,CPU沒有足夠時間處理主循環中任務。改IT0=1;外部下降沿觸發中斷,按鍵按下瞬間觸發中斷一次,持續按住無效。
作者: csmyldl    時間: 2019-10-31 08:06
把IT0=0改為IT0=1  電平觸發會產生多次中斷
作者: T_Trigger    時間: 2019-10-31 11:47
wulin 發表于 2019-10-31 06:18
IT0=0;是外部低電平觸發中斷,按鍵按下,INT0始終處于觸發狀態,CPU沒有足夠時間處理主循環中任務。改IT0= ...

IT0=1,是可以實現脈沖觸發。
能不能解釋一下,IT=1時,當我一直處于觸發狀態時,本應該跳出主程序,只執行觸發中斷中的程序,但實際情況是在我外部中斷0加保持低電平時,主程序仍然在運行,只是運行周期比以前高了幾倍。感激不盡……
作者: T_Trigger    時間: 2019-10-31 11:49
csmyldl 發表于 2019-10-31 08:06
把IT0=0改為IT0=1  電平觸發會產生多次中斷

原來如此,謝謝解答,我再多查閱一下這方面的介紹。




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