/*这是用8位定时器2和CCP1实现的PWM,计数周期最大只有PR2=255;不够我需要做个16位的 65536计数周期的PWM ?各位高手帮我想想。。。。。 如果我用16位定时器1自己控制脉宽做个方波发生器出来是否可以?改如何配置?我试了。。。可是timer1中断没进去,计数周期没有溢出,自然方波也没有?为什么?
#include "PIC.h"
void Init (void)
{
OSCCON = 0b11111011;
TRISA = 0x00;
TRISB = 0X01;
TRISC = 0x00;
TRISD = 0x00;
TRISE = 0x00;
ANSELA = 0x00;
ANSELB = 0x00;
ANSELD = 0x00;
ANSELE = 0x00;
}
void Init_ir (void)
{
GIE = 1; //全局中断与允许
OPTION_REG =0b00000011; //开外部中断,下降沿触发
WPUB = 0xff;
WPUE = 0xff;
PR2 = 250; //定时器2周期计数
CCP1CON = 0b00001100; //
CCPR1L = PR2/2; //占空比
CCPTMRS0 = 0b11111100; //CCP1的PWM选择
CCPTMRS1 = 0b00000011; //
TMR2IF = 0; //定时器2溢出标志
T2CON = 0b00000100; //
//T2CKPS = 0b00; //预分频比1:1
//TMR2ON = 1; //使能定时器2
//TOUTPS = 0b0000; //后分频比1:1
}
void main (void)
{
Init ();
Init_ir ();
while (1)
{
}
} |