標(biāo)題:
使用單片機(jī)外部中斷遇到了一點(diǎn)問題,上電的時候無法檢測外部中斷低電壓
[打印本頁]
作者:
一生太多遺憾
時間:
2023-7-8 18:50
標(biāo)題:
使用單片機(jī)外部中斷遇到了一點(diǎn)問題,上電的時候無法檢測外部中斷低電壓
各位大佬幫忙看看
使用的外部中斷1;低電平觸發(fā)
想要實現(xiàn)的功能是;1、上電時默認(rèn)進(jìn)入while(1)主程序(每秒閃2次)。
2、中斷程序(每秒閃5次)。
3、如果檢測到外部中斷為低電平“執(zhí)行外部中斷程序”、如果外部中斷為高電平“執(zhí)行while(1)主程序”。注釋;外部中斷源是一個按鍵;當(dāng)按鍵按下是接地觸發(fā)外部中斷。當(dāng)松開按鍵為高電平是回到主程序。
4、上電時如果外部中斷為低電平,則直接進(jìn)入中斷程序。注釋;如果在上電前按下按鍵時。
現(xiàn)在的問題是;第1、和第2,第3步,都是實現(xiàn)了!暗4步,上電時如果外部中斷為低電平,則直接進(jìn)入中斷程序。實現(xiàn)不了”
本人菜雞!謝謝大家!
單片機(jī)代碼如下;
#include <REGX51.H> //51頭文件
sbit LED = P3^5; //引腳定義
sbit Key1 = P3^3; //引腳定義
//*********延時函數(shù)***********
void DELAY_MS(unsigned int a )
{
unsigned int i;
while (--a !=0)
{
for (i=0; i<=600; i++);
}
}
//*********主程序************
void main(void)
{
Key1 = 1; // key1初始化高電平
LED=0; //初始化led
EA=1; //開總中斷
IT1=0; //低電平觸發(fā)
EX1=1; //外部中斷1允許
while(1)
{
LED=1; //LED亮
DELAY_MS(80); //延時
LED=0; //LED滅
DELAY_MS(100); //延時
LED=1; //LED亮
DELAY_MS(80); //延時
LED=0; //LED滅
DELAY_MS(1680); //延時
}
}
void intx(void) interrupt 0 //外部中斷0
{
while(1)
{
if(Key1==0) //Key1低電平檢測
DELAY_MS(10); //延時按鍵消抖
{
if(Key1==0) //再次“Key1”低電平檢測
{
LED=1;
DELAY_MS(60);
LED=0;
DELAY_MS(60);
LED=1;
DELAY_MS(40);
LED=0;
DELAY_MS(40);
LED=1;
DELAY_MS(30);
LED=0;
DELAY_MS(30);
LED=1;
DELAY_MS(20);
LED=0;
DELAY_MS(520);
}
else
{
DELAY_MS(10);
return; //返回主程序
}
}
}
}
作者:
LaoYuTou
時間:
2023-7-9 08:29
確定實現(xiàn)了前3?初始化的是外部中斷1,用的是外部中斷0?
作者:
csmyldl
時間:
2023-7-9 08:47
進(jìn)入中斷后,在中斷處理程序中要關(guān)閉外部中斷允許,否則會一直發(fā)生中斷(因為中斷程序執(zhí)行時間較長,包含了延時程序)
作者:
一生太多遺憾
時間:
2023-7-9 10:31
LaoYuTou 發(fā)表于 2023-7-9 08:29
確定實現(xiàn)了前3?初始化的是外部中斷1,用的是外部中斷0?
實現(xiàn)了,把void intx(void) interrupt 1 //外部中斷
作者:
一生太多遺憾
時間:
2023-7-9 10:32
LaoYuTou 發(fā)表于 2023-7-9 08:29
確定實現(xiàn)了前3?初始化的是外部中斷1,用的是外部中斷0?
第四步實現(xiàn)步了
作者:
一生太多遺憾
時間:
2023-7-9 20:11
已解決。謝謝各位大佬!
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1