Programa fuente en lenguaje C para microcontrolador PIC para generar ondas PWM
#ifndef __PWM__H__
#define __PWM__H__
void pwm_ccp1(carácter a sin firmar,carácter b sin firmar);
void pwm_ccp2(carácter sin firmar b); char a,char b sin firmar);
#endif
void pwm_ccp1(char a sin firmar,char b sin firmar) //PWM izquierdo
//módulo CCP1 Modo de trabajo PWM, el período es (b+1)*4*Tosc*(valor del preescalador TMR2)=b+1 us //pwm nivel alto=a:CCP1CON(4.º y 5.º bit)Tosc*(preescalador TMR2) División de frecuencia valor)
//pwm nivel alto = a:CCP1CON (el cuarto y quinto bits) Tosc* (valor de división de prefrecuencia TMR2)
{ //a>b Hay a velocidad máxima
CCPR1L=a; //* Establece los 8 bits altos del ciclo de trabajo en a
CCP1CON=0X0C //0000 1100 Establece CCP1 en modo de trabajo PWM, y el ciclo de trabajo El bit2 bajo es 11*/
CCP1IE=0;; //* Deshabilitar la interrupción total y la interrupción periférica*/
PR2=b; ciclo*/
TRISC2=0; //* Establece RC2/CCP1 como salida*/
T2CON=0X04; //* 0000 1000 la relación del preescalador es 1:1, postescalador 1 :2, enciende TMR2 y emite la señal PWM al mismo tiempo*/
}
void pwm_ccp2(unsigned char a, unsigned char b) //PWM derecho
//El modo de trabajo PWM del módulo CCP2, el período es (b+1)*4*Tosc*(valor del preescalador TMR2),
//pwm alto nivel=a:CCP2CON( 45 bits) Tosc* (valor del preescalador TMR2)
{
CCPR2L=a; //* Establece los 8 bits altos del ciclo de trabajo en a
CCP2CON= 0X0C; //* Configure CCP2 en modo de trabajo PWM y el bit2 bajo del ciclo de trabajo es 11*/
CCP2IE=0 //* Máscara de interrupción
PR2; =b; / /* Establecer período PWM*/
TRISC1=0; //* Establecer RC1/CCP2 como salida*/
T2CON=0X04; es 1, enciende TMR2 y emite la señal PWM al mismo tiempo*/
}