PIC16f74 PWM最大频率20K我要用来发射红外载波为38K,怎么破....

2020-02-06 10:35发布

本帖最后由 zcan 于 2014-4-25 14:19 编辑

PIC16f74  PWM最大频率20K伙要用来发射红外载波为38K,怎么破.... :红外发射载波38K翻转IO状态最大也达不到 用定时器最快也只有16K多 ,估计跳到中断执行中断服务程序耗时严重 跑空程序直接空转IO翻转才能达到50K左右 别人写的程序可以 有什么方法论这种问题  刚用PIC做项目



代码如下: 晶体4M
#include <pic.h>
__CONFIG(0xFF32);
#define uchar unsigned char
#define uint  unsigned int

#define        LED        PORTD
char Counter = 0;                // 1S计数变量清零
/********定时器0初始化函数********/
void timer0_init()
{
        OPTION_REG=0b00001000;        //TMR0对内部时钟计数,预分频器给WDT,分频比为1:1
        INTCON=0b10100000;        //允许TMR0溢出中断
        TMR0=243;                        //TMR0赋初值,4M/4/13=76.923 K       
}
/********主函数********/
void main(void)
{       
        TRISD=0x00;                        //设PORTD为输出
        timer0_init();
        LED=0x00;                                       
          while(1);                        //原地等待
}
/********中断服务程序********/
void interrupt ISR(void)
{   
        if (T0IF==1)
        {       
                T0IF=0;                                //清TMR0溢出中断标志位
                TMR0=243;                        //TMR0赋初值,必须!

                RD7=~RD7;   //电平反转 76.923/2=38.461K
                           //但是示波器显示为16K !!怎么破
       
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
26条回答
laujc
2020-02-07 15:23
zcan 发表于 2014-4-25 13:56
什么4M,我用的定时器定时IO在中断函数里面反转,一开始低频率的时候可以输出200HZ 高于200HZ 只改变分频 ...

肯定是你哪个地方搞错了,不可能输出频率最高时是这么低的

一周热门 更多>