久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

經典單片機兩定時器控制呼吸燈程序與Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主



單片機源程序如下:
#include <reg52.h>

#define        uchar  unsigned char  
#define        uint   unsigned int
#define        ulong  unsigned long

ulong cnt;
uint  cnt_T1,   high,  low;
uchar TH0_H, TL0_H,  TH0_L,  TL0_L,  T1H1,    T1L1,  flag = 0;
uchar duty[19] = {5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95};
sbit out = P3^7;

uchar shuying = 0;


void delay_fy(uchar fy, uchar dy);

void time_1(uchar ms);

void sm_du(uchar dy);


void main()

{

    TMOD = 0X11;    //  定時器0/1都工作在方式1,是2^16計數

    EA=1;

    delay_fy(100, 5);

    time_1(50);

    while(1);

}



void delay_fy(uchar fy, uchar dy)   // 輸入頻率fy,占空比dy

{

    cnt =  (11059200/fy)/12;        //  要產生頻率為fy,定時器0所要計的數值

    high = (cnt*dy)/100;            //  計算出高電平所要計的數值

    low = cnt - high;               //  計算出低電平所要計的數值

    high = 65536 - high;            //  確定定時器0,從哪個初值開始計時,記錄的是高電平

    low = 65536 - low;              //  確定定時器0,從哪個初值開始計時,記錄的是低電平

    TH0_H = (uchar)(high>>8);    //  高電平,給TH0預備重裝初值

    TL0_H = (uchar)high;         //  高電平,給TL0預備重裝初值

    TH0_L = (uchar)(low>>8);      //  低電平,給TH0預備重裝初值

    TL0_L = (uchar)low;           //  低電平,給TL0預備重裝初值

    TH0 = TH0_H;

    TL0 = TL0_H;

    out = 1;               

    ET0 = 1;

    TR0 = 1;

}



void time_1(uchar ms)

{

    ulong temp;

    temp =  11059200/1000;

    temp = (temp*ms)/12;

    cnt_T1 = 65536 - temp;

    T1H1 = (uchar)(cnt_T1>>8);

    T1L1 = (uchar)cnt_T1;

    TH1 = T1H1;

    TL1 = T1L1;

    ET1=1;

    TR1=1;

}



void sm_du(uchar dy)

{

    high = (cnt*dy)/100;

    low = cnt - high;

    high = 65536 - high;

    low  = 65536 - low;
}

void time_0() interrupt 1

{

    if(out==0)  //  準備產生高電平

    {

        TH0 = TH0_H;         //  高電平產生  初值重裝

        TL0 = TL0_H;

        out = 1;

    }

    else

    {

        TH0 = TH0_L;         //  低電平產生  初值重裝

        TL0 = TL0_L;

        out = 0;

    }

}



void T1_Timer1() interrupt 3

{

    TH1 = T1H1;

    TL1 = T1L1;

    sm_du(duty[shuying]);

    if(0 == flag)   //  flag=0時,表示呼吸燈由暗變亮

    {

        shuying++;

        if(shuying >=18)

        {

            flag = 1;

        }

    }


    }

}

詳見附件
經典兩定時器控制呼吸燈001.rar (16.56 KB, 下載次數: 20)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜免费小视频 | 亚洲国产精品一区二区第一页 | 四虎伊人 | 久久国产欧美日韩精品 | 亚洲成人播放器 | 狠狠的干 | 国产玖玖 | 99色在线视频 | 特级做a爱片免费69 精品国产鲁一鲁一区二区张丽 | 免费黄色网址视频 | 亚洲1区 | 热99| 精品亚洲永久免费精品 | 午夜免费精品视频 | 国产资源视频 | 欧美精品福利视频 | 97影院2| 一区二区日本 | 亚洲一区二区网站 | 欧美精品一区三区 | 国精产品一区二区三区 | 九九热免费视频在线观看 | 色爱av| 国产在线一区二区三区 | 精品国产一区久久 | 日韩欧美在线视频播放 | 日韩国产在线观看 | 精品中文字幕一区二区三区 | 国产美女在线看 | 亚洲国产网 | 精品国产免费一区二区三区演员表 | 五月天天丁香婷婷在线中 | 日韩精品三区 | 国产精品视频网 | 亚洲区一 | 亚洲第一福利网 | 日本a视频 | 污片在线观看 | 一区二区三区高清 | 欧美视频三区 | 成人福利在线 |