外部芯片使单片机P1^1自动获得高低输出电平,怎样判断单片机P1^1得到电平忽高忽低呢

外部芯片使单片机P1^1自动获得高低输出电平,要判断单片机P1^1得到电平忽高忽低,则通讯失败,若一直为高,则通讯成功。程序该怎么写呢 for(i=0;i<3;i++) { temp[i]=P1^1; Delay(1); } BF_en=temp[0]&&temp[1]&&temp[2]; //BF_en为通讯标志 if(BF_en==0) { for(j=0;j<8;j++) obuffer[j]=0x00; } if(BF_en==1) { for(j=0;j<8;j++) { obuffer[j]=0x11;

} 程序都通啦,就是有个问题:在通讯正常过程中时,突然通讯中断,信号灯闪烁,这时候应该输出00,可是得到的还是刚才的11.为什么呢

详细情况再说一下 while(1) { for(i=0;i<3;i++) { temp[i]=P1^1; Delay(1); } BF_en=temp[0]&&temp[1]&&temp[2]; if(BF_en==0) {

for(j=0;j<8;j++) obuffer[j]=0x00;

} if(BF_en==1) { if(RI==1) { for(j=0;j<8;j++) { RData=Receive(); obuffer[j]=RData; } } } 这是蓝牙通讯的问题,蓝牙主模块的MCU_INT(寻找从模块是否成功的标志,输出高低电平,则不成功,输出一直为高则成功) 接到单片机的P1^1,现在判断P11口的情况,若闪烁,则发送数据00,若为高则发送收到的外面数据。 现在程序通了,但有问题:在刚开始,蓝牙通讯标志灯闪烁,收到了数据00,正确。 随后蓝牙通讯标志灯常亮,通讯正常,收到了外部数据,正确。 但是随后假设通讯中断(如距离变远,超出蓝牙信号扫描范围),则灯闪烁,此时应该收到数据00,可是收到的却是刚才寄存器中的外部数据,一直不变,为什么呢,程序哪块出了问题呢,请大师们帮忙看看。


顶起


谁能指点一下啊?


不建议使用P1.1引脚来做。可以选择INT0这个引脚,使用外部中断的方式来做。触发方式采用边沿触发(下降沿)。只要进入外部中断即表示有问题。如果不进入中断则表示运行成功。


为什么啊?


USB中断已经占用了一个INT0


我是用CH375实现的USB通讯,一块单片机与CH375实现USB通讯,一块单片机采集数据AD转换,两块单片机通过蓝牙连接实现数据传输。


只有登录才能回复,可以选择微信账号登录