以2400bps从计算机发送任一数据,当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至…

计算机,当序号超过255时归零。、、 下面是我写的程序,高手们看下有什么不对的吗?? 谢啦!!!
#include<reg52.h>
#define uchar unsigned char
uchar flag,a,b,ba,s,g;
void main()
{
TMOD=0x20;
TH1=0xf4;
TL1=0xf4;
EA=1;
TR1=1;
REN=1;
SM0=0;
SM1=1;
ES=1;

while(1)
{
if(flag==1)
{
ES=0;
flag=0;
if(b>255)b=0;
ba=b/100;
s=(b/10)%10;
g=b%10;
SBUF='ba';
while(!TI);
TI=0;
SBUF='s';
while(!TI);
TI=0;
SBUF='g';
while(!TI);
TI=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;

}

}
}
void ser() interrupt 4
{ RI=0;
a=SBUF;
flag=1;
b++;
}

一个写程序的人一定要把程序写的有可读性,因为你的程序不仅仅你看,别人也会看,你的程序格式很难看,建议你去整整你的格式,if()后边最好{}起来,可能有时候不会有问题,但是有时候除了问题你看不出来,你去看看你滴程序吧,我觉着不太好这样的习惯,还有就是咋在你的数据前加上这几位数啊,数据传输的时候位数食欲要求的,不是想加上就加上的,你用的方式一,自然有效数据只有8位,不太理解追问

我分了三次发送这个要加的序号啊!

追答

我看你的程序的意思是把这个三位数据拆成三个个位数然后发送出去的,SBUF='ba'但是你看看这个是啥意思啊,我的理解是他会把ba的ASCII写成16进制发出去,PC接到后拆掉字头和校验位,剩下的就显示给你了,至于显示啥我也不知道,你设的变量,给变量复制了,但是你最后以字符串的形式复制了,自己好好看看

追问

朋友,加QQ聊吧。 963623319

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-31
你这个程序基本思路还行,但是单片机的编程基础太差。回去弄两本书系统地学一下追问

嗯,谢谢批评! 刚学单片机没多久,以前学过c语言,不过学的不是很精。

以2400bps从计算机发送任一数据,当单片机收到该数据后,在此数据前加...
你的程序格式很难看,建议你去整整你的格式,if()后边最好{}起来,可能有时候不会有问题,但是有时候除了问题你看不出来,你去看看你滴程序吧,我觉着不太好这样的习惯,还有就是咋在你的数据前加上这几位数啊,

以2400bps从计算机发送任一字节数据,当单片机收到数据后,在此数据前...
电脑上显示的是16进制 是串口助手的问题 有这个设置就能改成10进制 要想从单片机这边改 就得发ASCII码 这样助手那边显示为ASCII吗 就可以按自然数显示了 你单片机程序得改

电脑串口波特率(电脑串口波特率最高多少)
一般最大一一5二00,建议不要尝试更高波特率,我曾经设置一个CDMAmodem波特率为一一5二00以上,好像是二三XXXX,结果再也无法连上,不得不返厂恢复,分析,可能是PC的串口硬件不支持那么高波特率,虽然设备支持。怎么说呢,传统的9针是没有办法的,虽然可设定数值有很多,两台计算机实现的是一一5.二K与工业通讯,通常最大...

上位机与下位机通讯方式的比较
为实现通信正常,PC机与单片机约定如下:波特率2400bps;信息格式1个起始位,8位数据位,1个停止位,无奇偶校验位;串行口操作模式标准异步串行通信,串行口模式1;传送方式:PC机采用查询方式接收数据,8051单片机采用中断方式接收信息。6. 系统功能模块图和通讯流程图分别展示了上位机和下位机模块的功能和...

单片机如何通过ps2向pc传输数据
数据是变成了2进制数后经过ps\/2接口传递到PC的,常用串行方式传递数据。所以单片机要用串行方式和ps\/2通讯。即单片机的TXD做移位脉冲,接PS\/2的6脚;RXD是数据线,接PS\/2的2脚.还不明白给hychyc_2008发消息。ps2是11位。PS\/2帧的第一位是起始位,为0,然后是8位数据位,发送键盘扫描码的一个...

单片机串口读进的数据是什么数据
1、通信至少需要两台设备。2、单片机的串口可以连接到另外一台具有UART功能的设备,如另一台单片机或电脑。3、读进的数据并不是单片机本身的内容,而是另一台设备发出的。4、符合异步串行通信帧格式和约定波特率的字符。

单片机18b20的资料
1 1 12位 750ms 根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低...

单片机uart通讯中的UART通讯的波特率设置问题
51 单片机在串口方式0时,称为《同步传送方式》,并不是 UART (异步)方式。两者并不兼容。在同步传送方式,以 P3.0 输入、输出数据,以 P3.1 输出同步脉冲。注意,数据的输入、输出,都是从 P3.0 走的。在同步传送方式,数据的传输速度是 1M bit\/s。比 UART,要快得很多。而且,在同步传送...

我想用一个单片机去控制另外一个单片机,如何连接以及相应的数据...
某温度数据采集系统有主、从机进行串行通讯,假定双机的系统时钟频率fosc=11.0592MHz,通讯速率9600bps,主机每次将温度数据temperature的值发送给从机,从机则将收到的数据送到显示器上显示,试完成双机通信程序设计。分析:设定时器1工作于方式2,TMOD=00100000b=0x20。定时器的初值计算:9600=K*fosc\/...

串口的概念
当数据从 CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。在Windows环境(Windows NT、Win98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。串口通信程序的...

相似回答
大家正在搜