#include "H/Function_Init.H" void EX_Init(void); uchar INT1_flag = 0x00; /***************************************************** *函数名称:void EXTI_Test(void) *函数功能:外部中断测试 *入口参数:void *出口参数:void *****************************************************/ void EXTI_Test(void) { EX_Init(); while(1) { } } /***************************************************** *函数名称:void EX_Init(void) *函数功能:外部中断初始化 *入口参数:void *出口参数:void *****************************************************/ void EX_Init(void) { //配置中断口INT07、INT11/10、INT20/21 P0CON &= 0X7F; //中断IO口设置为高阻输入 P0PH |= 0x80; //中断IO口设置为高阻带上拉 P4CON &= 0XFC; //中断IO口设置为高阻输入 P4PH |= 0x03; //中断IO口设置为高阻带上拉 P2CON &= 0XFC; //中断IO口设置为高阻输入 P2PH |= 0x03; //中断IO口设置为高阻带上拉 //配置INT07上升沿中断、INT11/10下降沿中断、INT20/21双沿中断 //下降沿设置 INT0F = 0X00 ; //0关闭 1使能 INT1F = 0X03 ; //0关闭 1使能 INT2F = 0X03 ; //0关闭 1使能 //上升沿设置 INT0R = 0X80 ; //0关闭 1使能 INT1R = 0X00 ; //0关闭 1使能 INT2R = 0X03 ; //0关闭 1使能 //外部中断优先级设置 IE |= 0x05; //外部中断0,1中断使能 IE1 |= 0x08; //外部中断2中断使能 IP |= 0X00; //配置中断优先级 IP1 |= 0X00; EA = 1; } /***************************************************** *函数名称:void EX0/1/2() interrupt 0/2/10 *函数功能:外部中断函数 *入口参数:void *出口参数:void *****************************************************/ void INT0Interrupt() interrupt 0 { P04 = ~P04; } void INT1Interrupt() interrupt 2 { P05 = ~P05; if(P40 == 0) { INT1_flag = 0x10; //INT10产生中断 } if(P41 == 0) { INT1_flag = 0x20; //INT11产生中断 } } void INT2Interrupt() interrupt 10 { P06 = ~P06; }