Documentos de Académico
Documentos de Profesional
Documentos de Cultura
LIST P=16F628A
INCLUDE
; DEFINE PIC
<P16F628A.INC>
__CONFIG 0x3F30
; CONFIGURACION DE BITS
;********************************************************************
;* SE DEFINEN FLAGS DE PORTA
;********************************************************************
down EQU
; PULSADOR DE DOWN
kd
EQU
ku
EQU
;********************************************************************
;* SE DEFINEN FLAGS DE PORTB
;********************************************************************
km EQU 0
kc EQU 1
kd EQU 2
ku EQU 3
;********************************************************************
;* REGISTROS DE PROPOSITO GENERAL
;********************************************************************
CNT1
EQU
0x20
; CONTADOR 1
CNT2
EQU
0x21
; CONTADOR 2
UNID
EQU
0x22
; REGISTRO UNIDAD
DEC
EQU
0x23
; REGISTRO DECENA
;********************************************************************
;* INICIALIZA VECTOR DE RESET
;********************************************************************
ORG
0x000
; VECTOR DE RESET
goto
inicio
;********************************************************************
;**************************** RUTINAS *****************************
;********************************************************************
;* RUTINA QUE CODIFICA DE BINARIO A 7 SEGMENTOS
;* SE USA DIRECCIONAMIENTO RELATIVO
;********************************************************************
;*
B'bafcdge0'
;********************************************************************
cambio addwf
PCL,F
retlw
B'00000100'; (W) = 0
retlw
B'01101110'; (W) = 1
retlw
B'00110000'; (W) = 2
retlw
B'00100010'; (W) = 3
retlw
B'01001010'; (W) = 4
retlw
B'10000010'; (W) = 5
retlw
B'10000000'; (W) = 6
retlw
B'00101110'; (W) = 7
retlw
B'00000000'; (W) = 8
retlw
B'00000010'; (W) = 9
;********************************************************************
;* RUTINA DE RETARDO
;********************************************************************
CNT1
decfsz CNT1,F
goto
d1
decfsz CNT2,F
goto
d1
return
;********************************************************************
;* RUTINA INCREMENTAR
;********************************************************************
incr
movlw .9
xorwf UNID,W
btfsc
STATUS,Z
goto
inc1
incf
UNID,F
return
inc1
clrf
UNID
movlw .9
xorwf DEC,W
btfsc
STATUS,Z
goto
inc2
incf
DEC,F
return
inc2
clrf
DEC
return
;********************************************************************
;* RUTINA DECREMENTAR
;********************************************************************
decr
movlw .0
xorwf UNID,W
btfsc
STATUS,Z
goto
dec1
decf
UNID,F
return
dec1
movlw .9
movwf UNID
movlw .0
xorwf DEC,W
btfsc
STATUS,Z
goto
dec2
decf
DEC,F
return
dec2
movlw .9
movwf DEC
return
;********************************************************************
;* RUTINA PRESENTACION DE UNIDAD Y DECENA EN DISPLAY
;********************************************************************
prst
movfw UNID
call
cambio
movwf PORTB
bcf
PORTA,ku
; DISPLAY UNIDADES ON
call ms_10
call
ms_10
; RETARDO 10 ms
call ms_10
call ms_10
call ms_10
call ms_10
bsf
PORTA,ku
movfw
call
DEC
cambio
movwf PORTB
bcf
PORTA,kd
; DISPLAY DECENAS ON
call ms_10
call ms_10
call ms_10
call ms_10
call ms_10
call
ms_10
bsf
PORTA,kd
; RETARDO 10 ms
; DISPLAY DECENAS OFF
return
;********************************************************************
;*********************** PROGRAMA PRINCIPAL ***********************
;********************************************************************
inicio
bsf
STATUS,RP0
; BANK 1
movlw B'11110000'
movwf TRISA; CONFIGURA PUERTO A
movlw B'00000000'
movwf TRISB; CONFIGURA PUERTO B
movlw B'00000111'
movwf OPTION_REG
bcf
; BANK 0
STATUS,RP0
movlw
B'00000111'
movwf CMCON
; COMPARADORES OFF
;********************************************************************
;* PERU
;********************************************************************
;*
m0
B'0GFEDCBA'
movlw
movwf
B'00001100' ;P
PORTB
bcf
PORTA,km
call
ms_10
bsf
PORTA,km
movlw
B'00000110' ;E
movwf
PORTB
bcf
PORTA,kc
call
ms_10
bsf
PORTA,kc
movlw
B'00101111' ;r
movwf
PORTB
bcf
PORTA,kd
call
ms_10
bsf
PORTA,kd
;********************************************************************
;* PROGRAMA FUENTE CONTADOR
;********************************************************************
;* ESCUELA DE INGENIERIA SENATI
;* 03 AGOSTO 2013
;********************************************************************
;* MANEJO DE DISPLAYS DE 7 SEGMENTOS
;* RETARDO, CODIFICACIN DE BINARIO A 7 SEGMENTOS
;********************************************************************
;* ESTE ES UN PROGRAMA CONTADOR QUE INICIALMENTE PRESENTA 00
;* EN LOS DISPLAYS DE 7 SEGMENTOS, SI SE PRESIONA UP (RB0/INT)
;* SE INCREMENTA LA CUENTA, SI SE PRESIONA DOWN (RA0) SE DECREMENTA
;* LA CUENTA.
;********************************************************************
LIST P=16F628A
INCLUDE
; DEFINE PIC
<P16F628A.INC>
__CONFIG 0x3F30
; CONFIGURACION DE BITS
;********************************************************************
;* SE DEFINEN FLAGS DE PORTA
;********************************************************************
down EQU
; PULSADOR DE DOWN
kd
EQU
ku
EQU
;********************************************************************
;* SE DEFINEN FLAGS DE PORTB
;********************************************************************
km EQU 0
kc EQU 1
kd EQU 2
ku EQU 3
;********************************************************************
;* REGISTROS DE PROPOSITO GENERAL
;********************************************************************
CNT1
EQU
0x20
; CONTADOR 1
CNT2
EQU
0x21
; CONTADOR 2
UNID
EQU
0x22
; REGISTRO UNIDAD
DEC
EQU
0x23
; REGISTRO DECENA
;********************************************************************
;* INICIALIZA VECTOR DE RESET
;********************************************************************
ORG
0x000
; VECTOR DE RESET
goto
inicio
;********************************************************************
;**************************** RUTINAS *****************************
;********************************************************************
;* RUTINA QUE CODIFICA DE BINARIO A 7 SEGMENTOS
;* SE USA DIRECCIONAMIENTO RELATIVO
;********************************************************************
;*
B'bafcdge0'
;********************************************************************
cambio addwf
PCL,F
retlw
B'00000100'; (W) = 0
retlw
B'01101110'; (W) = 1
retlw
B'00110000'; (W) = 2
retlw
B'00100010'; (W) = 3
retlw
B'01001010'; (W) = 4
retlw
B'10000010'; (W) = 5
retlw
B'10000000'; (W) = 6
retlw
B'00101110'; (W) = 7
retlw
B'00000000'; (W) = 8
retlw
B'00000010'; (W) = 9
;********************************************************************
;* RUTINA DE RETARDO
;********************************************************************
CNT1
decfsz CNT1,F
goto
d1
decfsz CNT2,F
goto
d1
return
;********************************************************************
;* RUTINA INCREMENTAR
;********************************************************************
incr
movlw .9
xorwf UNID,W
btfsc
STATUS,Z
goto
inc1
incf
UNID,F
return
inc1
clrf
UNID
movlw .9
xorwf DEC,W
btfsc
STATUS,Z
goto
inc2
incf
DEC,F
return
inc2
clrf
DEC
return
;********************************************************************
;* RUTINA DECREMENTAR
;********************************************************************
decr
movlw .0
xorwf UNID,W
btfsc
STATUS,Z
goto
dec1
decf
UNID,F
return
dec1
movlw .9
movwf UNID
movlw .0
xorwf DEC,W
btfsc
STATUS,Z
goto
dec2
decf
DEC,F
return
dec2
movlw .9
movwf DEC
return
;********************************************************************
;* RUTINA PRESENTACION DE UNIDAD Y DECENA EN DISPLAY
;********************************************************************
prst
movfw UNID
call
cambio
movwf PORTB
bcf
PORTA,ku
; DISPLAY UNIDADES ON
call ms_10
call
ms_10
; RETARDO 10 ms
call ms_10
call ms_10
call ms_10
call ms_10
bsf
PORTA,ku
movfw
call
DEC
cambio
movwf PORTB
bcf
PORTA,kd
; DISPLAY DECENAS ON
call ms_10
call ms_10
call ms_10
call ms_10
call ms_10
call
ms_10
; RETARDO 10 ms
bsf
PORTA,kd
return
;********************************************************************
;*********************** PROGRAMA PRINCIPAL ***********************
;********************************************************************
inicio
bsf
STATUS,RP0
; BANK 1
movlw B'11110000'
movwf TRISA; CONFIGURA PUERTO A
movlw B'00000000'
movwf TRISB; CONFIGURA PUERTO B
movlw B'00000111'
movwf OPTION_REG
bcf
; BANK 0
movlw
STATUS,RP0
B'00000111'
movwf CMCON
; COMPARADORES OFF
;********************************************************************
;* PERU
;********************************************************************
;*
m0
B'0GFEDCBA'
movlw
movwf
B'00001100' ;P
PORTB
bcf
PORTA,km
call
ms_10
bsf
PORTA,km
movlw
B'00000110' ;E
movwf
PORTB
bcf
PORTA,kc
call
ms_10
bsf
PORTA,kc
movlw
B'00101111' ;r
movwf
PORTB
bcf
PORTA,kd
call
ms_10
bsf
PORTA,kd
movlw
B'01000001' ;U
movwf
PORTB
bcf
PORTA,ku
call
ms_10
bsf
PORTA,ku
goto m0
END
movlw
movwf
PORTB
bcf
PORTA,ku
call
ms_10
bsf
PORTA,ku
goto m0
END
B'01000001' ;U