51學(xué)習之外部中斷
void ISR0_Key() interrupt 0 using 1
{
}
{
}
void Main()
{
}
執行結果好像有點(diǎn)亂。不太了解,邊沿和電平觸發(fā)的區別。從網(wǎng)上看了,能理解,可實(shí)際執行是不一樣的。
1、在第1次掃描到鍵盤(pán)按下時(shí),結果如前面我們說(shuō)的一樣,不論是低電平觸發(fā)還是下降沿觸發(fā)結果都會(huì )觸發(fā)事件,這里觸發(fā)時(shí)即指示燈點(diǎn)亮。然后程序繼續運行……
2、當程序繼續運行到第2次掃描鍵盤(pán)時(shí)按鍵還沒(méi)放開(kāi),結果就不一樣了。
低電平觸發(fā):觸發(fā)條件依然為低電平,觸發(fā)條件成立,那么執行事件,指示燈狀態(tài)改變,此時(shí)指示燈由亮變滅;
下降沿觸發(fā):觸發(fā)條件依然為低電平,下降沿觸發(fā)條件不成立,那么不執行事件,指示燈維持原來(lái)的亮的狀態(tài)。
呵呵,明天再研究吧!
還有就是中斷處理程序的一些問(wèn)題。
中斷服務(wù)程序通過(guò)使用 interrupt 關(guān)鍵字和中斷號(0 到 31)來(lái)實(shí)現中斷服務(wù)程序處理的是哪一個(gè)中斷。 using 關(guān)鍵字用來(lái)指定中斷服務(wù)程序使用的寄存器組。用法是:using 后跟一個(gè)0 到3 的數,對應著(zhù) 4 組工作寄存器。一旦指定工作寄存器組,默認的工作寄存器組就不會(huì )被壓棧,這將節省 32 個(gè)處理周期,因為入棧和出棧都需要 2 個(gè)處理周期。 今天只試了進(jìn)入中斷這種方式。明天試下查詢(xún)的方式,應該和定時(shí)器是一樣的。 |
評論