单片机和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) (卡号和
状态相或的结果)
我试着编程,可是总是出错,以前只会一个一个数据接收,不知道怎么一个一个数据包接收……
请高手们帮忙看看如何编程序啊?
这个首先得知道包的大小,然后做一指针,和一计数。
如,一个数据包有16个字节,它将放在20H到2FH的地址上。
那么在主程序里给它初始化一下:
MOV R0,#20H ;把指针指向存放数据的首地址。
MOV R1,#0FH ;定义数据包的大小
串口中断程序:
MOV @R0,SBUF
INC R0
DJNZ R1,继续接收
MOV R0,下一次接收存放数据的地址 ;本次接收完后为下一次数据的接收做初始化
MOV R1,下一次接收的数据包的大小
继续接收: RETI ;中断返回
大概一个意思,具体的一些细节得看具体情况。