找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1417|回復(fù): 0
收起左側(cè)

定時(shí)器 適合stc89c52rc

[復(fù)制鏈接]
ID:812531 發(fā)表于 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) //定時(shí)器計(jì)算時(shí)間函數(shù)且最大值是71ms
{
    unsigned long tmp;
        tmp=11059200/12;  //計(jì)算頻率,因?yàn)橐粋(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期 所以要除以12        且單位是微妙
        tmp=(tmp*ms)/1000;
        tmp=65536-tmp;                //設(shè)置初值
         T0RH=(unsigned char)(tmp>>8);
         T0RL=(unsigned char) (tmp);
         TMOD=0x11;//設(shè)置特殊功能寄存器,配置好工作模式 ,設(shè)置定時(shí)器0,工作方式1
     TH0=T0RH        ;                                                                  //設(shè)置定時(shí)時(shí)間
     TL0=T0RL;
     TR0=1;                 //打開定時(shí)器
}
void confgtimer1(unsigned char ms) //定時(shí)器計(jì)算時(shí)間函數(shù)且最大值是71ms
{
    unsigned long tmp;
        tmp=11059200/12;  //計(jì)算頻率,因?yàn)橐粋(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期 所以要除以12        且單位是微妙
        tmp=(tmp*ms)/1000;
        tmp=65536-tmp;                //設(shè)置初值
         T1RH=(unsigned char)(tmp>>8);
         T1RL=(unsigned char) (tmp);
         TMOD=0x11;//設(shè)置特殊功能寄存器,配置好工作模式 ,設(shè)置定時(shí)器0,工作方式1
     TH1=T1RH        ;                                                                  //設(shè)置定時(shí)時(shí)間
     TL1=T1RL;
     TR1=1;                 //打開定時(shí)器
}
void main()
{
confgtimer0(50);
confgtimer1(50);
while(1)
{
        if(TF0==1) //當(dāng)增加的數(shù)字溢出時(shí)候。TF置1
        {
        timer++;
        TF0=0;           //軟件清零
                if(timer==20)
                {
                timer=0;                                 
                TH0=T0RH;                                  //重新賦值
                TL0=T0RL;
                led=~led;                                //led燈閃爍
                }
        }
                        if(TF1==1) //當(dāng)增加的數(shù)字溢出時(shí)候。TF置1
                {
                timer1++;
                TF1=0;           //軟件清零
                        if(timer1==20)
                        {
                        timer1=0;                                 
                        TH1=T1RH;                                  //重新賦值
                        TL1=T1RL;
                        led1=~led1;                                //led燈閃爍
                        }
                 }

}
}

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表