找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2414|回复: 5
打印 上一主题 下一主题
收起左侧

我的这个单片机程序 同时启用定时器0和1 怎么不能实现呢个,单个使用正常

[复制链接]
跳转到指定楼层
楼主
ID:878906 发表于 2021-1-29 17:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
同时启用定时器0和1 定时1用于串口中断 ,定时0用于定时1MS中断 求助前辈们指导指导一下 是怎么回事呢?把我给搞蒙了

单片机源程序如下:


void ConfigSUART(unsigned int baud)
{
    ACC = P_SW1;
    ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
    //ACC |= S1_S1;               //(P1.6/RxD_3, P1.7/TxD_3)
    //ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
    P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
   
  
   SCON = 0x50;                //8位可变波特率
    AUXR |= 0x40;                //定时器1为1T模式
    AUXR &= 0xFE;   
    TMOD &= 0x80;                //定时器1为模式0(16位自动重载)
    TL1 = (65536 - (FOSC/4/BAUD));   //设置波特率重装值
    TH1 = (65536 - (FOSC/4/BAUD))>>8;
    TR1 = 1;                    //定时器1开始启动
    ET1=1;
    TI = 1;   //在串口使用printf的时候,需要将T1=1;
    ES = 1;                     //使能串口中断
    printf("\n 串口初始化\n");   
}

/* 配置并启动T0,ms-T0定时时间 */
void ConfigTimer0(unsigned int ms)
{
    unsigned long tmp;  //临时变量
   
    tmp = 11059200 / 12;      //定时器计数频率
    tmp = (tmp * ms) / 1000;  //计算所需的计数值
    tmp = 65536 - tmp;        //计算定时器重载值
    tmp = tmp + 33;           //补偿中断响应延时造成的误差
   
   //AUXR |= 0x80;                   //定时器0为1T模式
    AUXR &= 0xFE;                   //定时器0为12T模式
    TMOD &= 0xF8;                    //设置定时器为模式0(16位自动重装载)
    TH0 = (unsigned char)(tmp>>8);  //定时器重载值拆分为高低字节
    TL0 = (unsigned char)tmp;

    ET0 = 1;        //使能T0中断
    TR0 = 1;        //启动T0
}


void main()
{
    P0M1 = 0;    P0M0 = 0;    //设置为准双向口
    P1M1 = 0;    P1M0 = 0;    //设置为准双向口
    P2M1 = 0;    P2M0 = 0;    //设置为准双向口
    P3M1 = 0;    P3M0 = 0;    //设置为准双向口
    P4M1 = 0;    P4M0 = 0;    //设置为准双向口
    P5M1 = 0;    P5M0 = 0;    //设置为准双向口
    P6M1 = 0;    P6M0 = 0;    //设置为准双向口
    P7M1 = 0;    P7M0 = 0;    //设置为准双向口
    //上面这些是必要的,除非用到PWM
   
  

  ConfigSUART(115200);

    ConfigTimer0(1);   //配置T0定时1ms

     EA = 1;            //开总中断
     
    while (1)
    {

    }
}




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2021-1-30 08:11 | 只看该作者

    AUXR   TMOD  重复配置不当。
回复

使用道具 举报

板凳
ID:390416 发表于 2021-1-30 09:45 | 只看该作者
AUXR   TMOD 要按位与和按位或  不能赋值
回复

使用道具 举报

地板
ID:752974 发表于 2021-1-30 10:15 | 只看该作者
T1用作波特率不能开中断吧。
回复

使用道具 举报

5#
ID:392485 发表于 2021-1-30 12:55 | 只看该作者
AUXR &= 0xFE;                   //定时器0为12T模式
TMOD &= 0xF8;                    //设置定时器为模式0(16位自动重装载)
这种写法会影响其它位的值。
回复

使用道具 举报

6#
ID:878906 发表于 2021-1-30 15:26 | 只看该作者
已解决,谢谢各位大神的指导!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表