欢迎来到天天文库
浏览记录
ID:56713013
大小:30.00 KB
页数:2页
时间:2020-07-05
《用STC单片机的PCA功能产生PWM_脉冲.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、用SST单片机的PCA功能产生PWM脉冲一、程序说明:SST单片机带有5路PCA模块,PCA功能比普通的单片机相比提供更强的计时性,同时更少CPU的干预,用它可以减少软件的开销和改进精度。利用PCA的脉冲宽度调制(PWM)模式可以产生一个8位PWM,它通过比PCA定时器的低位(CL)和比较寄存器的低位(CCAPnL)产生。当CL=CCAPnL是输出为高。要进入这个模式,可以对CCAPMn的PWM和ECOM位置位。在PWM模式,输出的频率决定于PCA定时器的源。由于只有一对CH和CL寄存器,所有模块共享PCA定时器和频率。输出的占空比由装在高位CCAPnH的
2、值控制。由于写入CCAPnH寄存器不是同步的,写入高位的值不会马上装入CCAPnL做比较,直到输出的另一个周期(当CL从255到0翻转)。用下面的公式计算任何占空比CCAPnH值:CCAPnH=256(1-占空比)CCAPnH是8位整数,占空比是分数。脉冲宽度调制频率PCA定时器模式PWM频率12MHz16MHz1/12振荡频率3.9KHz5.2KHz1/4振荡频率11.8KHz15.6KHz定时器0溢出:8位16位8位自动重装15.5Hz0.06Hz3.9KHz到15.3KHz 20.3Hz0.08Hz5.2KHz到20.3KHz外部输入(最大)5.9KHz7.8KHz 二、相关寄存器介
3、绍:PCA定时器/计数器模式寄存器(CMOD)位置76543210D9HCIDLWDTE---CPS1CPS0ECF标志功能CIDL计数器空闲控制,CIDL=0时,PCA在空闲模式下继续工作。CIDL=1时,PCA在空闲模式下关闭。WDTE看门狗定时器使能:WDTE=0时,禁止PCA模块4的看门狗功能。WDTE=1时,使能。CPS1PCA计数脉宽选择位1CPS0PCA计数脉宽选择位0CPS1CPS0选择PCA输入*000内部时钟6时钟模式下为fosc/6(12时钟模式下为fosc/12)011内部时钟6时钟模式下为fosc/2(12时钟模式下为fosc/4)102定时器0溢出113ECI/
4、P1.2脚输入的外部时钟(6时钟模式最大为osc/4,12时钟模式下为fosc/8)fosc=振荡器频率ECFPCA使能计数器溢出中断:ECF=1,使能CCON中的CF位,产生中断。ECF=0时禁止CF的功能。PCA定时器/计数器控制寄存器(CCON)位置76543210D8HCFCR-CCF4CCF3CCF2CCF1CCF0标志功能CR PCA计数器运行控制位,由软件置位将PCA计数器打开,要关闭PCA计数器必须由软件清零。CLPCA计数器低字节E9H CHPCA计数器高字节F9H CCAPM0模块0模式寄存器 DAH-ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0C
5、CAP0H模块0捕获高字节FAHCCAP0H[7:0]CCAP0L模块0捕获低字节EAHCCAP0L[7:0]三、PWM示例程序代码:#include#include“SST89x5x4Rx.h”//程序通过比较CL寄存器和CCPA0L的值产生脉冲。//如果CL>=CCAP0L输出为高,如果CL6、=0x40;//75%DutyCycle CCAPM0=0x42;//SetupPCAmodule0inPWMmode. CR=1;//StartPCATimer. while(1){}}
6、=0x40;//75%DutyCycle CCAPM0=0x42;//SetupPCAmodule0inPWMmode. CR=1;//StartPCATimer. while(1){}}
此文档下载收益归作者所有