微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于是使用89C52的T2计时器的问题

关于是使用89C52的T2计时器的问题

时间:10-02 整理:3721RD 点击:
   SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1                             
            TMOD|= 0x20;      //定时器工作方式2                    
            PCON|= 0x80;                                                         
                //TH1  = 0xFD;     //baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
                TH1 = 0xF3;                // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
            TL1 = 0xF3;         
                TR1  = 1;                                                            
                ES   = 1;        //开串口中断
                EX0  = 1;                 
                EA   = 1;        // 开总中断
void UA()   interrupt 4 using 3
{
  if(RI)
   {
   EA=0;
   RI = 0;
   read = SBUF;
   i++;
   if(i>34)i=0;
   EA=1;     
    }
}       
改为用T2实现如下
        T2MOD=0x00;
        SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1                             
           T2CON|= 0x00;      //定时器工作方式2                    
            PCON|= 0x80;                                                         
               
      
                RCAP2H=0xF3;
            RCAP2L=0xF3;
            TH2 = 0xF3;                // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
        TL2 = 0xF3;   
                TR2 = 1;                                                     
                ES   = 1;        //开串口中断
                EX0  = 1;                 
                EA   = 1;        // 开总中断
void Init(void)
{                T2MOD=0x00;
        SCON = 0x50;      //REN=1允许串行接受状态,串口工作模式1                             
           T2CON|= 0x00;      //定时器工作方式2                    
            PCON|= 0x80;                                                         
                / baud*2  /* reload value 19200、数据位8、停止位1。效验位无 (11.0592)
      
                RCAP2H=0xF3;
            RCAP2L=0xF3;
            TH2 = 0xF3;                // //baud*2  /*  波特率4800、数据位8、停止位1。效验位无 (12M)
        TL2 = 0xF3;   
                TR2 = 1;                                                     
                ES   = 1;        //开串口中断
                EX0  = 1;                 
                EA   = 1;        // 开总中断
           // IE = 0x0;
}
void UA()   interrupt 4 using 3
{  TF2=0;
  if(RI)
   {
   EA=0;
   RI = 0;
   read = SBUF;
   i++;
   if(i>34)i=0;
   EA=1;     
    }
}       
改完后下到片子里不好使,求各位老师指教!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top