单片机A的IO口模拟产生无线信号(宽度不等的方波序列),单片机B通过外部中断0和定时器的GATE计算各脉冲的宽度,解码出发送来的数据。A是通过串口助手下发指令,如果串口助手输入'a',A发送'H',B这边将接收到的数据也发往串口助手显示,显示'H',说明正常。为了方便调试,在B的外部中断0程序中加入了一条语句:SendData('X'),即B产生外部中断就往串口助手发送字符'X'。现在运行A、B,A的串口助手输入'a',发送,B的串口助手显示'XXXH',B仅接受单字节,重复的'X'是因为A在串口助手输入'H'时重复发送,所以'XXXA'是正常的。现在,我断开A的发射引脚,即单片机IO与发射头'DATA'引脚的连线(模拟无线通信仅使用了简单的无线收发头),可是B的串口助手还不断显示'X'!这是为什么啊?是因为无线信号在空间仍旧存在,要慢慢消逝吗?那彻底消逝要多久时间?不可能是外部干扰引起的外部中断吧,因为B的外部中断0程序往串口助手发'X'是在一个if语句下,它要满足检测到的脉冲宽度头范围在13000~14000,这样的干扰应该概率比较低吧?或者可能是单片机A的IO口在没有发射头的情况下也能发射无线信号?A发送无线信号是要串口助手下发的'a'触发的,单片机不可能自动运行吧。
不知道描述清楚没?请指点! |