歡迎入群共同學習交流
時間記錄:2024/7/2
一、電路原理圖
51單片機包含INT0、INT1兩個外部中斷接口
二、知識點介紹
1.中斷寄存器位介紹
(1)TCON定時控制寄存器,位0(IT0)中斷INT0請求信號選擇位,1表示下降沿信號、0表示低電平信號,位1(IE0)中斷INT0信號標志位,1產生中斷信號、0未產生中斷信號,位2(IT1),位3(IE1)
(2)IE中斷允許控制寄存器,位0(EX0)中斷INT0中斷允許位,位2(EX1),位7(EA)總中斷允許位
(3)IP中斷優先級控制寄存器,位0(PX0)中斷INT0優先級設定位,默認為0低優先級,位2(PX1)中斷INT1優先級設定位
2.中斷源編號(編寫中斷函數時需要)
三、代碼示例
#include <reg51.h>typedef unsigned int u16; //重定義
sbit led = P1^0;
sbit key1 = P3^2;
sbit key2 = P3^3;void delay(u16 ms) //延時函數
{u16 i=0;while(ms--){for(i=0;i<110;i++);}
}void exti0Init(void);
void exti1Init(void);int main()
{exti0Init();exti1Init();while(1){}
}void exti0Init(void) //外部中斷0初始化,3.2端口
{IT0=1; //觸發方式,下降沿觸發/低電平觸發IE0=0; //中斷標志位,有相應電平該位變為1,可不設置EX0=1; //中斷允許位EA=1; //總中斷允許位PX0=0; //中斷優先級,默認為0
}void exti1Init(void)
{IT1=1;EX1=1;EA=1;
}void exti0(void) interrupt 0 //中斷函數
{delay(20);if(key1==0){led=0;}
}void exti1(void) interrupt 2
{delay(20);if(key2==0){led=1;}
}