代码如下所示,只要定时器一打开(TR1=1),串口助手里面就不停的显示00 00 00.。。,发送和接收都没反应,实在找不出哪里的问题,请各位大神帮看一下
#include <REGX52.H>
void URET_TX(unsigned char key)
{
SBUF=key; //写入数据进SBUF缓存器
if(TI==1) //检测标志位,是否是1,,表示数据传出完成
{
if(RI==1) //检测是否接收完成,如果是1,标示数据被完整接收
P2=SBUF; //读取发送过来的SBUF数据
RI=0; //重置数据传输完成标志位
TI=0; } //重置数据接收完成标志位
}
void URET_Tu(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xF4; //设定定时初值
TH1 = 0xF4; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器用于产生波特率
ES=1; //开启串口通信
}
void main(void)
{
URET_Tu();
URET_TX(SBUF);
}
上面代码 只要TR1=1, URET_TX()函数中就算只有SBUF=key一个语句,也全是00 00 00...不停的出
|