求助:请帮我看看这个 PWM 问题(占空比计算),好吗?2

[复制链接]
2438|0
 楼主| npsgsys 发表于 2009-2-23 11:41 | 显示全部楼层 |阅读模式
请教:<br />MCU:STC12C5A60S2<br />sfr&nbsp;AUXR1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xA2;&nbsp;//切换&nbsp;PCA&nbsp;/PWM&nbsp;口寄存器<br />sfr&nbsp;CCON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xD8;&nbsp;//<br />sfr&nbsp;CMOD&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xD9;&nbsp;//<br />sfr&nbsp;CCAPM0&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xDA;&nbsp;//<br />sfr&nbsp;CCAPM1&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xDB;&nbsp;//<br />sfr&nbsp;CL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xE9;&nbsp;//<br />sfr&nbsp;CH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xF9;&nbsp;//<br />sfr&nbsp;CCAP0L&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xEA;&nbsp;//<br />sfr&nbsp;CCAP0H&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xFA;&nbsp;//<br />sfr&nbsp;CCAP1L&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xEB;&nbsp;//<br />sfr&nbsp;CCAP1H&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0xFB;&nbsp;//<br />sfr&nbsp;PCA_PWM0&nbsp;&nbsp;=&nbsp;0xF2;&nbsp;//<br />sfr&nbsp;PCA_PWM1&nbsp;&nbsp;=&nbsp;0xF3;&nbsp;//<br /><br /><br />void&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;P1M0&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P1口用传统51准双向口模式<br />&nbsp;&nbsp;P1M1&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;CMOD&nbsp;=&nbsp;0x10;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//空闲模式下,PCA&nbsp;计数器停止工作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PCA&nbsp;时钟源为系统时钟&nbsp;Fosc/12<br />&nbsp;&nbsp;CCON&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//初始化&nbsp;CCON<br />&nbsp;&nbsp;CH&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PCA计数器初始值高8位<br />&nbsp;&nbsp;CL&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PCA计数器初始值低8位<br />&nbsp;&nbsp;CCAPM0&nbsp;=&nbsp;0x42;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//8&nbsp;位&nbsp;PWM,无中断,使能&nbsp;CEXn&nbsp;脚作脉宽调节输出<br />&nbsp;&nbsp;CCON&nbsp;|=&nbsp;0x40;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//CR&nbsp;=&nbsp;1&nbsp;启动&nbsp;PCA&nbsp;计数器&nbsp;<br />&nbsp;&nbsp;CCAP0H&nbsp;=&nbsp;0x00;&nbsp;<br />&nbsp;&nbsp;CCAP0L&nbsp;=&nbsp;0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//当出现捕获或比较时,它们用来保存16&nbsp;位的计数值。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;当PCA&nbsp;模块用在PWM&nbsp;模式中时,它们用来控制输出的<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//占空比。CCAP0H.CCAP0L分别为高低8位,组合使用&nbsp;<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;<br />&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />1:<br />如果我希望占空比为&nbsp;20%&nbsp;<br />那么&nbsp;CCAP0H,CCAP0L&nbsp;的值要设置为多少?<br /><br />2:<br />资料上一个例子:<br />CCAP0L&nbsp;=&nbsp;0x00;&nbsp;&nbsp;//Set&nbsp;the&nbsp;initial&nbsp;value&nbsp;same&nbsp;as&nbsp;CCAP0H<br />CCAP0H&nbsp;=&nbsp;0xc0;&nbsp;&nbsp;//25%&nbsp;Duty&nbsp;Cycle<br />这个&nbsp;25%&nbsp;是怎么算出来的?<br /><br />3:<br />我只要设置了&nbsp;CCAP0H,CCAP0L,并且启动&nbsp;CR(PCA&nbsp;计数器启动)<br />那么就可以自动输出&nbsp;PWM&nbsp;了,是不?<br /><br />4:<br />如果我想调整占空比,那么只要重新设置&nbsp;CCAP0H,CCAP0L,<br />是吗?<br /><br />谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

12

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部