想产生38khz方波,也就是周期为26us。
程序如下:
/*****************************************************
*函数名称:void PWM_Init(void)
*函数功能:PWM初始化
*入口参数:void
*出口参数:void
*****************************************************/
void PWM_Init(void)
{
P2CON|=(1<<7);//PWM5-P27
PWMCFG &= ~(1<<5); //PWM5输出不反向,时钟源Fosc
PWMCFG &= ~(1<<6);
PWMCFG &= ~(1<<7);
PWMPRD = 159; //PWM周期=(159+1)*(1/Fpwm);
PWMDTYB = 0X00; //PWM3/4/5周期与占空比的低2位设置
PWMDTY5 = 35; //PWM0的Duty = 35/160 =7/32
PWMCON |= 0x20; //PWM5输出到P27
PWMCON |= 0x80; //开启PWM
IE1 |= 0x02; //PWM中断使能
EA = 1;
}
时钟源为FOSC不分频,也就是默认为12Mhz
但是上面源码要按6MHZ算才能输出周期为26us的方波,不知道为什么?
|