51串口通信问题,由串口助手发送十个字节,单片机接收十个字节,显示无法接收,程序如下

#include<reg51.h>#define uchar unsigned char
uchar RX_BUF[10];
uchar TxBuf[10];
uchar RXend=0;
sbit LED0 =P3^4;
sbit LED1 =P3^7;
void Inituart()
{
IE=0x90; //打开中断总开关及串口中断开关
SCON = 0x50;//设定串行口工作方式1 允许接受
TMOD = 0x20; //定时器1,自动重载, 产生波特率
// PCON=0x80; // 加上他后波特率是19200 SMOD为1
TL1 = 0xfa;
TH1 = 0xfa; //波特率为9600 ,22.1184MHz
TR1 = 1;
}
/**************************接收上位机传送数据***************************************/
void uart_js() interrupt 4 //RI==1时执行串口中断
{
if(RI)
{
RI=0;
RX_BUF[RXend++]=SBUF; //保存数据
}

}
void main()
{
Inituart();
while(1)
{
while(RXend<10); //waiting receive end
RXend=0;
LED0=0;

}}
调试不成功,请问是哪出了问题呢

第1个回答  2012-09-17
【1】主程序中
LED0=0;
改成:
LED0=!LED0;
【2】用断点调试。在中断服务中
“RX_BUF[RXend++]=SBUF; //保存数据”

这一句后面增加两行。
if(RXend==10)
;(并在此行设断点,检查一下缓冲RX_BUF内容。)
相似回答