中斷是單片機實時地處理內(nèi)部或外部事件的一種內(nèi)部機制。當某種內(nèi)部或外部事件發(fā)生時,單片機的中斷系統(tǒng)將迫使CPU暫停正在執(zhí)行的程序,轉而去進行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼續(xù)執(zhí)行下去。
中斷分外部中斷和內(nèi)部中斷,CC2430共包含18個中斷源。
開發(fā)板的電路圖:
開發(fā)板上已把S1按鍵與P0.1相連,本實驗想要達到的效果就是,通過按鍵S1觸發(fā)P0.1的中斷,進而在中斷服務子程序中控制LED1的亮/滅。
實驗原理及流程圖
實驗流程圖如下:
我們需要對單字節(jié)的SFR中的某一位賦值(0或1),以精確控制硬件設備。
有的SFR支持位尋址,比如說TCON、P0等,此時,對位的賦值非常簡單,只需查詢 ioCC2430.h 頭文件中 SFR Bit Access 部分的位定義即可:
P0_0 = 0; //對P0第一位賦值0
P0_0 = 1; //對P0第一位賦值1
但有的SFR并不支持位尋址,就如本實驗中的 PICTL,此時想要對其中的某一位賦值,語法如下:
PICTL &= ~0x01; //對第1位賦值0
PICTL |= 0x01; //對第1位賦值1
在一個程序中使用中斷,一般包括、兩個部分:中斷服務子程序的編寫、中斷使能的開啟。中斷使能已在上面介紹過,下面簡單介紹一下中斷服務子程序的編寫:
首先指定中斷向量,可以在 ioCC2430.h 頭文件中的 Interrupt Vectors 部分查詢,語法如下:
#pragma vector = 中斷向量
然后緊跟著編寫中斷處理程序,結構如下:
__interrupt void 函數(shù)名(void)
{
//開中斷
//中斷處理
//中斷標志清0
//關中斷
}
編輯:hfy
-
單片機
+關注
關注
6030文章
44489瀏覽量
631988 -
cpu
+關注
關注
68文章
10804瀏覽量
210833 -
中斷處理
+關注
關注
0文章
94瀏覽量
10947 -
控制LED燈
+關注
關注
0文章
5瀏覽量
1347
發(fā)布評論請先 登錄
相關推薦
評論