本帖最后由 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 !!怎么破
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
肯定是你哪个地方搞错了,不可能输出频率最高时是这么低的
一周热门 更多>