为何串口助手第一下不稳定
时间:10-02
整理:3721RD
点击:
写了一个特别简单的程序 但是不知为何 用串口调试助手时候 有不稳定因素产生
程序如下
#include<reg51.h>
int statu;
int dat;
void UsartConfiguration(); //初始化
void main()
{
//int receiveData;
UsartConfiguration();
while(1)
{
if(RI)
{
dat=SBUF;
P2=dat;
RI=0;
}
}
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1;
RI=0; //打开计数器
}
P2控制流水灯 每次关闭单片机 然后重新启动时候 发送的第一个指令都是无效的,从第二个开始,流水灯才能正常工作,这是为什么?
程序如下
#include<reg51.h>
int statu;
int dat;
void UsartConfiguration(); //初始化
void main()
{
//int receiveData;
UsartConfiguration();
while(1)
{
if(RI)
{
dat=SBUF;
P2=dat;
RI=0;
}
}
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1;
RI=0; //打开计数器
}
P2控制流水灯 每次关闭单片机 然后重新启动时候 发送的第一个指令都是无效的,从第二个开始,流水灯才能正常工作,这是为什么?

突然发现 初始化程序里加一句话 TI=1,就没有问题了 虽然不知道为什么?
串口助手在此期间没关闭过串口吧?此外,明明是8位的数据,为什么要用16位有符号数保存?
不对哦,是这么一个区别 a--->A..数字0 对应ascii 0x30,,
错了 ,!
这个不是串口的问题!你上位机的串口一直检测接收信号 满足起始位停止位条件就把数据存入缓存 你软件开着自然就显示了 它哪里管你数据对错!你TI = 1; 初始化单片机的TXD 引脚为高 上位机没有检测到起始条件 自然就不做接下来的事了(采样引脚电平等),
没看懂你想表达什么,但串口一次只能接收一个8位数据这是确定的,所以应该用8位无符号数保存较为恰当。ASCII码当然是8位的
十六进制 是进制!不是位宽!0xff 位宽8位 这个是十六进制表示!
这位兄弟显然还是没搞清楚我到底要说什么。进制只是数值表示的形式,串口传输是以字节为单位的,一字节就是8位,即使你用16位数据空间去保存也只是利用了空间的低8位,而且还给单片机运行带来额外运算开销,降低效率,尤其还是用有符号数的时候。
oh! 法克,没看到程序。理解错了
