打印

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

[复制链接]
1978|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
游苛|  楼主 | 2007-4-11 14:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的单片机是HLC908QT1,下面是我的pwm初始化程序,这个没有问题。
//----------------------------------------------------------------------------------
void PwmInit()
//----------------------------------------------------------------------------------

{
 
   TSC_TSTOP = 1;
   TSC_TRST = 1;
   TSC_PS2=0;
   TSC_PS1=0;
   TSC_PS0=1;
   TMOD = 1010; //   1001  
   TCH0 = 1;      
   TCH1 = 1;
   TSC0_MS0B = 1;
   TSC0_MS0A = 0;
   TSC0_TOV0 = 1;
   TSC0_ELS0B = 1;
   TSC0_ELS0A = 1;     
   TSC_TSTOP = 0;

}


我的问题是怎样修改TCH1改变脉冲宽度? 我自己做的附值语句如下:
 当
     while(TSC0_CH0F==0);
     TCH1 = humi_val;时,输出脉冲宽度不对,大概是50%;
 当
     while(TSC0_CH0F==0);
     TCH1 = 305;时,输出脉冲宽度完全正确。请问为什么直接负值可以,写成变量就不可了,我仿真监测我的变量的数据也完全正确。

相关帖子

沙发
free_tech| | 2007-4-13 09:56 | 只看该作者

是不是变量类型不对

语句没问题,有可能类型不对,你看一下仿真的汇编语句就能找到问题

应该是16位复职就行了,

ldhx  humi_val;

sthx tch1;

使用特权

评论回复
板凳
张明峰| | 2007-4-13 16:11 | 只看该作者

同意2楼的建议

代码本身看不出问题

使用特权

评论回复
地板
游苛|  楼主 | 2007-4-16 16:21 | 只看该作者

谢谢两位版主!

我已经找到原因了。在我实在没办法的时候,瞟了一眼原理图,原来板子上与传感器相连的iic总线data线上拉电阻拉在了scl线上,而data线却没有上拉。粗心的后果呀,望大家也吸取我的教训!
另外特别感谢两位楼主的关注!~~~

使用特权

评论回复
5
luciatian| | 2011-5-16 16:48 | 只看该作者
老兄:都那么久了,我现在也是遇到你上面的问题,直接赋值是可以的,但是变量不行!我这里也用了IIC但是可以排除是你上面说的那种问题!我再找找!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

27

帖子

0

粉丝