这个就是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
各位大佬帮忙看一下,感谢。想了好几天没懂这个为啥不能用。
|