3104|3

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

根据协议编写单片机串口程序的问题 [复制链接]

单片机和PC上位机定好了协议,然后我这里是单片机接收PC的数据,根据协议是一个一个数据包处理的。
以前没怎么编过这方面的程序,还请各位帮帮忙……
具体协议:
1. PC给MCU发: 帧头:0xff + 卡号(1BYTE)0x_ _ + 时(1BYTE):0x_ _ + 分(1BYTE):0x_ _ + 秒
(1BYTE):0x_ _ + 校验位(1BYTE)(卡号,时分秒相或的结果)
2. MCU给PC发: (这里先给每个MCU编号)
   帧头:0xff + 卡号(1BYTE)0x_ _  + 状态(0x01为正确,0x00为错误)+ 校验位(1BYTE) (卡号和
状态相或的结果)

我试着编程,可是总是出错,以前只会一个一个数据接收,不知道怎么一个一个数据包接收……
请高手们帮忙看看如何编程序啊?
此帖出自单片机论坛

最新回复

楼主要问的是上位机呢还是单片机呢?还是两者呢?  详情 回复 发表于 2009-5-16 00:26
点赞 关注
 

回复
举报

13

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
郁闷,没人顶
此帖出自单片机论坛
 
 

回复

1583

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 
这个首先得知道包的大小,然后做一指针,和一计数。
如,一个数据包有16个字节,它将放在20H到2FH的地址上。

那么在主程序里给它初始化一下:
MOV R0,#20H  ;把指针指向存放数据的首地址。
MOV R1,#0FH  ;定义数据包的大小

串口中断程序:
MOV @R0,SBUF
INC R0
DJNZ R1,继续接收
MOV R0,下一次接收存放数据的地址  ;本次接收完后为下一次数据的接收做初始化
MOV R1,下一次接收的数据包的大小
继续接收: RETI         ;中断返回


大概一个意思,具体的一些细节得看具体情况。
此帖出自单片机论坛

赞赏

1

查看全部赞赏

 
个人签名
 
 

回复

111

帖子

0

TA的资源

五彩晶圆(初级)

4
 
楼主要问的是上位机呢还是单片机呢?还是两者呢?
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表