欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1278|回復: 0
打印 上一主題 下一主題
收起左側

單片機定時器小燈

[復制鏈接]
跳轉到指定樓層
樓主
ID:812531 發表于 2021-2-24 20:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include<reg52.h>
#include<intrins.h>
sbit led=P1^0;
sbit led1=P1^1;
unsigned char timer,timer1;
unsigned char T0RH,T0RL,T1RH,T1RL;
void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        i = 2;
        j = 199;
        do
        {
                while (--j);
        } while (--i);
}

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);
        // IE=0x82; //IE寄存器 相當于EA=1,ET0=1
         EA=1;
         ET0=1;
         TMOD=0x11;//設置特殊功能寄存器,配置好工作模式 ,設置定時器0,工作方式1
                 //TMOD &=0xF0;  
         //TMOD|=0x01;
     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
         //TMOD &=0x0F;  
        // TMOD|=0x10;
        PT1=1;//設置中斷優先級1
         EA=1;  
         ET1=1;
     TH1=T1RH        ;                                                                  //設置定時時間
     TL1=T1RL;
     TR1=1;                 //打開定時器
}
void main()
{
confgtimer0(50);
confgtimer1(50);
while(1)
                {
                        
               
                }
                }
void Confgtimer0() interrupt 1 //Confgtimer0()這里可以隨便取 去這個名字僅僅只是他表示定時器0
{
           
        timer++;                                         
                TH0=T0RH;                                  //重新賦值
                TL0=T0RL;
               
                if(timer==20)
                {
                  timer=0;
                          led=~led;

                }

                  
}
        void Confgtimer1() interrupt 3 //Confgtimer0()這里可以隨便取 去這個名字僅僅只是他表示定時器0
{
        
               
        timer1++;                                         
        TH1=T1RH;                                  //重新賦值
                TL1=T1RL;
               
                if(timer1==20)
                {
                  timer1=0;
                   led1=~led1;

                }

                  
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表