|

/*********************************************************************************************
函數名:外部中斷INT初始化函數
調 用:INT_init();
參 數:無
返回值:無
結 果:啟動外部中斷INT1、INT0中斷,設置中斷方式
備 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中斷總開關
EX1 = 1; //允許外部中斷1中斷
EX0 = 1; //允許外部中斷0中斷
IT1 = 1; //1:下沿觸發 0:低電平觸發
IT0 = 1; //1:下沿觸發 0:低電平觸發
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT1中斷處理程序
調 用:[外部引腳INT1中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切換寄存器組到2
//用戶函數內容
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT0中斷處理程序
調 用:[外部引腳INT0中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切換寄存器組到2
//用戶函數內容
}
/**********************************************************************************************
/*********************************************************************************************
程序名: 外部中斷程序實例
硬件支持: STC12C2052AD 外部12MHZ晶振
接口說明:
修改日志:
NO.1-
/*********************************************************************************************
說明:
兩個按鍵分別控制LED燈的開關。
INT0接口的按鍵按下時開燈。
INT1接口的按鍵按下時關燈。
/*********************************************************************************************/
#include <REG51.h> //51頭文件
sbit LED = P1 ^ 0; //定義LED燈
//注:外部中斷固定與P3.2和P3.3復用,無需定義這兩個接口。
/*********************************************************************************************
函數名:外部中斷INT初始化函數
調 用:INT_init();
參 數:無
返回值:無
結 果:啟動外部中斷INT1、INT0中斷,設置中斷方式
備 注:
/**********************************************************************************************/
void INT_init (void){
EA = 1; //中斷總開關
EX1 = 1; //允許外部中斷1中斷
EX0 = 1; //允許外部中斷0中斷
IT1 = 1; //1:下沿觸發 0:低電平觸發
IT0 = 1; //1:下沿觸發 0:低電平觸發
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT1中斷處理程序
調 用:[外部引腳INT1中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_1 (void) interrupt 2 using 2{ //切換寄存器組到2
LED = 1; //關燈
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:外部中斷INT0中斷處理程序
調 用:[外部引腳INT0中斷處理]
參 數:無
返回值:無
結 果:用戶處理外部中斷信號
備 注:
/**********************************************************************************************/
void INT_0 (void) interrupt 0 using 2{ //切換寄存器組到2
LED = 0; //開燈
}
/**********************************************************************************************/
/*********************************************************************************************/
void main(void){
INT_init(); //外部中斷初始化
while(1){
//其他程序
}
}
/*********************************************************************************************/
1. MCS-51通用外部中斷有2種觸發方式,分別是下降沿觸發和低電平觸發。
# 下降沿觸發:電平從高電平狀態突然降低(即電壓跌落)的過程中觸發中斷。
# 低電平觸發:電平處在低電平時觸發中斷,具體的電平值因電路不同而有差異。
# 低電平觸發與下降沿觸發的區別是下降沿觸發是一有跌落馬上觸發,而低電平觸發是跌落到低電平的閥值時(一般為0.8V)才觸發。
2. 當進入外部中斷處理程序時,系統會關閉其他中斷觸發,在中斷處理程序中外部中斷接口只能做I/O接口使用,不可嵌套中斷。
可將其模板下載到本地硬盤,在編寫新程序的時候復制、粘貼到工程當中,然后根據情況寫入具體內容。
|
|
相關帖子
- • 這是定義的問題嗎,用的c語言,怎么都改不對
- • adc_dma進行采集時打印數據為0,不開dma數據能夠正常顯示,想問一下是什么原因
- • 單片機不使用外部中斷,如何LED顯示程序?
- • 做了個替BF7612CM的測試
- • Keil程序求助,這些報錯怎么解決,小白一個,剛接觸單片機
- • 求用at89c51單片機測LM331 V/F轉化后的頻率 我的沒有顯示
- • MCU模擬SPI通信,能發送數據,接收不到數據
- • 菜鳥求助
- • STM32單片機向ESP8266發送指令,設置延時1秒上傳一次數據,延時不準確
- • 單片機矩陣按鍵 原理圖+源代碼
- • 通過手機藍牙APP發出控制指令,控制3個以上LED燈亮滅和蜂鳴器報警和關閉,怎么做 求指導
- • 關于用51單片機驅動AD9851的原理及其編程思路?
- • 單片機用點陣LED實現靜態字符顯示實驗程序
- • 關于單片機矩陣鍵盤多位數的輸入程序問題
- • CCS10.2編譯器貌似不支持部分GNU的__attribute__
- • STC15單片機+DS3231+DS18B20+DHT11+OLED12864+ESP8266_01S組成網絡時間 有待改善
- • 基于單片機的自行車里程表程序 大寫N到底是什么性質的變量 在哪里聲明
- • proteus仿真時[SPICE] Too many iterations without converge...怎么處理?求指點
- • 可以用單片機制作320*96大規模的點陣嗎?
- • 有人能幫我解釋下這個單片機公交車自動報站紅外模塊的原理嗎?
|
|
|
|
|