我想做个小实验,就是用串口调试助手发一个数据给单片机,单片机把这个数据通过P0显示出来,单片机再把这个数据返回给PC!各位大大请看下面小程序:#include "reg52.h"
unsigned char aa;
void main()
{
SCON = 0x50;
//PCON |= 0x80;
TMOD = 0x20;
TH1 = 0xe8;
TL1 = 0xe8;
TR1 = 1;
while(1)
{
if(RI==1)
{
RI = 0;
P0 = SBUF;
SBUF = P0;
while(!TI);
TI = 0;
}
}
}
这个小程序能可以通过串口助手正常发送数据到单片机,P0也能正常输出数据,但就是不能正常返回一个数据给PC,返回的数据全是FF,(发送和返回的数均为16进制数)虽然未能找出具体原因,估计和直接操作寄存器有关,请各位大大指点一二,说出具体原因还是我的操作有误,谢谢!
但若把程序改为如下:
#include "reg52.h"
unsigned char aa;
void main()
{
SCON = 0x50;
//PCON |= 0x80;
TMOD = 0x20;
TH1 = 0xe8;
TL1 = 0xe8;
TR1 = 1;
while(1)
{
if(RI==1)
{
RI = 0;
P0 = SBUF;
aa = SBUF;
SBUF = aa;
while(!TI);
TI = 0;
}
}
}
程序能正常发送和返回一个数据,发送和返回的都是同一个数据,不再是FF;两个程序供各位大大参详及指正!谢谢! |