一個關于PWM的小程序,用在PIC16F877A上
/*該程序用于使CCP1模塊產(chǎn)生分辨率為10位的PWM波形,占空比為50%*/
#include "p18f458.h"
/*CCP1模塊的PWM工作方式初始化子程序*/
void CCP1INIT()
{
CCPR1L=0X7F;
CCP1CON=0X3C; /*設置CCP1模塊為PWM工作方式,且其工作
循環(huán)的低2位為11,高8位為01111111=7F*/
INTCON=0X00; /*禁止總中斷和外圍中斷*/
PR2=0XFF; /*設置PWM的工作周期*/
TRISC=0XFB; /*設置CCP1引腳為輸出方式*/
}
/*主程序*/
main()
{
CCP1INIT(); /*CCP1模塊的PWM工作方式初始化*/
T2CON=0X04; /*打開TMR2,且使其前分頻為0,
*同時開始輸出PWM波形*/
do
{
;
}while(1); /*系統(tǒng)開始輸出PWM波形。如果系統(tǒng)是
*多任務的,則可以在此執(zhí)行其它任務,而
*不會影響PWM波形的產(chǎn)生*/
}