用stc单片机的pca功能产生pwm_脉冲.docVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用SST 单片机的PCA功能产生PWM 脉冲 一、程序说明: SST 单片机带有5路PCA模块,PCA功能比普通的 单片机相比提供更强的计时性,同时更少CPU的干预,用它可以减少软件的开销和改进精度。利用PCA的脉冲宽度调制(PWM)模式可以产生一个8位PWM,它通过比PCA定时器的低位(CL)和比较寄存器的低位(CCAPnL)产生。当CLCCAPnL时输出为低;当CL=CCAPnL是输出为高。要进入这个模式,可以对CCAPMn的PWM和ECOM位置位。 在PWM 模式,输出的频率决定于PCA定时器的源。由于只有一对CH 和CL寄存器,所有模块共享PCA定时器和频率。输出的占空比由装在高位CCAPnH的值控制。由于写入CCAPnH寄存器不是同步的,写入高位的值不会马上装入CCAPnL做比较,直到输出的另一个周期(当CL从255到0翻转)。用下面的公式计算任何占空比CCAPnH 值: CCAPnH=256(1-占空比) CCAPnH 是8 位整数,占空比是分数。 脉冲宽度调制频率 PCA定时器模式 PWM 频率 12MHz 16MHz 1/12振荡频率 3.9KHz 5.2KHz 1/4振荡频率 11.8KHz 15.6KHz 定时器0溢出: 8位 16位 8位自动重装 15.5Hz 0.06Hz 3.9KHz 到15.3KHz ? 20.3Hz 0.08Hz 5.2KHz 到20.3KHz 外部输入(最大) 5.9KHz 7.8KHz ?二、相关寄存器介绍: PCA定时器/计数器模式寄存器(CMOD) 位置 7 6 5 4 3 2 1 0 D9H CIDL WDTE - - - CPS1 CPS0 ECF 标志 功能 CIDL 计数器空闲控制,CIDL=0时,PCA在空闲模式下继续工作。CIDL=1时,PCA在空闲模式下关闭。 WDTE 看门狗定时器使能:WDTE=0时,禁止PCA模块4的看门狗功能。WDTE=1时,使能。 CPS1 PCA计数脉宽选择位1 CPS0 PCA计数脉宽选择位0 CPS1 CPS0 选择PCA输入* 0 0 0 内部时钟6时钟模式下为fosc/6(12时钟模式下为fosc/12) 0 1 1 内部时钟6时钟模式下为fosc/2(12时钟模式下为fosc/4) 1 0 2 定时器0溢出 1 1 3 ECI/P1.2脚输入的外部时钟(6时钟模式最大为osc/4,12 时钟模式下为fosc/8) fosc=振荡器频率 ECF PCA使能计数器溢出中断:ECF=1,使能CCON 中的CF位,产生中断。 ECF=0时禁止CF的功能。 PCA定时器/计数器控制寄存器(CCON) 位置 7 6 5 4 3 2 1 0 D8H CF CR - CCF4 CCF3 CCF2 CCF1 CCF0 标志 功能 CR ??PCA计数器运行控制位,由软件置位将PCA计数器打开,要关闭PCA计数器必须由软件清零。 CL PCA计数器 低字节 E9H ? CH PCA计数器 高字节 F9H ? CCAPM0 模块0模式寄存器 ? DAH - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 CCAP0H 模块0捕获高字节 FAH CCAP0H[7:0] CCAP0L 模块0捕获低字节 EAH CCAP0L[7:0] 三、PWM示例程序代码: #include stdio.h #include “SST89x5x4Rx.h” // 程序通过比较CL寄存器和CCPA0L的值产生脉冲。 // 如果CL = CCAP0L输出为高,如果CL CCAP0L输出为低。 // 占空比由CCAP0H的值决定. void main() {  CMOD = 0x02; // Setup PCA timer    CL = 0x00;    CH = 0x00;    CCAP0L = 0x40; // Set the initial value same as CCAP0H    CCAP0H = 0x40; // 75% Duty Cycle    CCAPM0 = 0x42; // Setup PCA module 0 in PWM mode.    CR = 1; // Start PCA Timer.    while (1){} }

文档评论(0)

zijingling + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档