把要传送的数据给SBUF,但串口调试助手显示的结果很奇怪:
这是我写的程序:
#include <reg52.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint z)//延时函数
{
uint x,y;
for(x=z;x>0;x--);
for(y=110;y>0;y--);
}
void init() //系统初始化
{
TMOD |=0X20;//定时器T1,方式2,波特率由PCON寄存器的SMOD决定
SCON=0x50; //REN RI TI,RI为0,TI为0
//串行口1方式1 SCON是串行口1的串行控制寄存器,REN为1,允许接收
PCON=0x00;//各工作方式波特率加倍
TH1=0xfD;//9600bps@11.0592
TL1=0xfD;
TR1=1; //定时器1中断打开
EA=1;//cpu总中断允许位,1为开放中断
ES=1;// 1允许串行口中断
}
void main()
{
init();
while(1)
{
SBUF=22; //比如把22这个数据传给SBUF
while(TI==0);
{
} //数据发送结束时TI自动置1
TI=0;
}
}
void UART_1() interrupt 4
{
//接收完缓冲数据后RI置1
if(RI)//如果RI为1,即如果收到
{
RI=0; //RI置0
}
}
请问程序哪里不对呢?应该如何修改呢?谢谢大家
|