stc89c52rc 串口发送程序不行!请问怎么回事?
while(1){
ES=0;
TI=0;
SBUF=0x56;
while(!TI);
//ES=1;
delayms(500);
}
}
}
以上是主程序。。
下面是串口初始化程序
/****************************
UART
***************************/
voidInit_uart(void)
{
SCON= 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TH1 = 0xfd;
// TL1 = 0xf9;
TR1 = 1;
TI = 0;
// EA=1; //
// ES=1; //
}
我明明发送的是0x56 但是收到的却是如下所示的数据。。。。。从串口工具上收到的。。
B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 B6 B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 B6 B6 B6 B6 B6 B6 B6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6 B6 A6
请问各们大虾。是什么原因???
我的电脑串口是没有问题的。。 波特率对吗
查查 对照使用的晶振查看波特率是否正确 为啥TH1和TL1的初值不同??
假设晶振是11.0592M,TH1=0FDH的话,波特率是9600
如果不对,要么初值算错了,要么晶振有问题。 晶振是12Mhz的。。TH1=0xfd 发送一个OX00 串口调试工具上显示是0x80!!! 换11.0592m晶体。给th0和tl0全给fd。就行啦 谢谢。楼上大哥 SBUF=0x56;
while(!TI);
TI=0;
delayms(500); 纯属路过,,学学知识
页:
[1]