亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 單片機外部中斷結束后,程序運行錯誤 [打印本頁]

作者: 1225751467    時間: 2018-5-8 21:56
標題: 單片機外部中斷結束后,程序運行錯誤
#include<reg52.h>
unsigned char a;
void main()
{
    a=0xf0;
    EA=1;
    EX0=1;
    IT0=0;
    while(1)
    {
        P1=a;
    }
}
void int0() interrupt 0
{
    a=0x0f;
}
外部中斷的低電平撤銷后,P1的值變不回來,請問這是怎么回事,需要怎么改?


作者: zhongbo1991    時間: 2018-5-8 23:01
單片機保持最后的狀態,所以a還是等于0x0f,
while(1)
{if(IT0!=0)
   {a=0xf0;}
   P1=a;
}
你試試,我也是剛學的
作者: 1225751467    時間: 2018-5-9 08:17
zhongbo1991 發表于 2018-5-8 23:01
單片機保持最后的狀態,所以a還是等于0x0f,
while(1)
{if(IT0!=0)

很感謝,但還是回不來
作者: wulin    時間: 2018-5-9 09:04
void int0() interrupt 0
{
    a=~a;
}
作者: HC6800-ES-V2.0    時間: 2018-5-9 09:12
你的程序沒有問題:外部中斷0發生后,P1口的值變化了的。
我已經在我的板子上試驗通過了。說明中斷沒有問題。

變不回來,因為你的程序沒有讓它變回來啊。
要變原來的值,你的主循環中,就要有設置語句才行。
可能你理解中斷的執行有誤解:中斷發生后,回到原來程序發生中斷時的位置,不是讓程序從頭再來一次!
按你的程序,只能是回到主循環內,你的a就是初值是之前定義的,當然就執行不到了。
作者: blossom99    時間: 2018-5-11 01:39
IT0=0,你的意思是按下按鍵P1=0x0f,松開按鍵P1=0xf0?
這回試試行不行······
#include<reg52.h>
unsigned char a;
void main()
{
    EA=1;
    EX0=1;
    IT0=0;
    while(1)
    {
        a=0xf0;
        P1=a;
    }
}
void int0() interrupt 0
{
    a=0x0f;
    P1=a;
}
有一個疑問,這里IT0=0,不是低電平一直中斷嗎,P1的值怎么會改變(當一直中斷的時候)?是在給高電平后中斷結束,P1才被重新賦值的吧
所以你的P1一直是中斷語句中賦予的值,其實中斷中重復了那么多次賦值,僅僅是賦值給a而已,和P1沒有關系的
作者: 1225751467    時間: 2018-5-11 18:22
wulin 發表于 2018-5-9 09:04
void int0() interrupt 0
{
    a=~a;

十分感謝,謝謝
作者: 1225751467    時間: 2018-5-11 18:23
HC6800-ES-V2.0 發表于 2018-5-9 09:12
你的程序沒有問題:外部中斷0發生后,P1口的值變化了的。
我已經在我的板子上試驗通過了。說明中斷沒有問 ...

謝謝大佬解答
作者: 1225751467    時間: 2018-5-11 18:25
blossom99 發表于 2018-5-11 01:39
IT0=0,你的意思是按下按鍵P1=0x0f,松開按鍵P1=0xf0?
這回試試行不行······
#include

我是用一根線將3.2接到gnd了,然后把線拔掉,理論上要退出中斷啊,這個程序是a的賦值把我搞暈了




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