標(biāo)題:
關(guān)于51單片機(jī)進(jìn)入中斷服務(wù)函數(shù)后關(guān)閉中斷開(kāi)關(guān)的疑問(wèn)
[打印本頁(yè)]
作者:
丶念
時(shí)間:
2025-5-26 12:52
標(biāo)題:
關(guān)于51單片機(jī)進(jìn)入中斷服務(wù)函數(shù)后關(guān)閉中斷開(kāi)關(guān)的疑問(wèn)
用51單片機(jī)做一個(gè)小物件,初始化設(shè)置外部中斷0為下降沿觸發(fā),響應(yīng)中斷后關(guān)閉中斷開(kāi)關(guān)EX0=0,同時(shí)記錄中斷次數(shù)EX0_Cnt++,開(kāi)始定時(shí)器0開(kāi)關(guān)TR0=1,延時(shí)200毫秒(防止小于200毫秒時(shí)間內(nèi)再次造成中斷)后,關(guān)閉定時(shí)器0開(kāi)關(guān)TR0=0,打開(kāi)外部中斷0開(kāi)關(guān)EX0=1.程序如下所示,不知道是哪里出了問(wèn)題,外部中斷次數(shù)EX0_Cnt顯示不正確。
void INT0_Isr() interrupt 0
{
EX0 = 1; //關(guān)閉外部中斷0
TR0 = 1; //打開(kāi)定時(shí)器0
EX0_Cnt++; //記錄中斷次數(shù)加1
}
void Timer0_Isr() interrupt 1
{
Timer0_Cnt++;
if(Timer0_Cnt>200)
{
Timer0_Cnt = 0;
EX0 = 1;
TR0 = 0;
}
}
作者:
太陽(yáng)雨ZW
時(shí)間:
2025-5-26 16:19
void INT0_Isr() interrupt 0
{
EX0 = 1; //關(guān)閉外部中斷0
TR0 = 1; //打開(kāi)定時(shí)器0
EX0_Cnt++; //記錄中斷次數(shù)加1
}
外部中斷關(guān)閉了嗎?
作者:
丶念
時(shí)間:
2025-5-26 17:16
太陽(yáng)雨ZW 發(fā)表于 2025-5-26 16:19
void INT0_Isr() interrupt 0
{
EX0 = 1; //關(guān)閉外部中斷0
要進(jìn)兩次外部中斷了才能關(guān)閉
(EX0_Cnt自增2次)
作者:
xiaobendan001
時(shí)間:
2025-5-26 18:46
對(duì)啊,關(guān)閉不是EX0 = 0嗎?
作者:
rundstedt
時(shí)間:
2025-5-26 19:29
外部中斷是哪里來(lái)的?你認(rèn)為的中斷次數(shù)不等于實(shí)際的中斷次數(shù),要用示波器單次觸發(fā)抓波形才能確認(rèn)。
作者:
chxelc
時(shí)間:
2025-5-26 20:17
還要做軟件或硬件防抖。
作者:
shenqiwei
時(shí)間:
2025-5-27 02:02
你怎么沒(méi)有把總中斷打開(kāi)呢?
作者:
a399288395
時(shí)間:
2025-5-27 07:33
EX0 = 1; //關(guān)閉外部中斷0
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1