编写了一个串口通过电脑端串口调试程序向单片机发送数据的程序。遇到如下问题:只要在主程序中加入“write_data(SBUF);”语句,即将接收数据显示在lcd,则串口调试程序和lcd都只能接收(显示)两个字符,而没有该语句,串口调试程序可正确接收任意长度字符串。
百思不得其解啊!!!!
程序如下:
----------------------------------------------------
#include <reg52.h>
#include<intrins.h>
#include "sys.h"
#include "lcd.h"
#include "delay.c"
#include "lcd1602.c"
unsigned char Temp; //定义临时变量
void main()
{
close_segment();
lcd_init();
SCON = 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xFD; /* TH1: reload value for 9600 baud @ 11.0592MHz */
TR1 = 1; /* TR1: timer 1 run */
// EA = 1; /*打开总中断*/
// ES = 1; /*打开串口中断*/
while(1)
{
while(RI==0);
RI=0; //标志位清零
Temp=SBUF; //接收数据
SBUF=Temp; //再将接收数据发回至电脑
while(TI==0);
TI=0;
// write_data(SBUF);
}
}
-----------------------------------------------
注:lcd1602显示程序肯定没问题,因为其他程序均可正确显示。
希望高手出手相助呀!!! |