標題: 單片機中斷程序求幫忙 [打印本頁]
作者: 841953693 時間: 2016-11-2 12:45
標題: 單片機中斷程序求幫忙
通過鍵盤控制外部中斷0和1,鍵盤1按下,進入外部中斷0,紅燈向白燈循環(huán)閃爍;鍵盤2按下,進入外部中斷,白燈向紅燈循環(huán)閃爍。
作者: 劉海龍 時間: 2016-11-2 14:57
白燈向紅燈閃爍?請描述的再詳細一點可好?
作者: 841953693 時間: 2016-11-2 16:15
就是理解為一個控制從左往右,一個控制從右往左
作者: 劉海龍 時間: 2016-11-3 13:37
- /*********************************************************************************************
- 編寫:劉海龍
- 程序名:外部中斷控制流水方向
- 硬件支持:LED負極接P1口
- 2016.11.3
- /*********************************************************************************************/
- #include <reg52.H> //單片機頭文件
- #include <intrins.h>
- unsigned char aa,MENU=0;
- /**********************************************************************************************/
- void delayms (unsigned int a) // 1ms延時程序
- {
- unsigned int i;
- while( --a != 0)
- {
- for(i = 0; i < 125; i++);//STC單片機在外部晶振為12MHz時i值上限為600
- } //AT89C51單片機在外部晶振為12MHz時i值上限為125
- }
- /*********************************************************************************************
- 函數(shù)名:外部中斷INT初始化函數(shù)
- 調 用:INT_init();
- 參 數(shù):無
- 返回值:無
- 結 果:啟動外部中斷INT1、INT0中斷,設置中斷方式
- 備 注:
- /**********************************************************************************************/
- void INT_init (void){
- EA = 1; //中斷總開關
- EX1 = 1; //允許外部中斷1中斷
- EX0 = 1; //禁止外部中斷0中斷
- IT1 = 1; //1:下沿觸發(fā) 0:低電平觸發(fā)
- IT0 = 1; //1:下沿觸發(fā) 0:低電平觸發(fā)
-
- }
- /*********************************************************************************************
- 函數(shù)名:外部中斷INT0中斷處理程序
- 調 用:[外部引腳INT0中斷處理]
- /**********************************************************************************************/
- //中斷0服務程序
- void exint0() interrupt 0 //INT0中斷入口
- {
- aa=0xfe;
- MENU=1; //
- }
- //中斷1服務程序
- void exint1() interrupt 2 //INT1中斷入口
- {
- aa=0x7f;
- MENU=2; //
- }
- /*********************************************************************************************
- 函數(shù)名:主函數(shù)
- /**********************************************************************************************/
- void main (void){
-
- INT_init();//中斷初始化
- while(1){
- if(MENU==1)
- {
- P1=aa;
- delayms(500);
- aa=_crol_(aa,1);
- }
- if(MENU==2)
- {
- P1=aa;
- delayms(500);
- aa=_cror_(aa,1);
- }
- }
- }
- /**********************************************************************************************/
復制代碼
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |