问答

汇集网友智慧,解决技术难题

ZXTWJJ

TA的家园币:15  

  • 这个新塘单片机MS51的IO中断为什么不能用呢

    这个就是P05接受一个上升沿或者下降沿之后P04输出一个高电平。功能很简单但是一直这个不能实现功能,也没有报错。#include"MS51_16K.H"#include"Function_Define_MS51_16K.H"#include"delay.h"/*名称:时控开关功能:P05接收到上升沿或者下降沿,P04输出一个下降沿在输出高电平时间:2021.5.26版本号:V0.0(最初版)备注:无干扰处理,总线广播,无串口校准验证*/#defineENABLE_BIT5_EDGE_TRIGPICON|=0x40;PINEN|=0x20;PIPEN|=0x20//使能并设置P05端口为(PINEN)上升沿和(PIPEN)下降沿都触发中断#defineINDEPENDENTFALG1//1为独立模式,即总线广播(不区分设备地址)#ifINDEPENDENTFALGvoidEdgeTriggerInit(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;}voidmain(void){EdgeTriggerInit();while(1);}voidPinInterrupt_ISR(void)interrupt7{EA=0;//中断保护if(PIF==0X20){P04=1;Delay_us(100);P04=0;//单纯的高电平不足以判断情况,为了证明正确性Delay_us(100);P04=1;PIF=0X00;}EA=1;}#endif各位大佬帮忙看一下,感谢。想了好几天没懂这个为啥不能用。