有谁用定时器2做波特率发生器的请进

时间:2022-05-24 23:33:37
   我用W77E58双串口应用,定时器2也要用做波特率发生器,晶振11.0592m
   用9600波特率时初值:  TMOD = 0x20;                          
                         PCON = 0x00;    
                         T2CON=0x34;          // 0b 00110101: T2作为串口0的16位串行波特率发生器,自动重装
                         TH2=0xff;TL2=0xDC;   //baud rate initial value(baud rate 9600 for 11.0592M晶振)
                         RCAP2H=0xff;
                         RCAP2L=0xDC;
                         TR2=1;       //start T/C2 ,serial port--receive mode
                         WDCON=0x00;          //SMOD_1=0 (Baud rate 9600 bps)
                         SCON1 = 0x50;
                         ES1 = 1;
                         EA=1;
   用2400波特率时初值:   TH2=0xff;TL2=0x70;   //baud rate initial value(baud rate 2400 for 11.0592M晶振)
                         RCAP2H=0xff;
                         RCAP2L=0x70;
  用串口精灵查看,没有反应,可我换成定时器1就行,而我要用双串口,双频率,定时器2必须用.
  请用过定时器2的朋友给看一下我的两个初值设的是否正确.如何做才能让定时器2的波特率好用.非常感谢!!!
  急盼回复!

6 个解决方案

#1


你的双串口怎么用的,T1做UART0的定时器,T2做UART1的定时器;还是T2也做UART0的定时器,如果是后者,你的SCON1 = 0x50,要改成SCON = 0x50;

#2


t1做uart0,t2做uart1,t1的初始化没贴出来,但程序里已写了.可是T2好象不起作用

#3


在自动重装模式下,可以不用配置TH2=0xff和TL2=0xDC,只要配置RCAP2H=0xff;
  RCAP2L=0xDC

#4


  PCON = 0x00;   
  T2CON=0x34; // 0b 00110101: T2作为串口0的16位串行波特率发生器,自动重装
  TH2=0xff;TL2=0xDC; //baud rate initial value(baud rate 9600 for 11.0592M晶振)
  RCAP2H=0xff;
  RCAP2L=0xDC;
  TR2=1; //start T/C2 ,serial port--receive mode
  WDCON=0x00; //SMOD_1=0 (Baud rate 9600 bps)
  SCON = 0x50;
  ES1 = 1;
  EA=1;
  T2做UART0的波特率发生器.串口就是不好使,请高手帮忙分析一下原因

#5


双串口只用过p89c669,和这个好像不一样

#6


很好用,谢谢。。。。。。。。

#1


你的双串口怎么用的,T1做UART0的定时器,T2做UART1的定时器;还是T2也做UART0的定时器,如果是后者,你的SCON1 = 0x50,要改成SCON = 0x50;

#2


t1做uart0,t2做uart1,t1的初始化没贴出来,但程序里已写了.可是T2好象不起作用

#3


在自动重装模式下,可以不用配置TH2=0xff和TL2=0xDC,只要配置RCAP2H=0xff;
  RCAP2L=0xDC

#4


  PCON = 0x00;   
  T2CON=0x34; // 0b 00110101: T2作为串口0的16位串行波特率发生器,自动重装
  TH2=0xff;TL2=0xDC; //baud rate initial value(baud rate 9600 for 11.0592M晶振)
  RCAP2H=0xff;
  RCAP2L=0xDC;
  TR2=1; //start T/C2 ,serial port--receive mode
  WDCON=0x00; //SMOD_1=0 (Baud rate 9600 bps)
  SCON = 0x50;
  ES1 = 1;
  EA=1;
  T2做UART0的波特率发生器.串口就是不好使,请高手帮忙分析一下原因

#5


双串口只用过p89c669,和这个好像不一样

#6


很好用,谢谢。。。。。。。。