Está en la página 1de 17

;********************************************************************

;* 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

; DEFINE REGISTROS ESPECIALES

; CONFIGURACION DE BITS

;********************************************************************
;* SE DEFINEN FLAGS DE PORTA
;********************************************************************

down EQU

; PULSADOR DE DOWN

kd

EQU

; HABILITA DISPLAY DE DECENAS

ku

EQU

; HABILITA DISPLAY DE UNIDADES

;********************************************************************
;* 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

; SALTA AL PROGRAMA PRINCIPAL

;********************************************************************
;**************************** 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
;********************************************************************

ms_10 movlw .13


movwf CNT2
clrf
d1

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

; CODIFICACION BCD 7 SEGMENTOS

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

; DISPLAY UNIDADES OFF

DEC
cambio

movwf PORTB

; CODIFICACION BCD 7 SEGMENTOS

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

; HABILITA RESISTENCIA PULL-UP

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

; DEFINE REGISTROS ESPECIALES

; CONFIGURACION DE BITS

;********************************************************************
;* SE DEFINEN FLAGS DE PORTA
;********************************************************************

down EQU

; PULSADOR DE DOWN

kd

EQU

; HABILITA DISPLAY DE DECENAS

ku

EQU

; HABILITA DISPLAY DE UNIDADES

;********************************************************************
;* 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

; SALTA AL PROGRAMA PRINCIPAL

;********************************************************************
;**************************** 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
;********************************************************************

ms_10 movlw .13


movwf CNT2
clrf
d1

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

; CODIFICACION BCD 7 SEGMENTOS

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

; DISPLAY UNIDADES OFF

DEC
cambio

; CODIFICACION BCD 7 SEGMENTOS

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

; 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

; HABILITA RESISTENCIA PULL-UP

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

También podría gustarte