Está en la página 1de 10

Practica

Display 5x7 Interrupciones


Microcontroladores y Microprocesadores.
Profesor: Ricardo Barrn de la Cruz.

Alumno:
11310320 Rafael Alejandro Neri Larios
Grupo A
Centro de Enseanza Tcnica Industrial.
L: 101

26/Noviembre/2014

Practica: Multiplexor 5x7 e Interrupciones MTIM

Descripcin:
Objetivo: El objetivo de la prctica es aprender a realiza un programa en el
microcontrolador que funcione como multiplexor, el cual muestre registro y
nombre en una matriz de Less de 5x7, Mediante las interrupciones de MTIM.
Diagrama Esquemtico:

Practica: Multiplexor 5x7 e Interrupciones MTIM

Diagrama Flujo:

Inicializacion y MainLoop
Inicia:
-Habilita la interrupcion por MTIM TOIE
-Inicializa la base de tiempo en 0101
-Establece el maximo de timer para
interrupcion
-CLI Habilita Interrupciones

ColX,Col...<- numToAsccii(A)
Inicio SubRutina:
Empuja H:X al SP
Resta 32 a nuestro Acumulador y Evalua si
es el Mismo

Es
Mayor?

Main Lopp

No

Carga Numero ASCCII en A


LLama fNum2Asccii(A)
Salta a Retardo

Lo compara con 94 y evalua si es Menor

Es
menor?

Va cargando los siguientes numeros en


codigo ASCCII al Acumulados

No

S
Carga 94 en A

Termino
todos los
digitos?

S
No Opera y
Alimenta al Perro
Guardian

No

Multiplica A x 5 y lo guarda en ALTA y


BAJA

Carga H:X con Alto y Bajo, y Carga en A


el contenido Indexado de posicion X:H
en Tabla Asccii

Guarda en la Columna Correspondiente


e Incrementa X

PC apunta al Inicio de
MainLoop

Se Guardaron
las 5 Columnas?

No

S
Jala de Sp H:X y
Retorna Subrutina

Practica: Multiplexor 5x7 e Interrupciones MTIM

Clculos:
=

(4.7 0.4 1.5)


=
= 254.54 270

11

Calculo Periocidad de Interrupcin:


Para engaar al ojo humano se necesitan aproximadamente 20 actualizaciones / seg, Pero usaremos 30
actualizaciones / seg. De la imagen que se est multiplexando, \el tiempo entre cada actualizacin es de:
1
= 33.3 /
30
Pero como son cinco las que se van a multiplexar, ste tiempo se debe repartir para cada columna; Para que
despus de barrerlas todas, al regresar a la primera, hayan transcurrido no ms de 33.3ms y as la primera
columna y todas las dems en la apariencia de no haberse apagado:
33.3
=
= 6.66 = 4.10
5
=

Cdigo Desensamblado:
; Watchdog feed macro
feed_watchdog: MACRO
STA SRS
ENDM

; feed the watchdog

;
; export symbols
;
XDEF _Startup
ABSENTRY _Startup
;
; variable/data section
;
ORG $60
COL0 DS.B 1
COL1 DS.B 1
COL2 DS.B 1
COL3 DS.B 1
COL4 DS.B 1
AP
DS.B 1
ALTO DS.B 1
BAJO DS.B 1

; Insert your data definition here

Practica: Multiplexor 5x7 e Interrupciones MTIM

Asccii:

FCB $00, $00, $00, $00, $00 ;SP ;32


