程序设定波特率4800,单片机输出的是3c 38 38 38 38 38 38 38 38,但是串口显示的却是D8 EC EC EC EC EC EC EC 00,程序上实在找不到错误,更改代码切到9600也是这样,显示的错位字符都一样。个人认为不像是乱码,乱码应该很乱,接收到的字符不规律,这个非常规律,接收到的全都是D8 EC EC EC EC EC EC EC 00,几乎都不会错。硬件上已经换了两个单片机,重新焊了一块版。此外将该程序烧在之前做的一些板上都正常输出。以下是代码
#include
#define uchar unsigned char
#define uint unsigned int
void PORT_Init (void)
{
P0MDOUT = 0x17;
XBR0 = 0x01;
XBR1 = 0xC1;
}
void UART0_Init (void)
{
SCON0 = 0x50;
//TH1 = 0x64;
TMOD = 0x20;
CKCON = 0x01;
TH1 = 0x60;
TL1 = TH1;
TR1 = 1;
TI0 = 1;
}
void main()
{
char g;
int z;
PCA0MD &= ~0x40;
OSCICN = 0x81;
PORT_Init();
UART0_Init();
while(1)
{
g = 0x3c;
SBUF0=g;
while(TI0==0);
TI0=0;
for(z = 0;z < 8; z++){
g = 0x38;
SBUF0=g;
while(TI0==0);
TI0=0;
}
delay(50000);
}
}
跪求大佬帮忙……折磨半个月了……