專(zhuān)注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

stc可調(diào)PWM程序

作者:佚名   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2011年01月31日   【字體:

下面這個(gè)程序是應(yīng)用在stc12c2052ad上的pwm程序,測(cè)試成功

#include<reg52.h>


sfr CCON =0xD8;    //PCA  control register
sfr CMOD =0xD9;
sfr CL   =0xe9;
sfr CH   =0xF9;
sfr CCAP0L=0xea;
sfr CCAP1L=0xeb;
sfr CCAP0H=0xfa;
sfr CCAP1H=0xfb;
sfr CCAPM0=0xda;
sfr CCAPM1=0xdb;

sbit CR=0xde; //位尋址

void main(void)
{
  CMOD=0x02;  //使用系統(tǒng)時(shí)鐘,時(shí)鐘輸入源頻率fosc/2。PWM頻率=fosc/2/256
            /************************************
    7      6       5       4       3       2        1      0 
   CIDL    -       -       -      cps2    CPS1     CPS0   ECF
                        
            CIDL: =0時(shí),空閑模式下PCA計(jì)數(shù)器繼續(xù)工作;=1時(shí),空閑模式下PCA計(jì)數(shù)器停止工作。
            CPS2,CPS1,CPS0:PCA計(jì)數(shù)脈沖選擇。010,定時(shí)器0的溢出,可以實(shí)現(xiàn)可調(diào)頻率的PWM輸出。
             ECF: =1時(shí),使能寄存器CCON  CF位的中斷;=0時(shí),禁止該功能。
   ***************************************/
  CL=0x00;
  CH=0x00;
  CCAP0L=0xc0; //當(dāng)CL小于CCAP0L時(shí),輸出為低;大于時(shí),輸出為高。
  CCAP0H=0x7f; //當(dāng)CL由ff變?yōu)?0溢出時(shí),CCAP0H裝載到CCAP0L中,實(shí)現(xiàn)無(wú)干擾的更新PWM。
  CCAP1L=0xc0; //當(dāng)CL小于CCAP1L時(shí),輸出為低;大于時(shí),輸出為高。
  CCAP1H=0xc0; //當(dāng)CL由ff變?yōu)?0溢出時(shí),CCAP1H裝載到CCAP1L中,實(shí)現(xiàn)無(wú)干擾的更新PWM。
  CCAPM0=0X42; //使能PWM模式,PWM0=1,ECOM0=1
  CCAPM1=0X42; //使能PWM模式,PWM1=1,ECOM1=1
  CR=1;      //啟動(dòng)PCA計(jì)數(shù)器
  while(1) 
  {
    CCAP0H=RF4432_TxRxBuf[4];   //此處改變占空比
 CCAP1H=RF4432_TxRxBuf[5];
 CCAP2H=RF4432_TxRxBuf[6]/2.5;
  };
}
關(guān)閉窗口

相關(guān)文章