標(biāo)題:
單片機(jī)中斷嵌套問(wèn)題,求大神幫幫忙。
[打印本頁(yè)]
作者:
聽(tīng)雨畫沙
時(shí)間:
2018-10-14 17:42
標(biāo)題:
單片機(jī)中斷嵌套問(wèn)題,求大神幫幫忙。
我想做一個(gè)定時(shí)器和按鍵的中斷程序,意思就是啟動(dòng)這個(gè)程序,每達(dá)到一個(gè)設(shè)定時(shí)間時(shí)led1狀態(tài)翻轉(zhuǎn)。在定時(shí)器計(jì)時(shí)過(guò)程中,按下按鍵K次,則led2狀態(tài)翻轉(zhuǎn)。但是我寫出以下程序以后發(fā)現(xiàn)只有定時(shí)器中斷工作有效。而按鍵中斷工作無(wú)效。如何設(shè)置IP寄存器,使定時(shí)器工作時(shí),按鍵中斷仍然能工作???
求大神們回復(fù)。
#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit M1=P2^0;
sbit M2=P2^1;
sbit k3=P3^2;
void delay(u16 i)
{
while(i--);
}
void HHH()
{
IT1=1;
EX1=1;
EA=1;
}
void SSS()
{
TMOD|=0X01;
TH0=0XFC; //給定時(shí)器賦初值,定時(shí)1ms
TL0=0X18;
ET0=1;
EA=1;
TR0=1;
}
void main()
{
SSS();
HHH();
while(1);
}
void Int1() interrupt 0
{
static u16 i;
delay(1000);
if(k3==0)
{
i++;
if(i==3)
{
M1=~M1;
i=1;
}
}
}
void Timer0() interrupt 1
{
static u16 i;
TH0=0XFC;
TL0=0X18;
i++;
if(i==700)
{
i=0;
M2=~M2;
}
}
作者:
Y_G_G
時(shí)間:
2018-10-14 23:40
中斷程序里面不要有延時(shí)的,一般來(lái)說(shuō),一個(gè)中斷是不會(huì)用你太多時(shí)間的.算是一千條指令也就是1mS的時(shí)間,這是不會(huì)錯(cuò)過(guò)的按鍵的掃描時(shí)間的,但你要是在中斷中加入延時(shí),那一個(gè)中斷用上幾mS甚至是幾S的時(shí)間,按鍵是肯定掃描不到的了
總而言之,中斷程序(函數(shù))要小,時(shí)間要智短.
作者:
dabing89
時(shí)間:
2018-10-15 06:24
http://www.torrancerestoration.com/bbs/dpj-137513-1.html
可以參考一下這個(gè)程序 案件按下一次蜂鳴器響一次,案件控制小燈的反轉(zhuǎn)
作者:
隨風(fēng)飄遠(yuǎn)
時(shí)間:
2018-10-15 15:21
中斷函數(shù)設(shè)置問(wèn)題,延時(shí)不能在執(zhí)行中斷函數(shù)的時(shí)候進(jìn)行。
作者:
tfyyu
時(shí)間:
2018-10-15 17:04
同問(wèn),中斷嵌套該怎么用
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1