想产生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的方波,不知道为什么?
|