Professional Documents
Culture Documents
3 temporizadores/contadores independientes
Temporizador perro guardián
Módulo PWM incorporado
DESARROLLO
Para la construcción de nuestro reloj seguimos la siguiente metodología:
a) Realizar el código en lenguaje Ensamblador utilizando el compilador MPLAB.
; Configuracion de los INCLUDE <P16F887.INC>
Fuses ORG 0
__CONFIG
_WDT_OFF&_PWRTE_ON&_XT_ CBLOCK 0X21
OSC&_LVP_OFF&_CP_OFF u1
u2
LIST P=16F887 u3
seg CLRF min
min BTFSS hrs,1
hrs GOTO sighrs
hrs2 BTFSS hrs,3
tiseg GOTO sighrs
timin INCF hrs2
tihrs CLRF hrs
tihrs1 BTFSS hrs,1
tihrs2 GOTO sighrs
ENDC
CLRF seg
BSF STATUS,5 CLRF min
CLRF TRISC ; Controla CLRF hrs2
los segmenos de los CLRF hrs
Display MOVLW b'00000101'
CLRF TRISD ; Controla el MOVWF timin
encendido de los MOVLW b'00001100'
display MOVWF tihrs
BCF STATUS,5
sigmin
MOVLW b'00000111'
MOVWF CMCON MOVLW B'00100000'
CLRF seg ;encendido del 2do
CLRF min display
CLRF hrs2 MOVWF PORTD
CLRF hrs MOVF min,W
MOVLW b'0000101' CALL dismin
MOVWF timin MOVWF PORTC
MOVLW b'0000110' CALL delay
MOVWF tihrs
MOVLW B'00010000'
welcome ;encendido del 1er
MOVLW b'00001010' display
MOVWF tiseg MOVWF PORTD
BTFSS seg,1 MOVF seg,W
GOTO sigmin CALL dicseg
BTFSS seg,3 MOVWF PORTC
GOTO sigmin CALL delay
INCF min,F
CLRF seg MOVLW B'10000000'
BTFSS min,1 ;encendido del 4to
GOTO sigmin display
BTFSS min,2 MOVWF PORTD
GOTO sigmin MOVF hrs2,W
CALL dichrs2
INCF hrs,F MOVWF PORTC
CLRF seg CALL delay
MOVF seg,W
MOVLW B'01000000' CALL dicseg
;encendido del 3ro MOVWF PORTC
display CALL delay
MOVWF PORTD
MOVF hrs,W DECFSZ tihrs,F
CALL dichrs1 GOTO welcome
MOVWF PORTC GOTO welcome
CALL delay ; tabla de datos que
contiene los digitos
INCF seg,F (0, 1 ,2 ,3 ,4 ,5 ,6 ,7
DECFSZ tiseg,F ,8 ,9)
GOTO sigmin
GOTO welcome dicseg
ADDWF PCL,1
sighrs RETLW B'00111111'
MOVLW B'10000000' RETLW B'00000110'
;encendido del 4to RETLW B'01011011'
display RETLW B'01001111'
MOVWF PORTD RETLW B'01100110'
MOVF hrs2,W RETLW B'01101101'
CALL dichrs2 RETLW B'01111101'
MOVWF PORTC RETLW B'00000111'
CALL delay RETLW B'01111111'
RETLW B'01101111'
MOVLW B'01000000' RETURN
;encendido del 3ro
display dismin
MOVWF PORTD ADDWF PCL,1
MOVF hrs,W RETLW B'00111111'
CALL dichrs1 RETLW B'00000110'
MOVWF PORTC RETLW B'01011011'
CALL delay RETLW B'01001111'
RETLW B'01100110'
MOVLW B'00100000' RETLW B'01101101'
;encendido del 2do
display RETURN
MOVWF PORTD
MOVF min,W dichrs1
CALL dismin ADDWF PCL,1
MOVWF PORTC RETLW B'00111111'
CALL delay RETLW B'00000110'
RETLW B'01011011'
MOVLW B'00010000' RETLW B'01001111'
;encendido del 1er RETLW B'01100110'
display RETLW B'01101101'
MOVWF PORTD RETLW B'01111101'
RETLW B'00000111' Y3
RETLW B'01111111' MOVLW b'00001101'
RETLW B'01101111' MOVWF u1
RETLW B'00111111'
RETLW B'00000110' Y2
RETLW B'01011011' MOVLW b'00011110'
MOVWF u2
RETURN
Y1
dichrs2 NOP
ADDWF PCL,1 NOP
RETLW B'00111111' DECFSZ u2,1
RETLW B'00000110' GOTO Y1
RETURN DECFSZ u1,1
GOTO Y2
delay DECFSZ u3,1
MOVLW b'00000101' GOTO Y3
MOVWF P RETURN
END
b) Realizar el circuito en Proteus y cargar el código con la extensión .hex modificar el
oscilador interno a 8 MHz del pic en la simulación.