最近在STC89C54上跑36M晶振,但发送串口时一直接收错误的数据 串口程序部分如下
/***条件编译区********************/
#define SEND_AD_DATA
/*********#define量********************/
#define FOSC 36000000L
#define BAUD 600
#ifdef SEND_AD_DATA
sfr T2MOD = 0xc9;
void Init_T2(void)
{
SCON |= 0X50;
T2CON |= 0X30
T2MOD = 0X00; //默认设置就可以
TL2 = RCAP2L = (65536 - (FOSC / 32 / BAUD));
TH2 = RCAP2H = (65536 - (FOSC / 32 / BAUD)) >> 8;
TR2 = 1; //可位寻址 在寄存器T2CON中
ES= 1;
}
void send_byte(unsigned int send_value)
{
EA=0;
SBUF = send_value>>8; //先发送高位
while(!
ti);
TI=0;
DELAY_Ms(1000);
SBUF = send_value;
while(!TI);
TI = 0;
EA=1;
}
#endif
请问我这样设置有问题么?有谁用过36M的给些调试建议,在此谢过。。。
另外 硬件方面 晶振两旁没有加电容 并了个4.7K的电阻
TL2 = RCAP2L = (65536 - (FOSC / 32 / BAUD));
TH2 = RCAP2H = (65536 - (FOSC / 32 / BAUD)) >> 8;
这个计算公式应该没错 用过很多次了,波特率从600一直试到15200
一周热门 更多>