单片机串行口与电脑通讯只有P2口接收到的数据准确,其他3个口都不行

用单片机接收PC发送的数据,同样的的程序的,只有在P2口上才能正常运行,其他3口数据不是数据不对,就是只在LED上显示一遍不保持状态 ,并且只能用STC ISP上才行,如果在串口调试助手2.2上,发送一遍感觉就卡那了 ,只有关闭在打开才行,这是我的写的程序 ,就算是用开发板自带的程序也是这吊样,气死我了
#include<reg52.h>#define uint unsigned int
#define uchar unsigned char
#define LED P3
sbit beep=P1^5;
void init_RS232();
void delay(uint t);
void bee();
uchar num=0;
void main()
{
init_RS232();
while(1);
}
void init_RS232()
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
PCON=0x00;
ES=1;
EA=1;
LED=0xff;
}
void RS232() interrupt 4
{
if(RI==1)
RI=0;
num=SBUF;
LED=~num;
bee();
}

void delay(uint t){
uchar x,y;
for(x=t;x>0;x--)
for(y=120;y>0;y--);
}
void bee()
{
beep=0;
delay(30);
beep=1;
delay(15);
beep=0;
delay(15);
beep=1;

}

第1个回答  2013-02-03
你先查一下晶体振荡器的频率,是不是11.0592M,
很多时候,串口工作不正常,跟晶振有关。追问

我都查了啊 晶振 波特率都没有错

追答

我比较奇怪,串行口的数据都是从P3进去的,你怎么说只有P2 准确呢?
你检查一下你的显示电路的接法,也许你的显示线路本身就跟P2 有关系,也就是只允许P2 输出数据显示。
很多开发板就是这样,给你定死了。

相似回答