用单片机模拟无线信号波形,波形的格式是:同步头+8位(0或1,用不同的波形表示)。无线信号的接收是通过外部中断0测量波形高电平的宽度,反推出是0或1,从而获取发送的数据。数据位波形高低电平的宽度采用定时器和延时函数,当发送数据0xd6时,proteus仿真波形如下:
黄线是延时函数产生的,蓝线是定时器产生,两个窄脉冲代表'1',两个款脉冲代表'0'。在proteus仿真中,分别用这两种波形输入,另一个单片机均能显示正确的数据,但是实物测试时,延时函数的波形不能被正确读取,定时器产生的波形能够正确读取。我分析可能的原因是延时函数并不能产生和定时器一样的波形,因为其中的指令都需要占用时间,所以实际输出的波形可能发生了变化,导致另一个单片机测量脉冲宽度时范围不匹配(例如,范围在13000~14000代表检测到同步头)。由于没有示波器,不知道这两种波形到底是怎样的。我把程序附上,有示波器的朋友请帮我看看这两种波形波有没有差别,或者觉得我分析有误的,麻烦给出意见,谢谢!
|