×
单片机 > 单片机程序设计 > 详情

keil C51使用串口时程序跑死的问题

发布时间:2020-06-04 发布时间:
|

在使用STC51单片机的串口时,有时候会进入一种很奇怪的情况,就是程序进入了一下子跑死了,初始化代码如下:


void UsartConfiguration(unsigned int bps)

{

SCON = 0X50; //设置为工作方式1 10位异步收发器

TL2 = RCAP2L = bps; //set auto reload value

TH2 = RCAP2H = bps>>8;

T2CON = 0x34;//0011 0100  timer2 sart run

ES = 1;//打开串口中断,注意打开开一定要写串口中断函数

EA = 1;//打开总中断

}


经过程序模拟DEBUG可以发现程序跑死在发送串口数据,等待TI标志位上了

char putchar(char ch)

/* Place your implementation of fputc here */ 

SBUF=(unsigned char)ch; //将接收到的数据放入到发送寄存器

while(!TI);  //等待发送数据完成

TI=0; //清除发送完成标志位

return ch;

}


解决方法:

1、关闭串口中断,即


ES = 0;

2、添加串口服务函数,之前是打开中断后却忘了添加中断服务函数

void UARTInt() interrupt 4

{

unsigned char date;

if(RI == 1)

{

RI = 0;

                date = SBUF;		

}}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil(MDK-ARM)系列教程(七)_菜单