我正在写一个单片机串口与PC机通信的程序,开始:0xf0,数据,结束0xff. 怎么写啊

如题所述

单片机作为从机,定义为接收状态,PC机的通信软件应主动向单片机发送询问数据,单片机接受到规定格式的数据后,即进行回答。若规定通信协议格式就是 开始0xf0, 数据,结束0xff。应在单片机接受中断中进行判断,若接收到0xf0,即认为数据流开始, 将其后接受的数据依次存在接收缓冲区里,直到检索到0xff,视为数据流结束。 接收结束后,作为应答, 仍然依照规定的数据格式发送数据串即可, 上位机软件同样依据以上流程做接受处理。
但是,你这个通信协议规定的过于简单,不能实用。如果数据中出现0xff也可能被误认为结束符。如果想以特定的字头作为数据流起始标志,可以多设几个字节,比如3个字节, 如规定0xf0,0x2a,0x7e三个数据连续出现时,作为数据流的开始,那么可靠性就会提高,另外,通信协议必须具有校验字节,例如校验和,或者CRC校验,校验字节后,才是结束符。如果没有校验,数据常常错乱,不能使用。 当接受到校验不能通过的数据流后,数据应当丢弃,重新接收。校验字节是必须要有的。
如果是简单的一对一通信,可以规定固定的数据流个数,那么此时可以没有结束符和起始符,只有固定的数据流个数和校验字节,就可满足通信要求。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-31
单片机 型号是什么
第2个回答  2011-07-31
汇编还是C啊。。。。。

...串口与PC机通信的程序,开始:0xf0,数据,结束0xff. 怎么写啊...
单片机作为从机,定义为接收状态,PC机的通信软件应主动向单片机发送询问数据,单片机接受到规定格式的数据后,即进行回答。若规定通信协议格式就是 开始0xf0, 数据,结束0xff。应在单片机接受中断中进行判断,若接收到0xf0,即认为数据流开始, 将其后接受的数据依次存在接收缓冲区里,直到检索到0xff,视为...

51单片机C语言怎么写Modbus通信程序?
0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3,0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4,0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, ...

如何用电脑通过串行口把单片机的数据保存起来,以便下一步处理?代码如何...
\/*单片机发送P1端口值到串口*\/ \/*数据格式为:Now P1 Status:[00000000]*\/ include <reg51.h> define uchar unsigned char define uint unsigned int char str[] = "Now P1 Status:[00000000]\\r";sbit P10=P1^0;sbit P11=P1^1;sbit P12=P1^2;sbit P13=P1^3;sbit P14=P1^4;sbit P15=...

...我这个为啥不行 P3=0xfd; temp=P3;temp=temp&0xf0;不大明白_百度知 ...
P3口是IO口,假设先让P3=0xff,然后你通过某种方式让单片机的P3的其中一个IO接地,然后再移开地,那么那个刚开始的低电平不会变为高电平,还是为低电频,原理就是这样。例如P1.1=1,P1.2=0,这时你把P1.1和P1.2连一起,P1.1就变成0了,移开P1.2也不会是高电平,除非软件从新置一。...

求一个plc与单片机通讯的例子。
推荐你一本书 《典型应用于编程86例》

STC单片机串口程序
sfr CMOD = 0xD9;sfr CL = 0xE9;sfr CH = 0xF9;sfr CCAP0L = 0xEA;sfr CCAP0H = 0xFA;sfr CCAPM0 = 0xDA;sfr CCAPM1 = 0xDB;sbit CR = 0xDE;sbit MCU_Start_Led = P1^7;sbit S2_Interrupt_Receive_Led = P1^4;\/\/unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55};#...

...buff[0]=0xf0;buff[1]=buff[2]=0xff语句是什么功能吗?
第0个是0xf0,第1个和第2个都是0xff 0xf0和0xff都是16进制数字,没什么特殊的功能 后面是通过abswrite函数把这个数组原样写到磁盘上去,所以最终磁盘上指定的位置也会变成0xf0,0xff,0xff,...之所以要在磁盘上写上这些数据,是因为FAT格式规定就是这样的 ...

求简易温度控制器设计的单片机汇编语言程序
这个程序你可以用来试试。我以前做的。\/\/温控系统控制程序\/\/温度传感器:DS18B20\/\/显示方式:LED#include <reg51.h>#define uchar unsigned charsbit keyup=P1^0;sbit keydn=P1^1;sbit keymd=P1^2;sbit out=P3^7;\/\/接控制继电器sbit DQ = P3^4;\/\/接温度传感器18B20uchar t[2],number=0,...

基于单片机的数字时钟设计开题报告
void timer1() interrupt 1 using 0 { TH0=0xd8; \/\/重新赋值 TL0=0xf0;count++;xianshi();if (count==99) \/\/100x10ms=1S,大致延时时间 { count=0;second++; \/\/秒加1 if(second==60)minute++;{ if(second==60)

请问如何将C或汇编源程序或烧到自己制作的PCB板上 谢谢···_百度知...
一. 安装单片机程序编译软件KEIL。1.点击图标 运行直至安装完成。2.点击图标 运行KEIL,然后选择菜单“project”点击“new……”点击“ ”建立新的工程。填写好工程文件名选择保存路径后按“保存”,此时弹出一个窗口如下图所示 点击Atmel左边的+号展开CPU的型号,选择“AT89C51”按“确定”再生成一个...

相似回答