Sie sind auf Seite 1von 11

LABORATORIO 2

MANEJO DE LOS PUERTOS DE E/S ESTNDAR


RELOJ DIGITAL

ANLISIS Y DISEO DE MICRO-CONTROLADORES


PROFESOR
INGENIERO JULIN R. CAMARGO

Csar Prieto Surez 20112005067


Jaime Arturo Hurtado 20121005073

UNIVERSIDAD DISTRITAL FRANCISCO JOS DE CALDAS


INGENIERA ELECTRNICA
BOGOT
2015

PLANTEAMIENTO DEL PROBLEMA


Disear e implementar con el micro controlador un reloj digital, el cual debe ser visualizado en
matrices de LEDs en formato HH: MM. Deber tenerse la opcin de ajustar la hora por medio de
pulsadores, adems los dos puntos que separan la hora de los minutos servirn como tic tac del
reloj, esto quiere decir que cada vez que pase un segundo cambiara su estado de encendido a
apagado y viceversa.
ANLISIS DE PROBLEMA
Se realizaron dos rutinas, una principal la cual evaluaba si las banderas de modificar estn en 1, lo
cual significa que los pulsadores se encuentran en 1 y que aumentara los contadores de segundo,
minuto y hora y una segunda rutina, una subrutina encargada de visualizar el la matriz de leds la
hora, para esta segunda subrutina se utilizaron las subturinas tiempo y BCD para realizar esta
tarea.
DISEO
Para este proyecto se utilizaron los siguientes materiales:
Matriz de leds (25x7)
23 transistores bc548
Jumpers
Microcontrolador
2 pulsadores
Para solucionar el problema de la intensidad de la matriz de leds se utilizaron los transistores que
actuaban como una compuerta not, si les ingresaba un 1 lgico por la base retornaba un 0 lgico
por el colector y viceversa si ingresaba un 0 lgico por la base retornaba un 1 lgico por el colector,
pero la corriente no se la pedira al micro controlador sino a la fuente que polariza los transistores.
Los puertos del micro controlador se utilizaron de la siguiente manera:
PUERTOS DE SALIDA:
PTD (3 al 7) filas.
PTB (0 al 7) unidades y decenas de hora.
PTA (0 al 7) unidades y decenas minutos.
PTC (7) dos puntos de segundos.
PUERTOS DE ENTRADA:
PTC (4 y 5) para los pulsadores
MATRIZ DE LEDS
La lgica para poder encender la matriz de leds es la siguiente, se necesita que a la matriz de led
llegue en las filas un cero lgico y en las columnas un 1 lgico para poder encender un led en
especfico de la siguiente forma:

Pero para que la corriente que le exija la matriz de leds no salga del micro controlador se usaran
transistores que actuaran como compuerta lgica NOT. Haciendo que para que encienda un led se
deba de mandar un 1 lgico por las filas y un 0 lgico por las columnas.
VISUALIZACION DINAMICA
El tipo de visualizacin implementado fue la visualizacin dinmica, que permite que se encienda
una columna a la vez y se vuelva a apagar encendiendo la siguiente columna, as hasta recorrer
completamente la matriz de leds, entonces el puerto que nos dira que leds de la columna se
encender ser el de la filas
El tiempo de la demora debe ser tal que permita una visualizacin correcta, sin molestos
parpadeos y con los leds brillantes. Hay que tener en cuenta que si utilizamos tiempos mayores
para el encendido de cada fila, el brillo de los leds ser mayor, pero tambin aumentara el
parpadeo.
CIRCUITO
El diagrama de los nmeros que se van a visualizar es el siguiente:

en donde:
es el bombillo prendido y

es el bombillo apagado

El diagrama del circuito con el que se va a implementar es el siguiente:

y una vista del circuito implementado:

DIAGRAMA DE FLUJO

Teniendo en cuenta el diagrama de flujo, el cual es una gua para poder realizar el cdigo con la
mayor eficiencia posible, diseamos la parte se software en FREESCALE CODEWARRIOR
(cdigo aadido en anexos).
CONCLUSIONES
El entendimiento del problema que se desea resolver, antes de empezar a realizar alguna
tarea de anlisis y modelamiento, para esto se hace uso de herramientas como los
diagramas de flujo y pruebas de escritorio las cuales permiten organizar el algoritmo del
diseo y comprobarlo.
Se realiza el reconocimiento de los puertos I/O (de entrada y salida) comprendiendo el
manejo de los mismos, en el desarrollo de aplicaciones con un micro controlador, lo que
ser muy importante en futuros proyectos

