PRACTICA
# 2
CONTADOR
CICLICO DE 00 a 99,
DISPLAY
DINAMICO DE DOS DÍGITOS
Nota: Esta práctica ha sido pensada para ensamblarse sobre la tarjeta de desarrollo del kit JK3 y por eso en el Plano del circuito puede que sean omitidos algunos componentes
La
segunda práctica demuestra el remplazo de circuitería digital discreta como lo
son contadores ascendentes de decadas y también los famosos decodificadores de
BCD (Binary Coded Decimal) a siete
segmentos ahorrando de esta manera espacio valioso y realizando por otro lado
ahorro de energía y número de pines con el método de visualización dinámica.
Objetivos:
·
Realizar la edición,
ensamble, simulación y depuración del programa
·
Comprobar el correcto
funcionamiento del programa y el Hardware de la tarjeta
·
Conteo decimal ascendente por
programa de dos dígitos BCD.
·
Decodificación de BCD a 7
segmentos por programa
Procedimiento:
·
Realizar la edición y
ensamble del programa tal como se describió en la sección anterior
·
Ensamblar y verificar el
Hardware de acuerdo al plano de la práctica
·
Interpretar de acuerdo al
diagrama de flujo el listado del programa fuente
·
Realizar la simulación en
circuito modificando las constantes de los retardos para evitar demoras
inherentes a la simulación (recordar que no es simulación en tiempo real)
observar.
·
Programar el microcontrolador
con el correspondiente archivo de extensión .S19
(practica#2.s19) devolviendo a su valor original las constantes de los
retardos.
Propuesta:
Se
propone modificar el programa de tal manera que el conteo se pueda realizar
ascendente o descendente en forma continua dependiendo de una señal generada
desde el exterior (pulsador). También se puede modificar el programa haciendo
que el conteo sea hexadecimal (00 a FF) alterando los límites superiores de
comparación en la rutina "ACTUALIZA
CONTADOR".
LISTADO
DE LA PRÁCTICA # 2
*********************************************************
*
PRÁCTICA # 2 MANEJO DE DISPLAY DINÁMICO
*
*
PRACTICA#2B.ASM
*
*
*
*
"Curso Microcontroladores Motorola" *
*
Danilo Andrés García Hansen
*
*
dagh_2001@007mundo.com
*
*********************************************************
$include
'JL3REGS.INC'
RAM
EQU $0080 ;inicio de la RAM
FLASH
EQU $EC00 ;inicio de la FLASH
RESETVEC
EQU $FFFE ;Vector
de RESET
COPD
EQU 0
K1
EQU 255T
;CONSTANTES PARA RETARDO DE 10mS
K2
EQU 10T
NUMREPETICIONES
EQU 50T
;CONSTANTE DE RETARDO ENTRE CUENTAS
ORG RAM
REG1
RMB 1
;CONTADOR DEL DELAY1
REG2
RMB 1
;CONTADOR DEL DELAY2
DIG1
RMB 1
;CONTADOR DECIMAL MENOS SIG.
DIG2
RMB 1
;CONTADOR DECIMAL MAS SIG.
CONTADORCICLOS
RMB 1 ;CONTADOR PARA
RETARDO ENTRE ...
;ACTUALIZACIONES DEL CONTADOR
;*********************************************************
;
PROGRAMA PRINCIPAL
ORG FLASH
;DEFINE DIRECCIÓN PARA UBICACION DEL CODIGO SGTE.
$INCLUDE
'DISPLAY.INC' ;AQUI SE INCLUYEN LAS RUTINAS DE DISPLAY
;*********************************************************
INICIO:
RSP
CLRA
BSET COPD,CONFIG1
MOV #$FF,PORTD
;INICIA APAGADOS LOS DIGITOS
MOV #$F8,DDRD
;SENTIDO DEL PUERTO D
MOV #$F8,DDRB
;SENTIDO DEL PUERTO B
CLR DIG2
;INICIALIZA CONTADOR DECIMAL
CLR DIG1
LOOPM:
MOV #NUMREPETICIONES,CONTADORCICLOS
LOOPM2:
BSR VISUALIZA
;VISUALIZACION DINAMICA
DBNZ CONTADORCICLOS,LOOPM2
BSR ACTUCONTA
BRA LOOPM
;*********************************************************
DELAY1:
;RETARDO TOTAL DE K1*5+12
MOV #K1,REG1
;4 CICLOS
LOOP1:
DBNZ REG1,LOOP1
;5*K1 CICLOS
RTS
;4 CICLOS
;*********************************************************
DELAY2:
;RETARDO TOTAL DE 5*K2*K1+17*K2+12
MOV
#K2,REG2 ;4 CICLOS
LOOP2: BSR
DELAY1 ;K2*DELAY1
DBNZ REG2,LOOP2
;5*K2 CICLOS
RTS
;4 CICLOS
;*********************************************************
ACTUCONTA:
INC
DIG1
LDA DIG1
CMP #10T
BEQ AJ1
RTS
AJ1
CLR DIG1
INC DIG2
LDA DIG2
CMP #10T
BEQ AJ2
RTS
AJ2
CLR DIG2
RTS
;*********************************************************
ORG
RESETVEC ; AQUI SE UBICA EN
EL VECTOR DE RESET
DW INICIO
; LA DIRECCION DE INICIO DEL PROGRAMA
ARCHIVO
PARA INCLUIR "DISPLAY.INC"
;
DISPLAY.INC OCT-2000
;ARCHIVO
DE SUBRUTINAS Y MACROS PARA DOS DISPLAY 7 SEGMENTOS ANODO COMUN
************
DEFINICION DE MACROS ********************
$MACRO DIG2ON
BCLR 4,PORTD
$MACROEND
;-----------------------
$MACRO DIG1ON
BCLR 3,PORTD
$MACROEND
;-----------------------
$MACRO DIG2OFF
BSET 4,PORTD
$MACROEND
;-----------------------
$MACRO DIG1OFF
BSET 3,PORTD
$MACROEND
************
FIN DEFINICION DE MACROS *****************
VISUALIZA
LDA DIG2
TAX
LDA TABLA7SEG,X
BSR
SIETE_SEG
DIG2ON
BSR DELAY2
DIG2OFF
LDA DIG1
TAX
LDA TABLA7SEG,X
BSR
SIETE_SEG
DIG1ON
BSR DELAY2
DIG1OFF
RTS
;*********************************************************
;COLOCA
EN EL BUS DE DATOS DEL DISPLAY LOS BITS DEL DIGITO A ENCENDER
SIETE_SEG
STA PORTB
NSA ;INTERCAMBIO
DE NIBBLES
ORA #$1F
;ENMASCARA CON 1's LOS BITS 4 AL 0
STA PORTD
RTS
;*********************************************************
TABLA7SEG
;TABLA PARA DISPLAY ANODO COMUN
DB
%10000000 ;0
DB %11110010 ;1
DB %01001000 ;2
DB %01100000 ;3
DB %00110010 ;4
DB %00100100 ;5
DB %00000100 ;6
DB %11110000 ;7
DB %00000000 ;8
DB
%00100000 ;9
;*********************************************************