T
E
RABAJO Y
XPLICACIÓN
PROGRAMA 15
Los módulos CCPx. Modo PWM. Modulación de anchura de pulsos.
Consiste en generar una señal de onda cuadrada por la línea RC2/CCP1 cuyo periodo puede
ser modificado así como la anchura del pulso (Duty Cycle). El periodo se determina según la fórmula
T=(PR2+1)*4*Tosc*TMR2 preescaler. La duración del pulso o "Duty Cycle" (d) se determina según
d=(CCPR1L:CCPCON1<5:4>)*Tosc*TMR2 preescaler.
El ejemplo emplea al módulo CCP1 con salida de señal por la línea RC2/CCP1 y un preescaler
de 16. La señal de salida tiene un periodo de 640uS. La anchura del ciclo "Duty" es variable y se
determina, según el valor binario de los interruptores del entrenador (RA5-RA0)
List
include "P16F876.INC" ;Definiciones de registros internos
Temporal
equ
Periodo
equ
org
;------------------------------------------------------------------------------------------------------------------------------
Inicio
clrf
bsf
movlw 0x06
movwf ADCON1
movlw b'00111111'
movwf TRISA
movlw b'11111011'
movwf TRISC
movlw Periodo-1
movwf PR2
bcf
;El módulo CCP1 actúa en el modo PWM con salida de señal por RC2/CCP1
movlw b'00001100'
movwf CCP1CON
;El TMR2 trabaja con un preescaler 1:16 por lo que con una frecuencia de 20MHz evoluciona
;cada 3.2uS ((4*Tosc)*16)
movlw b'00000111'
movwf T2CON
Loop
movf
andlw
movwf CCPR1L
goto
end
D
P
ESARROLLO
ROYECTOS Y
PIC 16F87
X
p=16F876
;Tipo de procesador
0x20
;Variable temporal
b'200'
;Periodo 640uS (200*Preescaler de 16*0.2)
0x05
PORTC
;Borra salidas
STATUS,RP0
;Selecciona banco 1
;Puerta A digital
;Puerta A entrada
;RC2 salida
;Carga el registro de periodos
STATUS,RP0
;Selecciona banco 0
;T2 en On
PORTA,W
b'00111111'
;Carga la anchura del pulso (n*8*Prescaler de 16)
Loop
;Bucle infinito
P
E
ROTOTIPOS
LECTRÓNICOS
2º DPE
83