C:\Documents and Settings\prietosuarez\Mis documentos\Descargas\INTENTOV5\INTENTO\Sources\main.asm


domingo, 19 de abril de 2015 / 12:01 p.m.
INCLUDE 'MC68HC908AP16.INC'
COPD
EQU 0
ORG 60H
DECENAS
RMB 1
;DECENAS (BCD)
UNIDADES
RMB 1
;UNIDADES (BCD)
SEG
RMB 1
;contador de segundos
MIN
RMB 1
;contador de minutos
HOR
RMB 1
;contador de horas
BHOR
RMB 1
;BANDERA HORA
BMIN
RMB 1
;BANDERA MINUTO
DECENA_MIN RMB 1
UNIDAD_MIN RMB 1
;minutos en bcd
DECENA_HOR RMB 1
UNIDAD_HOR RMB 1
;horas en bcd
POSICION
RMB 1
AJSEG
RMB 1
DOSPUNTO
RMB 1
ORG 860H
START
LDHX #$450
TXS
CLRH
BSET COPD,CONFIG1
;DESHABILITAR COP
MOV #0FFH,DDRA
;CONFIGURAR PTA COMO SALIDA PARA HORA
MOV #0FFH,DDRB
;CONFIGURAR PTB COMO SALIDA PARA MUNITOS
MOV #0FFH,DDRD
;CONFIGURAR PTD COMO SALIDA PARA COLUMNAS DE LA MATRIZ
MOV #10000000B,DDRC
;CONFIGURAR PTC COMO ENTRADA PARA LOS PULSADORES Y EL TIC-TAC
MOV #00H,SEG
MOV #00D,MIN
MOV #12D,HOR
MOV #01H,BHOR
MOV #01H,BMIN
MOV #00H,AJSEG
MOV #01H,DOSPUNTO
SEGUNDOS
BRSET 0,BMIN,AUM_M;PREGUNTA DE LA BANDERA DE MINUTOS
BHORA
BRSET 0,BHOR,AUM_H;PREGUNTA DE LA BANDERA DE HORA
JMP AJUSTE
AUM_M
BRSET 4,PTC, AUMENTA_MIN;PREGUNTA DEL PULSADOR DE MINUTO
JMP BHORA
AUMENTA_MIN LDA MIN
CBEQA #59D,RSTMIN
INC MIN
MOV #1D,BMIN
JMP AUM_H
RSTMIN
MOV #0D,MIN
JMP AUM_H
AUM_H
BRSET 5,PTC, AUMENTA_HOR;PREGUNTA DEL PULSADOR DE HORA
JMP AJUSTE
AUMENTA_HOR LDA HOR
CBEQA #23D,RSTHOR
INC HOR
MOV #1D,BHOR
JMP AJUSTE
RSTHOR
MOV #0D,HOR
MOV #1D,BHOR
JMP AJUSTE
AJUSTE
JMP IMPRIMIR
CONTINUAR
LDHX AJSEG
CPHX #6000D
BLS PUNTOFF
PUNTON
MOV #00000000B,DOSPUNTO
JMP SEGUIR
PUNTOFF
MOV #10000000B,DOSPUNTO
SEGUIR
CPHX #12000D
INC AJSEG
BLS AJUSTE
MOV #0H,AJSEG
LDX SEG
CPX #59D
INC SEG
BLS SEGUNDOS
MINUTOS
LDX MIN
CPX #59D
MOV #00H,SEG
INC MIN
;MIN = MIN + 1
BLS SEGUNDOS
HORAS
LDX HOR
CPX #23D
MOV #00H,MIN

Page: 1

C:\Documents and Settings\prietosuarez\Mis documentos\Descargas\INTENTOV5\INTENTO\Sources\main.asm


