Escolar Documentos
Profissional Documentos
Cultura Documentos
btfsc porta,0
goto subio_de_nivel
goto ciclo
subio_de_nivel:
incf contador,1
call visualizar
espero_que_baje:
btfsc porta,0
goto espero_que_baje
bajo_de_nivel:
goto ciclo
visualizar: movf contador,0
movwf portb
return
ELT3822 MICROCONTROLADORES
;***********************************************************
; Programa simple que testea el estado del bit 0 del porta
; e incrementa el contador si sta entrada CAMBIA a nivel alto
;
; no usa interrupcion pero espera que esta entrada genere un pulso
; (subida y luego bajada) para el incremento del contador
; ojo que esto constituye un contador asincrnico de FLANCOS DE SUBIDA
; se corrige el error de la versin 1
; EL conteo se saca por el PORTB en 7SEGMENTOS
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BCD_A_7SEG que hace la conversion
; ***********************************************************
org 0
goto inicio
contador equ 12
copia equ 13
org 5
inicio: bsf status,rp0
clrf portb
movlw d'1'
movwf porta
bcf status,rp0
call visualizar
ciclo:
btfsc porta,0
goto subio_de_nivel
goto ciclo
subio_de_nivel:
incf contador,1
call visualizar
espero_que_baje:
btfsc porta,0
goto espero_que_baje
bajo_de_nivel:
goto ciclo
visualizar: movf contador,0
call BCD_A_7SEG
movwf portb
return
BCD_A_7SEG:
ELT3822 MICROCONTROLADORES
movf contador,w
movwf copia
movlw d'1'
subwf copia,f
incfsz copia,f
goto versiesuno
movlw b'0111111'
return
versiesuno:
movf contador,w
movwf copia
movlw d'2'
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
movlw b'01100110'
ELT3822 MICROCONTROLADORES
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
return
versiesseis:
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
subwf copia,1
ELT3822 MICROCONTROLADORES
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movlw d'0'
movwf contador
movlw b'0111111'
return
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR NUMEROS DEL 0 AL 1000 (CONTADOR ASCENDENTE)
; Programa simple que testea el estado del bit 4 del porta
; E incrementa el contador si sta entrada CAMBIA a nivel alto
;
; no usa interrupcion pero espera que esta entrada genere un pulso
; (subida y luego bajada) para el incremento del contador
; ojo que esto constituye un contador asincrnico de FLANCOS DE SUBIDA
; EL conteo se saca por el PORTB en 7SEGMENTOS en paralelo a cada display
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BCD_A_7SEG que hace la conversion
; NO UTILIZA DECODIFICADOR 7449
; UTILIZA BARRIDO DE CATODOS
; ***********************************************************
org 0
goto inicio
;reservar espacios de memoria
contador equ 12
copia equ 13
unid equ 14
dece equ 15
cent equ 16
mile equ 17
org 5
inicio: bsf status,rp0
clrf portb
movlw b'10000'
movwf porta
bcf status,rp0
; cargar datos iniciales
clrf
unid
clrf
dece
clrf
cent
clrf
mile
ciclo: call visualizar
btfss porta,4
goto ciclo
subio_de_nivel:
call incre_unid
ELT3822 MICROCONTROLADORES
incf unid,f
verif_unid:
movf unid,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf unid
incre_dece:
incf
verif_dece:
movf dece,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf
dece
incre_cent:
incf
verif_cent:
movf cent,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf cent
decre_mile:
incf
verif_mile:
movf mile,w
movlw d'11'
subwf copia,f
movwf copia
incfsz copia,f
return
clrf mile
dece,f
cent,f
mile,f
ELT3822 MICROCONTROLADORES
return
visualizar: movf unid,w
movwf
contador
call visualizar_digito
movlw
b'0001'
movwf
porta
movf dece,w
movwf
contador
call visualizar_digito
movlw
b'0010'
movwf
porta
movf cent,w
movwf
contador
call visualizar_digito
movlw
b'0100'
movwf
porta
movf
mile,w
movwf
contador
call visualizar_digito
movlw
b'1000'
movwf
porta
return
visualizar_digito:
movlw
b'0000'
movwf
porta
movf contador,0
call BCD_A_7SEG
movwf portb
return
BCD_A_7SEG:
movf contador,w
movwf copia
movlw d'1'
subwf copia,f
incfsz copia,f
goto versiesuno
movlw b'0111111'
return
versiesuno:
ELT3822 MICROCONTROLADORES
movf contador,w
movwf copia
movlw d'2'
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
movlw b'01100110'
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
ELT3822 MICROCONTROLADORES
return
versiesseis:
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
subwf copia,1
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movlw d'0'
movwf contador
movlw b'0111111'
return
10
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR DESCENDENTE DE 7000 A 0
; Programa simple que testea el estado del bit 0 del porta
; Y decrementa el contador si sta entrada CAMBIA a nivel alto
;
; no usa interrupcion pero espera que esta entrada genere un pulso
; (subida y luego bajada) para el decremento del contador
; ojo que esto constituye un contador asincrnico de FLANCOS DE SUBIDA
; EL conteo se saca por el PORTB en 7SEGMENTOS en paralelo a cada display
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BCD_A_7SEG que hace la conversion
; ***********************************************************
org 0
goto inicio
;reservar espacios de memoria
contador equ 12
copia equ 13
unid equ 14
dece equ 15
cent equ 16
mile equ 17
; cargar datos iniciales
movlw d'0'
movwf unid
movwf dece
movwf cent
org 5
inicio: bsf status,rp0
clrf portb
movlw b'10000'
movwf porta
bcf status,rp0
movlw d'7'
movwf mile
ciclo: call visualizar
btfss porta,4
goto ciclo
subio_de_nivel:
call decre_unid
call visualizar
11
ELT3822 MICROCONTROLADORES
decf unid,f
call verif_unid
return
verif_unid:
movf unid,w
movwf copia
incfsz copia,f
return
movlw d'9'
movwf unid
decre_dece:
decf
verif_dece:
movf dece,w
movwf copia
incfsz copia,f
return
movlw d'9'
movwf dece
decre_cent:
decf
verif_cent:
movf cent,w
movwf copia
incfsz copia,f
return
movlw d'9'
movwf cent
decre_mile:
decf
verif_mile:
movf mile,w
movwf copia
incfsz copia,f
return
movlw d'9'
movwf mile
dece,f
cent,f
mile,f
return
12
ELT3822 MICROCONTROLADORES
13
ELT3822 MICROCONTROLADORES
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
movlw b'01100110'
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
return
versiesseis:
14
ELT3822 MICROCONTROLADORES
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
subwf copia,1
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movlw d'0'
movwf contador
movlw b'0111111'
return
15
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR NUM PARES 0 AL 1000 (CONTADOR ASCENDENTE)
; Programa simple que testea el estado del bit 4 del porta
; E incrementa el contador si sta entrada CAMBIA a nivel alto
;
; no usa interrupcion pero espera que esta entrada genere un pulso
; (subida y luego bajada) para el decremento del contador
; ojo que esto constituye un contador asincrnico de FLANCOS DE SUBIDA
; EL conteo se saca por el PORTB en 7SEGMENTOS en paralelo a cada display
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BCD_A_7SEG que hace la conversion
; NO UTILIZA DECODIFICADOR 7449
; UTILIZA BARRIDO DE CATODOS
; ***********************************************************
org 0
goto inicio
;reservar espacios de memoria
contador equ 12
copia equ 13
unid equ 14
dece equ 15
cent equ 16
mile equ 17
org 5
inicio: bsf status,rp0
clrf portb
movlw b'10000'
movwf porta
bcf status,rp0
; cargar datos iniciales
clrf
unid
clrf
dece
clrf
cent
clrf
mile
ciclo: call visualizar
btfss porta,4
goto ciclo
subio_de_nivel:
call incre_unid
call incre_unid
16
ELT3822 MICROCONTROLADORES
call incre_unid
call incre_unid
call incre_unid
call incre_unid
call incre_unid
call incre_unid
call incre_unid
call incre_unid
CALL INCRE_UNID ; PARA CONTAR PARES ********
espero_que_baje: call visualizar
btfsc porta,4
goto espero_que_baje
bajo_de_nivel:
goto ciclo
incre_unid:
incf unid,f
verif_unid:
movf unid,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf unid
incre_dece:
incf
verif_dece:
movf dece,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf
dece
incre_cent:
incf
verif_cent:
movf cent,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf cent
dece,f
cent,f
17
ELT3822 MICROCONTROLADORES
incre_mile:
incf
verif_mile:
movf mile,w
movlw d'11'
subwf copia,f
movwf copia
incfsz copia,f
return
clrf mile
mile,f
return
visualizar: movf unid,w
movwf
contador
call visualizar_digito
movlw
b'0001'
movwf
porta
movf dece,w
movwf
contador
call visualizar_digito
movlw
b'0010'
movwf
porta
movf cent,w
movwf
contador
call visualizar_digito
movlw
b'0100'
movwf
porta
movf
mile,w
movwf
contador
call visualizar_digito
movlw
b'1000'
movwf
porta
return
visualizar_digito:
movlw
b'0000'
movwf
porta
movf contador,0
call BCD_A_7SEG
movwf portb
return
18
ELT3822 MICROCONTROLADORES
BCD_A_7SEG:
movf contador,w
movwf copia
movlw d'1'
subwf copia,f
incfsz copia,f
goto versiesuno
movlw b'0111111'
return
versiesuno:
movf contador,w
movwf copia
movlw d'2'
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
19
ELT3822 MICROCONTROLADORES
movlw b'01100110'
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
return
versiesseis:
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
20
ELT3822 MICROCONTROLADORES
subwf copia,1
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movlw d'0'
movwf contador
movlw b'0111111'
return
21
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR AUTOMATICO DEL 0 AL 1000 (CONTADOR ASCENDENTE)
; EL conteo se saca por los 13 hilos los valores para el
; conteo del 0 al 1000 (3 digitos y medio)
; para esto se usa una subrutina llamada VISUALIZAR
; UTILIZA DECODIFICADOR 7449 (3 integrados)
;
; UTILIZA 13 HILOS (12 PARA 3 DIGITOS Y 1 PARA EL MILLAR)
; no hay ningun control del conteo, es automtico, pues faltan hilos
; de acuerdo a la estructura planteada para el circuito
; ***********************************************************
org 0
goto inicio
;reservar espacios de memoria
contador equ 12
copia equ 13
unid equ 14
dece equ 15
cent equ 16
mile equ 17
org 5
inicio: bsf status,rp0
clrf portb ; puerto b como salida
clrf porta ; puerto a como salida
bcf status,rp0
; cargar datos iniciales
clrf
unid
clrf
dece
clrf
cent
clrf
mile
ciclo: call visualizar
call incre_unid
goto ciclo
incre_unid:
incf unid,f
verif_unid:
movf unid,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
22
ELT3822 MICROCONTROLADORES
clrf unid
incre_dece:
incf
dece,f
verif_dece:
movf dece,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf
dece
incre_cent:
incf
verif_cent:
movf cent,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf cent
incre_mile:
incf
verif_mile:
movf mile,w
movlw d'11'
subwf copia,f
movwf copia
incfsz copia,f
return
clrf mile
cent,f
mile,f
return
visualizar: movf dece,w
movwf
contador
swapf
contador,f
movf unid,w
addwf
contador,w
movwf
portb
movf mile,w
movwf
contador
swapf
contador,f
movf cent,w
23
ELT3822 MICROCONTROLADORES
addwf
movwf
contador,w
porta
return
24
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR hexadecimal automatico
; DEL 0 AL FF (CONTADOR ASCENDENTE automatico)
; cuenta automaticamente a una frecuencia de dada *pseudotemporizador a 50 hz
; Programa simple que testea cuenta automaticamente
; no tiene control para empezar el conteno
; tampoco se controla cuando se para el conteo
; EL conteo se saca por el PORTB en 7SEGMENTOS *rb0 a rb6 *decodificados en paralelo a cada
display
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BIN_A_7SEG que hace la conversion
; NO UTILIZA CIRCUITOS INTEGRADOS DECODIFICADORES EXTERNOS
; y por tanto debe UTILIZAr BARRIDO DE CATODOS
; NO UTILIZA interrupciones
; ***********************************************************
;equivalencias de direcciones de memoria
contador equ 12
copia equ 13
unid
equ 14
dece
equ 15
;empieza el progrma
org 0
goto inicio
org 5
25
ELT3822 MICROCONTROLADORES
incre_unid:
incf unid,f
verif_unid:
movf unid,w
movwf copia
movlw d'17'
subwf copia,f
incfsz copia,f
return
clrf unid
incre_dece:
incf
verif_dece:
movf dece,w
movwf copia
movlw d'17'
subwf copia,f
incfsz copia,f
return
clrf
dece
dece,f
return
visualizar: movf unid,w
movwf
contador
call visualizar_digito
movlw
b'0001'
movwf
porta
movf dece,w
movwf
contador
call visualizar_digito
movlw
b'0010'
movwf
porta
return
visualizar_digito:
movlw
b'0000'
movwf
porta
movf contador,0
PROGRAMAS DE EJEMPLO DE CONTADORES
26
ELT3822 MICROCONTROLADORES
call BCD_A_7SEG
movwf portb
return
BCD_A_7SEG:
siescero:
movf contador,w
movwf copia
movlw d'1'
subwf copia,f
incfsz copia,f
goto versiesuno
movlw b'0111111'
return
versiesuno:
movf contador,w
movwf copia
movlw d'2'
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
PROGRAMAS DE EJEMPLO DE CONTADORES
27
ELT3822 MICROCONTROLADORES
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
movlw b'01100110'
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
return
versiesseis:
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
28
ELT3822 MICROCONTROLADORES
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
subwf copia,1
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movf contador,w
movwf copia
movlw d'11'
subwf copia,1
incfsz copia,1
goto versiesonce
movlw b'01110111'
return
versiesonce:
movf contador,w
movwf copia
movlw d'12'
subwf copia,1
incfsz copia,1
goto versiesdoce
movlw b'01111100'
return
versiesdoce:
movf contador,w
movwf copia
movlw d'13'
subwf copia,1
incfsz copia,1
goto versiestrece
movlw b'00111001'
return
versiestrece:
movf contador,w
movwf copia
movlw d'14'
subwf copia,1
incfsz copia,1
goto versiescatorce
PROGRAMAS DE EJEMPLO DE CONTADORES
29
ELT3822 MICROCONTROLADORES
movlw b'01011110'
return
versiescatorce:
movf contador,w
movwf copia
movlw d'15'
subwf copia,1
incfsz copia,1
goto versiesquince
movlw b'01111001'
return
versiesquince:
movf contador,w
movwf copia
movlw d'16'
subwf copia,1
incfsz copia,1
goto versiesdieciseis
movlw b'001110001'
return
versiesdieciseis:
return
30
ELT3822 MICROCONTROLADORES
;***********************************************************
; CONTADOR hexadecimal DEL 0 AL FFF (CONTADOR ASCENDENTE)
; Programa simple que testea el estado del bit 4 del porta
; E incrementa el contador si sta entrada CAMBIA a nivel alto
;
; no usa interrupcion pero espera que esta entrada genere un pulso
; (subida y luego bajada) para el incremento del contador
; ojo que esto constituye un contador asincrnico de FLANCOS DE SUBIDA
; EL conteo se saca por el PORTB en 7SEGMENTOS decodificados en paralelo a cada display
; para esto se usa una subrutina llamada VISUALIZAR y otra
; subrutina BIN_A_7SEG que hace la conversion
; NO UTILIZA CIRCUITOS INTEGRADOS DECODIFICADORES EXTERNOS
; UTILIZA BARRIDO DE CATODOS
; ***********************************************************
org 0
goto inicio
;reservar espacios de memoria
contador equ 12
copia equ 13
unid equ 14
dece equ 15
cent equ 16
org 5
inicio: bsf status,rp0
clrf portb
movlw b'10000'
movwf porta
bcf status,rp0
; cargar datos iniciales
clrf
unid
movlw 8
movwf unid
clrf
dece
clrf
cent
ciclo: call visualizar
btfss porta,4
goto ciclo
subio_de_nivel:
call incre_unid
31
ELT3822 MICROCONTROLADORES
incf unid,f
verif_unid:
movf unid,w
movwf copia
movlw d'17'
subwf copia,f
incfsz copia,f
return
clrf unid
incre_dece:
incf
verif_dece:
movf dece,w
movwf copia
movlw d'17'
subwf copia,f
incfsz copia,f
return
clrf
dece
incre_cent:
incf
verif_cent:
movf cent,w
movwf copia
movlw d'11'
subwf copia,f
incfsz copia,f
return
clrf cent
dece,f
cent,f
return
visualizar: movf unid,w
movwf
contador
call visualizar_digito
movlw
b'0001'
movwf
porta
movf dece,w
movwf
contador
32
ELT3822 MICROCONTROLADORES
call visualizar_digito
movlw
b'0010'
movwf
porta
movf cent,w
movwf
contador
call visualizar_digito
movlw
b'0100'
movwf
porta
return
visualizar_digito:
movlw
b'0000'
movwf
porta
movf contador,0
call BCD_A_7SEG
movwf portb
return
BCD_A_7SEG:
siescero:
movf contador,w
movwf copia
movlw d'1'
subwf copia,f
incfsz copia,f
goto versiesuno
movlw b'0111111'
return
versiesuno:
movf contador,w
movwf copia
movlw d'2'
subwf copia,f
incfsz copia,f
goto versiesdos
movlw b'0000110'
return
versiesdos:
movf contador,w
movwf copia
movlw d'3'
subwf copia,1
incfsz copia,1
goto versiestres
33
ELT3822 MICROCONTROLADORES
movlw b'01011011'
return
versiestres:
movf contador,w
movwf copia
movlw d'4'
subwf copia,1
incfsz copia,1
goto versiescuatro
movlw b'01001111'
return
versiescuatro:
movf contador,w
movwf copia
movlw d'5'
subwf copia,1
incfsz copia,1
goto versiescinco
movlw b'01100110'
return
versiescinco:
movf contador,w
movwf copia
movlw d'6'
subwf copia,1
incfsz copia,1
goto versiesseis
movlw b'01101101'
return
versiesseis:
movf contador,w
movwf copia
movlw d'7'
subwf copia,1
incfsz copia,1
goto versiessiete
movlw b'01111101'
return
versiessiete:
movf contador,w
movwf copia
movlw d'8'
34
ELT3822 MICROCONTROLADORES
subwf copia,1
incfsz copia,1
goto versiesocho
movlw b'00000111'
return
versiesocho:
movf contador,w
movwf copia
movlw d'9'
subwf copia,1
incfsz copia,1
goto versiesnueve
movlw b'01111111'
return
versiesnueve:
movf contador,w
movwf copia
movlw d'10'
subwf copia,1
incfsz copia,1
goto versiesdiez
movlw b'01101111'
return
versiesdiez:
movf contador,w
movwf copia
movlw d'11'
subwf copia,1
incfsz copia,1
goto versiesonce
movlw b'01110111'
return
versiesonce:
movf contador,w
movwf copia
movlw d'12'
subwf copia,1
incfsz copia,1
goto versiesdoce
movlw b'01111100'
return
versiesdoce:
35
ELT3822 MICROCONTROLADORES
movf contador,w
movwf copia
movlw d'13'
subwf copia,1
incfsz copia,1
goto versiestrece
movlw b'00111001'
return
versiestrece:
movf contador,w
movwf copia
movlw d'14'
subwf copia,1
incfsz copia,1
goto versiescatorce
movlw b'01011110'
return
versiescatorce:
movf contador,w
movwf copia
movlw d'15'
subwf copia,1
incfsz copia,1
goto versiesquince
movlw b'01111001'
return
versiesquince:
movf contador,w
movwf copia
movlw d'16'
subwf copia,1
incfsz copia,1
goto versiesdieciseis
movlw b'001110001'
return
versiesdieciseis:
return
2013 J. J. Castelo O.
36