|
這是一次練習(xí),用IO中斷控制LED燈,模擬樓道燈。
程序中需要注意的就是配置IO中斷配置,其他部分都是基本程序語句。
注釋詳細,程序容易上手,適合入門新手參考。
兩個開關(guān),任何一個按下亮,再按任何一個滅
8.17_9.PNG (63.29 KB, 下載次數(shù): 115)
下載附件
兩個開關(guān),任何一個按下亮,再按任何一個滅
2019-8-18 10:00 上傳
端口中斷配置過程
8.17_5.PNG (57.13 KB, 下載次數(shù): 91)
下載附件
端口中斷配置過程
2019-8-18 10:01 上傳
cc2530源程序如下:
- #include "iocc2530.h"
- #define S5 P0_4 //宏定義 P0_4 為 S5 的控制端口
- #define S6 P0_5 //宏定義 P0_5 為 S6 的控制端口
- #define KEY5 5 //宏定義按鍵 S5 的返回值為 5
- #define KEY6 6 //宏定義按鍵 S5 的返回值為 6
-
- #define KEY_UP 1 //宏定義按鍵松開為 1
- #define KEY_DOWN 0 //宏定義按鍵按下為 0
- #define LED1 P1_4 //定義 P1_4 為 LED1 的控制端口
- #define LED_MODE_ON 0 //定義 0 為 LED 燈打開
- #define LED_MODE_OFF 1 //定義 0 為 LED 燈關(guān)閉
- unsigned char flag=0;
- void led_init(void);
- void Delay_Ms(unsigned int xms);
- void irq_p0_init(void);
- /*************************************************
- 12. *
- 13. *函數(shù)名稱:void LED_Init(void)
- 14. *功能描述:LED 燈相應(yīng) IO 口的配置
- 15. *參數(shù)說明:無
- 16. *
- 17. **************************************************/
- void Led_Init(void)
- {
- P1SEL &= ~0X10; //定義 P1_4 為普通 IO //0001 0000
- P1DIR |= 0X10; //定義 P1_4 為輸出
- LED1 = LED_MODE_OFF;//LED1 燈默認(rèn)為關(guān)閉狀態(tài)
- }
- /*************************************************
- 25. *
- 26. *函數(shù)名稱:void KEY_Init(void)
- 27. *功能描述:按鍵相應(yīng) IO 口的配置
- 70
-
- 28. *參數(shù)說明:無
- 29. *
- 30. **************************************************/
- void irq_p0_init(void)
- {
- P0SEL &=~ 0X30; //定義 P1_4 為普通 IO //0001 0000
- P0DIR |= 0X30;
- //P0中斷標(biāo)志清0
- P0IFG = 0x00;
- IRCON = 0x00;
- //P0DIR=0x00;
- //P0.4和P0.5有上拉、下拉能力
- //P0INP &= ~0X30;
- //P0.4和P0.5中斷使能
- P0IEN |= 0x30;
- //P0.4和P0.5,下降沿觸發(fā)
- PICTL &=~0x01;
- //開中P0端口中斷使能寄存器
- IEN1 |= 0X20;
- //開啟總中斷
- EA=1;
-
- }
- void Delay_Ms(unsigned int xms)
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- for(j=578;j>0;j--);
- }
- //中斷程序代碼
- #pragma vector = P0INT_VECTOR
- __interrupt void LED_IRQ (void)
- {
- if(P0IFG &0x30)
- {
- flag=1;
- }
- Delay_Ms(10);
- P0IFG=0x00;
- IRCON &=~ 0x20;
- }
- void main(void)
- {
- //unsigned char key=0;
-
- Led_Init();//初始化 LED 端口配置
- //Key_Init();//初始化 KEY 端口配置
- irq_p0_init();
-
- while(1)
- {
- if(flag)
- {
- LED1=~LED1;
- flag=0;
- }
- } ;
- }
復(fù)制代碼
所有資料51hei提供下載:
樓道燈作業(yè).rar
(21.9 KB, 下載次數(shù): 13)
2019-8-18 10:07 上傳
點擊文件名下載附件
整個工程都在里面 下載積分: 黑幣 -5
|
|