domingo, 19 de abril de 2015 / 12:01 p.m.
INC HOR
;HOR = HOR + 1
BLS SEGUNDOS
MOV #00H,SEG
MOV #00H,MIN
MOV #00H,HOR
JMP SEGUNDOS
IMPRIMIR
;SE REALIZARALA CONVERSION DEL NUMERO A IMPRIMIR
;___________BCD MINUTOS
LDHX #0D
LDX MIN
JSR BCD
MOV UNIDADES,UNIDAD_MIN
MOV DECENAS,DECENA_MIN
;___________BCD HORAS
LDHX #0D
LDX HOR
JSR BCD
MOV UNIDADES,UNIDAD_HOR
MOV DECENAS,DECENA_HOR
CLRA
CLRH
CLRX
;___________NECESARIO PARA IMPRIMIR EL NUMERO BIEN EN EL PRIMER
LDA #11111111B
STA PTA
LDA #11111111B
STA PTC
;___________;PRIMER PEDAZO DE 1 DIGITO
MOV #0D,POSICION
LDA #01111111B
STA PTB
LDX DECENA_HOR
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;SEGUNDO PEDAZO DE 1 DIGITO
MOV #1D,POSICION
;(2) PERO ES (3) SI CARGAMOS DESDE LA MEMORIA
LDA #10111111B ;(2) PERO ES (3) SI CARGAMOS DESDE LA MEMORIA
STA PTB
;(2)
LDX DECENA_HOR
JSR IMPRIME
LDHX #100D
;VECES PARA COMPLETAR 5 ms Y CON ESO LOS 4 NUMEROS DA 25 ms Y 500 ms SE
LOGRA REPITIENDO 25 VECES ESO
JSR TIEMPO
;(10)
CLR PTD
;TERCER PEDAZO DE 1 DIGITO
MOV #2D,POSICION
LDA #11011111B
STA PTB
LDX DECENA_HOR
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;CUARTO PEDAZO DE 1 DIGITO
MOV #3D,POSICION
LDA #11101111B
STA PTB
LDX DECENA_HOR
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;___________;PRIMER PEDAZO DE 2 DIGITO
MOV #0D,POSICION
LDA #11110111B
STA PTB
LDX UNIDAD_HOR
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;SEGUNDO PEDAZO DE 2 DIGITO
MOV #1D,POSICION
LDA #11111011B
STA PTB
LDX UNIDAD_HOR

Page: 2

C:\Documents and Settings\prietosuarez\Mis documentos\Descargas\INTENTOV5\INTENTO\Sources\main.asm


domingo, 19 de abril de 2015 / 12:01 p.m.
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;TERCER PEDAZO DE 2 DIGITO
MOV #2D,POSICION
LDA #11111101B
STA PTB
LDX UNIDAD_HOR
JSR IMPRIME
LDHX #100D
;espera 500mS
JSR TIEMPO
CLR PTD
;CUARTO PEDAZO DE 2 DIGITO
MOV #3D,POSICION
LDA #11111110B
STA PTB
LDX UNIDAD_HOR
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;-----------;LOS PUNTOS TIC-TAC
LDA #11111111B
STA PTA
LDA #11111111B
STA PTB
LDA DOSPUNTO
STA PTC
LDA #01010000B
STA PTD
LDHX #100D
JSR TIEMPO
CLR PTD
;___________NECESARIO PARA IMPRIMIR EL NUMERO BIEN
LDA #11111111B
STA PTB
LDA #11111111B
STA PTC
;___________;PRIMER PEDAZO DE 3 DIGITO
MOV #0D,POSICION
LDA #01111111B
STA PTA
LDX DECENA_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;SEGUNDO PEDAZO DE 3 DIGITO
MOV #1D,POSICION
LDA #10111111B
STA PTA
LDX DECENA_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;TERCER PEDAZO DE 3 DIGITO
MOV #2D,POSICION
LDA #11011111B
STA PTA
LDX DECENA_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;CUARTO PEDAZO DE 3 DIGITO
MOV #3D,POSICION
LDA #11101111B
STA PTA
LDX DECENA_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;___________;PRIMER PEDAZO DE 4 DIGITO
MOV #0D,POSICION
LDA #11110111B

Page: 3

