讨论用PIC实现1-1KHZ方波产生

2020-02-10 08:51发布

我想用PIC16F877做一个波形发生器,要求频率在1HZ到1KHZ连续可调,以1HZ步进,占空比恒定为50%,我用定时器做的, 用电位器调节,A/D采样的值做频率值,用频率值来计算周期,用TMR0做的定时,基准时间设为1MS,累计定时时间,达到半周期的时间就把I/O口电平取反,现在的问题就是频率只能以最小基准时间的整数倍步进,而我想要的结果是以1HZ步进,我算了一下1KHZ与999HZ就差1us,用我的方法是不可能实现,那位大侠有没有好的方法能够实现?麻烦指点一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
eduhf_123
2020-02-10 20:08
T2CKPSn是T2CON寄存器中的低两位,用来确定TMR2的输入分频比。

至于表,是这样的,对于1Hz~1kHz中的每个频率,事先算好用什么样的值来装载我说的那三个寄存器,然后根据A/D采样结果得到的频率值来查常数表,用查到的常数装载入这三个寄存器,就可以让他自己工作了;可是877中的查表是通过ADDWF   PCL,    F指令来实现的,W中的值最大不超过255,也就是说只能查最大256个单元的表,所以要分段,频率在1~250Hz的时候查第一个表,频率在251~500的时候,用频率值减250作为索引值来查第二个表,以此类推。

对了,另外还有一个问题,那就是这样的方法对“高频段(频率接近1kHz时)”没有问题,在“低频段(频率接近1Hz时)”周期过长超过PR2的范围,就需要采用另外的办法了(如在中断服务程序中对某一变量计数,以实现定时器扩展)。

总之,需要分段处理。

一周热门 更多>