stc 89C58RD+ 串口问题
看STC PDF 可以设置为1T模式,怎么设置都没提高不了速率,请问是哪里设置有问题?#define RELOAD_COUNT 0xF6 //18.432MHz Crystial,1T,SMOD = 1,115,200bps
//#define RELOAD_COUNT 0xEC //18.432MHz Crystial,1T,SMOD = 1, 57,600bps
//#define RELOAD_COUNT 0xE2 //18.432MHz Crystial,1T,SMOD = 1, 38,400bps
//#define RELOAD_COUNT 0xD8 //18.432MHz Crystial,1T,SMOD = 1, 28,800bps
//#define RELOAD_COUNT 0xC4 //18.432MHz Crystial,1T,SMOD = 1, 19,200bps
//#define RELOAD_COUNT 0x88 //18.432MHz Crystial,1T,SMOD = 1,9,600bps
//#define RELOAD_COUNT 0xFB //18.432MHz Crystial,12T,SMOD = 1,19200bps
//#define RELOAD_COUNT 0xFB //18.432MHz Crystial,12T,SMOD = 0,9600bps
//#define RELOAD_COUNT 0xFD //11.0592MHz Crystial,12T,SMOD = 0,9600bps
SCON= 0x50; /* SCON: 模式 1, 8-bit UART, 使能接收 */
TMOD |= 0x21; /* TMOD: timer 1, mode 2, 8-bit reload */
// TH1 = 0xFD; /* TH1:reload value for 9600 baud @ 11.0592MHz */
TH1 = 0xFB; /* TH1:reload value for 9600 baud @ 18.432MHz */
TH1 = RELOAD_COUNT; //使用独立波特率发生器作为波特率发生器
TL1 = RELOAD_COUNT; //使用独立波特率发生器作为波特率发生器
//PCON |= 0x80; // 加倍
AUXR1 |= 0x40; // 1T mode
//T0x12,T1x12;UART_MOx6,BRTR,S2SMOD,BRTx12,XRAM,S1BRS
//Baud = Fosc/(256 - RELOAD_COUNT)/32/12 (12T模式)
//Baud = Fosc/(256 - RELOAD_COUNT)/32 (1T模式)
//BRTR = 1,启动独立波特率发生器
//S1BRS = 1,串口1选择独立波特率发生器作为波特率发生器,
//此时定时器1可以释放出来作为定时器,计数器,时钟输出使用。
// AUXR1 = 0x80; //释放该行指令,则串行口从P3口切换到P1口
TR1 = 1; /* TR1:timer 1 run */
EA = 1; /*打开总中断*/ 58通过倍频后不就6T而已吗?怎么达得到1T 回复【楼主位】rayt
-----------------------------------------------------------------------
AUXR1 |= 0x40; // 1T mode这个不起作用,想设置为1T模式 c58好像不可以吧,f系列可以 搞错了, C58是不行, 12C系列的可以
问题是,C58怎么设置115200的波特率, 按用计算公式
RELOAD=256-INT(FOSC/BAUD/32/12+0.5) 算下来就是256了,不知道怎么设置了
STC-ISP可以用115200下载程序,应该是可以用到这么高的速度的 还独立波特率发生器。。。应该是最新的那些芯片,STC89C58应该没有的 仔细看了下资料,用TIMER2 解决了,STC的资料看得眼花,目录也没有,找起来麻烦,容易看串
18.432M 设置115200 速率
RCAP2H=0xff;
TH2=0xff;
RCAP2L=0xFB;
TL2=0xfb;
T2CON = 0x34; // timer 2 run
页:
[1]