C:\Documents and Settings\prietosuarez\Mis documentos\Descargas\INTENTOV5\INTENTO\Sources\main.asm


domingo, 19 de abril de 2015 / 12:01 p.m.
STA PTA
LDX UNIDAD_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;SEGUNDO PEDAZO DE 4 DIGITO
MOV #1D,POSICION
LDA #11111011B
STA PTA
LDX UNIDAD_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;TERCER PEDAZO DE 4 DIGITO
MOV #2D,POSICION
LDA #11111101B
STA PTA
LDX UNIDAD_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;CUARTO PEDAZO DE 4 DIGITO
MOV #3D,POSICION
LDA #11111110B
STA PTA
LDX UNIDAD_MIN
JSR IMPRIME
LDHX #100D
JSR TIEMPO
CLR PTD
;___________;variable
JMP CONTINUAR
TIEMPO
AIX #-1
NOP
NOP
NOP
NOP
CPHX #0
BNE TIEMPO
RTS
BCD
;el numero debe estar cargado en HX
TXA
;cargo el registro A con el registro X
LDX #0AH
;cargo el registro X con 10D
DIV
;realizo la divisin
STA DECENAS
;guardo el registro A en Decenas
PSHH
;guardo el registro H en la PILA
PULA
;saco de la PILA y guardo en el registro A
STA UNIDADES
;guardo el registro A en Unidades
RTS
;retorno de la sub-rutina
IMPRIME
;debe de ingresar el numero en el registro x
;sp con el numero de la tabla a imprimir
CPX #00D
BEQ IMPRIME_0
CPX #01D
BEQ IMPRIME_1
CPX #02D
BEQ IMPRIME_2
CPX #03D
BEQ IMPRIME_3
CPX #04D
BEQ IMPRIME_4
CPX #05D
BEQ IMPRIME_5
CPX #06D
BEQ IMPRIME_6
CPX #07D
BEQ IMPRIME_7
CPX #08D
BEQ IMPRIME_8
CPX #09D
BEQ IMPRIME_9
IMPRIME_0
LDX POSICION
LDA CERO,X
STA PTD
CLRA

Page: 4

C:\Documents and Settings\prietosuarez\Mis documentos\Descargas\INTENTOV5\INTENTO\Sources\main.asm


domingo, 19 de abril de 2015 / 12:01 p.m.
RTS
LDX POSICION
LDA UNO,X
STA PTD
CLRA
RTS
IMPRIME_2
LDX POSICION
LDA DOS,X
STA PTD
CLRA
RTS
IMPRIME_3
LDX POSICION
LDA TRES,X
STA PTD
CLRA
RTS
IMPRIME_4
LDX POSICION
LDA CUATRO,X
STA PTD
CLRA
RTS
IMPRIME_5
LDX POSICION
LDA CINCO,X
STA PTD
CLRA
RTS
IMPRIME_6
LDX POSICION
LDA SEIS,X
STA PTD
CLRA
RTS
IMPRIME_7
LDX POSICION
LDA SIETE,X
STA PTD
CLRA
RTS
IMPRIME_8
LDX POSICION
LDA OCHO,X
STA PTD
CLRA
RTS
IMPRIME_9
LDX POSICION
LDA NUEVE,X
STA PTD
CLRA
RTS
;--------------------INICIO TABLAS-------------------------;
CERO
FCB 01110000B,10001000B,10001000B,01110000B
UNO
FCB 00000000B,01000000B,11111000B,00000000B
DOS
FCB 01001000B,10011000B,10101000B,01001000B
TRES
FCB 10001000B,10101000B,10101000B,01010000B
CUATRO
FCB 11100000B,00100000B,11111000B,00100000B
CINCO
FCB 11101000B,10101000B,10101000B,10110000B
SEIS
FCB 01111000B,10101000B,10101000B,10111000B
SIETE
FCB 11000000B,10000000B,10111000B,11000000B
OCHO
FCB 01010000B,10101000B,10101000B,01010000B
NUEVE
FCB 11100000B,10100000B,10100000B,11111000B
;---------------------FIN TABLAS---------------------------;
ORG 0FFFEH ;vector de reset
FDB START
IMPRIME_1

Page: 5

Das könnte Ihnen auch gefallen