Vous êtes sur la page 1sur 19

Puertos de

Entrada-Salida
Esquema de pines de E/S
Para la familia HC9S08

(HC9S08JM60 - HC9S08JM32

Controles de cada Pin:

•Dirección
•Pull Up/Down
•Drive Strenght
•Slew rate
Registros de Configuración:

Multiplexado de funciones
(pines con funciones compartidas por distintos módulos)

Prioridad
MC9S08JM60/JM32
Registros de Configuración:

•Dirección
•Pull Up/Down
•Drive Strenght
•Slew rate
Características Eléctricas (Hoja de Datos):

Drive Strength

High drive

Low drive
Características Eléctricas (Hoja de Datos):

Drive Strength
High Drive (PTxDSn = 1) Low Drive (PTxDSn = 0)
High drive
Low drive
Slew Rate
Slew Rate

No Slew Rate (PTxSEn = 0)

Si Slew Rate (PTxSEn = 1)


INTERRUPCIÓN POR TECLADO MC9S08JM60
(S08KBIV2)

Registros a utilizar:

 KBI Status and Control Register (KBISC)


 KBI Pin Enable Register (KBIPE)

 KBI Edge Select Register (KBIES)


INTERRUPCIÓN POR TECLADO MC9S08JM60
(S08KBIV2)
INTERRUPCIÓN POR TECLADO MC9S08JM60
(S08KBIV2)
INTERRUPCIÓN POR TECLADO MC9S08JM60
(S08KBIV2)

Procedimiento de Utilización:
1. Limpiar KBIE en KBISC (para no tener falsas interrupciones)
2. Habilitar polaridad seteando KBEDGn en KBIES
3. Configurar Modo y Pull Up o Pull Down en PTxPE
4. Habilitar los pines KBI a utilizar seteando KBIEPEn en
KBISC
5. Poner KBACK =1 en KBISC (por si se está ejecutando otra
KBIE)
6. Setear KBIE en KBISC para habilitar las interrupciones
7. Una vez atendida la interrupción, al final de ella se debe poner
KBACK en 1.
INTERRUPCIÓN POR TECLADO MC9S08JM60
(S08KBIV2)

Procedimiento de Utilización:
/* ### Init_KBI init code */

/* KBISC: KBIE=0 */
KBISC &= (unsigned char)~0x02;
/* KBIES: KBEDG7=0,KBEDG6=0,KBEDG5=0,KBEDG4=0,KBEDG3=0,KBEDG2=0,KBEDG1=0,KBEDG0=0 */
KBIES = 0x00;
/* KBISC: KBMOD=1 */
KBISC |= (unsigned char)0x01;
/* KBIPE: KBIPE7=0,KBIPE6=0,KBIPE5=0,KBIPE4=0,KBIPE3=0,KBIPE2=1,KBIPE1=0,KBIPE0=0 */
KBIPE = 0x04;
/* KBISC: KBACK=1 */
KBISC |= (unsigned char)0x04;
/* KBISC: KBIE=1 */
KBISC |= (unsigned char)0x02;
/* ### */
VECTORES DE INTERRUPCIÓN
ORG $FFC4 ; Interrupt vector table
_vect:
DC.W UNASSIGNED_ISR ; Int.no. 29 Vrtc (at FFC4) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 28 Viic (at FFC6) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 27 Vacmp (at FFC8) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 26 Vadc (at FFCA) Unassigned
DC.W isrVkeyboard ; Int.no. 25 Vkeyboard (at FFCC) Used
DC.W UNASSIGNED_ISR ; Int.no. 24 Vsci2tx (at FFCE) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 23 Vsci2rx (at FFD0) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 22 Vsci2err (at FFD2) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 21 Vsci1tx (at FFD4) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 20 Vsci1rx (at FFD6) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 19 Vsci1err (at FFD8) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 18 Vtpm2ovf (at FFDA) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 17 Vtpm2ch1 (at FFDC) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 16 Vtpm2ch0 (at FFDE) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 15 Vtpm1ovf (at FFE0) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 14 Vtpm1ch5 (at FFE2) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 13 Vtpm1ch4 (at FFE4) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 12 Vtpm1ch3 (at FFE6) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 11 Vtpm1ch2 (at FFE8) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 10 Vtpm1ch1 (at FFEA) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 9 Vtpm1ch0 (at FFEC) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 8 VReserved (at FFEE) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 7 Vusb (at FFF0) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 6 Vspi2 (at FFF2) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 5 Vspi1 (at FFF4) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 4 Vlol (at FFF6) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 3 Vlvd (at FFF8) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 2 Virq (at FFFA) Unassigned
DC.W UNASSIGNED_ISR ; Int.no. 1 Vswi (at FFFC) Unassigned
DC.W _Startup ; Int.no. 0 Vreset (at FFFE) Reset vector
VECTORES DE INTERRUPCIÓN
/* Interrupt vector table */
#ifndef UNASSIGNED_ISR
#define UNASSIGNED_ISR ((void(*near const)(void)) 0xFFFF) /* unassigned interrupt service routine
*/
#endif

void (* near const _vect[])(void) @0xFFC4 = { /* Interrupt vector table */


UNASSIGNED_ISR, /* Int.no. 29 Vrtc (at FFC4) Unassigned */
UNASSIGNED_ISR, /* Int.no. 28 Viic (at FFC6) Unassigned */
UNASSIGNED_ISR, /* Int.no. 27 Vacmp (at FFC8) Unassigned */
UNASSIGNED_ISR, /* Int.no. 26 Vadc (at FFCA) Unassigned */
isrVkeyboard, /* Int.no. 25 Vkeyboard (at FFCC) Used */
UNASSIGNED_ISR, /* Int.no. 24 Vsci2tx (at FFCE) Unassigned */
UNASSIGNED_ISR, /* Int.no. 23 Vsci2rx (at FFD0) Unassigned */
UNASSIGNED_ISR, /* Int.no. 22 Vsci2err (at FFD2) Unassigned */
UNASSIGNED_ISR, /* Int.no. 21 Vsci1tx (at FFD4) Unassigned */
UNASSIGNED_ISR, /* Int.no. 20 Vsci1rx (at FFD6) Unassigned */
UNASSIGNED_ISR, /* Int.no. 19 Vsci1err (at FFD8) Unassigned */
UNASSIGNED_ISR, /* Int.no. 18 Vtpm2ovf (at FFDA) Unassigned */
UNASSIGNED_ISR, /* Int.no. 17 Vtpm2ch1 (at FFDC) Unassigned */
UNASSIGNED_ISR, /* Int.no. 16 Vtpm2ch0 (at FFDE) Unassigned */
UNASSIGNED_ISR, /* Int.no. 15 Vtpm1ovf (at FFE0) Unassigned */
UNASSIGNED_ISR, /* Int.no. 14 Vtpm1ch5 (at FFE2) Unassigned */
UNASSIGNED_ISR, /* Int.no. 13 Vtpm1ch4 (at FFE4) Unassigned */
UNASSIGNED_ISR, /* Int.no. 12 Vtpm1ch3 (at FFE6) Unassigned */
UNASSIGNED_ISR, /* Int.no. 11 Vtpm1ch2 (at FFE8) Unassigned */
UNASSIGNED_ISR, /* Int.no. 10 Vtpm1ch1 (at FFEA) Unassigned */
UNASSIGNED_ISR, /* Int.no. 9 Vtpm1ch0 (at FFEC) Unassigned */
UNASSIGNED_ISR, /* Int.no. 8 VReserved (at FFEE) Unassigned */
UNASSIGNED_ISR, /* Int.no. 7 Vusb (at FFF0) Unassigned */
UNASSIGNED_ISR, /* Int.no. 6 Vspi2 (at FFF2) Unassigned */
UNASSIGNED_ISR, /* Int.no. 5 Vspi1 (at FFF4) Unassigned */
UNASSIGNED_ISR, /* Int.no. 4 Vlol (at FFF6) Unassigned */
UNASSIGNED_ISR, /* Int.no. 3 Vlvd (at FFF8) Unassigned */
UNASSIGNED_ISR, /* Int.no. 2 Virq (at FFFA) Unassigned */
UNASSIGNED_ISR, /* Int.no. 1 Vswi (at FFFC) Unassigned */
_Startup /* Int.no. 0 Vreset (at FFFE) Reset vector */
};
APLICACIONES BÁSICAS
APLICACIONES BÁSICAS

Display de 7 segmentos

Matriz de teclado
APLICACIONES BÁSICAS

Rebote en pulsadores

Retardo en software (delay)


evita la captación de rebote

Vous aimerez peut-être aussi