LIST P=16F877A
INCLUDE <P16F877A.INC>
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_ON & _HS_OSC
;
;---------------------------------------------------------------
; VARIABLES.
;---------------------------------------------------------------
;
CBLOCK H'20'
;
ENDC
;
;---------------------------------------------------------------
; CONSTANTES.
;---------------------------------------------------------------
;
Periodo equ .101 ;Periodo de 100us.-
Duty equ .25 ;Anchura 25us
;
;**** Configuracion de puertos ****
RESET ORG H'00' ;Aqui comienza el micro.-
GOTO Inicio ;Salto a inicio de mi programa.-
ORG H'05' ;Origen del codigo de programa.-
;
Inicio clrf PORTA
clrf PORTB
clrf PORTC ;Borra salidas.-
bsf STATUS,RP0 ;Banco 1.-
movlw 0x06 ;Configuramos todos los pines...
movwf ADCON1 ;..como entradas digitales.-
movlw b'11111110'
movwf TRISB ;Bit 0 PORTB salida resto entradas.-
movlw b'11111011'
movwf TRISC ;Bit 2 PORTC salida resto entradas.-
movlw b'11101111'
movwf OPTION_REG ;Preescaler de 128 asociado al WDT.-
movlw Periodo-1
movwf PR2 ;Carga el registro de periodos.-
bcf STATUS,RP0 ;Banco 0.-
movlw Duty
movwf CCPR1L ;Carga la anchura del pulso.-
;**** El modulo CCP1 actua en el modo PWM con salida de señal por RC2/CCP1 ****
movlw b'00001100'
movwf CCP1CON
;**** El TMR2 trabaja con un preescaler 1:1 por lo que con una frecuencia de 4MHz
; evoluciona cada us (4*Tosc) ****
movlw b'00000100'
movwf T2CON ;T2 en ON.-
Loop clrwdt ;Refrescamos el WDT.-
goto Loop ;Bucle infinito.-
;
END ;Fin del programa fuente.-