FCB $00, $00, $4F, $00, $00 ;!
FCB $00, $07, $00, $07, $00 ;"
FCB $14, $7F, $14, $7F, $14 ;#
FCB $24, $2A, $7F, $2A, $12 ;$
FCB $23, $13, $08, $64, $62 ;%
FCB $36, $49, $55, $22, $50 ;&
FCB $00, $05, $03, $00, $00 ;'
FCB $00, $1C, $22, $41, $00 ;(
FCB $00, $41, $22, $1C, $00 ;)
FCB $14, $08, $3E, $08, $14 ;*
FCB $08, $08, $3E, $08, $08 ;+
FCB $00, $50, $30, $00, $00 ;,
FCB $08, $08, $08, $08, $08 ;FCB $00, $00, $60, $60, $00 ;.
FCB $20, $10, $08, $04, $02 ;/
FCB $3E, $51, $49, $45, $3E ;0
FCB $00, $42, $7F, $40, $00 ;1
FCB $42, $61, $51, $49, $46 ;2
FCB $21, $41, $45, $4B, $31 ;3
FCB $18, $14, $12, $7F, $10 ;4
FCB $27, $45, $45, $45, $39 ;5
FCB $3C, $4A, $49, $49, $30 ;6
FCB $01, $71, $09, $05, $03 ;7
FCB $36, $49, $49, $49, $36 ;8
FCB $06, $49, $49, $29, $1E ;9
FCB $00, $36, $36, $00, $00 ;:
FCB $00, $56, $36, $00, $00 ;;
FCB $08, $14, $22, $41, $00 ;<
FCB $14, $14, $14, $14, $14 ;=
FCB $00, $41, $22, $14, $08 ;>
FCB $02, $01, $51, $09, $06 ;?
FCB $32, $49, $79, $41, $3E ;@
FCB $7E, $11, $11, $11, $7E ;A
FCB $7F, $49, $49, $49, $36 ;B
FCB $3E, $41, $41, $41, $22 ;C
FCB $7F, $41, $41, $22, $1C ;D
FCB $7F, $49, $49, $49, $41 ;E
FCB $7F, $09, $09, $09, $01 ;F
FCB $3E, $41, $49, $49, $7A ;G
FCB $7F, $08, $08, $08, $7F ;H
FCB $00, $41, $7F, $41, $00 ;I
FCB $20, $40, $41, $3F, $01 ;J
FCB $7F, $08, $14, $22, $41 ;K
FCB $7F, $40, $40, $40, $40 ;L
FCB $7F, $02, $0C, $02, $7F ;M
FCB $7F, $04, $08, $10, $7F ;N
FCB $3E, $41, $41, $41, $3E ;O
FCB $7F, $09, $09, $09, $06 ;P
FCB $3E, $41, $51, $21, $5E ;Q
FCB $7F, $09, $19, $29, $46 ;R
FCB $46, $49, $49, $49, $31 ;S
FCB $01, $01, $7F, $01, $01 ;T
FCB $3F, $40, $40, $40, $3F ;U
FCB $1F, $20, $40, $20, $1F ;V

Practica: Multiplexor 5x7 e Interrupciones MTIM


FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
FCB
;
; code section
;
ORG

$3F, $40, $38, $40, $3F


$63, $14, $08, $14, $63
$07, $08, $70, $08, $07
$61, $51, $49, $45, $43
$7F, $41, $5D, $7F,
$79, $73, $67, $4F,
$7F, $7F, $5D, $41,
$7F, $7F, $7B, $7D,
$7F, $77, $77, $77,
$7F, $7D, $7B, $7F,
$38, $44, $44, $44,
$7F, $41, $57, $47,
$7F, $43, $5B, $7F,
$7F, $47, $57, $40,
$38, $54, $54, $54,
$7B, $41, $7A, $5E,
$00, $6E, $4E, $4E,
$7F, $01, $6F, $0F,
$00, $00, $7A, $00,
$7F, $7F, $3F, $05,
$7F, $41, $67, $5B,
$7F, $7F, $41, $7F,
$63, $7B, $63, $7B,
$7F, $63, $7B, $63,
$38, $44, $44, $44,
$7F, $03, $6B, $63,
$7F, $71, $55, $01,
$7F, $7F, $43, $7B,
$7F, $51, $55, $45,
$7F, $77, $01, $37,
$7F, $63, $6F, $63,
$18, $20, $40, $20,
$63, $6F, $63, $6F,
$7F, $5B, $67, $5B,
$7F, $59, $5B, $41,
$7F, $4D, $55, $59,
$7F, $77, $41, $3E,
$7F, $7F, $41, $7F,
$7F, $3E, $49, $77,
$6F, $77, $77, $6F,

;W
;X
;Y
;Z
$7F
$1F
$7F
$7B
$7F
$7F
$7C
$7F
$7F
$7F
$48
$7F
$00
$7F
$00
$7F
$7F
$7F
$63
$7F
$38
$7F
$5F
$7B
$7F
$7F
$7F
$18
$63
$7F
$7F
$7F
$7F
$7F
$7F
$77

