请教,下面代码 不用中断处理,按逻辑一步步推进是可行的,但实际情况是,复位后灯亮,再发任何数据LED灯灭,重新写入数据根本不起作用,请问是什么原因。
#include <REGX52.H>
void URET_TX(unsigned int key)
{
while(TI==0)//判断信号是否接收完成
{P2_3=SBUF;//读取寄存器中所写入的0,LED灯亮
}
TI=0;//重置信号完成标志位,重新进入上一个while循环
}
void URET_Tu(void)
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
TMOD &= 0x0F; //设置定时器模式
TMOD |= 0x20; //设置定时器模式
TL1 = 0x15; //设置定时初值
TH1 = 0x15; //设置定时重载值
TF1 = 0; //清除TF1标志
ET1 = 0; //禁止定时器1中断
TR1 = 1; //允许止定时器1中断
ES=1; //串口中断
}
unsigned char word;
void main(void)
{ int n;
URET_Tu();//初始化串口
while(1)
{ URET_TX(SBUF);//写入数值0
P2_3=1;//LED灯重新置地脚为高电位,完成后重新进入第一步,写入值
}
}