串口程序,字符串可以正常显示,但是不能直接定义字符
时间:10-02
整理:3721RD
点击:
刚刚做一个简单的串口程序,就是不停的往电脑发数据,程序如下(PS 当用字符串数组 可以正常显示,但是直接定义一个字符,为什么不行?)
#include<reg51.h>
void UsartConfiguration();
void main()
{
unsigned char x,y;
//int i;
x='h';
y='j';
while(1)
{
SBUF=x;
while(!TI); //等待发送数据完成
TI=0;
SBUF=y;
while(!TI); //等待发送数据完成
TI=0;
}
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
TI=0;
}
串口助手 显示一堆乱码?为什么用字符数组 可以正常显示,用字符就不行啊?
2.实验板为STC89C52,故头文件改为reg52.h
3.计数器初值改为0xFD,波特率是9600的 实验板晶振11.0592MHz
4.串口助手截图。

#include<reg51.h>
void UsartConfiguration();
void main()
{
unsigned char x,y;
//int i;
x='h';
y='j';
while(1)
{
SBUF=x;
while(!TI); //等待发送数据完成
TI=0;
SBUF=y;
while(!TI); //等待发送数据完成
TI=0;
}
}
void UsartConfiguration()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //计数器初始值设置,注意波特率是4800的
TL1=0XF3;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
TI=0;
}
串口助手 显示一堆乱码?为什么用字符数组 可以正常显示,用字符就不行啊?
while(1)
{
if(RI)
{
RI=0;
SBUF=x;
while(!TI);
TI=0;
SBUF=y;
while(!TI);
TI=0;
}
}
请问判断RI 这是为啥呢?
- #include<reg52.h>
- void UsartConfiguration();
- void delay20ms()
- {
- unsigned int x,y;
- for(x=20;x>0;x--)
- for(y=110;y>0;y--);
- }
- void main()
- {
- unsigned char x,y;
- x='h';
- y='j';
- UsartConfiguration();
- while(1)
- {
- SBUF=x;
- while(!TI); //等待发送数据完成
- TI=0;
- SBUF=y;
- while(!TI); //等待发送数据完成
- TI=0;
- delay20ms();
- }
- }
- void UsartConfiguration()
- {
- SCON=0X50; //设置为工作方式1
- TMOD=0X20; //设置计数器工作方式2
- // PCON=0X80; //波特率加倍
- TH1=0XFD; //计数器初始值设置,注意波特率是9600的 晶振11.0592MHz
- TL1=0XFD;
- // ES=1; //打开接收中断
- // EA=1; //打开总中断
- TR1=1; //打开计数器
- // TI=0;
- }
2.实验板为STC89C52,故头文件改为reg52.h
3.计数器初值改为0xFD,波特率是9600的 实验板晶振11.0592MHz
4.串口助手截图。