;[
; \
;]
;^
;_
;`
;a
;b
;c
;d
;e
;f
;g
;h
;i
;j
;k
;l
;m
;n
;o
;p
;q
;r
;s
;t
;u
;v;
;w
;x
;y
;z ;122
;{
;|
;}
;~ ;126

ROMStart

_Startup:
LDHX
TXS

#RAMEnd+1

; initialize the stack pointer

MOV #5,MTIMCLK
;8us base tiempo
MOV #250,MTIMMOD ;tope 3.3 milis
MOV #$40,MTIMSC ;habilita MTIM
MOV #$0F,PTADD
MOV #$FF,PTBDD

Practica: Multiplexor 5x7 e Interrupciones MTIM

CLI

; enable interrupts

mainLoop:
;Registro
LDA #32 ;Espacio
JSR numToAsccii
JSR IRS
LDA #49 ;1
JSR numToAsccii
JSR IRS
LDA #32 ;espacio
JSR numToAsccii
JSR IRS
LDA #49 ;1
JSR numToAsccii
JSR IRS
LDA #51 ;3
JSR numToAsccii
JSR IRS
LDA #49 ;1
JSR numToAsccii
JSR IRS
LDA #48 ;0
JSR numToAsccii
JSR IRS
LDA #51 ;3
JSR numToAsccii
JSR IRS
LDA #50 ;2
JSR numToAsccii
JSR IRS
LDA #48 ;0
JSR numToAsccii
JSR IRS
LDA #43 ;~
JSR numToAsccii
JSR IRS
;Nombre
LDA #78 ;N
JSR numToAsccii
JSR IRS
LDA #69 ;E
JSR numToAsccii

Practica: Multiplexor 5x7 e Interrupciones MTIM


JSR IRS
LDA #82 ;R
JSR numToAsccii
JSR IRS
LDA #73 ;I
JSR numToAsccii
JSR IRS
LDA #32 ;espacio
JSR numToAsccii
JSR IRS
NOP
feed_watchdog
STA SRS
JMP
mainLoop

; feed the watchdog

;**************************************************************
;* SERVICIO DE INTERRUPCION PERIODICA
*
;*
*
;**************************************************************
IRS:

MOV #$10,IRQSC
JSR RETARDO
JSR RETARDO
JSR RETARDO
JSR RETARDO
JSR RETARDO
RTS

numToAsccii:

MUL:

CICLO:

SEC;numToASccii(A)
PSHX
PSHH
SUB #32
BEQ MUL
CMP #94
BLS MUL
LDA #96
LDX #5
MUL
STA BAJO
STX ALTO
LDHX ALTO
LDA Asccii,X
STA COL0
INCX
LDA Asccii,X
STA COL1
INCX
LDA Asccii,X
STA COL2
INCX
LDA Asccii,X

Practica: Multiplexor 5x7 e Interrupciones MTIM


STA COL3
INCX
LDA Asccii,X
STA COL4
INCX
PULH
PULX
RTS
RETARDO:
con

LDHX #40000
AIX #-1
feed_watchdog
STA SRS
CPHX #0
BNE con

; feed the watchdog

RTS
MTIM_IRQ: MOV

#$60,MTIMSC

;BORRA MTIM FLAG

LDA AP
BEQ CASE0
DECA
BEQ CASE1
DECA
BEQ CASE2
DECA
BEQ CASE3
BRA CASE4
CASE0

MOV #1,AP
LDA COL0
STA PTBD
MOV #1,PTAD
RTI

CASE1

MOV #2,AP
MOV #0,PTAD
LDA COL1
STA PTBD
MOV #2,PTAD
RTI

CASE2

MOV #3,AP
MOV #0,PTAD
;ESTA ES UNA FORMA
DIFERENTE Y MEJOR DE HACER LOS CASOS
MOV COL2,PTBD
LDA #4
; ESTE 4 CORRESPONDE AL BINARIO DE QUE
REGISTRO ESTA SIENDO ENCENDIDO
STA PTAD
RTI
CASE3

MOV #4,AP
MOV #0,PTAD
DE HACER LOS CASOS

;ESTA ES UNA FORMA DIFERENTE Y MEJOR

Practica: Multiplexor 5x7 e Interrupciones MTIM


MOV COL3,PTBD
MOV #8,PTAD
RTI
CASE4

MOV #0,AP
MOV #0,PTAD
MOV COL4,PTBD
MOV #0,PTAD
BSET 7,PTBD
RTI

;**************************************************************
;* spurious - Spurious Interrupt Service Routine.
*
;*
(unwanted interrupt)
*
;**************************************************************
spurious:

; placed here so that security value


; does not change all the time.

NOP
RTI

;**************************************************************
;*
Interrupt Vectors
*
;**************************************************************
ORG
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W
DC.W

$FFE6
MTIM_IRQ
spurious
spurious
spurious
spurious
spurious
spurious
spurious
spurious
spurious
spurious
DC.W
DC.W

spurious
_Startup

; 6-7
; 8-9
;EA
;EC
;EE
;F0
;F2
;F4
;F6
;F8
;FA
; SWI
; Reset

Conclusin:
La prctica me pareci muy importante porque todos los microcontroladores
pueden depender de alguna interrupcin su funcionamiento, ya sea para estar
censando el exterior o para estar proporcionando una salida a nuestro entorno en
este caso, mostrando en un Display de leds de 5x7, pero como no tenemos
salidas suficientes tuvimos que jugar con la capacidad humana para su visin, en
este caso 20 hz. Y lo Importante estar haciendo el muestreo por columna en cada
interrupcin.

También podría gustarte