请教张教主:带缓冲pwm输出

[复制链接]
 楼主| 游苛 发表于 2007-4-11 14:06 | 显示全部楼层 |阅读模式
我用的单片机是HLC908QT1,下面是我的pwm初始化程序,这个没有问题。<br />//----------------------------------------------------------------------------------<br />void&nbsp;PwmInit()<br />//----------------------------------------------------------------------------------<br /><br />{<br />&nbsp;<br />&nbsp;&nbsp;&nbsp;TSC_TSTOP&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC_TRST&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC_PS2=0;<br />&nbsp;&nbsp;&nbsp;TSC_PS1=0;<br />&nbsp;&nbsp;&nbsp;TSC_PS0=1;<br />&nbsp;&nbsp;&nbsp;TMOD&nbsp;=&nbsp;1010;&nbsp;//&nbsp;&nbsp;&nbsp;1001&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;TCH0&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;TCH1&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC0_MS0B&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC0_MS0A&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;TSC0_TOV0&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC0_ELS0B&nbsp;=&nbsp;1;<br />&nbsp;&nbsp;&nbsp;TSC0_ELS0A&nbsp;=&nbsp;1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;TSC_TSTOP&nbsp;=&nbsp;0;<br /><br />}<br /><br /><br />我的问题是怎样修改TCH1改变脉冲宽度?&nbsp;我自己做的附值语句如下:<br />&nbsp;当<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(TSC0_CH0F==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCH1&nbsp;=&nbsp;humi_val;时,输出脉冲宽度不对,大概是50%;<br />&nbsp;当<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(TSC0_CH0F==0);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TCH1&nbsp;=&nbsp;305;时,输出脉冲宽度完全正确。请问为什么直接负值可以,写成变量就不可了,我仿真监测我的变量的数据也完全正确。<br /><br />
free_tech 发表于 2007-4-13 09:56 | 显示全部楼层

是不是变量类型不对

语句没问题,有可能类型不对,你看一下仿真的汇编语句就能找到问题<br /><br />应该是16位复职就行了,<br /><br />ldhx&nbsp;&nbsp;humi_val;<br /><br />sthx&nbsp;tch1;
张明峰 发表于 2007-4-13 16:11 | 显示全部楼层

同意2楼的建议

代码本身看不出问题
 楼主| 游苛 发表于 2007-4-16 16:21 | 显示全部楼层

谢谢两位版主!

我已经找到原因了。在我实在没办法的时候,瞟了一眼原理图,原来板子上与传感器相连的iic总线data线上拉电阻拉在了scl线上,而data线却没有上拉。粗心的后果呀,望大家也吸取我的教训!<br />另外特别感谢两位楼主的关注!~~~
luciatian 发表于 2011-5-16 16:48 | 显示全部楼层
老兄:都那么久了,我现在也是遇到你上面的问题,直接赋值是可以的,但是变量不行!我这里也用了IIC但是可以排除是你上面说的那种问题!我再找找!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

27

帖子

0

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