cc2530的第三次實(shí)驗(yàn):按鍵中斷控制流水燈
效果為按一次按鍵,流水燈亮一次
實(shí)驗(yàn)相關(guān)電路圖:
實(shí)驗(yàn)相關(guān)寄存器:
初始化函數(shù)
//初始化LED燈 //設(shè)置P1SEL,通用為0,外設(shè)為1 11111100 P1SEL &=~0x03; //設(shè)置P0SEL, 11101111 P0SEL &= ~0x10; //設(shè)置P1DIR,輸出為1,輸入為0 00000011 P1DIR |= 0x03; //設(shè)置P0DIR 00010000 P0DIR |= 0x10; //初始化按鈕和中斷 //初始化按鈕 //初始化P0SEL,通用為0 11111101 P0SEL&=~0x02; //初始化P0DIR,輸入為0 11111101 P0DIR&=~0x02; //初始化中斷 //設(shè)置引腳中斷 1為中斷使能 00000010 P0IEN |= 0x02; //設(shè)置端口中斷 IEN1=1; //設(shè)置端口中斷觸發(fā)方式 1為中斷使能 IEN1|=0x20; //設(shè)置總中斷 EA=1; //清空標(biāo)志位 P0IFG=0;
中斷服務(wù)函數(shù)
//中斷服務(wù)函數(shù) #pragma vector = P0INT_VECTOR //這一行的P0INT_VECTOR是中斷源的名稱嗎? __interrupt void P0ISR(void) { //清除端口中斷標(biāo)志位 P0IFG=0; //LED燈流水亮一遍 BLink(); //清除端口中斷標(biāo)志位 P0IF=0; }
上面的代碼一定要注意P0IFG一定要在P0IF之前清除,話說P0IF與P0IFG到底是干啥用的?他們之間什么關(guān)系,端口的標(biāo)志寄存器?(記得查一下)
P0IFG是端口0中斷狀態(tài)標(biāo)志,P0IF是cpu內(nèi)中斷標(biāo)志寄存器,什么鬼,沒弄明白啊,問一下老師吧!
全部代碼
#includetypedef unsigned int uint; typedef unsigned char uchar; #define LED1 P1_0 #define LED2 P1_1 #define LED3 P0_4 #define BUTTON1 P0_1 uint time=300; //延遲函數(shù) void Delay(uint time) { for(uint i=0;i
-
流水燈
+關(guān)注
關(guān)注
21文章
433瀏覽量
60221 -
CC2530
+關(guān)注
關(guān)注
19文章
221瀏覽量
58647 -
中斷控制
+關(guān)注
關(guān)注
0文章
26瀏覽量
8958
發(fā)布評(píng)論請(qǐng)先 登錄
【RA-Eco-RA4M2開發(fā)板評(píng)測(cè)】點(diǎn)燈實(shí)現(xiàn)6種LED花式流水燈操作
CC2530連接ADS7822,經(jīng)示波器檢測(cè),CLK無輸出波形是怎么回事?
用CC2530驅(qū)動(dòng)ADS1255,可以正確的讀到寄存器的值,就是得到AD裝換的值不正確,為什么?

如何使ADS1247功耗降低?
低成本單片機(jī)方案——觸摸流水燈開關(guān)控制

使用cc2530控制的ads1299,讀取轉(zhuǎn)換數(shù)據(jù)的時(shí)候輸出是c0 00 00 80 00 00 80 00 00 7f ff ff這樣,為什么?
用cc2530驅(qū)動(dòng)ADS8862采集數(shù)據(jù),ADS8862老是驅(qū)動(dòng)不成功,為什么?
基于51單片機(jī)的跑馬燈/流水燈系統(tǒng)

《DNK210使用指南 -CanMV版 V1.0》第十五章 按鍵中斷實(shí)驗(yàn)
將CC2592前端與CC2530結(jié)合使用

FPGA 實(shí)驗(yàn)一:流水燈模塊
【GD32F303紅楓派開發(fā)板使用手冊(cè)】第四講 GEXTI-按鍵中斷檢測(cè)實(shí)驗(yàn)

評(píng)論