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

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

QQ登錄

只需一步,快速開始

搜索
查看: 3636|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

關(guān)于C語言定時(shí)器重載值修正的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:204609 發(fā)表于 2017-7-24 10:28 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
只是一個(gè)PWM控制LED燈的小程序。我對(duì)于C語言的定時(shí)器修正值判斷不清楚,這里的修正值13,
不知道從哪里開始數(shù)機(jī)械周期的
#include <reg52.h>
sbit  PWMOUT = P0^0;
sbit  ADDR0 = P1^0;
sbit  ADDR1 = P1^1;
sbit  ADDR2 = P1^2;
sbit  ADDR3 = P1^3;
sbit  ENLED = P1^4;
unsigned char HReloadH = 0;  //高電平重載值的高字節(jié)
unsigned char HReloadL = 0;  //高電平重載值的低字節(jié)
unsigned char LReloadH = 0;  //低電平重載值的高字節(jié)
unsigned char LReloadL = 0;  //低電平重載值的低字節(jié)
void ConfigPWM(unsigned int fr, unsigned char dc);
void ClosePWM();
void main ()
{
    unsigned int i;
    P0 = 0xFF;  //P0口初始化
    ADDR0 = 0;  //選擇獨(dú)立LED
    ADDR1 = 1;
    ADDR2 = 1;
    ADDR3 = 1;
    ENLED = 0;  //LED總使能
    EA = 1;     //開總中斷

    while(1)
    {
        ConfigPWM(100, 10);  //頻率100Hz,占空比10%
        for (i=0; i<40000; i++);
        ClosePWM();
        ConfigPWM(100, 40);  //頻率100Hz,占空比40%
        for (i=0; i<40000; i++);
        ClosePWM();
        ConfigPWM(100, 90);  //頻率100Hz,占空比90%
        for (i=0; i<40000; i++);
        ClosePWM();
        for (i=0; i<40000; i++);
    }
}
void ConfigPWM(unsigned int fr, unsigned char dc)  //PWM配置函數(shù),fr-頻率,dc-占空比
{
    unsigned int  high, low;
    unsigned long tmp;

    tmp  = (11059200 / 12) / fr;  //計(jì)算一個(gè)周期所需的計(jì)數(shù)值
    high = (tmp * dc) / 100;      //計(jì)算高電平所需的計(jì)數(shù)值
    low  = tmp - high;            //計(jì)算低電平所需的計(jì)數(shù)值
    high = 65536 - high + 13;     //計(jì)算高電平的定時(shí)器重載值并修正
    low  = 65536 - low  + 13;     //計(jì)算低電平的定時(shí)器重載值并修正

    HReloadH = (unsigned char)(high >> 8);  //高電平重載值拆分為高低字節(jié)
    HReloadL = (unsigned char)high;
    LReloadH = (unsigned char)(low >> 8);   //低電平重載值拆分為高低字節(jié)
    LReloadL = (unsigned char)low;

    TMOD &= 0xF0;   //清零T0的控制位
    TMOD |= 0x01;   //配置T0為模式1
    TH0 = HReloadH; //加載T0重載值
    TL0 = HReloadL;
    ET0 = 1;        //使能T0中斷
    TR0 = 1;        //啟動(dòng)T0
    PWMOUT = 1;     //輸出高電平
}
void ClosePWM()  //關(guān)閉PWM
{
    TR0 = 0;     //停止定時(shí)器
    ET0 = 0;
    PWMOUT = 1;  //輸出高電平
}
void InterruptTimer0() interrupt 1  //T0中斷服務(wù)函數(shù)
{
    if (PWMOUT == 1)  //當(dāng)前輸出為高電平時(shí),裝載低電平值并輸出低電平
    {
        TH0 = LReloadH;
        TL0 = LReloadL;
        PWMOUT = 0;
    }
    else              //當(dāng)前輸出為低電平時(shí),裝載高電平值并輸出高電平
    {
        TH0 = HReloadH;
        TL0 = HReloadL;
        PWMOUT = 1;
    }



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

使用道具 舉報(bào)

沙發(fā)
ID:204609 發(fā)表于 2017-7-25 10:05 | 只看該作者
我能說我打錯(cuò)字了嗎  “這是控制LED燈的程序”
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99re在线视频观看 | 日韩欧美在线观看 | 亚洲国产精品一区二区第一页 | 三级成人在线观看 | 国产欧美精品一区二区色综合朱莉 | 欧产日产国产精品国产 | 韩日精品一区 | 本道综合精品 | 天堂va在线观看 | 亚洲精彩视频 | 中文字幕在线看人 | 国产精品免费在线 | 欧美激情一区二区三级高清视频 | 久久久久久免费精品一区二区三区 | av网站观看 | 97在线播放 | 国产成人精品免高潮在线观看 | 99国产精品视频免费观看一公开 | 看一级黄色毛片 | 四虎影视| www.97国产 | 精品在线观看入口 | 国产一级视频在线 | 国产在线观看不卡一区二区三区 | 亚洲视频中文字幕 | 91视频一区 | 成人久久久 | 久久精品在线免费视频 | 一本大道久久a久久精二百 国产成人免费在线 | 精品国产鲁一鲁一区二区张丽 | 色综合久久久 | 成av在线 | 毛片网站在线观看视频 | h片免费在线观看 | 亚洲免费一区 | 日韩精品一区二区三区中文在线 | 男人的天堂在线视频 | 国产露脸对白88av | 国产91丝袜在线18 | 成人免费大片黄在线播放 | 久久一区二区三区免费 |