|
// 紅外中斷初始化,采用外部中斷1的下降沿有效,引發(fā)中斷
void InitInfrared()
{
IR_INPUT = 1;
IT1 = 1;
EX1 = 1;
}
// 紅外的中斷處理程序
void EXINT1_ISR() interrupt 2
{
// 設(shè)置中斷發(fā)生了FLAG
irflag = 1;
// 清中斷標(biāo)志位
IE1 = 0;
}
問題:
1.紅外中斷處理函數(shù)是 ,只要是引腳IR_INPUT電平從1變成0都會進(jìn)入這個(gè)中斷函數(shù)嗎?
因?yàn)橐粋(gè)紅外數(shù)據(jù),(NEC格式的)有引導(dǎo)碼+用戶碼+用戶反碼+鍵值碼+鍵值反碼,所以遙控器按下一個(gè)鍵,會引起30幾次的電平從1變成0.
這個(gè)函數(shù)會進(jìn)入30多次嗎
2.如果EXINT1_ISR()里面,要處理的東西比較多。比如,每一次處理要10ms
那么遙控器按下一個(gè)鍵的時(shí)候,假如會有30幾次的電平從1變到0,但來不及處理,那么進(jìn)入中斷的次數(shù)會怎么變,會丟棄幾次嗎?還是等待,排隊(duì),然后一個(gè)個(gè)進(jìn)入中斷函數(shù)?
|
|