标题:
请教一下这个单片机程序串口输出为什么会少一个字母
[打印本页]
作者:
litingkun
时间:
2021-8-19 10:03
标题:
请教一下这个单片机程序串口输出为什么会少一个字母
#include <reg51.h>
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位数据,可变波特率
AUXR |= 0x01; //串口1选择定时器2为波特率发生器
AUXR &= 0xFB; //定时器2时钟为Fosc/12,即12T
T2L = 0xE8; //设定定时初值
T2H = 0xFF; //设定定时初值
AUXR |= 0x10; //启动定时器2
}
void main(void)
{
UartInit();
int i;
unsigned char Chr_Send[12]={"Hello World!"};
while(1)
{
i=12;
while(i--)
{
SBUF=Chr_Send[12-i];
while(!TI)
TI=0
}
}
// 些程序运行后只显示 “ello world!\0"
作者:
szb314
时间:
2021-8-19 10:19
自己仿真一下不就明白了
作者:
qiezi12318
时间:
2021-8-19 10:34
i=12改成i=13?
作者:
qiangtech
时间:
2021-8-19 10:44
51hei截图20210819103921.jpg
(6.74 KB, 下载次数: 44)
下载附件
2021-8-19 10:39 上传
从上图可知,你是从CHr_Send[1]开始发送,当然丢掉了个H.
改成while(i)
{
SBUF=CHr_Send[12-i];
while(!TI);
TI=0;
i--;
}
作者:
名字不是重点
时间:
2021-8-19 10:50
while(1)
{
for(i=0;i<12;i++)
{
SBUF=Chr_Send[i];
while(!TI)
TI=0
}
}这样试试
作者:
devcang
时间:
2021-8-19 10:51
i==0 就不发送、下一次循环了
作者:
sustlixin
时间:
2021-8-19 11:11
在你的数据使用i前,你的i--,已经把i减1了,最简单的办法,把这句改了
SBUF=Chr_Send[12-i
+1
];或SBUF=Chr_Send[
13
-i];
作者:
litingkun
时间:
2021-8-19 11:57
谢谢!刚开始学,感谢大家指点。先试试。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1