外部中斷配置
產生中斷的三個條件順序可任意
- 中斷源有中斷請求
- 此中斷源的中斷允許位為1
- CPU開中斷(即EA=1)
配置外部中斷0
EA = 1; // 打開總中斷
EX0 = 1; // 打開外部中斷0
IT0 = 0; // 設定外部中斷為電平模式 改變電平觸發
// IT0 = 1 為跳變沿觸發
配置外部中斷0函式
void 函式名() interrupt 中斷號 {
}
外部中斷0翻轉LED燈
接線
P3^2連接按鈕K1,P1^0 和 P1^1連接LED燈
實作思路
KEY1初始化為1,按鈕按下為KEY1電平拉低為0 ,因為 IT0 = 0 觸發中斷,執行中斷函式,
停止執行while循序,等中斷函式內容執行完畢繼續執行while回圈內容,
注意
IT0為0的模式下只要按鍵按住,中斷會反復觸發,
IT0為1的模式下只要按鍵按住,中斷會觸發一次,松開再按下,再觸發,
#include "reg51.h"
sbit KEY1 = P3^2;
sbit LED1 = P1^0;
sbit LED2 = P1^1;
void delay(unsigned int i){
while(i--);
}
// 配置外部中斷函式
void interrupt_ex0() interrupt 0 {
LED1 = ~LED1;
delay(50000);
}
void main(){
KEY1 = 1;
LED1 = 1;
EA = 1;
EX0 = 1;
IT0 = 0;
while(1){
LED2 = 0;
delay(50000);
LED2 = 1;
delay(50000);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290356.html
標籤:其他
