Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alumno:
11310320 Rafael Alejandro Neri Larios
Grupo A
Centro de Enseanza Tcnica Industrial.
L: 101
26/Noviembre/2014
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:
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
Es
menor?
No
S
Carga 94 en A
Termino
todos los
digitos?
S
No Opera y
Alimenta al Perro
Guardian
No
PC apunta al Inicio de
MainLoop
Se Guardaron
las 5 Columnas?
No
S
Jala de Sp H:X y
Retorna Subrutina
Clculos:
=
11
Cdigo Desensamblado:
; Watchdog feed macro
feed_watchdog: MACRO
STA SRS
ENDM
;
; 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
Asccii:
;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
MOV #5,MTIMCLK
;8us base tiempo
MOV #250,MTIMMOD ;tope 3.3 milis
MOV #$40,MTIMSC ;habilita MTIM
MOV #$0F,PTADD
MOV #$FF,PTBDD
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
;**************************************************************
;* 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
LDHX #40000
AIX #-1
feed_watchdog
STA SRS
CPHX #0
BNE con
RTS
MTIM_IRQ: MOV
#$60,MTIMSC
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
MOV #0,AP
MOV #0,PTAD
MOV COL4,PTBD
MOV #0,PTAD
BSET 7,PTBD
RTI
;**************************************************************
;* spurious - Spurious Interrupt Service Routine.
*
;*
(unwanted interrupt)
*
;**************************************************************
spurious:
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.