STC12C系列單片機PWM脈寬調制


  最近給別人做了一個小東西,MCU選的是STC12C5A60S2 ,需要用到PWM控制功能。

在網上找了一下,發現解釋的不盡人意,無奈之下自己琢磨數據手冊弄明白了。

  首先,STC12C5A60S2內置有兩個 編程計數器陣列(PCA) 模塊,分別用於軟件定時器,外部脈沖的捕捉,高速輸出以及脈寬調制輸出(PWM)。具體寄存器詳見數據手冊這里就不多累述了。

  這里就只講PWM的實現,首先需要對PCA進行初始化配置,代碼如下:

  

void Pwm0_init(void)    //PWM0初始化配置
{
    CCON = 0x00;                         //
    CL = 0;                                   //PCA計數器 低8位
    CH = 0;                                  //PCA計數器 高8位
    CMOD = 0x02;                       //選擇時鍾源為系統時鍾源的1/2 
    CCAP0H = CCAP0L = 0x00;           //設置占空比為 0 
    CCAPM0 = 0x42;                   //0100 0010  允許比較器,允許PWM0引腳輸出
    CR = 1;                          //啟動 PCA 計數器陣列
}

上述代碼設置了 P1.3作為 PWM0的輸出腳,並初始化了PWM0,當然初始化完成后,默認占空比為0。

接下來對占空比進行控制:

 
         

//占空比設置 0-255
void Pwm0_outset(u8 grad)
{
CR = 0;              //先關閉計數
CCAP0H=CCAP0L= grad;      //設置占空比,有 0-255 階 
CR = 1;                   //計數打開
}

這樣就完成PWM0控制部分的編寫了,當然還有PWM1沒有寫,相信聰明的讀者也已經明白PWM1該如何配置了,具體參考數據手冊,數據手冊才是硬道理,其他都是虛的。

  希望對大家有所幫助,以上

 

  

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM