单片机与上位机通讯协议的C程序的算法

[复制链接]
查看11 | 回复2 | 2009-7-25 20:44:06 | 显示全部楼层 |阅读模式
初学,不是很懂,请哪位大侠帮忙!
协议为主机:0x10 + 控制板通讯地址 + 0x01 (命令)
+ p1.4状态 0x30(低电平)/0x31(高电平)
从机:0x10 + 控制板通讯地址 (8位)+ 06H / 15H(06H表示接受正常,15H表示接受异常,)
+校验位+结束(0x17)
串口中断响应后,定义的INBUFFER接收数据的缓存区,如何判断接受的数据超时或超长 数据是如何传送的,最好有程序说明!
如果不判断超时或超长,就不可靠了吧

回复

使用道具 举报

千问 | 2009-7-25 20:44:06 | 显示全部楼层
void serial() interrupt 4{ if(RI) //判断接受
{
P1=SBUF;
RI=0;//清接收中断标志位
} if(TI)//判断发送
{
TI=0;//清发送中断标志位
REN=1;
//允许接收 }
}在数据发送的时候要关闭接收,否则数据发送出错...
回复

使用道具 举报

千问 | 2009-7-25 20:44:06 | 显示全部楼层
void Receive(unsigned data)//判定超时{ int i=2000; temp; whlie(i--) {
if(TI==1) {TI=0; temp=SBUF;} }}数据不需要判定过长,你接收几个字节就循环接收几次,一次接收一个字节,然后返回一个值,靠返回值判定是否成功接收...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行