5 2 SW1控制LED1亮滅(中斷功能)

2022-01-14 22:04:41 字數 2145 閱讀 3931

中斷:cpu收到中斷請求後暫停正在執行的程式,而去執行中斷服務函式中的程式,處理結束後,繼續執行原來的程式。

能夠產生中斷請求的中斷源如下:

cc2530中斷設定步驟:使能埠組中斷(ien)——埠組中具體埠中斷使能/禁止(pxien)——設定中斷觸發方式pictl——使能系統總中斷(ea)

下文按此思路展開:

1、使能埠組中斷

ien2|=0x10;    //10000,設定ien2的第4位,使能p1埠組中斷

2、使能具體埠中斷

p1ien|=0x04;    //0100,p1_2口中斷

3、設定中斷觸發方式

pictl|=0x02;   //p_3到p1_1下降沿觸發中斷,sw1按下,電平由高變低

4、使能總中斷

ea=1;    

要想使用中斷功能,必須使能中斷總開關ea,並且使能各個中斷源的自身控制開關ien。

具體暫存器詳情如下:

中斷服務函式格式:以p1為例。函式體不能帶有引數,也不能有返回值

#pragma vector=p1int_vector__interrupt 

void p1_int(void) //

注意,interrupt前是兩個_

中斷向量名如下:可檢視iocc2530.h標頭檔案內容

中斷標誌位:中斷源很多,需要識別觸發中斷的中斷源。

p0、p1、p2埠組的中斷標誌位分別是p0if、p1if、p2if。

p1_2連線著sw1按鍵,按鍵按下p1if值變為1,cpu就去執行p1的中斷服務函式。標誌位不能自動復位,需要手動清除該中斷標誌位。

p1if=0;  //清除p1埠組中斷標誌位

具體是p1中哪乙個針腳引起的中斷,可以通過pxifg暫存器的值來判斷。當然也需要手動清除具體的針腳標誌位(在中斷服務函式中)。

p1ifg&0x04     //判斷p1_2的中斷標誌位是否為1

p1ifg &=~ 0x04;   //清除p1_2的中斷標誌位

清除過程,先小再大。即先關區域性再關總閘。

#include "

iocc2530.h

"#define led1 p1_0

/****************===埠初始化函式********************=

*/void

init_port()

/****************外部中斷初始化函式***************===

*/void

init_intp()

/****************=外部中斷1服務函式********************

*/#pragma vector = p1int_vector //

外部中斷1的向量入口

__interrupt

void

int1_sevice()

/*********************主函式*************************=

*/void

main()

飛控(1) 飛行力學基礎

什麼是氣動焦點?氣動焦點與飛機重心的位置關係如何影響飛機的縱向靜穩定性?氣動焦點 氣動中心 為了方便地對飛行器的重心求力矩,如果能將機 彈 翼 機 彈 身和平尾產生的公升力理解為集中作用於一點,即氣動焦點,則此點不隨迎角a變化,這樣對於空氣動力學的計算無疑是很方便的。重心在氣動焦點之前,飛行器是縱向...

HTML5 2D平台遊戲開發 1

在web領域通常會用到一組sprite來展示動畫,這類動畫從開始到結束往往不會有使用者參與,即使用者很少會用控制器 例如滑鼠 鍵盤 手柄 操作杆等輸入裝置 進行操作。但在遊戲領域,sprite動畫與控制器的操作是密不可分的。最近在寫乙個小遊戲,涉及到很多知識點,於是打算把這些內容通過一些demo總結...

金融風控學習task1

其中有四種情況 1 若乙個例項是正類,並且被 為正類,即為真正類tp true positive 2 若乙個例項是正類,但是被 為負類,即為假負類fn false negative 3 若乙個例項是負類,但是被 為正類,即為假正類fp false positive 4 若乙個例項是負類,並且被 為負...