在使用51单片机中遇到一个问题。我使用定时器做波特率发生器,因为接收和发送的波特率不一样,所以波特率要不停的切换,在切换波特率时,我关闭串口中断》关闭定时器》重新赋定时器的高八位和低八位值》启用定时器》打开串口中断。这样的流程有问题吗?另外我用串口发送数据时用串口中断的方法,程序结构如下,有问题吗?
void rec_send_data(void) interrupt 4 //串口中断
{
if(RI)//接收中断
{
RI = 0;//清除接收中断
rec_data = SBUF;//读取接收的数据
TI = 1;//打开发送中断
}
else if (TI)//发送中断
{
TI = 0;//清除发送中断
SBUF = send_data;//把要发送的数据放到发送寄存器中
}
} |