我用STC89C52RC写简单串口读数据,然后点亮对应LED的程序 但是读不到,哪里有错啊,多谢指导

程序如下
#include<reg52.h>
void InitUART (void)
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD; //9600 at 11.0592Hz
TL1=0xFD;
TR1 = 1;
EA = 1;
ES = 1;
}

void main (void)
{
InitUART();
while (1)
{
}
}

void UART_SER (void) interrupt 4
{
unsigned char Temp;
if(RI==1)
{
RI=0;
Temp=SBUF;
P1=Temp;
SBUF=Temp;
}
if(TI==1)
{
TI=0;
}
}
麻烦看看哪里有错啊,,我是初学者,用实验板在学习单片机,请赐教,谢谢

Temp=SBUF; // 你这里就只有把SBUF数据复给了temp (就是你串口发送的第一个数据)
P1=Temp; // 然后在P1的总线端口显示这个8位数据
SBUF=Temp; //然后把 刚才接受的数据 在用SBUF 发出去。
你想读什么东西?。
你还没搞清楚 SBUF的工作机制,好好看看书。郭天祥那个程序 纯粹是 瞎玩玩乱写的
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-10
#include<reg52.h>
unsigned char flag,a;
void main()
{

TMOD=0x20;//设置定时器1为工作方式2
TH1=0xfd;
TL1=0xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
while(1)
{
/* if(RI==1)
{
RI=0;
P1=SBUF;
}*/
if(flag==1)
{
ES=0;
flag=0;
SBUF='1';//28;
while(!TI);
TI=0;
SBUF='2';//28;
while(!TI);
TI=0;
SBUF='3';//28;
while(!TI);
TI=0;
ES=1;
}
}
}

void ser() interrupt 4
{
RI=0;
// P1=SBUF;
a=SBUF;
flag=1;
}

建议学习郭天祥十天学会51单片机教程追问

这个教程我看过,你这个程序就是他的那个程序,我也试过,,可是当我向单片机发送数据时,我单片机还是无法返回123,,只有当我按复位的时候,单片机才会发123给电脑,,请问有可能是什么原因呢,,

追答

以上程序测试OK 用串口测试助手发送1 即可在接受中显示1。建议用以上程序先测试电路OK后再用自己的调试程序。

相似回答
大家正在搜