由于STC12C2052AD单片机是作于1个时钟/机器周期,且有增强型8051内核,故其速度比普通8051快8~12倍。该单片机有2路可编程计数器阵列(PCA)/PWM,其中PCA1模块用作捕获模式,可识别输入的PWM调制信号,PCA0模块用作脉宽调节模式(PWM),可实现频率转换。此外,由于该单片机价格比较便宜,故采用此单片机作为核心控制芯片。
前期曾写过一个不用PCA模块实现的PWM程序,是软件实现,下面是一个stc单片机PCA的自带PWM编程实例参考 。
#include<reg52.h>
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
void main(void)
{
CMOD = 0x02; // 设置 PCA 定时器
CL = 0x00;//清零
CH = 0x00;
CCAP0L = 0x40; //设置75%占空比
CCAP0H = 0x40; // 当CL由ff变为00溢出时,CCAP0H装载到CCAP0L中,实现无干扰的更新PWM。
CCAPM0 = 0x42; //0100,0010 设置使用PWM模式
CR = 1; //开启 PCA 定时器.
while(1){};
}
自做自受 2015-3-24 10:16
345002072_353389109 2013-1-20 18:15