|
雖然你的代碼只有一點(diǎn),但卻很亂
UartBusy這個(gè)要在啟動(dòng)的時(shí)候先清除,不然就會(huì)一直卡在那不動(dòng)了
你這個(gè)中斷不需要設(shè)置什么的了,默認(rèn)的就行
串口只會(huì)被打斷而已,外部中斷完成之后,中斷控制權(quán)還是會(huì)交給串口的
不應(yīng)該在,外部中斷中發(fā)送串口
當(dāng)你串口發(fā)送一半的時(shí)候,外部中斷被觸發(fā),進(jìn)入中斷,又發(fā)送一次串口,你這覺(jué)得這很亂嗎?
1,串口發(fā)送要在主程序中發(fā)送
2,外部中斷觸發(fā)之后,也就是按鍵按下,不是馬上發(fā)送,而進(jìn)入中斷之后,設(shè)置一個(gè)標(biāo)志位,表示按鍵按下了,這個(gè)標(biāo)志要在串口發(fā)送完成之后再清除
不然的話,按鍵抖動(dòng),就會(huì)產(chǎn)生串口不斷的發(fā)送數(shù)據(jù)比如這樣
void Int0_isr() interrupt 0 //外部中斷0
{
if(!P32) {
key_press=1; //按下按鍵
key_100ms=100;//可以用做一些延時(shí)之類的,比如這個(gè)是100mS,串口發(fā)送完成之后,100mS再次按鍵是無(wú)用的
}
IE0=0;
}
key_press在串口發(fā)送之后再清除,
|
|