前言
在做蓝牙语音小车时,总遇到各式各样的问题。本文主题是笔者在解决串口不够并且数据量小的问题时突发奇想自定义一个简易的通讯协议。由于是用89c51做的主控,外设的资源比较紧张。串口只有一个,但两个系统需要两个串口。因此主机一个io口和从机一个io口来传输六种状态数据。
一、时序
本协议发送数据范围0~6(可扩充),发送的数据等于数据位个数。
二、发送端源码:
void senddate(unsigned char date)//date为发送的数值 范围0~6
{
io=0;
Delay1ms(20);//延时函数1Ms,参数为延时1Ms次数
io=1;
Delay1ms(20);
while(date--)
{
io=0;
Delay1ms(15);
io=1;
Delay1ms(15);
}
}
三、接收端源码;中断接收(89c52外部中断1)
//rxd为接收引脚
void init1() interrupt 2
{
unsigned char count=0x00,i=10;
EX1=0;
Delay1ms(25);//延时函数1Ms,参数为延时1Ms次数
if(rxd==1)
{
Delay1ms(15);
while(i--)
{
if(rxd==0){count++;}
Delay1ms(30);
}rxd=1;
}
rxd=1;
}89c52外部中断1)
总结
缺点:
1)系统占用率高
2)可传数据量小
3)精确度低
优点:
1)省事
2)简便
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)