本帖最后由 gdqinci 于 2010-6-1 11:43 编辑
#include <REG51.H>
#define uchar unsigned char
#define uint unsigned int
uchar a=0xff,b;
//-------------------------------------
void init(void)
{
TMOD=0x20;
TH1=0xfd;
TL1=0xfd;
SCON=0x50;
TR1=1;
ES=1;
EA=1;
}
//-------------------------
void delay(uint k)
{
uint data i,j;
for(i=0;i<k;i++)
{
for(j=0;j<121;j++)
{;}
}
}
//===============
void main(void)
{
delay(2);
init();
while(1)
{
P1=a;
if(RI)
{
RI=0;
SBUF=b;
while(!TI);
111
TI=0;
EA=1;
}
}
}
//======================
void serial_serve(void) interrupt 4
{
a=SBUF;
b=a;
EA=0;
}
这样的串口通信程序数据投到P0口用8*LED显示出来的D4D5不正确
比如我用串口软件在PC上发1到单片机,然后在P0口显示收到的数据
正常情况下应该是#00000001B 才对
但P0口显示的数据却是#00110001B
如果我用串口软件在PC上发3到单片机,
正常情况下应该是#00000011B 才对
但P0口显示的数据却是#00110011B
不知道为什么总是多了D4D5这两个位?? |