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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:204609 發(fā)表于 2017-7-24 10:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
只是一個PWM控制LED燈的小程序。我對于C語言的定時器修正值判斷不清楚,這里的修正值13,
不知道從哪里開始數(shù)機械周期的
#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;  //選擇獨立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;  //計算一個周期所需的計數(shù)值
    high = (tmp * dc) / 100;      //計算高電平所需的計數(shù)值
    low  = tmp - high;            //計算低電平所需的計數(shù)值
    high = 65536 - high + 13;     //計算高電平的定時器重載值并修正
    low  = 65536 - low  + 13;     //計算低電平的定時器重載值并修正

    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;        //啟動T0
    PWMOUT = 1;     //輸出高電平
}
void ClosePWM()  //關(guān)閉PWM
{
    TR0 = 0;     //停止定時器
    ET0 = 0;
    PWMOUT = 1;  //輸出高電平
}
void InterruptTimer0() interrupt 1  //T0中斷服務(wù)函數(shù)
{
    if (PWMOUT == 1)  //當(dāng)前輸出為高電平時,裝載低電平值并輸出低電平
    {
        TH0 = LReloadH;
        TL0 = LReloadL;
        PWMOUT = 0;
    }
    else              //當(dāng)前輸出為低電平時,裝載高電平值并輸出高電平
    {
        TH0 = HReloadH;
        TL0 = HReloadL;
        PWMOUT = 1;
    }



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

使用道具 舉報

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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲一级 | 国内精品久久精品 | 91国内视频在线 | av一区二区三区四区 | 色一情一乱一伦一区二区三区 | 亚洲天堂av在线 | 亚洲风情在线观看 | 99久9| 一区二区三区四区日韩 | 国产午夜在线 | 日韩毛片在线视频 | 国产精品高潮呻吟久久 | 国产一区二 | 国产精品久久久久久久久久久免费看 | 中文字幕在线观看一区二区 | 亚洲第一av | 一区二区三区日 | 中文字幕日韩一区 | av在线三级| 污免费网站 | 精品一区二区三区不卡 | 精品国产久 | 黑人中文字幕一区二区三区 | 日韩高清中文字幕 | 欧美日韩中文字幕在线 | 欧美日韩精品一区二区三区蜜桃 | 国产成人午夜高潮毛片 | 国产国产精品久久久久 | 亚洲免费毛片 | 日韩久久中文字幕 | 天天综合久久网 | 国产精品亚洲视频 | 国产在线资源 | 99这里只有精品视频 | a免费观看 | 久久久久久久久久久一区二区 | 成人在线精品 | 欧美一区二区三区精品 | 亚洲乱码国产乱码精品精的特点 | 超碰av免费 | 国产精品日本一区二区不卡视频 |