打印
[电池电源管理]

请教:79F166,T2做定时器,T4做波特率发生器,T4启动T2就停止了

[复制链接]
1773|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gw168sh|  楼主 | 2014-5-20 20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我试过在main里面用定时器2计时5秒后,启动T4,一启动T2就不工作了
        //-----------------------Timer1 SET-----------------------
        TR2                =        0;                                        //stop timer1
        TF2                =        0;
        T2CON   =   Bin(00000000);                //P44
        T2MOD        =        Bin(00000000);                //P45
        //TL2                =        LOBYTE(CLOCK_250US);
        //TH2                =        HIBYTE(CLOCK_250US);
        TL2 = 0x50;                    //设置定时初值
        TH2 = 0xFB;                    //设置定时初值
        RCAP2L = 0x50;                //设置定时重载值
        RCAP2H = 0xFB;                //设置定时重载值
        TR2 = 1;                    //定时器2开始计时
        /*-----------------------Timer4 SET-----------------------*/
         TR4                =             0;
         TF4      =        0;      
     T4CON      =        Bin(00000100);                   //设置Timer4用于产生波特率(baudrate generator)
     TL4        =        LOBYTE(UART_BAUDRATE);         //P48
     TH4        =        HIBYTE(UART_BAUDRATE);         //P48
         PCON      &=                 Bin(10111111);                   //P84  set SSTAT 0
         ES=0;
         SCON       =        Bin(01010000);        //P83  设置串口通讯方式为8位异步通讯,波特率可变。

         //TR4        =        1;                     //start timer4
        /*-------------------------IE SET-------------------------*/
        //使能ADC中断和Timer1中断  
                                                                //                            Bit7        Bit6  Bit5  Bit4  Bit3  Bit2  Bit1  Bit0
        IEN0 = Bin(00110000);                //P53  IEN0                 EA         EADC  ET2   ES0    N/A   EX1   ET5   EX0
        IEN1 = Bin(01000000);                //P54  IEN1        ESCM/ELPD   ET4   EPWM  ET3    EX4   EX3   EX2   N/A
       
       
}
沙发
gw168sh|  楼主 | 2014-5-20 20:16 | 只看该作者
/*******************************************************************  
功能说明:        串口通讯中断响应程序
其他说明:        TI1---发送完一个字节
                        RI1---接收完一个字节
输入:                无
输出:                无
****************************************************************************/
void        EUART0_ISP(void) interrupt 4
{
        EA        =        0;        
        if(TI)                                //发送完一个数据
        {
                TI=0x00;                                                
                SBUF=0xc0;                //载入要发送的数据
                //gBUartLen++;                                       
                        
        }

        if(RI)                                                                                
        {
                RI        =        0x00;
                //gBUartBuf[gBUartLen] = SBUF;//SBUF;        //保存到数据缓冲器中
                //gBUartLen++;

        }
        //if(gBUartLen >MAX_UART_DATA_LEN )
        //{                                
        //        gBUartLen        =        0x00;
        //}
        EA        =        1;        
}

/****************************************************************************
                        void        Timer2_ISP(void) interrupt 5
功能说明:        Timer2中断处理子程序
其他说明:        1.每250us中断一次
                        2.用于报警蜂鸣器驱动和3秒计时
输入:                无
输出:                无
****************************************************************************/
void        Timer2_ISP(void) interrupt 5
{       
  EA        =        0;
  TF2   =   0;//清中断标志
  EXF2  =   0;
   g_ACC+=255;
   if(g_ACC>10000) //10ms
   {
   g_ACC-=10000;//
   ms++;
   }
   if(ms==100)
     {
         LCD_xx=~LCD_xx;//LCD刷新
     ms=0;
     miao++;
         LED4=~LED4;
           if(zhunbei) timemiao++;
     }
     if(miao==60)
      {
     fen++;
     miao=0;
      }
  EA        =        1;
}

/*******************************************************************
功能说明:        Timer4中断响应程序      P60
其他说明:        用于产生串口波特率
输入:                无
输出:                无
*******************************************************************/
void        Timer4_ISP(void) interrupt         13
{
        EA        =        0;
        TF4       =        0;           //P50
        EA        =        1;

}

使用特权

评论回复
板凳
sszxxm| | 2014-6-7 14:17 | 只看该作者
没用你这方法试过,不过166A友情提醒一句:寄存器分BANK0和1,地址是重叠的,要用特殊寄存器赋值错开,你注意下,有很多添加的非标准52的寄存器在BANK1(默认都在BANK0),我曾在PWM的反相通道上栽过。浪费好久时间

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

15

帖子

1

粉丝