-
这个新塘单片机MS51的IO中断为什么不能用呢
这个就是P05接受一个上升沿或者下降沿之后P04输出一个高电平。功能很简单但是一直这个不能实现功能,也没有报错。 #include "MS51_16K.H" #include "Function_Define_MS51_16K.H" #include "delay.h" /* 名称:时控开关 功能:P05接收到上升沿或者下降沿,P04输出一个下降沿在输出高电平 时间:2021.5.26 版本号:V0.0(最初版) 备注:无干扰处理,总线广播,无串口校准验证 */ #define ENABLE_BIT5_EDGE_TRIG PICON|=0x40;PINEN|=0x20;PIPEN|=0x20//使能并设置P05端口为(PINEN)上升沿和(PIPEN)下降沿都触发中断 #define INDEPENDENTFALG 1 //1为独立模式,即总线广播(不区分设备地址) #if INDEPENDENTFALG void EdgeTriggerInit(void) { P04_PUSHPULL_MODE; P05_INPUT_MODE; set_P0S_5;//待修改,我也没懂这个时效保护在干撒 P04 = 0; P05 = 0; ENABLE_INT_PORT0;//选择P0口 ENABLE_BIT5_EDGE_TRIG;//选择5引脚 set_EPI;//引脚中断使能 set_EA; set_EX0; } void main(void) { EdgeTriggerInit(); while(1); } void PinInterrupt_ISR(void) interrupt 7 { EA = 0;//中断保护 if (PIF == 0X20) { P04 = 1; Delay_us(100); P04 = 0;//单纯的高电平不足以判断情况,为了证明正确性 Delay_us(100); P04 = 1; PIF = 0X00; } EA = 1; } #endif 各位大佬帮忙看一下,感谢。想了好几天没懂这个为啥不能用。
1697浏览量 1回复量 关注量