rayt 发表于 2010-3-2 23:37:59

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;                  /*打开总中断*/

xldpx 发表于 2010-3-2 23:52:04

58通过倍频后不就6T而已吗?怎么达得到1T

rayt 发表于 2010-3-3 07:18:32

回复【楼主位】rayt
-----------------------------------------------------------------------
AUXR1 |= 0x40; // 1T mode这个不起作用,想设置为1T模式

pulan 发表于 2010-3-3 07:32:27

c58好像不可以吧,f系列可以

rayt 发表于 2010-3-3 10:56:00

搞错了, C58是不行, 12C系列的可以
问题是,C58怎么设置115200的波特率, 按用计算公式
RELOAD=256-INT(FOSC/BAUD/32/12+0.5) 算下来就是256了,不知道怎么设置了
STC-ISP可以用115200下载程序,应该是可以用到这么高的速度的

jsjjccc 发表于 2010-3-3 11:03:35

还独立波特率发生器。。。应该是最新的那些芯片,STC89C58应该没有的

rayt 发表于 2010-3-3 11:20:06

仔细看了下资料,用TIMER2 解决了,STC的资料看得眼花,目录也没有,找起来麻烦,容易看串

18.432M   设置115200 速率

        RCAP2H=0xff;
        TH2=0xff;
        RCAP2L=0xFB;
        TL2=0xfb;
        T2CON = 0x34;                // timer 2 run
页: [1]
查看完整版本: stc 89C58RD+ 串口问题