Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ELÉCTRICA
DE LA
UNIVERSIDAD AUTÓNOMA DE NUEVO LEÓN
Microcontroladores
Maestro: Semestre:
Rodolfo Rubén Treviño Martinez, M.C. Enero-Junio 2018
Fecha de entrega:
Calificación
Introducción
En el presente código de programación se presenta la aplicación para el teclado matricial 4x4 por medio de
interrupciones KBI (capítulo 8 del manual del microcontrolador HSC08), hay que tener en consideración
cómo funciona el hardware y qué se necesita hacer para el manejo propio del teclado. Considerar en este
caso la utilización de resistencias externas de 10kΩ para activar el “pulldown” de los puertos de lectura del
teclado de forma manual. En caso de usar sólo la resistencia interna del microcontrolador activar
directamente por medio de los puertos a usar el pullup o pulldown dependiendo el caso; tomando en cuenta
la desactivación del pulldown en el KBI, para no causar problemas de lectura de programa por parte del
microcontrolador.
;*******************************************************************
;* This stationery serves as the framework for a user application. *
;* For a more comprehensive program that demonstrates the more *
;* advanced functionality of this processor, please see the *
;* demonstration applications, located in the examples *
;* subdirectory of the "Freescale CodeWarrior for HC08" program *
;* directory. *
;*******************************************************************
;
; export symbols
;
XDEF _Startup
ABSENTRY _Startup
;
; variable/data section
;
ORG RAMStart ; Insert your data definition here
ExampleVar: DS.B 1
;
; code section
;
ORG ROMStart
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
CLI ; enable interrupts
MOV #$F0,PTBD ;habilita el puerto B como registro de datos
NOP
feed_watchdog
BRA mainLoop
Teclado:
COLUMNA1:
MOV #$80, PTBD ;habilita el pin 7 del PTBD limpia el bit 4,6,5
BRSET 0,PTBD,Tecla1
JSR RETARDO ;lleva a la subrutina retardo
BRSET 1,PTBD,Tecla4
JSR RETARDO
BRSET 2,PTBD,Tecla7
JSR RETARDO
BRSET 3,PTBD,TeclaAS
JSR RETARDO
BRA COLUMNA2 ;en caso de falso, salta a columna 2
Tecla1:
MOV #$01,PTCD
JMP END
Tecla4:
MOV #$04,PTCD
JMP END
Tecla7:
MOV #$07,PTCD
JMP END
TeclaAS:
MOV #$0F,PTCD
JMP END
COLUMNA2:
MOV #$40,PTBD ;habilita el pin 6 del PTBD limpia el bit 7,4,5
BRSET 0,PTBD,Tecla2
JSR RETARDO
BRSET 1,PTBD,Tecla5
JSR RETARDO
BRSET 2,PTBD,Tecla8
JSR RETARDO
BRSET 3,PTBD,Tecla0
JSR RETARDO
BRA COLUMNA3
Tecla2:
MOV #$02,PTCD
JMP END
Tecla5:
MOV #$05,PTCD
JMP END
Tecla8:
MOV #$08,PTCD
JMP END
Tecla0:
MOV #$10,PTCD
JMP END
COLUMNA3:
MOV #$20, PTBD ;habilita el pin 5 del PTBD limpia el bit 4,6,7
BRSET 0,PTBD,Tecla3
JSR RETARDO
BRSET 1,PTBD,Tecla6
JSR RETARDO
BRSET 2,PTBD,Tecla9
JSR RETARDO
BRSET 3,PTBD,TeclaGATO
JSR RETARDO
BRA COLUMNA4
Tecla3:
MOV #$03,PTCD
JMP END
Tecla6:
MOV #$06,PTCD
JMP END
Tecla9:
MOV #$09,PTCD
JMP END ;lleva a la subrutina segura de finalización
TeclaGATO:
MOV #$0E,PTCD
JMP END
COLUMNA4:
MOV #$10, PTBD ;habilita el pin 4 del PTBD limpia el bit 7,6,5
BRSET 0,PTBD,TeclaA
JSR RETARDO
BRSET 1,PTBD,TeclaB
JSR RETARDO
BRSET 2,PTBD,TeclaC
JSR RETARDO
BRSET 3,PTBD,TeclaD
JSR RETARDO
JMP COLUMNA1
TeclaA:
MOV #$0A,PTCD
JMP END
TeclaB:
MOV #$0B,PTCD
JMP END
TeclaC:
MOV #$0C,PTCD
JMP END
TeclaD:
MOV #$0D,PTCD
JMP END
END:
MOV #$00,PTCD ;Subrutina de fin seguro, asegura que los puertos
;de salida se limpien después de ser decodificados
RETARDO:
MOV #$05,RTCSC ; asigna un retardo en el registro RTC de 256
;milisegundos (0000 1001)
;**************************************************************
;* spurious - Spurious Interrupt Service Routine. *
;* (unwanted interrupt) *
;**************************************************************
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG $FFD6 ; valor en hexadecimal del registro de la
;interrupción
ORG $FFFA
DC.W spurious ;
DC.W spurious ; SWI
DC.W _Startup ; Reset