找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 936|回复: 0
收起左侧

定时器 适合stc89c52rc

[复制链接]
ID:812531 发表于 2021-2-22 23:02 | 显示全部楼层 |阅读模式
本帖最后由 朝朝1 于 2021-2-24 10:31 编辑

#include<reg52.h>
sbit led=P1^0;
sbit led1=P1^1;
unsigned char timer,timer1;
unsigned char T0RH,T0RL,T1RH,T1RL;
void confgtimer0(unsigned char ms) //定时器计算时间函数且最大值是71ms
{
    unsigned long tmp;
        tmp=11059200/12;  //计算频率,因为一个机器周期等于12个时钟周期 所以要除以12        且单位是微妙
        tmp=(tmp*ms)/1000;
        tmp=65536-tmp;                //设置初值
         T0RH=(unsigned char)(tmp>>8);
         T0RL=(unsigned char) (tmp);
         TMOD=0x11;//设置特殊功能寄存器,配置好工作模式 ,设置定时器0,工作方式1
     TH0=T0RH        ;                                                                  //设置定时时间
     TL0=T0RL;
     TR0=1;                 //打开定时器
}
void confgtimer1(unsigned char ms) //定时器计算时间函数且最大值是71ms
{
    unsigned long tmp;
        tmp=11059200/12;  //计算频率,因为一个机器周期等于12个时钟周期 所以要除以12        且单位是微妙
        tmp=(tmp*ms)/1000;
        tmp=65536-tmp;                //设置初值
         T1RH=(unsigned char)(tmp>>8);
         T1RL=(unsigned char) (tmp);
         TMOD=0x11;//设置特殊功能寄存器,配置好工作模式 ,设置定时器0,工作方式1
     TH1=T1RH        ;                                                                  //设置定时时间
     TL1=T1RL;
     TR1=1;                 //打开定时器
}
void main()
{
confgtimer0(50);
confgtimer1(50);
while(1)
{
        if(TF0==1) //当增加的数字溢出时候。TF置1
        {
        timer++;
        TF0=0;           //软件清零
                if(timer==20)
                {
                timer=0;                                 
                TH0=T0RH;                                  //重新赋值
                TL0=T0RL;
                led=~led;                                //led灯闪烁
                }
        }
                        if(TF1==1) //当增加的数字溢出时候。TF置1
                {
                timer1++;
                TF1=0;           //软件清零
                        if(timer1==20)
                        {
                        timer1=0;                                 
                        TH1=T1RH;                                  //重新赋值
                        TL1=T1RL;
                        led1=~led1;                                //led灯闪烁
                        }
                 }

}
}

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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