Sei sulla pagina 1di 126

1020070693

UNIVERSIDAD AUTONOMA DE NUEVO LEON


FACULTAD DE INGENIERIA MECANICA Y ELECTRICA

RELOJ CHECADOR MULTIENTRADA

TESIS QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS DE LA INGENIERIA ELECTRICA CON ESPECIALIDAD EN ELECTRONICP

PRESENTA

GUADALUPE ACOSTA VILLARREAL

Cd. Universrtaria, San Nicolas de los Garza, N. L. Enero de 1995.

1"--\

. Me.

~s~..>~
FI t--u::::: ~c,.C1S

A.1_

FONDO TEalS

RELOJ CHECADOR MUL TIENTRADA

Los Miembros del Comite aprueban la Tesis de Maestria de Guadalupe Acosta Villarreal

M. C. Luis Manuel Camacho Velazquez Asesor

M. C. Luis M. Martinez Villarreal

M. C. Juan D. Garza Gonzalez

Derechos Reservados © 1995 Ing. Guadalupe Acosta Villarreal

DEDICATORIA

Para mis padres: Silvino y Luisa y mis hermanos: Amulfo, Esther, Hector, Clara, Bertha, Faustino, Humberto, Leticia, Rolando y Saul Silvestre.

Para mi Esposa Simona Santos de L.

y para mis Hijos Orlando Guadalupe Eduardo Haziel

e Iraida Edith

Por sus atenciones, sus esperas, por sus paLabras, por su inagotable paciencia

AGRADECIMIENTOS.

Agradezco el apoyo recibido para Ia parte operativa at Director del Instituto Tecnologico de Cd. Vcitoria, Tam. Ing. Tomas Garza Wong y at Jefe de Recursos Humanos, Ing. Salomon Rodriguez; par eL invaluable apoyo a la parte tecnica a la Ora. Ludivina Barrientos Lozano; A los compafieros del Doctorado en Ingenieria Electrica de la

Facultad de Ingenieria Mecanica y Electrica de la UANL, M. C. Cesar Elizondo Gonzalez y M. C. Victor Vega Dominguez por toda su ayuda en el area de Hardware, especialmente al M.C. Juan Jose Dario Delgado Romero por toda la asesoria en los momentos dificiles del desarrollo de este trabajo; a mis hermanos Faustino, Humberto y Rolando por estar siempre atentos a las necesidades de software y hardware. Un agradecimiento especial al M. C. Luis Manuel Camacho Velazquez por todas las sugerencias para mejorar la presentaci6n.

Guadalupe Acosta Villarreal

Cd. Universitaria, San Nicolas de los Garza N. L., Enero de 1995.

INDICE
PAGINA INDICE INDICE DE FIGURAS INDICE DE TABLAS

INDICE DE DIAGRAMAS DE FLUJO


INDICE DE RUTINAS PROLOGO CAPITULO 1.- GENERALIDADES DESCRIPCION CAPITULO 11.-HARDWARE DE LA CONEXION DEL MICROCONTROLADOR EL TECLADO EL PVER TO SERIE DEMULTIPLEXANDO EL DISPLAY LA RAM DEL SISTEMA LA IMPRESOM EST ANDAR DE LAS COMUNICACIONES CUMUNICACION COMUNICACION SINCRONA ASINCRONA MC68HC 11 DE DATOS SERlE DATOS DE DIRECCIONES EL MAPEO DE l\1EMORIA

1-1 . 1-2 . 1-4 . 1-5 . 1-5


. .. . . .. . . . .. .. .. .. . .. .. .

IT-I 1-1 1-2 2-1 2-1 2-2 2-3 2-3 2-4 2-4 2-5 2-6 2-8 2-9 2-10 2-11 2-16 2-16 2-17 2-17 2-18 2-18 2-20 2-22 2-23

EL MICROCONTROLADOR Los Registros Intemos Acumuladores A., B yD

.
. . . __. . .. . . . ..

E1 Registro Indice (IX, IY) El Apuntador del Stack (SP) El Contador de Programa (PC) El Registro de Codigo de Condicion Otros Registros Internos Modos de Direccionamiento Resets e Interrupciones __ __

I-I

INDICE

PAGINA Interrupciones de Tiempo Real Interfase Serie Banderas de Estatus e Interrupciones Las Banderas de Recepcion EL ADAPTADOR DE INTERFASE PERIFERICO (PIA) MC6821 Caracteristicas Generales. Seiiales de interfase del PIA. Controles Internos. CAPITULO 111.-SOFTWARE LECTURA DEL TECLADO .. EL DISPLAY... LA IMPRESORA ANEXO A.- RUTINAS DEL PROGRAMA DEL MC68HCll ANEXO B.- SET DE INSTRUCCIONES DEL MC68HCl1 ANEXO C.- TRABAJOS FUTUROS ANEXO D- BmLlOGRAFIA ".... 2-30 2- 34 2-43 2-43 2-44 2-45 2-46 2-48 3-1 3-3 3-5 3-7 A-I B-1 C-l D-1

INDICE DE FIGURAS
Figura No. 1.1: Reloj Checador Electromecanico Figura No. 1.2:Tablero y Tarjetas que se Utilizan para Cheear Figura No. 1.3: Diagrama a Bloques que Muestra el Reloj Checador Figura No. 1.4: Flujo de la Informacion de la Microcomputadora Dispositivo y Visceversa Figura No. 1.5: Display de 80 Caracteres en Dos Lineas Figura No. 1.6: Menu principal del Subsistema de Consulta Figura No. 1.7: Menu para Modifiear la Hora
0

PAGINA
1-2 1-3 1-4

a1
1-6 1-7 1-7 1-8 1-8 1-8 2-1 2-2 2-2 2-2

.,..................

la Pecha

Figura No. 1.8: Menu de las Opciones de Consultar Figura No. 1.9: Reportes Obtenidos del IIMenu Consultar" Figura No. 2.1: Diagrama a Bloques del Sistema Control de Personal Figura No. 2.2: Conexion del Oscilador de 4.194303 al MC6gHC11 .. Figura No. 2.3: Circuito de Reset del MC68CH11 Figura No. 2.4: Conexion del Teclado con el Microprocesador ..

1-2

INDICE

INDICE DE FIGURAS
Figura No. 2.5: MAX232 que Permite Transformar el Nivel TTL a RS232. Figura No. 2.6: Conformacion del Bus de Datos y el Bus de Direcciones Figura No. 2.1: Decodificacion de los Bloques de Memoria Figura No. 2.8: Conexion del Display en la Direccion $DOOOa $DFFF. Figura No. 2.9: Direccionamiento de la Ram del Sistema de Control del Puerto de la Impresora Impresora Figura No. 2.12: Diagrama de Tiempos de Inicializacion de la Impresora Figura No. 2.13: Configuracion del PIA para Transformarlo Centronics Figura No. 2.14: Conexion de la Interfase Serie RS-232C Figura No. 2.15: Transmisi6n de Datos Serie Sincrono Figura No. 2.16: Transmision de Datos Serle Asincrono Figura No. 2.18: Pines del MC68HCl1 Figura No.2.19: Conexi6n del Reset Manual Figura No. 2.20: Conexion de las Entradas a Interrupcion Registro D Figura No. 2.22: Configuracion del Registro de C6digo de Condicion Figura No. 2.23: Representacion Grafica del Mapeo de Memoria Figura No. 2.24: Diagrama a bloques del sistema de Timer Figura No. 2.25: Representacion del TMSK.2 Figura No. 2.26: Representacion del TFLG2 Figura No. 2.27: Representaci6n de los bits del PACTL Figura No. 2.28: Acumulador de Pulsos Figura No. 2.29: Registros de Datos de Comunicacion Serle (SCDR) Serle Figura No. 2.31: Diagrarna a Bloques MC68HC11 del Transmisor Figura No. 2.30: Representacion del Registro de Datos de Comunicaci6n .. del SCI del . . . . . , Figura No. 2.11: Diagrama a Bloques del Microcontrolador MC68HC11 . . . . . . . . en Puerto Figura No. 2.10: Conexi6n Entre el Puerto A del PIA MC6821 Y los Pines . .

PAGINA
2-3 2-4 2-4 2-5 2-5 2-6 2-7 2-8 2-8 2-10 2-10 2-11

Figura No. 2.11: Diagrama de Tiempos de la entrada de Datos a la

. 2-12 . 2-13 . .
.

2-14 2-14 2-17 2-18 2-25 2-30

Figura No. 2.21: Representacion del Registro A y B donde A v B es el . .

. 2-30 2-32 2-33 2-34 2-35 2-36 2-36

1-3

INDICE

INDICE DE FIGURAS
Figura No. 2.32: Diagrama a Bloques del Receptor del SCI del MC68HCll Figura No. 2.33: Representacion del Registro de Control Serie del SCI Figura No. 2.34: Representacion del Registro de Control 2 del SCI Figura No. 2.35: Representacion del Registro de Estatus de Comunicacion Serie Figura No. 2.36: Representacion del Registro BAUD Figura No. 2.37: Estructura Fisica del MC6821 __ ,__ "'... __

PAGINA
2-37 2-38 2-38 2-40 2-42 2-47 2-50 3-8

Figura No. 2.38: Diagrama a Bloques de la Estructura Intema del MC6821. Figura No. 3.1: Representaci6n del Registro TMSK2 del Timer ........ __ ''''''''

INDICE DE TABUS
Tabla No. 2.1: Configuraci6n Centronics de la Impresora Tabla No. 2.2: Lineas de la Interfase RS-232C Tabla No. 2.3: Configuracion del Microcontrolador MC68HCl1 Tabla No. 2.4: Distribuci6n del Mapeo de Memoria del MC68HCll Tabla No. 2.5: Block de 64 Registros Internos del MC6811HCl1 Tabla No. 2.6: Direcciones del Vector de interrupcion Tabla No. 2.7: Rangos de RTI Tabla No. 2.8: EI Preescalar del Timer __ __ Tabla No. 2.9: Control de la Onda del Pulso Acumulador Tabla No. 2.10 Seleccion del Preescalar del Baud Rate Tabla No. 2.11: Seleccion de Baud Rate Tabla No. 2.12: Direcciones Intemas del MC6821 Tabla No. 3.1: Lectura del Teclado Tabla No. 3.2: Comandos de Funcionamiento del Display __ __

PAGINA
2-7 2-9 2-13 2-15 2-20 2-24 2-30 2-31 2-33 2-41 2-43 2-49 3-4 3-5

1-4

INDICE

INDICE DE DIAGRAMAS DE FLUJO


Diagrama de Flujo No. 1.1: Acci6n de Checar Entrada
0

PAGINA
Salida y 1-1 1-5 2-44 2-26 2-28 3-1 3-2 3-3 3-4 3-6 3-6 3-7 3-8

Manipulaci6n de Datos.............. Diagrama de Flujo No. 1.2: del Funcionamiento del Re10j Checador Diagrama No. 2.3: Diagrama de Flujo que Muestra e1 Origen de las Interrupciones del SCI Diagrama de Flujo No. 2.1: Prioridades del Reset Diagrama de Flujo No. 2.2: Prioridad de las Interrupciones Diagrama de Flujo No. 3.1: Interaccion con la Llave Supervisora Diagrama de Flujo No. 3.2: Rutinas del Subsistema Normal (EO) Diagrama de Flujo No. 3.3: Rutinas del Subsistema de Consulta (EI) Diagrama de Flujo No. 3.4: Rutina de Lectura de Tec1ado Diagrama de Flujo No. 3.5: Inicializaci6n del Display Diagrama de Flujo No. 3.6: Rutina que Despliega la Informacion Contenida en el Buffer al Display................................................................................. Diagrama de Flujo NO.3. 7: Rutina que Imprime la Infonnaci6n Contenida en el Buffer de la Impresora Diagrama de Flujo No. 3.8: Rutina de la Interrupcion de Tiempo

INDICE DE RUTINAS
CONFIGURACION DE PUERTOS Y DISPLAY PROGRAMA PRINCIPAL FEC_PON_RAM: LAS 00:00:00 El: RUTINA QUE ENTRA A LA MODALIDAD E1 EN RAM El_MENUl: RtITINA QUE COLOCA EN EL DISPLAY EL MENUl ACTUALIZA PONE LA FECHA EN LA RMIJ. DE DATOS CADA QUE SEAN

PAGINA A-3
A-3
A-4 A- 4 A-5

CO _FYB _Dl: COLOCA FECHA Y HORA EN DISPLAY, ADEMAS FECHA Y HORA FEC_RYD: RUTINA QUE LEE EL TECLADO Y COWCA

A-6 EN LA RAM 20. A-7 EN EL DISPLAY Y LAS A- 7

RENGLON LA FECHA Y LA ACTUALIZA .. LEE_2T: LEE DOS TECLAS LAS COLOCA

TRANSFOR1v1A A BCD EN UN BYTE

1-5

INDICE

INDICE DE RUTINAS
HOR_RYD: COLOCA EN EL 20. RENGLON LA NUEVA HORA Y LA ACTUALIZA EN LA RAM DE HORA .. MENU2_El: RUTINA QUE SELECCIONA VER RAM UTIL, IMPRIME NOMBRES

PAGINA
A8

o IlvIPRil'vlEDATOS.....
VE_RAM_D: DISPLAY PRN DAT: IlvIPRIME DATOS DE LA RAM DE DATOS BYTE_A_2ASC: LEE UN BYrE Y LO TRANSFORMA EN CUENTA LA RAM DE DATOS DISPONIBLE Y LA COLOCA EN EL

A- 8

A-I0
A-l1

xscn

COLOCANDOLO A -12

EN EL BUFFER DE LA I..l\1PRESORA Y LO I..l\1PRIME VER_DIAG: VERIFICA EN LA RAM DE DATOS SI LA POSICION ES "/" DE SER

ASI, ]]v[PRIME FECIiA. . CABEZAl_PRN: RAMDE DATOS IMP _ CABEZA: RAM DE DATOS IMP_lCABEZA: IMPRIME PARTE DEL ENCABEZADO DE REPORTE DE IMPRIME EL ENCABEZADO DE REPORTE DE NOMBRES DE LA

A - 13 DE REPORTE DE DATOS DE LA A-13

IMPRIME EL ENCABEZADO

A-14

NOMBRES DE LA RAM DE DATOS IMP_2CAB EZA: IMPRIME PARTE DEL ENCABEZADO DE REPORTE DE

A-14

NOMBRES DE LA RAM DE DATOS IMP _eLA VE: IMPRIME LA CLAVE EN EL REPORTE DE NOMBRES DE LA RAM DEDATOS EO: RUTlNA QUE ENTRA A LA MODALIDAD EO EN RAM .. TECLADO: RAM COL_BL_DlS: DEL DISPLAY GUARDA_DATOS: BUSCA GUARDAHORA, MlNUTOS, Y CLAVE DEL EMPLEADO DE LA CLAVE GUARDADA EN LA COLOCA BLANCOS EN EL SEGUNDO RENGLON DEL BUFFER LEE LA TECLA, LA ROTA, LA DESPLIEGA Y LA ALMACENA EN

A-15

A-16 A -16

A-16

A-18 A-18

CVE: VERlFICA LA EXISTENCIA CVE_l Y CVE_2 EL MENSAJE

RAMDENOMINADA
B_MSJE_DlS:

A-IS
EN EL

COLOCA

BUFFER

DEL

DISPLAY A -19

INICIANDO EN IX Y FlNALIZA CON ESPERA_TECLA: TECLA SIGUIENl'E

VERIFICA EL TIEMPO DE ESPERA PARA QUE TECLEE LA A- 20

1-6

INDICE

lNDICE DE RUTINAS
FYB_B_PRN:

PAGINA
A - 20 A-21 A- 22 A- 22

COLOCA EN EL BUFFER DEL DISPLAY EN EL RENGLON I LA LEE LA lECLAOPRIMIDA

FECHA Y LA HORA EN LOS EXTREMOS


LEE_TECLA: DISP _ TECLA: DESPLIEGA LA TECLA EN LA POS. DEL DISPLAY....... CONF _DIS: CONFIGURA EL DISPLAY... ESPERA Y: CICLO DE ESPERA BORRA_DIS:

'"

A- 23 A-23
A-23 A-24

BORRAEL DISPLAY COLOCA CARAClER EN EL BUFFER DONDE SE INDICA


IMPRIME EL BUFFER DE LA IMPRESORA

COL_CAR_BU: IMP_BU_PRN: CHECA_PRN: COLOKA_PRN:

VERIFICA SI EXISTE IMPRESORA, 0 TIENE ALGUN ERROR COLOCA EL CARACTER EN LA IMPRESORA EJECUTANDO

A - 24 A- 24
A- 25 A- 25

LOS COMANDOS DE CONTROL CORRESPONDIENTES


reloj: INTERRUPCION DE TIEl\tIPO PONE_FYH:

,..........

COLOCA EN LA :MEMORIA FECRA Y HORA COLOCA FECHA Y HORA EN EL BUFFER DEL DlSPLAY

CHECA_BI: VERlFICA SI EL MES ES FEB Y SI EL ANO ES BISCIESTO RAMFYH_COL: RCOLOCA:

A- 2 6
A-27

HACE UN AND CON B TOMA EL VALOR CORRESPONDIENTE Y


A - 28 A - 28 A-29

LO COLOCA EN EL BUFFER DEL DISPLAy....... DISP _PRN: COLOCA LA FECHA Y LA HORA EN EL DISPLAY. CHAR,_ COL: COLOCA EL CARACTER QUE VIENE EN EL REGISTRO A

1-7

CAPITULO I
GENERALIDADES
EI tiempo, resultado de la actividad de nuestro universo, se ha tratado de rnedir de diferentes maneras; can relojes de sol, arena, agua, mecanicos, electricos y electronicos entre los mas sobresalientes; en la actualidad cumplen importantes funciones, una de ellas es la de medir la duracion de la jomada de trabajo. Dada la importancia de la fuerza de trabajo; en las empresas se ha hecho necesario medir Laduracion de cada tumo, horas trabajadas y horas extras. Par 10 eual se ha disefiado un dispositivo con caracteristicas especiales, las que en paginas posteriores se enurnerara,

SELECCIONA Y TOMA 3U TARJETA

LA POSICIONA EN EL DlA, TIJRNO Y FECHA

EJECUT A LA ACCION CHECAR

DE

REGRESALA TARJETAAL CASILLERO

SE CAPTURAN

LAS TARJET AS

SE VACIA LA INFORMACION EN FORMATOS ESPECIALES

SE PROCESA LA INFORMACION

Diagrama de FlujoNo. 1.1: Accion de Checar Entrada Datos.

Salida y Manipulacinn

de

1-1

CAPITULO!

GENERALIDADES

Existe un reloj checador aun muy utilizado, el reloj electromecanico; el cual es economico y deja constancia de la accion del empleado "el checar" su entrada de su tumo
0 0

su salida

sus horas extras; el sistema se divide en el dispositivo (reloj checador),

Figura No. 1.1; las tarjetas donde se cheea, los anaqueles donde se depositan las tarjetas, Figura No. 1.2 y las concentrados donde se vacian los datos capturados en las tarjetas y diversas formas de manipular dichos datos; el Diagrarna de Flujo No. 1.1 muestra la secuencia que sigue esta accion, Esta forma de control de entrada salida tiene Ia desventaja de ser problematica por el numero de repeticiones que presenta en la captura de la informacion propensa a errores; ademas el trabajador por descuido
0

pOT 10 que es

rapidez al checar empalma las

checadas, y otros errores de tipo involuntario de acuerdo al tipo de reloj que se use. Actualmente existen en el mercado algunos modelos de relojes checadores

electr6nicos bastante econ6micos con el solo requisite de tener una cornputadora, cosa muy comun actualrnente; el modelo que presento contiene algunas caracteristicas que no poseen los existentes en el mercado.

Figura No. 1.1: Reloj Checador Electromecanice,

1-2

CAPITULO I

GENERA LIDA DES

Figura No. 1.2:Tablero y Tarjetas que se Utilizan para Checar.

DESCRIPCION
EI reioj checador electronico se basa en el microcontrolador de motorola

MC68HC 11, el cual esta configurado en modo expandido, los detalles se mencionaran en el capitulo de Hardware. Este dispositivo tiene Jas siguientes caracteristicas. • • • • • • • • Capacidad para 500 trabajadores (*). Cuenta con respaldo de baterias (*). Puntos de alarma periodicos
0

fijos a 23 59 59 (").

Salida para conectar tableros de digitos de 7 segment os Muestra de tiernpo de 000000 Entrada para c6digo de barras Salida a impresora de tipo centronics del dato checado (*) Muestra de la temperatura ambiente en Grados Celsius.

1-3

CAPITULO!
• • • • • • • Entrada Reporte Reporte de datos via teclado (*). de Memoria disponible en nurnero de caracteres a impresora de la informacion capturada (*). via puerto serie (*). encendida (*). (*).

Gh7VERALIDADES

Entrada de datos por computadora No es necesario Espacio Modulo (*). La figura No. 3 muestra en 22 caracteres en memoria para trasladar

tener la computadora

para entrada de datos via puerto serie del nombre del trabajador datos a computadoras que no estan al alcance del dispositivo

(ASCII) y 2 para su clave (BCD) (*).

el diagrama

a bloques

de la estructura

general

de este

dispositivo.
Tablero de Potencia

~;--;:-;-:::::::::::::~~J-I(
IMPRESORA -.......

TECLADO

L..:MUL~.=.:T.::IE=NT...:..:.::RAD:.::.:=-A~~__ Lectora de C6digo


de Barras Sensor de Temperatura

Figura No. 1.3: Diagrama a Bloques que Muestra el Reloj Checador .


EI mapeo del rnicroprocesador nombres y 16 kb para ram de datos. La ram de nombres contendrit 1a informacion 2 bytes 22 bytes internacionales, como el ASCII es decir manejando un codigo del trabajador distribuida de la sera como 10 indica la Tabla No.3, los primeros 32

kb seran de RAM y el resto de puertos; LaRAM se divide en dos partes 16 kb para ram de

siguiente manera:
No. de Empleado Nombre Usando suficientemente impresora, las nonnas

10

comun y compatible

con los elementos

que interactuan (reloj checador,

computadora)

(American Standard Code for Information

1-4

CAPITULO I

GENERAL/DADES

Interchange); podremos colocar en 16 Kb de RAM la clave y el nombre de 24 bytes de 682 empleados, de los cuales solo pensaremos en 500 empleados quedando 4,384 bytes que se reservaran para otros usos. EL funcionamiento principal del dispositivo sent como to muestra el Diagrama de Flujo No. l.2.

Lee la Clave en 4 digitos

La Busca en la Ram de Nombres

Retardo

EnviaError

Diagrama

de Flujo No. 1.2: del Funcionamiento

del Reloj Checador

La informacion se acumulara en una RAM estatica de 16 Kb donde cada 00:00:00 Horas colocara en la Ram la fecha correspondiente en el siguiente formato Idd mm aa (I identificador de fecha, dia, mes y ano) en cada checada colocara hh mm (horas y minutes), a continuaci6n se guardara la clave del empleado (cc cc) donde 10 siguiente nos mostrara como quedara en la RAM; donde "I" es igual a un byte, "dd" un byte, "mm" un byte, "aa" un byte de igual forma la clave y la hora. Iddmmaahhmmcccc ...hhmmcccc ..... .lddmmaahhnuncccchhmmcccc .... Obtenemos que par cada checada tenemos (hhmmcccc) 4 bytes (hh,mm,cc,cc) y agregamos en cada dia 4 bytes de fecha, par 10 que suponiendo que un empleado checara dos veces entrada y dos veces salida en un rnisrno dia, se tendrian 16 bytes de checada par 10 que 500 trabajadores checando 4 veces diarias, ocuparian aproximadamente 8 Kb + 4 bytes de fecha, nos quedaran un poco

mas de 8 Kb para

checadas de horas extras y otros

1-5

CAPITULOl

GENERAlJDADES

eventos no considerados; como recuperar la informacion despues de iniciar el primer tumo del siguiente dia e incluso de dos dias consecutivos. De las c1aves y nombres llegaran al dispositive via puerto serie de la computadora
y

generados mediante una base cornputacional,

de total responsabilidad

del usuario,

[soLarnente se desarrollara Lascaracteristicas mostradas con asterisco (*)] de igual forma los datos capturados por el dispositivo seran transferidos similarmente a como fueron

recibidos, es decir por el puerto serie

presentados en un archivo en la computadora para

poder ser manipulados y procesados por el sistema que hago referencia; pero teniendolo, en forma interactiva, como 10 indica la Figura No. 1 A.

PC

Rx

Tx

DATOS

Figura No. 1.4: Flujo de la Informacion de la Microcomputadora Visceversa.

al Dispositivo y

Los clave del empleado sent digitada par este en cada ocasi6n que necesite cheear su entrada a salida, es obvio que a1 conectarse la lectora de codigo de barras este procedimiento se sustituira; el tec1ado se conectara al puerto A del microcontrolador MC68HC 11; al digitar el empleado su clave esta sent verificada en la base de datos almacenada en la ram de nombres y de localizarse, guardara la hora en el preciso momento de que digito la primer tecla, ademas se imprimira opcionalmente estos datos con el formato siguiente:

hh:mm

ddJmmlaa

CCCC NOMBRE DEL TRABAJADOR

1-6

CAPITULO I

GENERALIDADES

Donde hhmm es el formate de horas y minutos, ddlmrnlaa es dia/mes/afio, la clave es representada por

eccc

y el nornbre del trabajador en 22 caracteres como se encuentra

en la ram de nombres. EI sistema sera total mente interactivo con tres subsistemas denominados operacion normal, de consulta y de comunieacion; estos subsistemas seran controlados mediante una Have tipo de caja registradora denominada de supervision, para operar los tres modos; el primer subsistema de operacion normal se refiere a1 modo en que el trabajador tiene acceso al sistema mediante un menu que se rnostrara en un display de cristal liquido de 2 lineas y 40 caracteres por linea, mostrado en la Figura No. 1.5. dd/mrnlaa SEP DGIT ITCV hh:mrn:ss --- teclee su clave --en Dos Lineas
0

Figura No. 1.5: Display de 80 Caracteres

EI trabajador al teclear su clave aparecera su nombre en 20 caracteres confirm arlo oprimiendo la teela de enter
0

el mensaje

esta clave no existe, para dar de alta en la RAM de datos su checada necesitara en su defecto si hay un error, la de escape inmediatamente al teclear enter se guardara la hora de checada y la clave como se indico anteriormente y se imprimira en la impresora, si es que esta existe, al implementar la lectora de c6digo de barras se evitara la acci6n de teclear. Para eI subsistema de consulta contara con el menu de la Figura No. 1.6 en el cual se muestra la fecha y la hora en los extremos de la primer linea ademas las opciones (1) Poner a Tiempo y (2) Consultar.

r=

(l) Poner a Tiempo < (2) Consnltar

=
0

Figura No. 1.6: Menu principal del Subsistema de Consulta. Seleccionando 1 6 2 el cursor

«)

brincara de una linea a otra y con un enter la hora,

seleccionara la opcion deseada; de ser Poner a Tiempo, rnostrara el menu de la Figura No.
1.7 , estas nuevas opciones son para modificar la fecha

1-7

CAPITULO]
01101/95
<1 <=Tedee=> 2>

GENERALIDADES
08:00:35
HH:MM:SS

DDIMMlAA < Cambia Ia fecha

Figura No. 1.7: Menu para Modificar la Bora

la Fecha.

Para salir de cualquier opcion basta con presionar la tec1a de escape y se ira al menu principal. 01101195
Imprimir: VER:(l)R:amUtii
2.(2)Nombres <

08:00:35
2.(3) Datos

Figura No. 1.8: Menu de las Opciones de Consultar, Si se selecciona el (2) Consultar, del menu principal se mostrara el menu de la
como

Figura No. 1.8 el cual contiene tres opciones: VER: (1) Ram V til , la cual mostrara la cantidad de bytes disponibles enunciandolos Imprimir: caracteres, para que el usuario la informacion; determine el espacio de tiempo que puede mantener sin respaldar

2.(2) Nombres, esta opcion imprime el contenido de la base de datos que tiene

almacenada el dispositive; e Imprimir: 2.(3) Datos, Imprime los claves y la hora en que el usuario ha checado, como 10 indica la Figura No. 1.9.
SEP SEIT DEGIT ITeV PERSONAL DADO DE ALTA
08:51 03/0Ll95

SEP SElT DEGlT ITeV PERSONAL QUE HA CHECADO


08:51 03/01/95

eVE. NOMBRE
0101 TOMAS GARZA WONG 0102 FCO RODZ. PRADO

CVE. HORA

*************************
02/01195

0103 GASPAR NOLASCO ANTONIO

*************************
0101 07:25 0102 19:45

A) Reporte del contenido de la RAM de Nombres

B) Reporte del contenido de la

RAM de Datos

Figura No. 1.9: Reportes Obtenidos de el Menii Consultar.

1-8

CAPI1VLOI

GENERALIDADES

Los datos se manipularan en la computadora inicialmente, con una base de datos ya indexada por clave, de menor a mayor de tal forma que generaran un archivo con clave de cuatro digitos y presentados en BCD, ocupando esta dos bytes y el nombre en 22 caracteres, completando 16 Kb con el hexadecimal $FF; este formato es importante, ya que el sistema en el dispositivo buscara la clave en funcion de este indice, ahorrandose tiempo en la busqueda, este archivo sera enviado a traves del puerto serie y almacenado en la Ram para nombres, de manera similar pero en sentido contrario el dispositive enviara via puerto serie a la cornputadora, los datos almacenados en la ram de datos conteniendo Iddmrnaacccchhmm... donde "I" es el identificador de fecha en un byte, dd un byte en BCD de dia , igual para mes y afio; dos bytes de clave y dos bytes entre horas y minutos tambien en BCD. AI ir transfiriendo la informacion complernentara can el hexadecimal $FF el byte enviado; el manipuleo de la informaci6n sera responsabiJidad del usuario, as) como el nombre que se Ie dara a este archivo La medici6n del tiempo se implernento por medio de una interrupcion generando un pulso de reloj cada centesima de segundo; guardadas en registros especiales de segundos, minutos, horas, dias, meses y afios; par medio de una tabla se consulta e1 numero de dias que contiene el mes correspondiente; y mediante una operaci6n sencilla se determina si el ana es un multiple de cuatro para saber si es bisciesto; las horas son de 00:00:00 a 23:59:59 es decir en formato de 24 horas; esto implica que la selecci6n del cristal que complementara el disefio debe ser seleccionado de tal forma que no complique la irnplementacion de la interrupcion, una forma sencilla es encontrar un potencia de 2 que nos permita hacer csto de tal forma que
222

nos da una frecuencia que nos da divisiones

exactas, la cual es de 4,194,304 Hz la cual can un minimo de ajuste podremos lograr que el tiempo sefialado en horas , minutos y segundos sea 10 suficientemente exacto.

1-9

CAPITULO 2
HARDWARE
El sistema de reloj checador esta basado en el microcontrolador MC68HCII de motorola

en modo expandido como 10 muestra el diagrama a cuadros de la Figura No.

2.1, cuenta con el circuito 74LS373 para demultiplexar los datos de las direcciones , una memoria de 32 kb dividida en dos bloques, dos PIAs MC682I para ampliacion de puertos, para impresora y otras E/S un bloque para el division del mapa de memoria e interfases para el display de cristalliquido y puerto serie.

PC

DATOS

Figura No. 2.1: Diagrama a Bloques del Sistema Control de Personal.

DE LA CONEXION

DEL MICROCONTROLADOR.

Primeramente hablaremos de la base fundamental del sistema denominado Reloj de control de Personal, que es el microcontrolador intemos, puerto serie y entradas analogicas: El microcontrolador MC68HC 11 que contiene un microprocesador de 8 bits que se impLement6 con un cristal de 4.194304 Mhz que es la parte fundamental del reloj cuyo bus trabaja a un cuarto de esta frecuencia. La representaci6n grafica se muestra en 1a Figura No. 2.2 cuya conexi6n se hizo tal como 10 recomienda el fabricante con una resistencia R=10 MO. y los capacitores C=27 Pf MC68HCII, este es un integrado que contiene ademas de un rnicroprocesador de 8 bits, puertos de entrada salida, Ram y Rom

2-1

CAPITULO II

HARDWARE

EI reset para el MC68HC 11 es la implementacion mas simple la cual contiene una resistencia de 1 KQ conectada a Vee y un switch que conecta a tierra, como se indica en Ia Figura No. 23. MC68HCll
r----r--"'T""'"'i

XT AL

C I.

Figura No. 2.2: Conexion del Oscilador de 4.194303 aI MC68HCll.

Vee
MC68HCII RESET

R
~

Figura No. 2.3: Circuito de Reset del MC68CHll. ELTECLADO Los dispositivos que se conectaran directamente

aI microprocesador

con un

minima de interfase seran el teclado, la Have de modo, el display, la Ram, el Puerto Serie y el sensor de temperatura. En la Figura No. 2.4 se muestra Ia coneccion del teclado en el puerto A del microcontrolador Vee

o .J
Vee Figura No. 2.4: Conexjon del Teclado con el Microprocesador.

2-2

CAPITULO II

HARDWARE

Las "V" del teclado se conectaran a los bits del microcontrolador una resistencia

1\0..2 las cuales

son entradas naturales

"X" se conectaran a los bits A3 ..6 y a vee por medio de de 4.7 KQ las cuales son salidas naturales del puerto A del

y la entrada

microcontrolador; esto con el proposito de enviar ceros par las salidas y monitorearlos por las entradas al cerrar el circuito por medio de tecla oprimida. EL PUERTO SERIE Se selecciono el puerto Serie Asincrono por ser compatible con el puerto serie de la computadora y para usar la misma fuente de voltaje del microcontrolador para implementar los voltajes que necesita el puerto (+12 y -12 Vcd) por medio de un Maxi MAX232, circuito integrado que permite entradas de 5 Vcd y salidas de ±12 Vcd, como se muestra en la Figura No. 2.5~ ademas cumple con las especificaciones de la EIA y la recomendaci6n V.28 de CCITT las cuales indican que pueden ser utilizados para las diferentes velocidades estandares de 300, 600, 1200, etc baudios; el maximo recomendado es de 19,200 baudios.
Vee

lOJ1f

SALIDAS TI1JCMOS

Figura No. 2.5: MAX232 que Pennite Transfonnar DEMUL TIPLEXANDO Como los datos DATOS DE DIRECCIONES estan multiplexados

el Nivel TTL a RS232.

con las direcciones

bajas,

estas se
AS que

demultiplexan por medio del circuito 74LS373 y la serial del microcontrolador conformando asi el bus de datos y el bus de direcciones.

proviene del pin 26 en el DIP de 48 pines, como 10 muestra la Figura No. 2.6.

2-3

CAPITULO II
Hell
PuertoC

HARDWARE
BUS DE DATOS

... ...

00 ..7

74LS373

AS Puerto B

..7

Direcciones A 8..15

Figura No. 2.6: Conformacnm del Bus de Datos y el Bus de Direcciooes. EL MAPEO DE MEMORIA EI mapeo de memoria se Iogra mediante el decodificador de 3 a 8 numero 74LS 138 donde intervienen las direcciones de la A 15..12 Y la seital E invertida que da la sincronia formando un mapeo de bloques de 4 Kb en la parte alta; como 10 indica la Figura No. 2.7, se aprovecha que la prirnera mitad del mapa de memoria la ocupa la Ram del sistema y esta la determina Al5 en bajo, por 10 tanto cuando A15 es alto se encuentra en la segunda mitad del mapa y, esto se aprovecha para habilitar G 1 del decoder y como G2A+G2B necesitan estar en bajo invertimos la serial E para tener la sincronia necesaria en la disposicion de los 8 bloques en que se divide esta parte del mapa de memoria.

.. :

74LS138 A

Yo.,

:. c
B

.. .. .. G2B Gl G2A

·-

Y7

·..
-

Figura No. 2.7: Decodificaclen EL DISPLAY

de los Bloques de Memoria.

EI display que contiene diferentes caracteristicas de las cuales se usara la interfase de 8 bits sin el uso de la bandera "busy Flag", quedando como 10 muestra la Figura No 2.8. Algunas de las caracteristicas de este diplay se mencionan a continuacion: • Es display es HD44780 microprocesador. capaz de interfasear con 4 bit u 8 bits con un


• • •

Display RAM de datos de 80 x 8 bits. ROM generador de caracteres de Sx7 y 5xlO dots. Caracteres de la RAM pueden ser leidos por el microprocesador. Reset interno autornatico al activar la fuente de alimentacion.

24

CAPITULO II

HARDWARE

EI mapeo de memoria esta indicado en la Tabla No. 2.4, de aqui encontramos que la direccion reservada para el display es $0000 a la $OFFF aunque s610 dos direcciones se utilizan, el resto es espejo de la misma. El display de cristal liquido de 2 lineas por 40 columnas esta conectado directamente al bus par media de Y 5> E,

1\0,

R / w Y los datos.

E RS

DISPLAY RIW DATOS

AO
BUS DE DATOS Figura No. 2.8: Conexion del Display en la Direccien $DOOOa $DFFF. Como el display necesita en RS=O para escribir el codigo de instrucci6n y RS= 1 para escribir datos, cualquier par de direcciones que terminen en 0 6 1 dentro de $DOOO a $DFFF serviran para direccionar este display, he seleccionado las dos primeras direcciones para manipularlo, como se indica en el capitulo de Software.

LA RAM DEL SISTEMA


La RAM del sistema es un Circuito de Ram Estatica de 32 Kb en un solo integrado, dandonos modularidad y facilitando su direccionamiento como se indica en la Figura No. 2.9, esta RAM tiene velocidad de acceso entre 100 y 120 nseg 10 cual permite un acceso 10 suficientemente veloz para no entorpecer otras funciones del sistema; el circuito en mencion es el D43256A, circuito integrado de 28 pines. BUS DE ... ~ DATOS • D43256A
r

BUS DE DIRECC IONES


AI5

RAM

DE

E Rlw

WE
de la Ram del Sistema.

CE

Figura No. 2.9: Direccionamiento

2-5

CAPITULO II

HARDWARE

Esta RAM es de las denominadas RAM estatica (SRAM) por 10 que no necesita la accion de refresco hacienda mas simple el disefio, y tambien por no necesitar mayores volumenes de memoria; su direccionamiento es muy sencillo; par encontrarse totalmente localizada en la primera mitad del mapa es decir cuando A15 es baja, aprovecho esta situaci6n para conectarla a DE y negando la sefial E del microcontrolador para arnarrarla a CE y finalmente amarrar R I W del microcontrolador

a write enable (WE) con esto

garantizo lectura y escritura de Lasdirecciones $0000 a $7FFF. 1,A IMPRESORA La impresora dispositivo cuya interfase de comunicacion tipo centronics consta de 16 lineas de las cuales 8 son datos y 8 son de control, de estos ultimos entran a la impresora 3 bits y salen 5; la interfase para conectar esta es por medio de un Adaptador de Interfase Periferico (PIA) MC6821, de motorola que consta de dos puertos A y B; el Puerto A 10 use de control y el B de datos de tal forma que A es de entrada salida y B s6lo de salida; las seiiales implementadas fueron simi I ares a las que manejan en sus interrupciones el BIOS las pes y se describen en la Figura No.2. 10.

BUSY

ACK

I
I

PE

SLC

ERROR

INIT

ALF

STROBE

Registro A

t t II
11
1

I
15
I

J,
16

J,
1

10

12 13
1

14

Pines del Puerto DB25

Figura No. 2.10: Conexlon Entre el Puerto A del PIA MC6821 Y los Pines de Control del Puerto de la Impresora. Las sefiales que marea el estandar para cualquier impresora con conexi6n tipo Centronics se describe en la Tabla No.2. 1, las seriales que se activan en bajo asi estan sefialadas. Los tiempos de las seiiales se muestran en la Figura No. 2.11 y 2.12; cabe mencionar que son tiempos aproximados para cualquier impresora de tipo centronics, por

10 que el dispositivo se sincroniza por medio del software.

2-6

CAPITULO II
Pin 2 3 4 5
6

HARDWARE
Sefial E/S E E E E E E E E E S S S E Pin 19 TIERRA 20
21 22

Selial TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA TIERRA
--

E/S

1 STROBE DATO 1 DAT02 DAT03 DAT04 DATOS DAT06 DAT07

23 24 25 26 27
28 29

7 8 10 12 14

9 DAT08

--

ACK SINPAPEL
-

11 BUSY 13 ALTO ALF 15 N.C. 16 TIERRA 17 TIERRA DE CRASIS 18 N.C.

30
31

OOT
ERROR TIERRA N.C. N.C.

E S

32 33 34 36

35 N.C.

Tabla No. 2.1: Conflguraciou

Centronics de la Impresora.

STROBE
DATO
1-8

min 1 s-JI ,

-!- -lI

I -if- -.~-.-~
ir ;
."..
I ,

1-50 S
--'

min 1 s

BUSY

__ -It-': ~ max 0.5 s

ACK

Aprox, 5 s - ~ ,

U
--it-, 2-7

Figura No. 2.11: Diagrama de Tiempos de la entrada de Datos a la Impresora.

CAPITULO II

HARDWARE

BUSY ACK
5).1S

--_----·L
--~

Figura No. 2.12: Diagrama de Tiempos de Inicialiaacien Del direccionamiento, he seleccionado


las

de la Impresora. direcciones de las

$CCOO..$CFFF con el arreglo que se muestra en la Figura No. 2.13, donde la seleccion se hizo de All' .Ao: l lxx xxxx xxxx , como el decoder da una sefial negada, tomando las 4 sefiales mas altas; el PIA necesita tres Chips Selects (CSo, CS] ,CS2) del decoder tomarnos uno, Y4, que es enviado

at CS2

y de los bloques subsecuentes (de 4 bits) tomamos los de

mayor peso es decir ALO y All para la seleccion en alto. All AIO CSI CS2 6821 Figura No. 2.13: Configuracion 81---Puerto de Datos A Puerto de Control

del PIA para Transformarlo

en Puerto Centronics.

ESTANDAR DE LAS COMUNICACIONES

DE DATOS SERlE.

Muchos perifericos como terminales, impresoras, y modems son disefiados para transferir datos en forma ASCII (American Standard Code for Information Interchange), es muy comun esta forma de comunicacion cuando se requieren bajas velocidades y/o los dispositivos se encuentran en lugares lejanos. Existen dos estandares de mayor uso, el EIA RS-232C Y ellazo de corriente de 20 rnA, en esta ocasion s610 se determinara el estandar RS-232C que es el estandar utilizado en este trabajo.

2-8

CAPITULO II
Pin 1 2 3 4 5 6 7 8 9
10

HARDWARE
Descripcion
Tierra de proteccion Transmite Datos (Tx) Recibe Datos (Rx) Request to Send Clear to Send Data Set Ready Tierra de Seiial Received Line Si@al_ Detector Reservada

Reservada
No Asignada 2a. Line Signal Detector 2a. Clear to Send Transmite datos (Secundaria) Receiver Signal Element Timing (DeE source) Recibe datos (Secundaria) Receiver Signal Element Timing (DCE source) No asignada Request to Send (Secundario) Data Terminal Ready Signal Quality Detector Ring Indicador Data Signal Rate Selector (DTE/DCE Source) Transmit Signal Element Timing (DTE source) Nousada

11 12
13

14 15 16 17 18 19 20 21 22 23 24 25

Tabla No. 2.2: Lineas de la Interfase RS-232C. EL EST ANDAR EIA RS-232C Este estandar define la interfase entre tenninales de datos y equipo de cornunicaciones, empleando intercambio de datos serie binarios. El total de la interfase consiste de 25 Iineas de datos. como se muestra en la Tabla No. 2.2; muchas de estas lineas tienen una aplicaci6n muy especializada y la rnayoria de las terminates de computadora solamente necesitan de 3 a 5 lineas para operar, en el tema que nos ocupa se utilize la interfase de cornunicacion serie asincrona de acuerdo a la conexi6n mostrada en la Figura No. 2.14. COMUNICACION SINCRONA

Con la cornunicacion paralela es claro que en el borde de la onda del reloj se indica la transferencia de un byte completo, pero en la comunicaci6n serie cada pulso de reloj indica la transferencia de un unico bit. y es necesario un procedimiento para saber que bit

2-9

CAPITULO II

HARDWARE

del byte se ha transmitido. Un metodo comun es sincronizar la transmision y la recepcion de los registros de corrimiento como se indica en la figura No. 2.15. Computadora 2 3 7 2 3 7 Dispositivo

Figura No. 2.14: Conexi6n de la Interfase Serle RS-232C.

UK
Linea de Control d. Carga Y Crnruruenlo

Figura No. 2.15: Transmision

de Datos Serie Sincrono.

Lo practice de la comunicaci6n sincrona depende de la habilidad de mantenerse sincronizados los dispositivos de transmision y recepcion despues de ser sincronizados. La inicializacion de la transmision y recepcion generalmente van acompaftados de un caracter de identificaci6n. Cuando una transferencia serie sincrona inicia, el receptor es puesto en el primer bit de flujo en modo observador. EI primer caracter enviado por el registro trasmisor, es el caracter de identificacion, consiste de un patron predefinido conocido por el receptor. EI receptor reorganiza el caracter identificador en el cicIo de reloj que es totalmente puesto en eLregistro de corrimiento e inicia contado bytes de ocho bits desde este punto. La transmisi6n serie requiere de una senal de reloj adicional a las lineas de entrada salida de datos. COMUNICACION ASINCRONA. la misma

Esta forma de comunicaci6n no necesita la linea de reloj adicional. Esta forma de cornunicacion depende del hecho de que dos relojes de aproximadamente frecuencia se mantienen bastante bien sincronizados durante un corto periodo de tiempo.

2-10

CAPITULO!!

HARDWARE

Un trasmisor de datos asincrono envia un bit denominado de inicio, seguido de 8 bits de datos y uno
0

dos bits de parada. El receptor asincrono sincroniza su reloj con el

bit de inicio y los 8 bits de datos usando el reloj receptor como guia,

Un." de Control de Carga Y Commtento

Figura No. 2.16: Transmisien de Datos Serle Asincrono. EI bit de parada y el fin del flujo de datos son generalmente usados por el equip a receptor para calcular la desviaci6n del reloj y dar una lectura exacta de datos. La comunicacion serie necesita mucho mas circuitos de control que 1a Receiver comunicaci6n paralela., por 10 que existen dispositivos que nos permiten la transformaci6n de comunicacion paralela a serie como el UART (Universal Asynchronous Transmitter) el USR T (Universal synchronous Receiver Transmitter) y el ACIA

(Asynchronous Communication Interface Adapter). En nuestro caso el MC68HC 11 nos provee senates de Trasmision Recepcion en base a un UART interno. La transrnision de sefiales sera en forma full duplex par 10 que se requiere de dos cables uno transmite y otro reeibe ademas de el de tierra., esta conexion se hizo con cable, Figura No.2. 16; aunque existen otras medias como radiofrecuencia., fibra optica entre otros, este ultimo es digno de mencionarse ya que puede utilizarse para grandes distancias sin que la informacion se degenere; en la transrnision tambien se utiliza un bit de paridad adicional el cual puede ser par byte para serlo par
0 0

impar, este bit cornpletara el numero de unos total en el

impar segun sea el caso. MC68HCll del sistema es un microcontrolador de motorola el

EL MICROCONTROLADOR
La base fundamental

MC68HC 11, aqui se explicaran algunas generaLidades y se enfocara principal mente en las caracteristicas explotadas. Es un microcontrolador CMOS (HCMOS) de alta densidad que contiene en un solo integrado caracteristicas especiales como puertos de E/S, bus de hasta 2 Mhz, timer de 16 bits, Interfase serie periferica (SPD, Interfase de Cornunicacion Serie

2-11

CAPITULO II

HARDWARE

NRZ (SCI), Interrupciones de Tiempo Real, Ram, Rom y Eeprom internes y Convertidor AID de 8 bits, el diagrama a bloques se muestra en la figura No.2. 17.

MODAl
LlR

MOOBI
VSlaY

XTAt

EXTAl

.".,_. II t
L.-.-______.I ~

INTERRUPT LOGIC

ROM OR EPAOt.I ISEE TABLE]

0..

TIMER SYSTEM

M68HCII CPU

EEPROM (SEE TABLE]


flAM

(SEE TABLE] SERIAL COMMUNICAHON tNTEAFACE

sa

Figura No. 2.17: Diagrama a Bloques del Microcontrolador Este microcontrolador

MC68HClI.

(MCU) posee tres modos de operacion, modo de chip

simple, modo expandido multiplexado, modo bootstrap y modo de prueba; para estas configuraciones utiliza dos pines MODA (25) y MOOB (24) de acuerdo a la tabla No. 2.3.
EI modo simple es donde se explotan mas eficazmente todos los recursos del

mierocontrolador ya que se puede direccionar 8 bits del puerto A., 8 bits del puerto 8, 8 Bits del puerto C, 5 bits del puerto D y 5 Bits del puerto E EI modo Boostrap permite la accion de fetch desde el ROM de carga, este modo es muy versatil y puede ser usado para muchas funciones , pruebas, diagn6sticos y programar la eeprom, este modo puede ser carnbiado par programacion
EI modo de prueba fue implementado

inicialmente para

2-12

CAPITULO If

HARDWARE

pruebas al tiempo de fabricacion, sin embargo puede ser utilizado para programar La eeprom, ademas de contar con un bit especial para pruebas especiaJes a Losbits de control. Este modo se puede cambiar a otros por medio de programacion. MODB
1 1

MODA
0

MODO SELECCIONADO Chip Simple Expandido Multiplexado Bootstrap Especial Prueba Especial del Microcontrolador MC68HCI1.

1 0
1

0 0

Tabla No. 2.3: Configuraclon

EI DIP cuenta can 48 pines los cuales seran descritos a continuaccion hacienda referenda at numero de pin como 10 muestra la Figura No. 2.18.

PA7 PA6 PA5 PA4 PA3


PA2 PAl

Von

PAO PB7 PB6 PB5 PB4 PB3 PB2 PBI PBO PEO PEl PE2 PE3 VRH
Vss

PD5 PD4 PD3 PD2 POI PDO


IRQ XIRQ

RESET PC7 PC6 PC5 PC4 PC3 PC2 PCI PCO


XTAL EXTAL RIW

VRL

MODB

E AS MODA

Figura No. 2.18: Pines del MC68HCI1.

2-13

CAPITULO II
VOD (48) y VSS (23) La alimentaci6n de energia al microcontrolador (±O.SV) y Yss a tierra. RESET (39) Una senal activa en bajo se usa para iniciaLizarel MeV.

HARDWARE

es el Von = +5 volts

Figura No.2.19: Conexieu del Reset Manual. XT AL (30) Y EXT AL (29) Son las entradas para co nectar el oscilador que configura al reloj maestro del sistema. E (27) Este pin proporciona una salida de reloj de un cuarto de la frecuencia del oscilador en XT AL Y EXT AL, la cual sirve de referencia para los perifericos que se deseen controlar. IRQ (41) Este pin es una entrada que permite la posibilidad para aplicar interrupciones asincronas al MeU, la cual es sensible al nivel bajo de la sefial, aunque no se estan usando actual mente la conexi6n se muestra en la Figura No. 2.20. Para la operacion normal de este pin se requiere que una resistencia sea conectada a VDD, en este caso se ha conectado una resitencia de 4.7 Kn.

Vee
Vee

Figura No. 2.20: Conexlen de las Entradas

a Interrupcien.

2-14

CAPITULO II
XIRQ (40)

HARDWARE

Este

pin

es una entrada

que pennite

la posibilidad

para

aplicar

interrupciones asincronas no enmascarables a1 MCU, la cuaL es sensible a1 nivel bajo de la serial. Durante el reset el bit X en el registro de codigo de condicion se activa y para cualquier interrupcion es enmascarada hasta que se habilita por software. Para Laoperacion normal de este pin se requiere que una resistencia sea conectada a VDD, en este caso se ha conectado una resitencia de 4.7 Kn.
MODA (25) Y MODB (24)

Son entradas para determinar los modos de operacion de acuerdo a los niveles de voltaje presentes en ellas de acuerdo a la Tabla No.2.3. Aqui se ha seleccionado el modo expandido multiplexado, VRL (21) Y VRH (22) Estas entradas dan la referencia de voltaje para el circuito convertidor de las entrada analoga a digital; donde V RH podra ser tan pequefta como 3 V cd mayor que V RL, Y V RL Y V RH estaran ente V ss Y V DO

R/W (2S)
Esta salida sirve para controlar La direccion de transfernecia externo. DIRECCIONES INIelO FIN
0000 SOOO AOOO COOO C400 C800 CCOO DOOO EOOO 7FFF 9FFF BFFF

del bus

OBSERVACIONES
RAM EXTERNA LIDRES RESERVADAS PUERTOS DE E/S LIDRES DISPLA Y DE POTENCIA LECTORA CODIGO DE BARRAS IMPRESORA LCD EEPROM

C3FF
C7FF CBFF

CFFF DFFF
FFFF

Tabla No. 2.4: Distribucien

del Mapeo de Memoria del MC68HCll.

2-15

CAPITULO II
AS (26)

HARDWARE

Esta salida (Addres Strobe) es usada para demultiplexar las direcciones y datos del puerto C. PUERTO A (8 .. 1) entradas y A3 ..6 como salidas, esta configuracion es fija y A7 puede programarse como E/S a traves del registro Este puerto es configurado para (PuLse Accumulator
PACTL

Ao..2 como
Register)

Control

en nuestro

easo aqui esta

conectado el teclado a los primeros 7 bits. EL PUERTO B (16 ..9) En el modo Expandido este puerto nos proporciona la mitad de direeciones de mayor peso es deeir de la 8 a la 15. EL PUERTO C (31..38) En modo expandido este puerto nos proporciona las direcciones de la 0 a la 7 y los datos multiplexados. EL PUERTO D (43 ..47) Puede usarse como puerto de proposito general E/S proyecto se esta usando el puerto serie SCI. EL PUERTO E (17 ..20)
0

como SCI

SP}

donde el bit 0 es Recibe datos (RxD) y el bit I Transmite Datos(TxD); en nuestro

Lo he utilizado para proposito general

solo de entrada, pero tamoien

puede usarse como entradas Analogo a Digital (AID), en este puerto estara la Have provisionalmente hasta que se implemente el m6dulo sensor de temperatura. LOS REGISTROS ACUMULADORES usados AYB operandos en calculos aritmeticos
0

INTERNOS

Los aeumuladores A y B son registros de prop6sito general de 8 bits, son como para almacenar datos intermedios. En algunas operaciones estos dos registros se unen para fonnar el registro D de 16 bits como la indica la Figura No. 27. El MeV efectua instrucciones con estos registros, como La son La suma (ADD) la sustraccion

2-16

CAPITULO II

HARDWARE

(SUB), las operaciones de carga (LOAD) de descarga (STA) de comparacion (CPA) y los asociados con ambos registros como ABA, SBA y SBA. Tarnbien contiene otras instrucciones como ABX y ABY que agregan el contenido del registro B al contenido del registro X equivalente
0

Y, pero no existe una instruccion TAP y TP A que transfieren

para el registro A. La instruccion

instrucciones del registro de c6digo de condicion al registro A y viceversa pero no existen instrucciones equivalentes con el registro B. La instruccion que efectua un ajuste a decimal al registro A (DAA) se usa despues de operaciones aritmeticas en decimal codificado en binario (BCD), y no existe el equivalente para el registro B. 7 15 Figura No. 2.21: Representacion EL REGISTRO INDICE X (IX) El registro indice X (IX) el cual contiene 16 bits que pueden ser usados como contador
0

REGISTRO

A REGISTRO D

REGISTRO

o
B es el Registro D.

del Registro A y B dende Au

como a1rnacenarniento temporal, ademas posee el poder de

agregarse a un offset de 8 bits para crear direcci6n efectiva EL REGISTRO INDICE Y (IY) El registro indice Y (IY) el cual contiene 16 bits que pueden ser usados como contador
0

como a1macenamiento temporal, adernas posee el poder de

agregarse a un offset de 8 bits para crear direcci6n efectiva de igual forma que el registro IX~ la diferencia estriba que IY requiere de un byte extra de codigo de maquina y un ciclo extra de tiempo de ejecucion, EL APUNT ADOR DE LA PILA (SP) El apuntador de la pila (Stack Pointer) es un registro de 16 bits que contiene la siguiente direccion disponible de la pila; en la pila interrupciones ademas de guardar datos temporales.
0

stack se guardan

las direcciones de las instrucciones pendientes al hacer llamadas a subrutinas e Cuando se llama a una
0

subrutina por medic de 1a instruccion JSR (Jump to SubRutine)

con BSR

(Branch to SubRutine) las direcciones que siguen a La Hamada de subrutina son automaticamente guardadas en la pila (pUSH), y cuando se ejecuta la instruccion

2-17

CAPITULOl!

HARDWARE

RTS, se ejecuta la accion de extraer la direccion siguiente de ejecutar, de 1a pila


(PUL)

y cargada al contador de programa (PC) y se continua ejecutando el

programa. Sf una interrupcion es detectada 1a siguiente instruccion es puesta en la pila y tambien todos los registros se guardan en la pila, la ejecuci6n continua con la direccion indicada en el vector de interrupcion hasta el fin de la rutina de interrupcion (RTI). La instruccion RTI causa que los registros guardados en la pila sean devueltos a estes (PUL), en orden inverso a como fueron guardados. Para guardar datos que estan en los registros A
PULX Y PSHY Y PUL Y.
0

BIas

instrucciones son PSHA y

PULA, Y PSHB Y PULB analogamente, para los registros X y Y son PSHX y

EL CONTADOR DE PROGRAMA (PC) EI PC (program Counter) es un registro de 16 bits, que contiene la siguiente instruccion que sera ejecutada. Despues del reset, el PC es inicializado con la direcci6n contenida en nuestro caso en las direcciones $FFFE ..$FFFF, que es el vector de interrupci6n del RESET EL REGISTRO DE CODlGO DE CONDICION (CCR) El CCR (Condition Code Register) es un registro de 8 bits que contiene 5 indicadores de codigo de condicion C, V, Z, N, Y H (Carry, Overflow, Zero, Negative y Half carry), dos bits de interrupcion enmascarable I y X (Irq y Xirq) y actualizado por
0

un bit de parada S (Stop disable). EI CCR es automaticamente

muchas de las instrucciones ejecutadas; por ejemplo LDAA y ST AA act ivan ABX y ABY no afectan el CCR. N Figura No. 2.22: Configuraclou CarryfBOITOW (C) EI bit C se activa si la Unidad Aritmetica Logica (ALU) hace un acarreo error en una multiplicacion
y
0

borran los banderas del c6digos de condici6n N, Z Y V en cambio PSH, PUL,

del Registro de C6digo de Condieion.

pide un prestamo en una operacion aritmetica. Tambien se activa cuando ocurre un division. Las instrucciones de corrimiento operan con sin acarreo para facilitar operaciones de corrimiento de palabras multiples.

2-18

CAPITULO I!
Overflow (V) EI bit V se activa cuando una operaci6n

HARDWARE

aritmetica

causa

un

desbordamiento, de otra forma el bit V es desactivado (puesto a cera). Zero (Z) EI bit Z se activa cuando eI resultado de una operacion aritmetica, logica cera. Negative (N) EI bit N se activa cuando el resultado de una operacion aritmetica, logica
0 0

una operacion de manipulacion de datos es cero; de otra forma el bit Z es puesto a

una operacion de manipulacion de datos es negativa (MSB= 1). De otra forma el bit N es puesto a cera. Por ejemplo para probar que el contenido de la localizacion de memoria es negativo se carga a un acumulador y se veri fica el estatus del bit N. Interrupt Mask (1) El bit I es una mascara global que deshabilita todas las fuentes de interrupcion enmascarables. Cuando el bit I se activa, las interrupciones se quedan pendientes, pero la operacion del MeV continua ininterrumpidamente hasta que el bit I es borrado. Despues de cualquier reset el bit I se activa y puede ser borrado por software. Despues que una interrupcion es reconocida, el bit I se activa y luego los registros son colocados en el stack. Nonnalmente, despues del retorno de la interrupcion, Half Carry (H) EI bit H se activa cuando un acarreo ocurre entre los bits 3 y 4 de la ALU durante una instruccion ADD, ABA
0

el bit 1 es cera

ADC. De otra forma el bit H es borrado,

este bit es usado durante operaciones en BCD. X Interrupt Mask (x) EI bit X deshabilita la interrupcion del pin XIRQ. Despues de cualquier reset X es activo por default y puede ser borrado par software. Cuando la interrupcion XIRQ es reconocida los bits X e I son activados en seguida, los registras son guardados en la pila pero primeramente el vector de interrupcion es apuntado despues de terminar la interrupcion; con un RTI causa que los registros sean restablecidos de la pita. El bit X se activa s610 por hardware (XIRQ
0

2-19

CAPITVLOII

HARDWARE

RESET). El bit X es borrado solo por instrucciones de programa (TAP cuando el bit asociado de A es cero,
0

RTI donde el bit 6 del valor cargado en CCR desde la

pila ha sido borrado). No existe una acci6n de hardware para borrar X.

OTROS REGISTROS INTERNOS


A continuacion explicate algunos registros que se han utilizado en el modo expandido multiplexado. En el registro INIT ($B03D) se utiliza para modificar las direcciones iniciales de RAM intema y de el block de registros, los cuales inicialrnente estaban en las localidades $OOOO-$OOFF $1000-$103F respectivamente, en este registro se coloc6 el valor de $AB y por 10 cual las direcciones de la RAM intema a la direcci6n $AOOO$AOFF y el block de registros internos de la $1000-$103F a la $BOOO-$B03F. De otros registros hablaremos en otTOS apartados. En la Tabla 2.5 se muestran todos los registros internos, nombres y direcciones.
$BOOO Bit 7 PA7 STAF PC7 PB7 PCL7 DDC7 0 0 PE7 FOCI
OCIM7 OCtD7

Bit 6 PA6 STAI pe6 PB6 PCL6 DDC6 0 0 PE6 FOC2


OCIM6 OCtD6

Bit 5 PAS CWOM PCS PBS

Bit4 PA4

bit 3 PA3

Bit 2 PA2 PLS PC2 PB2 PCL2 DDC2 PD2 DDD2 PE2 0 0 0 10

Bit I PAl EGA PC1 PBI PCLl DDCI POI DDDI PEl 0 0 0 9 1
9

Bit 0 PAO INVB PCO PBO PCLO DDCO PDO DODO PED 0 0 0 8 0 8 0

Puerto A Reservada

$8001 $8002
$B003 $B004

HNDS
PC4 PB4 PCL4 DDC4 PD4 DDD4 PE4 FOC4
OCIM4 OCtD4

OIN
PC3 PBJ peL3 DDC3 PD3 DDD3 PE3 FOC5
OCIMJ OClD3

PIOC
Puerto C Puerto B PORTCL Reservada

$B005
$B006

rci.s
DDC5 PDS 0005 PES FOC3
OCIMS OCIDS

$B007 $B008 $B009


$BOOA $BOOB $BOOC $BOOO $BOOE

DDRC
Puerto 0

DDRD
Puerto E

CFORe

OCIM

ocin

$BOOF
$BOlO

$E011
$B012 $B013 $BOI4

Bit 15 Bit 7 Bit 15 Bit 7 Bit IS Bit 7 Bit 15 Bit 7 Bit 15 Bit 7 Bit 15 Bit 7

14 6 14 6 14 6 14 6 14 6

13
5 13 5 13 5 13 5 13 5 13 5

12 4 12
4

11 3

TCNT(h) TCNT(L)

2
10

11
3 11 3

TIC 1(h)
TICI(L) TIC2(b) TIC2{L) TIC3(b)

12 4

2 10

2
10 2 10

12
4 12 4

11
3
11

$BOI5
$6016

$B017
$B018

14
6

12
4

$BOI9

3 11 3

2
10 2

1 9 1 9 1 9 1 9 1

8
0 8 0

nC3(L)
TOCI(h) TOCl(L) TOC2(b) TOC2(L)

8
0

8 0

Tabla No. 2.5a: Block de 64 Registros Internes del MC6811HCl1.

2-20

CAPITULO I!

HARDWARE

$BOIA $BOIB

saoic
$8010 $BOlE $BOIF $B020 $B021 $8022 $B023 $B024 $B025 $B026 $B027 $B028 $B029 $B02A $8028 $802C $8020 $B02E $B02F $B030 $B031 $B032 $E033 $B034 $B035 $8036 $8037 $B038 $B039 $B03A $8038 $B03C $B03D $B03E $B03F

Bit 15 Bit 7 BillS Bit 7 Bit 15 Bit 7 OMl


EDG48

14 6 14 6 14 6 OL2
EDG4A

13 5 13 5 13 5 OM3
EOOIB

12

4
12 4 12 4 OL3
EOOIA

11 3
II

10

2
10 2 10 2 OL4
EDG2A

9 I 9
I

8 0

T0C3(h) TOC3(L) TOC4(h) TOC4(L) TI4I05{h) TI4I05(L)

s
0 8 0

3
II

3 OM4
ED028

1 OMS
EDG3B

OL5
EDG3A

OCII OCIF TOI TOF


DDRA7

Bit 7 SPIE SPIP Bit 7 TCLR R8 TIE TORE R7ff7 ceF Bil7 Bit 7 Bit 7 Bit 7 0 MBE

OC21 OC2F RTII RTIF PAEN 6 SPE WCOL 6 SCP2 T8 TCIE TC


R6fT6

OC31 OC3F PAOVI


PAOVF PAMOD

OC4[ OC4F PAIl PAIF


PEDGE

14/05]

leu
IClF 0 0 14/05 2 CPHA 0 2

14/05F
0 0
DDRA3

Ie21 IC2F PRI


0

RTRI
}

5
DWOM

4 MSTR
MODF 4 SCPO M llJE IDLE R4(f4 MOLT 4
4 4

3 CPOL
0

0 5 SCPI 0 RIE

SPRI 0 1 SCRI 0 RWU FE RIff} CB 1


1

3 RCKB

SCRl
0
RE

IC3! IC3F PRO 0 RlRO Bit 0 SPRO 0 Bit 0 SCRO


0

TCTLI TCTL2 TMSKI TFLGl TMSK2 TFLG2 PACTL PACNT SPCR SPSR SPOR BAUD

WAKE
TE OR R3ff3 CD 3 3 3 3 BPRT3
EXROW

seem

RDRF
RSffS

NF R2tr2

SBK 0 ROffO
CA

0 6 6 6 6 0 0

SCAN
5 5 5 5
0

CC
2 2 2 2 BPRT2

1
}

4
PTCON EXCOL

ELAT

Tl

BPRTl TO

Bit 0 Bit 0 Bit 0 Bit 0 BPRTO PGM

SCCRl SCSR SCOR ADCTL ADRI ADRl

ADR3 ADR4
BPROT EPROG
Reservada
Reservada

ADPU
Bit 7

ODD
RBOOT

RAM1 TILOP EE3

CSEL 6 EVEN SMOO RAM2

IR_QE
5 ELAT MDA RAMI oeCR

OLY 4

CME
3 ROW PSEL3 REG3 DISR
NOSEC

BYTE
IRVNE RAMO eBYP

2 ERASE PSEL2

D
EE2

REGl FCM
NOCOP

CRI 1 EELAT PSELI REG I FCOP


ROMON

CRO Bit 0 EPGM PSELO

omON
CQPRST

PPROG HPRlO

REGO
TCON EEON

INIT
TESTl CONFIG

EEl

EED

Tabla No. 2.5b: Block de 64 Registros Internos del MC681lHCll. TIP OS DE DATOS El MC68HCll 1) Por bit 2) Enteros de 8 y 16 bits con signo y sin signo soporta los siguientes tipos de datos:

2-21

CAPITULO]]
3) Fracciones sin signo de 16 bits. 4) Direcciones de 16 bits.

HARDWARE

Los datos no usados fueron operaciones con signo y el especificado en el punto 3). En el Anexo B, se muestran los el coneentrado de nemonicos del MC68HCl1.

MOD OS DE DIRECCIONAMIENTO El MC68HC 11 contiene 6 modos de direccionamiento que son el inmediato, directo, extendido, indexado, inherente y relativo. Todos los modos usan una direccion efectiva excepto el inherente. La direccion efectiva es la direccion de memoria desde la eual el argumento es buscado calculada. Modo Inmediato En este modo el argumento es contenido en el (los) byte(s) irunediados seguidos del codigo de instruccion, La direccion es sefialada inmediatamente instruccion. EI Modo Directo EI byte de menor orden de la direccion del operando es contenido en un byte simple seguido del codigo de operacion, y el byte de mas alto orden de la direccion se asume que es $00. Direcciones de $OO-$FF son asi aceesadas directamente usando instrucciones de dos bytes. El tiempo de ejecucion se reduce par la eliminaci6n del acceso de memoria adicional requerida para la direccion del byte de mayor orden. En muchas aplicaciones, estos 256 bytes son reservados frecuentemente para referenciar datos. En los MCUs MC68HCll, el mapa de memoria puede ser configurado pOTcombinaciones de registros internos, RAM, Modo Extendido. En este modo La direcci6n efectiva del argumento es contenida en los dos bytes seguidos del byte del codigo de instruccion, bytes si un prebyte es requerido). Uno
0 0 0

cargado,

la direccion desde Ia cual se esta ejecutando.


0

La direccion efectiva puede ser especificada dentro de una instruccion

esta puede ser

del codigo de

memoria externa para ocupar estas direcciones.

Existen instrucciones de tres bytes (0 cuatro dos bytes son necesarios para el codigo de

instruccion y dos para la direccion efectiva.

2-22

CAPITULO]I
Modo Indexado.

HARDWARE

En este modo, es necesano un offset de 8 bits sin signo contenido instruccion, es agregado at valor contenido en uno de los registros indices (IX
0

en la
IY). La

suma es la direccion efectiva. Este modo de direccionamiento siempre es referenciado a alguna localizaci6n de memoria en los 64 Kbyte de espacio direccionable. Estas son instrucciones de dos a cinco bytes, dependiendo de si requiere Modo Inherente En este modo la informacion necesaria para ejecutar la instruccion es contenida en el c6digo de instruccion, Operaciones que usan solo los registros indices direccionamiento. Estas son instrucciones de uno Modo Relativo. Este modo se usa solo en instrucciones Branch. Si la condicion Branch es verdadera, se incluye un offset de 8 bits con signa a la instruccion y se agrega al contenido del contador de programa (PC) para fonnar Ia direccion efectiva de la bifurcacion. De otra forma el control continua can la siguiente instruccion. instruccion par dos bytes. Conforman usuaJrnente la
0 0 0

no un prebyte.

acumuladores,

tales como instrucciones de control sin argumentos, son incluidos en este modo de dos bytes.

RESETS E INTERRUPCIONES. Las operaciones de reset y las operaciones de interrupcion cargan al PC can un vector que apunta a la nueva localizacion desde donde la direccion va a ser ejecutada. Un reset automaticamente detiene la ejecucion de la instruccion actual y fuerza al MeU a reiniciar el programa. Una interrupcion suspende temporalmente programa normal, iniciando un servicio adicional de acuerdo la ejecucion de un a la peticion de la

interrupcion. Despues que la interrupcion ha sido tenninada el programa continua con la siguiente instruccion del programa principal.

RESETS
Existen cuatro posibles maneras de ejecutar un reset. E1 reset por encendido POR (Power-on Reset) y el reset externo normal parten del vector normal de reset y el COP (Computer Operating Properly) y el reset del reloj monitor que tienen cada uno su propio vector de reset.

2-23

CAPITULO]]
Efectos del Reset.

HARDWARE

Cuando una condicion de reset es reconocida, los registros internos y los bits de control son forzados a inicializarse. Dependiendo de las causas del reset y el modo de operacion, los vectores de reset pueden ser localizados desde una de 6 localizaciones posibles mostradas en la Tabla No. 2.6. Mapa de Memoria. Despues del reset> el registro INlT ($B03D) es inicializado a $00 par 10 que es necesario contar can esto para que el sistema coloque nuevarnente el valor de $AB en el registro INlT.
$0000 .---------,

RAMEXTERNA

$7FFF

$FFFF

Figura No. 2.23: Representacien Interrupciones de Tiempo Real (RTI).

Grafica del Mapeo de Memoria.

La bandera de interrupcion de tiempo Teal RTIF (bit 6 de TFLG2, $B025) es borrado y automaticamente Para una interpretacion las interrupciones par hardware son enmascaradas, estas pueden ser inicializadas por software antes de que las RTI sean usadas.

mas objetiva

del Reset y las Interrupciones se muestran en

el Diagrama de Flujo No.2.} y 2.2, la secuencia y las prioridades de estas.

2-25

CAPITULO II
ALTA

HARDWARE

RESET EXTERNO

-------___

P_RI_O_RI_D~ BAJA

RELOJ MONITOR

CARGA EL PCCON EL CONTENIDO DE $FFFA-$FFFB

ACTIVALOSBITS X, set ENCCR RESET AL HADW ARE DELMCU

LOS REGISTROS DEL CPU AL STACK A UNOS LOS BITS XeI APUNT A LOS VECTORES
$FFE4-$FFE5

Diagrama de F1ujo No. 2.1a: Prioridades

del Reset (1 de 2).

2-26

CAPITULO II

HARDWARE

SI

LOSREG~TROSALSTACK ACTIVA LOS BITS X e I CARGALOS LOS VECTORES

LOS REGISTROS AL STACK

ACTIV A LOS BITS X e I


CARGA LOS LOS VECTORES

REST AURA REGISTROS DESOE EL STACK Resuelve 13 prioridad de 1a Interrupcion y carga el vector de 1a que contiene 1amayor pnondad (ver el diag. No )

Diagrama de Flujo No. 2.lb: Prioridades del Reset (2 de 2)

2-27

CAP/TVLO]]

HARDWARE

AGl1V A EL BIT X EN CCR

ARGA LOS VECTORES SFFF4-FFFS

CARGA EL VECTOR

CARGA EL VECTOR

$FFF2-SFFF3

"">-_.

CARGA EL VECTOR

SFFEO-SFFEI

>---w

CARGA EL VECTOR SFFEE-$FFEF

>-_ ..

CARGA EL VECTOR SFFEC-$FFED

>-_ ..

CARGA EL VECTOR SFFEA-$FFEB

Diagrama de Flujo No. 2.2a: Prioridad

de las Interrupciones

(1 de 2).

2-28

CAPITULO II

HARDWARE

CARGA EL VECTOR

$FFE6-SFFE7

CARGA EL VECTOR

SFFE4-SFFE5

CARGA EL VECTOR

SFFE2-$FFE3

CARGA EL VECTOR

SFFEMFFEI

CARGA EL VECTOR

$FFDE-$FFDF

CARGA EL VECTOR $FFOC-$FFDD

CARGA EL VECTOR

$FFDA.$FFDB

CARGA EL VfiCTOR

SFFDS-SFFD9

r------------11

CARGAEL

SFFD6-$FFD7

vscron

.__

CARGAEL VECTOR

SFFF2-SFFF3

Diagrama de Flujo No. 2.2b: Prioridad de las Interrupciones (2 de 2).

2-29

CAPITULO!!
INTERRUPCION DE TIEMPO REAL (RTI).

HARDWARE

El Sistema de Tiempo del MC68HC 11 esta compuesto por cmco cadenas de relojes divisores. El principal incluye un contador de 16 bits de carrera libre, el cual es conducido por un preescalar programable. La salida del preescalar divide el sistema de reloj por 1, 4, 8 6 16., la interaccion de los registros se muestra en la Figura No.2.24. En nuestro caso solo se veran los principales que se han utilizado.
PRESCALAR QUE DIVIDIl

MCU ECLK

I PRI

PORI.4.8.o16 PRO

TFLAGI

TMSKI

Puerto A

Figura No. 2.24: Diagrama a Bloques del Sistema de Timer

La funcion captura de entrada relaciona el tiempo y eventos extemos ocunidos por el valor visto del contador de carrera libre donde un pulso es detectado can la entrada asociada a1 timer. El software puede cargar valores conocidos y usar estos para calcular la periodicidad y duracion de eventos; el cuales se usaran para irnplementar un reloj de tiempo real. La RTI (Real-Time Interrupt) que se ha habilitado en nuestro proyecto, se usa para generar interrupciones can un range peri6dico fijo, es configurado y controlado por dos

2-30

CAPITULO!!
bits, (RTR1 y RTRO) Y el registro de control del pulso acumulador

HARDWARE
(PACTL). El bit RTll Posee cuatro

y el registro
diferentes RTR[l:O]

TMSK2

habilitan

la capacidad

de generar

la interrupci6n.

rang os producidos como

de acuerdo a la frecuencia del oscilador y el valor de los bits

10 muestra la Tabla No. 2.7.


E=l MHz E=2MHz

RTR[1:01
00 01 10

E=3MHz 8.192 ms 16.384 ms 32.768 ms 65.536 ms

E=XMHz

2.731 ms 5.461 ms 10.923 ms 21.845 ms

4.096 ms 8.192 ms 16.384 IUS 32.768 ms

(£/213) (E/214) (£/215) (E/216)

11

Tabla No. 2.7: Rangos de RTI. EI reloj fuente della


parado
0

funci6n RTI es un reloj de carrera

libre que no puede ser


se han usado solo

interrumpido,

excepto por el reset. Para esta implementacion

algunos registros

del sistema del timer.

TMSK2 (Timer Interrupt

Mask Register 2)
de tiempo real. PRI 0 PRO

Este registro contiene los bits que habilitan la interrupci6n


$B024

TOI

RTII

I PAOVl I
a

PAll

RESET

I TMSK2

Figura No. 2.25: Representacien


TOI (Timer Overflow Interrupt Enable)

del TMSKl.

o == La

interrupcion

TOF deshabilitada. de interrupcion cuando TOF se activa a uno.

1 == Requerimiento

R TIl (Real Time Interrupt Enable)

o = La

interrupci6n

R TIF deshabilitada.

1 = Requerimiento PAOVI (pulse Accumulator para extraer

de intenupci6n

cuando RTIF se activa a uno.

Overflow Interrupt Enable) de pulsos de sobreflujo y no afecta

EI bit de control P AOYl permite configurar aI acumulador


0

conducir a una interrupcion

a1 estado del PAOVF en el

registro llF1LCJ2.

2-31

CAPITULO II
PAIl (Pule Accumulator Input Edge).

HARDWARE

Cuando este bit se activa una interrupcion de hardware es requerida y es generada cada vez que el bit PAIF del registro TFLG2 es activo. Bits[3:2] no se usan, siempre son cero. PR[l :0] Timer Prescalar Select. Estos bits son usados para seleccionar la proporcion de la division del preescalar. Se refiere a la Tabla No. 2.8. PR[1:0]
00

Preescalar
1

01 10
11

4
8

16

Tabla No. 2.8: EI Preescalar del Timer. TFLG2 (Timer Interrupt Flag Register 2) Los bits de este registro indican que ha ocurrido un evento del sistema timer. Se asocia con los cuatro bits de mayor orden del TMSK2, los bits del TFLG2 penniten al subsistema operar en una interrupcion, Cada bit de TFLG2 corresponde a un bit en TMSK2 en la misma posicion.
$B025 RESET

TOF 0

RTlF 0

I PAOVF I
0

PAIF 0

I
0 0 0 0

TFLG2

Figura No. 2.26: Representacion TOF (Timer Overflow Interrupt Flag)

del TFLG2.

Se activa cuando TeNT cambia desde $FFFF a $0000 RTIP (Real Time Interrupt Flag) Se activa automaticamente a uno cuando finaliza un periodo del RTI. Para borrar RTIF, se escribe un byte a TFLG2 con el bit 6 activo. PAOVF (pulse Accumulator Overflow Interrupt Flag) y PAIF (Pulse Accumulator Input Edge Interrupt Flag).

2-32

CAPITULO II

HARDWARE

EI estatus del bit PAOVF se activa eada vez que el acumulador de pulsos pasa de $FF a $00. Para borrar el bit de estatus, escribimos un uno en la correspondiente posicion del bit de data del registro TFLG2. Bits[3 :0] No se usan y siempre son cera. PACTL (Pulse Accumulator Control Register)

Los bits RTR[l :0] de este registro seleccionan el rango para el sistema RTI (Real Time Intenupt). EI resto son bits que controlan el acumulador de pulsos y las funciones IC4/0C5. RESET~-O--~~O~~--O--~--O--~--O--~~O~~~O~~~O~ Figura No. 2.27: Representacien
DORA 7 (Data Direction for Port A Bit 7)
$B026

DDRA7

PAEN

I PAMOD I

PEDGE

DDRA3

14/05

RTRI

RTRO

I PACTL

de los bits del PACTL.

Este bit se utiliza para configurar el bit 7 del puerto A 0= Entrada 1 = Salida PAEN (Pulse Accumulator System Enable)

o = Deshabilita

el Acumulador de Pulsos

1 = Habilita el Acumulador de Pulsos. PAMOD (pulse Accumulator Mode) 0= Contador de Eventos. 1 = Acumulacion de Tiempo. PEDGE (Pulse Accumulator Edge Control) Este bit tiene diferentes usos dependiendo del estado del bit PAMOD, 10 que se muestra en la Tabla No.2.9. DDRA3 (Data Direction for port A Bit 3) Se utiliza para configurar el bit 3 del puerto A. 0= Entrada
1 = Salida

2-33

CAPITULO II

HARDWARE

PAMOD 0 0 1 1

PEDGE
0

ACCION DEL RELOJ En la caida de la onda PAl incrementa el contador En el ascenso de la onda PAr incrementa el contador. Un cero en PAl inhibe el contador Un uno en PAl inhibe el contador

1 0
1

Tabla No. 2.9: Control de la Onda del Pulso Acumulador. 14/05 (Input Capture 4/0utput Compare) 0= Funcion de Comparador de Salida 5 Habilitado. (No IC4) 1 == Funci6n de Captura de Entrada 4 habilitada (No OeS) RTR[1:0] RTI Interrupt Rate Select. Estos dos bits determinan el rango en el cual el sistema RTI requiere la interrupci6n. El sistema RTI es conducido par una division de E entre 213 pulsos de reloj que son compensados independientemente del timer preescalar. Estos dos bits de control seleccionan un factor adicional de division de acuerdo a 1a Tabla No. 2.7.
PAOIII PAO\lF

E - 6" Cl'X~ (FROM MAIN TIMERI

o;
fi.

'" ...
0..

INTE ..... A~ OAT~ EJS

Figura No. 2.28: Acumulador

de Pulsos.

2-34

CAPITULOI1
ACUMULADOR DE PULSOS
0

HARDWARE

EI MCU tiene un contador de 8 bits que puede ser configurado para operar como un simple contador de eventos 2.28. INTERFASE SERlE contiene dos tipos de puertos serie el sistema de Interfase de para encerrar tiempo de acumulacion, dependiendo del estado del bit PAMOD en el registro PACTL, de acuerdo al diagrama de la Figura No.

EI MCU MC68HCll

Comunicaci6n Serie SCI (Serial Comunication Interface) y el puerto Serle Sincrono SPI (Serial Peripherical Interface); en este caso esta habilitado el SCI por Lasrazones que se describen a continuacion Descripcion General del SCI El SCI es un sistema asincrono full-duplex tipo UART (Universal Asynchronous Receiver Transmitter), usa el formato standar NRZ (NonRetum to Zero), un bit de inicio, ocho bits de datos y un bit de parada. Un generador de baudios que depende del oscilador del Meu. EI transmisor y el receptor son funcionalmente independientes pero usan el TxIRx (Bauds) en la salida presentan mismo formato de datos y la misma velocidad

niveles de voltaje TTL para trasladarse a los niveles de voltaje para la interfase RS232 (±12 V). EI SCI incluye caracteristicas avanzadas para asegurar Ia alta confiabilidad en las comunicaciones; eLdiagrama bloques del transmisor se muestra en la Figura No. 2.31 yel Receptor en la figura No. 2.32. Registros del SCI y bits de Control.

I RESET I RESET I SPIE


$B008 0 0 $B009 0 0 $B028

0 0 0 0

SS
0 DDDS 0 DWOM 0

SCK
0 DDD4 0

MOSI
0 DDD3 0

MISO
0

Tx
0

Rx
0

Puerto D

DDD2 0

DDDl 0

DDDO

DDRD

SPE
0

I MSTR I CPOL IcpHAI


0
0

SPRI
0

SPRO
0

SPCR

RESET

Figura No. 2.29: Registres de Datos de Comunieacien

Serie (SCDR).

2-35

CAPITULO II

HARDWARE

El SCI es configurado y control ado por cinco registros BAUD, SCCRl, SCCR2, SCSR y SCDR. Agregando, el registro del puerto D, el registro de direccion para el puerto D (DDRD), y el puerto D en modo de OR alambrado en el registro de control SPI (SPCR) son relacionados en segundo orden en el sistema SCI.
$B02F RESET

R7m

R6rr6

RSrrs

R4IT4

R3IT3 1

R2IT2
I

RIITI
I

ROITO

SCDR

Figura No. 2.30: Representaeion

del Registro de Datos de Comunicaciun

Serie,

mAN SMITTER
B/I UD

RATE

CL OCK

I
H

SCDR h SUFFER

.J

[WRln ONLY)

l
7 6 5 4

J ....

10 (11) . srr To SHIFT RliGISTER

Ilad
I

lJ-

_",J

'1

PIN BUffER AND CO«TROt.


I

[)OOI

I I
PDI ToO

,",_--"o

Cii

" '"
;:;

j .: .;r- d r- <> ur ::; -c .... '" '" « :l': -c ::> "" ~~ ~ .... ::; I' I'
u,
<D

~J
u, <J>

~
0:

a:

....

J::

<to ;;;0

z '" «
r-.

-' '" "" " a: w "" a: '"


<oJ
0.

" 'I

COOTROL LOGIC

TRANSMITTER

FO'!:E PIN OIRl:CnON (OUT)


J.

~I~ .:::
a: .... seCRI

"

....
8

.... 0:
~\ J
I

DO
I-

...

SCI CONTROl 1

J
TIE TC

',
!;CSR

~1~1~1~1~1 J
INTERRUPT STATl,IS

D
~
I' I' ~
SCI P"
REQUESTS

TORE

I rcrs
~ '" u
II-

~I~I~"!I~I~
0: '" '"

SCCR2 St

CONTROL 2

l.£..loo

.... ,. I' ~

SC INTE RAUPT REOU~5T

INTERNAl DATA BUS

Figura No. 2.31: Diagrarna a Bloques del Transmisor

del SCI del MC68HCll.

2-36

CAPITULO II

HARDWARE

Registro de Datos de Comunicaci6n

Serie (SCDR)

El SCDR (Serial Comunications Data Register) es un registro paralelo que tiene dos funciones. Es receptor de datos cuando esta leyendo, y es un registro transmisor de datos cuando esta el sistema transmitiendo.

RECEIVER SA UD RATE C LOCI(

I
PDQ R.D

DDDO

PIN eurrsa AND CONTROl


I J

J
~
DATA ~ RECOVERY

,_

0..

10(11)

all

a:

- --

'"

DISABLE DRIVER

FIE

Is17

Ax SHIFT FlEGISTER 6 5 4 3
1 1 0

;':

'"

-'
ALL ONES

hiSS

I' I I' \ 1/ \ 11'1

WAKEUP

LOGIC

:-:
,.
RWU
\

,If

\
w
~

\~

,
.._ w

~ :-:II~
SCCRl

~ -c '" ~

III
[

SCI CONTROL 1

I
RORF RIE IOtE LIE OR

~I~I~

cr_

.... .... ex: SCSR

°0

"

"-

I
~it'

SCI SIATUS _

~I'
~if

'hV'V

~'"

,~
I
8 SCOR A.6uff'FR

IV

READ ONL'

--0
1

-0

l RIE
,__ ~ a;

~I~I~ w ~Iw ~ 11
.... a::
c; '"

on m

SCCR1 I

SCI CONTROl Z

I'
SCI INTERRUPT

~~
INTERNAL DATA BJS

SC To

~EQUESTS

REOUEST

Figura No. 2.32: Diagrama a Bloques del Receptor del SCI del MC68HCll.

2-37

CAPITULO]]
EI Registro de Control 1 de Comunicacilm Serie (SCCRl)

HARDWARE

EI SCCRl (Serial Communication Control Register I) proporciona Wakeup.


R8: Recibe datos de 8 bits.

el bit para

detenninar la longitud de palabra y seleccionar el metodo para usar las caracteristicas de

Si eLbit M es activo, R8 carga el noveno bit en el receptor . . T8: Transmite datos de 8 bits. Si el bit M es activo, R8 carga eLnoveno bit en el Transmisor Receptor. Bit 5: No implementado. Siempre es cera.
$B02C
RESET

L.I __:;.;;R8';;""_...i....-....;;T...;;.,8 ----L_O.;;...._........._......;M;..;;...._.II'-w......;AKE;...;;;.;;.~1


1

____;,O_J..-......;O~...L..-_O;.............l 0 0

SeeR!

Figura No. 2.33: Represeutaclon

del Registro de Control Serle del SCI.

M: Modo (Selecci6n del formato de longitud de palabra)


0= Un bit de inicio, 8 de datos y un bit de parada
1 == Un bit de inicio, 9 de datos y un bit de parada

WAKE: Activa Marca/Direcci6n Libre.

o = Activa para

reconocimiento de linea Disponible.

1 = Activa para marca de direccion, Bit[2:0]: No implementados. Siempre son ceros. EI Registro de Control 2 de Comunicacien funciones del SCI.
$B02D
RESET

Serle (SCCR2)
0

EI SCCR2 (Serial Communication Control Register 2) habilita

deshabilita las

TIE

TeIE

RIE

ILIE

TE

RE

RWU

SBK

SCCR2

Figura No. 2.34: Representacien

del Registro de Control 2 del SCI.

2-38

CAPITULO II
TIE: Transmit Interrupt Enable.

HARDWARE

o = Deshabilita
alto.

la interrupci6n

TORE.
SCI cuando el estatus de la bandera TORE

1 = Requerimiento

de interrupci6n

esta

TCIE: Transmit Complete Interrupt Enable.

o = Deshabilita
alto.

la interrupcion

TC.
SCI cuando el estatus

1 = Requerimiento

de interrupcion

de la bandera Te esta

RIE: Receiver Interrupt Enable.

o ::::Interrupciones
1
=

RDRF

y OR

deshabilitadas. SCI cuando el estatus de la bandera RDRF


0

Requerimiento

de interrupcion

OR esta alto.

n.re.

Idle Line Interrupt Enable.

o = Deshabilita
1
=

las interrupciones de interrupcion

IDLE. SCI cuando el estatus de la bandera IDLE esta

Requerimiento

alto. TE: Transmitter Cuando Enable. TE va desde cera a uno, una unidad de caracteres deshabilitado. libres (unos logicos)

son enviados como un antecedente.

o = Transmisor

1 = Transmisor habilitado.
RE: Receiver Enable.

o = Receptor
1 = Receptor

deshabilitado. habilitado.

RWU: Receiver Wakeup Control.

o = Receptor

SCI normal. del receptor inhibidas

1 = Habilita el Wakeup y las interrupciones

2-39

CAPITULO!!
SBK: Send BreaK.

HARDWARE

AI final un caracter de tiempo de descanso es puesto en la cola y enviado cada vez que el SBK es puesto a uno. Tantas veces como el bit SBK es activado, los caracteres de espera son puestos en 1a coLa y enviados.

o = EI Generador

de espera apagado.

1 = EI generador de c6digos de espera activo.

El Registro de Status de Ia Comunieacion

Serie (SCSR).

EL SCSR (Serial Communication Status Register) da las entradas para el circuito L6gico de interrupcion para la generaci6n de las intenupciones del sistema SCI.
$B02E

TORE 1

TC
1

RDRF

IDLE

OR

NF

FE

SCSR

RESET

o
Serie.

Figura No. 2.35: Representacion

del Registro de Estatus de Cemunicacion

TDRE: Transmit Data Register Empty Flag.

Esta bandera esta activa cuando el SCDR esta vacio. Barra la bandera TDRE para leer el SCSR con TORE activo y escribir en SCDR.

o = SCDR

lIeno.

I = SCDR vacio.

TC: Transmit Complete Flag. Esta bandera se activa cuando el transmisor esta ocioso. Borra la bandera TC para leer el SCSR can 'I'C activo y entonces escribir en el SCDR.

o = Transmisor

Ileno.

1 = Transmisor libre, RDRF: Receive Data Register Full Flag. Esta bandera se activa si un caracter recibido esta listo para Leerse desde el SCDR. Borra 1abandera RDRF ai leer SCSR.

o = SCDR

vacio.

1 = SCDR lleno.

2-40

CAPITULO II
IDLE: Idle Line Detect Flag.

HARDWARE

Esta bandera se activa cuando la linea reeeptora esta libre, Una vez borrado, se mantendra siempre asi hasta que la linea receptora se haya aetivado y vuelva a quedar libre, La bandera IDLE es inhibida cuando RWU la lectura de SCSR con IDLE activa.
=

1. IDLE es borrada por

o =: La

linea Rx esta ocupada.

1 = La linea Rx esta libre.


OR: Overrun Error Flag.

OR se activa si un nuevo caraeter es recibido despues de que un caraeter previo que rue recibido se ha leido desde SCDR. Se borra por la lectura de SCDR con el OR activo. 0= No hay sobre escritura.
1 = Una sobreescritura es detectada. NF: Noise Error Flag.

Se activa si hay ruido y si no esta todo correcto. NF se borra con 1a lectura de SCSR y leyendo

o = Decisi6n

scnn.

unanime,

1 = Ruido detectado.

FE: Framing Error. FE se activa cuando un cero es detectado cuando un bit de parada fue esperado. Se borra la bandera FE por la lectura de SCSR con FE activo.

o = Un

bit de parada detectado.

1 = Un cero detectado. Bit 0: No esta implementado. Siempre se lee cera. El Registro de Baud rate. Se usa el registro BAUD para seleccionar diferentes velocidades de TxIRx para el sistema SCI. Los bits SCP[l :0] funcionan como un preescalar para los bits SCR[2:0). Sin embargo estos cinco bits proporcionan multiples velocidades de TxIRx para una frecuencia de crista! dada. Normalmente, estos registros se escriben una vez durante la inicializacion, ver la Tabla No. 2.10.

2-41

CAPITULO II
Selec. de Preescalar Div, interna del relojpor Frecuenda

HARDWARE
del cristal en Mhz.

SCP2 0 0 0 0
1 1 1 1

SCPl 0
0 I 1

SCPO 0
1

4.0 62500
20833

4.9152 76800 25600 19200 5907 1969

8.0 125000 41667 31250 9600 3205

1
3

0
1

4 13

15625 4800 1602 No se usa


No se usa

0
0 1 1

0
1

39

0
1

No se usa

Tabla No. 2.10 Selecciim del Preescalar del Baud Rate. BAUD: Baud Rate.
$B02B RESET

TCLR

SCP2

sePl

SCPO

RCKB

seR2

SCRI

seRO

BAUD

Figura No. 2.36: Representaci6n TCLR: Clear Baud Rate Counters (Prueba),

del Registro BAUD.

SCP[2:0] Seleccionael preescalar del Baud Rate del SCI.

De acuerdo a la Tabla No.2.1 O.


SCR[2:01: Seleccion del Baud Rate del SCI. La selecci6n de la recepci6n y transmisi6n del bit rate basado en el contenido de la salida desde el preescalar del baud rate. Como se muestra en la Tabla No. 2.11. Los bits preescalares SCP[2:0], determinan el mayor baud rate, y los bits SCR[2:0] seleccionan un submultiple binario adicional (+1, ;- 2, ;- 4, ... , + 128) del mayor baud rate. El resultado de estos dos divisores en serie es el reloj receptor de baud rate 16X. Los bit SCR[2:0] no son afectados por el reset y pueden ser cambiados en cualquier momento, sin embargo no pueden ser cambiados cuando la

comunicacion con el SCI esta en proceso.

2-42

CAPITULO II
Divide el Preescalar El mayor Baud Rate

HARDWARE

(Salida Preesca1ar de laTabla No. 2.11) 131072 131072 65536 32768 16384 8192 4096 2048
1024

SCR[2:01 000 001 010 011 100 101 110


111

por

76800 76800 38400 19200 9600 4800 2400 1200 600

32768 32768 16384 8192 4096

19200 19200 9600 4800 2400 1200 600 300 150

4800 4800 2400 1200 600 300 150 75


-

1 2 4 8 16 32 64 128

2048
1024 512 256

Tabla No. 2.11: Seleccien de Baud Rate. Banderas de Estatus e Interrupciones. El transmisor SCI tiene dos banderas de estatus; las cuales pueden ser leidas por el software para saber la condicion correspondiente. Alternativamente, un bit habilita un interrupcion 10 cual puede activarse para habilitar cad a una de estas condiciones de estatus para generar una peticion de interrupcion cuando la correspondiente condicion este presente. Las banderas de estatus son automaticamente activadas par condiciones logicas de hardware, pero pueden ser borradas par software, par 10 que provee de un mecanismo de sincronizaci6n que pennite logicamente saber cuando el software tiene conocimiento de la condici6n del estatus. Las banderas IDRE y TC estan nonnalmente activas cuando el transmisor es primeramente habilitado (TE activo en uno). La bandera TDRE indica si existe espacio en la cola de transmisi6n para cargar otro caracter en el TOR. EI bit TIE es la mascara de la interrupcion local para TDRE. Donde TIE tiene cera, TORE puede ser extraida. Cuando TIE y TDRE son unos una peticion de interrupcion esta presente. La bandera TC indica que el transmisor ha llenado la cola. El bit TeIE es la mascara de interrupcion local para TC. Cuando TCIE es cero, Te puede ser extraida; Cuando TCIE y TC son unos, una peticion de interrupcion esta presente. Las Banderas de Recepcien. El Receptor del SCI contiene cinco banderas de estatus, tres de las cuales pueden generar peticiones de interrupcion. Las banderas de estatus estan activas par la 16gica del SCI en respuesta a una condici6n especifica en el receptor. Estas banderas pueden ser

2-43

CAPITULO!!

HARDWARE

leidas en cualquier momento por software. Para mayor claridad se desarrollan en el Diagrama de Flujo No. 2.3. EI RDRF se activa cuando un caraeter ha side recibido y transferido al registro paralelo RDR. La bandera OR se activa en lugar de RDRF caraeter previo es removido del RDR. Las banderas NF y FE dan informacion adicional aeerca del caracter en el RDR, pero no generan requerimientos de interrupcion. cuando ocurre un desbordamiento. Un nuevo caraeter es leido para ser transferido al RDR despues que un

REQUERIMIENTO NO VALIDO DE SCI

REQUERIMffiNTO VALlOO DE SCI

Diagrama No. 2.3: Diagrama de Flujo que Muestra el Origen de las Interrupciones del SCI.

2-44

CAPITULO]!
Adaptador de Interfase Periferien (PIA)

HARDWARE

El adaptador de interfase periferico MC6821 proporciona medios universales para comunicarse con la familia de microprocesadores de 8 bits como el MC68HC 11. Este dispositivo es capaz de interactuar directamente con el MCU, proporcionando dos buses de datos bidireccionales de 8 bits y cuatro lineas de control. La logica de interfase extema no cs ncccsaria para la mayoria de los dispositivos perifericos. La configuracion del PIA es programada por el MCU durante la inicializaci6n. Cada una de las lineas de los puertos pueden ser programadas para actuar como entrada salida, esto pennite un alto grado de flexibilidad en la operacion global de la interfase. Caracteristicas • • • • • • • • Generales
0

Bus de Datos de 8 bits bidireccionales para cornunicaciones con el MCV. Dos Puertos Bidireccionales de 8 bits (A YB). Dos controles de registros programabLes. 4 lineas de entrada de interrupcion controladas individualmente utilizadas como controles perifericos de salida. Control logico de entrada salida. Alta impedancia three-state y transistor directo al drive de linea de salida. Dos drive TTL can capacidad en todos los buffers de los puertos Ay B. Compatible con TTL. La configuracion del PIA se muestra en la Figura No. 2.37; y a continuacion se

enumeraran las principales caracteristicas de cada uno de sus pines. Seiiales de Interfase del PIA. EI PIA interfiere al bus del MC68HC 11 con un bus de datos bidireccionales de 8 bits, 3 chips selectores de linea, 2 registros select ores, 2 interruptores de demanda, 1 linea de Lectura/Escritura, direcciones. Datos Bidireccionales (DO-D7): 1 linea penni soria y un reset. Para asegurar una operacion apropiada, el VMA puede ser usado como una parte activa de la decodificacion de las

Los datos bidireccionales permiten la transferencia de datos entre el

Meu y

el

PIA. EI bus de datos de salida son dispositivos three- state que permanecen en estado de alta impedancia excepto cuando el MeV ejecuta una operacion de lectura. La linea de LecturalEscritura esta operaci6n. esta en el estado de lectura (alta) cuando el PIA es seleccionado para

2-45

CAP!TULO!!

HARDWARE

Vss

PAD PAl PA2 PA3 PA4 PAS PA6 PA7 PBO PBL PB2 PB3 PB4 PBS PB6 PE7 CBI CEI
Vee

CAl CA2 IRQA IRQB RSO


RSI
00 01 02 03

RESET

D4
05

D6 D7
E

CSI CS2 CSO


RIW

Figura No. 2.37: Estructura Fisica del MC6821. Enable (E): EI pulso habilitador E, es la unica senal de cronometraje que es proporcionada hordes del pulso E.

at

PIA. El cronometraje de todas las otras sefiales es con referencia al inicio y salida de los

LecturalEscritura (UE):
Esta senal es generada por el MeU para controlar la direccion de la transferencia de datos en el bus de datos. Un estado bajo en las lineas de LecturalEscritura del PIA habilita la entrada y los datos son transferidos del MeV al PIA en la serial E. Un alto en las lineas de LecturafEscritura habilita al PIA para una transferencia de datos del MeU. Los buffers de salida del PIA son habilitados cuando Lasdirecciones son apropiadas y el puLsoE esta presente. Reset: Un cera activa la linea de reset, este estado es usado para poner todos los bits de registro en el PIA a un cero logico (bajo). Esta linea puede ser usada como un reset de encendido-apagado y un reset maestro durante la operacion del sistema.

2-46

CAPITULO II
Lineas Selectoras

HARDWARE

rcso, CSt y CS2):

Estas 3 sefiales de entrada son usadas para seleccionar el PIA. CSO y CS 1 tienen que ser altas y CS2 debe ser baja para 1a seleccion del dispositivo, La transferencia de datos es entonces ejecutada bajo el control de enable y las sefiales de LecturalEscritura. Los chips selectores de linea son estables en la duraci6n del pulso E. El dispositivo es deshabilitado cuando una de las lineas selectoras esta inactiva. Selector de Registro (RSO y RSl): Las dos lineas selectoras del registro son usadas para seleccionar varios registros interiores del PIA. Estas dos lineas son usadas en conjunci6n con el control interne de registro para seleccionar un registro particular que sera escrito LecturalEscritura. Interruptor directamente Request (IRQA e IRQB): en cada actividad de eventos prioritarios del MCV. Estas lineas son
0

leido. El registro y las

lineas selectoras son estables en la duracion del pulso E junto con la duracion del cicIo de

Un bajo activa el interruptor request (IRQA e IRQB) actua para interrumpir "drenadores" (el chip no carga al dispositivo ). Cada interrupcion de demand as de linea tiene dos banderas intemas que pueden causar que la interrupcion de demanda se vaya a cero. Cada bit bandera es asociado con una interrupcion, Tambien, 4 bits interruptores son proporcionados en el PIA, los cuales pueden ser usados para inhibir una interrupcion particular de un dispositive. EI interruptor en servicio del Mev puede ser usado por una rutina de software, en una prioridad basica, secuencialmente lee y evalua los dos registros de control en cada PIA para Lasbandera que esten colocadas.

Lineas Perifericas de lnterfase del PIA.


EI PIA provee dos puertos bidireccionales de 8 bits, 4 Iineas de control/interrupcion de linea para interaetuar con dispositivos perifericos. Puerto A (PAO-PA7): Cada una de las Lineasde datos puede ser programada para actuar como entrada
0

salida, en este caso se usa de este puerto, Lostres primeros bits de salida y los ultimos 5 bits de entrada como 10 muestra la Figura No. 2.10. Esto es realizado por un "1" en el bit correspondiente de registro de datos para estas Iineas las cuales son salidas. Un "Oilen un bit del registro de direccion de datos causa que la linea de datos actue como una entrada. Durante una operacion de lectura, los datos programados en lineas actuan como entradas

2-47

CAPITVLOII
apareciendo directamente en la linea del bus de datos del

HARDWARE

Mev.

En modo entrada., la

resistencia intema en estas lineas representa un maximo de 1.S .0.. Puerto B (PBO-PB7): Los datos de las lineas del puerto B del PIA pueden ser programados para actuar cada uno como entrada
0

salida en una manera similar que P AO- P A 7; en el proyecto que permitiendo la

nos ocupa se programaron todas como salidas, en el caso de la impresora, par este puerto saldran los datos sistema-impresora. Ellos tienen capacidad three-state entrada de una alta impedancia cuando la linea de datos es usada como entrada. En suma, los datos en Las lineas de datos (PBO-PB7) seran leidas pobremente desde estas lineas programadas como salidas cuando los voltajes esten par abajo de 2 volts para un "high"
0

arriba de 0.8 volts para un "low"; como salidas, estas lineas son compatibles can TTL

estandar.
Lineas de entrada (CAO y CA2): Las lineas de entrada CAO y CA2 son lineas de entrada soLamente que activan las banderas de interrupcion de los registros de control. La transicion activa para estas senales son tambien programadas par los dos registros de control. Control (CA2): La linea de control CA2 puede ser programada para actuar como un interruptor de entrada estandar. Control (CB2): Las Iineas de control CB2 pueden tambien ser programadas para actuar como un interruptor de entrada a como un control de salida. Como entrada, esta linea tiene alta impedancia de entrada y es compatible can TTL estandar. Esta linea es programada por el registro de control B. Con troles Internes Un RESET tiene el efecto de poner en cero todos los registros del PIA. Esto colocara al PAo-PA7, PBO-PB7, CA2 y CB2 como entradas y deshabilitara todos los interruptores. EI PIA puede ser configurado durante la ejecuci6n del programa el cual seguira al reset.
0

como un control de salida. Como salida, esta linea es compatible con TTL

2-48

CAPITULOIJ
Estas son 6 localizaciones

HARDWARE
dentro del PIA accesibles al bus de datos del MCU: 2

registros periferico s, 2 registros de direccion de datos y 2 registros de control. La seleccion de estas posiciones es control ada por las entradas RSO y RS 1 junto con el bit 2 en el registro de control como se muestra en la Tabla No. 2.12.
RSO

RSI 0
0 1

CRA-2
1 0

CRB-2
X X X

LOCALIZACION Registro A

DE SELECCION

0
0

Registro de Direcciones de Datos A. Control de Registro A Registro B Registro de Direcciones de Datos B Control de Registro B

0
1

X
X X X

0 0 0

1
0
X

1 1

Tabla No. 2.12: Direcciones Internas del MC6821 Registro de Control CRA y CRB: Los dos registros de control CRA y CRE permiten al MCU controlar la operacion de las 4 lineas de control CAl, CAl, CBO y CB2. En resumen ellos permiten a1 MeU habilitar las lineas de interrupci6n y monitorear el estatus de las banderas de interrupcion. Los bits del 0 al 5 de los dos registros pueden ser escritos
0

leidos directamente por el

MCU cuando los select ores apropiados y el registro selector de sefiales son aplicados. Los bits 6 y 7 de los dos registros son de solo lectura y son modificados por interruptores internos de las lineas de control CAl, CA2, CBO y CB2. Acceso de Direccien al Bit de Control (CRA2 y CRB2):
EI bit dos de cada registro de control (eRA y eRB), determinara la seleccion de

cada registro de salida 0 la correspondiente direccion de datos. Un 111" en el bit dos permite acceso al registro, accesando un "0" causa que el registro de direccion pueda ser direccionado. Banderas de Interrupcon (CRA6, CRA7, CRB6 Y CRB7): donde estas Lineas son

Los 4 bits de las banderas de interrupci6n son colocados por transiciones activas de senales en los cuatro lineas de control e interrupci6n programadas como entradas. Estos bits pueden ser colocados directamente desde el bus

2-49

CAPITULO 11

HARDWARE

de datos del MeV y ser reiniciados indirectarnente par una operacion de lectura de datos en la seccion apropiada. Control de las lineas de control CA2 y CB2, (eRA3, CRA4, eRAS, eRE3, CRB4 y

eMS):
Los bits 3, 4 y 5 de los dos registros de control son usados para controlar las lineas de control CAl y CB3. Estos bits determinan si el control de lineas sera un interruptor de entrada a una senal de control de salida. Si el bit CRAS (CRBS) es bajo, CA2 (CB2) es una linea interruptora de entrada similar a CAO (CB 1). Cuando CRAS (CRBS) es alto y CA2 (CB2) se vuelve en sefial de entrada y puede ser usado para controlar la transferencia de datos. Cuando este en el modo de salida CA2 y CB2 tienen ligeras diferencias en las caracteristicas de carga.

iFiQA

'"

1n-~oe uDI S~.I"" .... C;ont.o.l A

4D 39

CAl

co.,

00

"
"
2U )0 0_1i1 au'!.

Oil~" D"~-I;:t-on
Re-9''IoU!lr A

0'
O~

(00R.o,1


<>~
O~

1~

a ...... HIiI''I;

10681

0'

"
1&

~ PA'
6
p ...

r
aul' ....

PA~

a ..... l

A&gl\(~'

le,A,

"

9 P. ,

..

vLC

.. ,.... ;'0
P ..... 1

V~S

10

paQ

"
I,

P8'

cso n
CS'

m
R'50

2.

,. Pe"
11

.e' pe'

23 )6

,~ "6'
"S'

1E.,.. ... tJJ.ijo

AE5H

~.
h
R~11tll!" 8

IDQFl8

FtO"a J ~

.nc-..·w~ '5I.;1o~",,,,_ C,,"toO e

,8
I~

<:6' ce>

Figura No. 2.38: Diagrama a Bloques de la Estructura

del MC6821.

2-50

CAPITULO II
EI Control CRB-l): de las Lineas de Interrupcion

HARDWARE
CAl y CBI (CRA-O, CRB-O, CRA-l Y

Los dos bits de menor orden de los registros de control son usados para el control de las lineas de entrada CAl y CBL Los bits CRA-O Y CRB-O son usados para habilitar las sefiales de interrupcion del MCV IRQA y IRQB, respectivamente. Los bits CRA-l y CRB-l determinan la transicion activa de las sefiales de entrada de CAl y CB I. Para un mejor entendimiento del PIA en la Figura No. 2.38, se muestran el diagrama a cuadros de este circuito,
---

1otJ795

2-51

CAPITULO III
SOFTWARE
Las rutinas que se explicaran en este capitulo son las mas importantes del sistema y el programa completo se muestra en el Anexo A. AI inciar el sistema parte de la direccion $FFFE-$FFFF donde se guarda el vector de reset, aqui se guarda la direcci6n donde inicia el programa principal en nuestro caso es $COOO. El sistema

at dar reset

por alguna de sus formas primeramente configura el sistema,

inicializando puertos e inicializando dispositivos y verifica el estado de la Have como se menciono en capitulos anteriores, que contiene tres posiciones, con 10 cual 10 divide a su vez en tres partes
0

subsistemas; el Diagrama de Flujo No. 3.1 , el cual muestra estas tres


0

secciones, el denominado subsistema normal donde se encuentra la posicion para que el usuario (trabajador) cheque su entrada salida y se mantendra ahi mientras la Have no cambie de posici6n y de la misma forma se mantendra en los otros subsistemas; el subsistema de consulta, donde el supervisor pondra a tiempo el reloj, podra saber cuanto espacio de memoria de datos tiene disponible y obtendra listado de trabajadores en la base de datos y listado de los datos capturados; la tercer opci6n denominada subsistema de comunicacion es para transmitir y recibir informacion desde y hacia la computadora que manipulara los datos.

Diagrama

de Flujo No. 3.1: Interaccien

con la Llave Supervisora.

3-1

CAPITULO III
Los subsistemas los denominare EO, Ely

SOFTWARE
E2 en referencia a1 puerto y a1 dlgito

leido de el, par 10 que en 10 sucesivo 10 hare con esta referencia. Las rutinas implementadas para EO se muestran en el Diagrama de FlujoNo. 3.2.

Diagrama de Flujo No. 3.2: Rutinas del Subsistema Normal (EO). Donde LEE TECLA es una rutina donde el sistema esperara que se digite una tecla; al atrapar el sistema la primer tecla, a su vez retendra las horas y minutos en una variable de paso, al teclear cada digito se mostrara en el display el dato que se ha introducido

at

terminar de teclear la clave en 4 digitos, se pasara a la rutina de

CONSUL TA CLA VE, en ella se buscara en la base de datos fa clave correspondiente y si


10 encuentra la mostrara en el diaplay, en esta fase sera necesario confirmar si la clave tec1eada es la correcta oprimiendo la tecla de enter, se trasladara a la rutina de GUARDA E IMPRIME en esta rutina verificara si existe memoria suficiente para guardar datos de ser as! guardara clave y noras y minutos en la memoria de datos y adernas en forma opcional imprimira los datos en el formato siguiente: HH:MM DDIMMlAA

ecce

NOMBRE DEL EMPLEADO

Se dice en forma opcional par que de no encontrarse la irnpresora, la tamara como si existiera, es decir, la impresora es transparente para el sistema en este punto, Si el sistema verifica que no contiene memoria suficiente para guardar datos enviara un mensaje

3-2

CAPITULO III

SOFTWARE

de error a1 display y no permitiendo irnroducir datos hasta que el sitema libere a la memoria de su carga, De no encontrar la clave desplegara el mensaje "esta clave no existe" Durara unos segundos y retornara a la opcion inicial de esperar la prirnera tecta nuevamente. En caso de que el trabajador se entere que tecle6 en forma equivocada su clave, bastara con digitar la tecla de escape retomando a la condicion inicial de "espera la

primera teela".
Las rutinas que componen el susbsistema de consulta (E 1) se muestran en el Diagrama de Flujo No. 3.3.

CAMBIAFEC

Diagrama

de Flujo No. 3.3: Rutinas del Subsistema de Consulta (EI).

El menu del subsistema de consulta se muestra en la Figura No. 1.6, contiene dos opciones, por default es la uno, bastara con confirmar tecleando enter, movera de un renglon a otro para indicarle que opcion esta seleccionando. Si selecciona la primera opcion "(1) Poner a Tiempo", aparecera un nuevo menu la cual contiene dos opciones como 10 muestra la Figura No.1. 7, tec1eando 1 y enter entrant directamente a cambiar la fecha y 2 Y enter para cambiar la hora, para esto se tecleara 10 que se haya seleccionado en forma completa y en el formate indicado y bajo la responsabilidad del supervisor. LECTURA DE TECLADO Para leer el teclado, el cual se encuentra en el puerto A can 3 bits de entrada y cuatro bits de salida; por los bits de salida se envian un tren de ceros, ya que estaran
0

seleccionando

can los numeros 1 0 2 y tecleando enter, podra notar al hacer esto que el cursor "<" se

3-3

CAPITULO III

SOFI1VARE

amarrados a unos logicos a traves de una resistencia, y se hace un barrido a las entradas para detectar que switch del teclado ha sido cerrado (tecla oprimida); el diagrarna de flujo de esta rutina se muestra en el Diagrama de Flujo No. 3.4.

Diagrama de F1ujo No. 3.4: Rutina de Lectura de Teclado. SEENVIA SELEE TECLA

An
1

As
1

A4
1 1

A_,
0 0 0
1 1

1
1 1

1 0 1
1

1
1 1 1 1

1 0 0
0 1

A2 1 1 0 1
1 0

A] An
1 0 1 1

oPRIM
3 2
1 6

IDA

0 1 1 0
1

0
1

5
4

0 0 0

1 0 0 0 1 1 1

1 1
1

1
0 1 1 0
1

1
1 1

1 1

1 1 1
1

1 1 0
1

1 0

1 0 1 1 0 1

9 8 7 ENTER 0 ESCAPE

Tabla No. 3.1: Lectura del Teclado.

3-4

CAPITULO III

SOFTWARE

Se lee primero el tecLado si hay una tecla oprimida se espera ha que se suelte, de tal forma que no se repita el caracter ha que se hace mendon; la tec1a que se oprime responde a la Tabla No. 3.1. ELDISPLAY EI display es un dispositivo que contiene su propio microprocesador para controlar sus funciones de tal forma que cada una esta representada por un comando como se muestra en la Tabla No.3 .2. Codigo
INSTRUCCION
Borrar Display Regresa al Inicio Modo SET Control Display

R S
0 0 0 0 0

Rf
W
0 0 0 0 0

D7
0 0 0 0 0

D6
0 0 0 0

DS
0 0 0 0

D4
0 0 0 0

DJ
0 0 0 I

D2
0 0 I D RIL

Dl
0 1

DO I

DESCRlPCION
Borra display y regresa el cursor a la posicion inicial. Regresa el cursor


S B

at

inicio,

lID
C

Activa el Curses y Especifica 10 que se indica. Activa ON/OFF tros del Display. parame-

ON/OFF Corrimiento

del Display y Cursor.

SIC

* *

Mueve Cursor y Corre el Cambiando Display el Contenido de la DD RAM.

Funci6n SET

DL

Activa Direccion CORAM

0
0

0 0

0 I

AcG
ADD

Activa la Interfase de Longitud de Dato, No. de Linea y Fonts. Acti va 1a Direccion de CO RAM
Activa la Direccion de DD

Activa Direccion de DD RAM Escribe Datos en el CG oDD RAM

Escribe Datos

RAM Escribe Datos en la DO RAM 0 en la CO RAM.

00= 1: Incrementa en 1 L'D=:() Decrernenta en 1. S='1: Acompana Corrimeinto a1 Display S/C=l: Recorre el Dispaly S/C9): Mueve el Cursor R/L=l: Recorre a la Derecha R/L=O: ala Izquierda, DL=I: 8 bits DL=O:4 bits
N= I: 2 Lineas N=O: 1 Linea

DD RAM: RAM

de Despliegue de Datos. CG RAM: RAM Generadora de Caracteres, Aco: Direcciones de la CO RAM ADD: Direcciones de la DD RAM corresponde al

cursor.

F=l: 5xlO puntos

F~: 5x7 puntos

Tabla No. 3.2: Comandos del Display.

3-5

CAPITULO III

SOFTWARE

En este proyecto se configura el display a caracteres de 5x7 puntos, recorre el cursor, con corrimiento de la DD RAM a la derecha, con interfase de 8 bits y como el display es de 2 lineas se coloco N==1. Bastara seguir el diagrama mostrado en la Diagrama de Flujo No 3.5 para inicializar el display.

Diagrama de FIujo No. 3.5: Inicializacion del Display. Para desplegar informacion en el dispaly se guardo en un buffer que se reserve para ello en las direcciones $IBO a $lFF de la RAM, esto permite guardar la hora cambiante a cada segundo en el momenta preciso indicado por la interrupcion, Diagrama de Flujo No. 3.6. DISP PRN El despliegue se hizo atendiendo a las direcciones indicadas par el hardware de acuerdo al

Diagrama de Flujo No. 3.6: Rutina que Despliega la Informacion ButTer al Display.

Contenida

en el

3-6

CAPITULO 111

SOFTWARE

La rutina denominada delay es con el fin de estabilizar eLbus interno del display y es de algunos milisegundos; la rutina que lee el buffer del display y 10 envia a este depues de haber colocado el cursor en el inicio, aunque se puede desplegar directamente la informacion, es decir sin usar el buffer, se eligio el uso de este ya que la interrupci6n se hacia mas lenta y generaba errores visuales en las decimas de segundo (no errores reates).

LA IMPRESORA.
A la impresora se Ie asign6 tambien un buffer con el fin de optimizar el tiempo ya que la velocidad de escritura en la impresora es mas lenta que la eseritura en la RAM, y la posicion de los earacteres es

mas

sencillo en el buffer que en la impresora; se tienen dos

rutinas de impresion; una donde la impresora es transparente para el dispositivo y otra donde se verifiea la presencia y buen funcionamiento de esta. Arnbas son muy similares y 5610 difieren en Laparte donde se verifiea el estatus de la impresora, en el Diagrama de Flujo NO.3. 7. se muestra esta ultima opcion,

Diagrama de FIujo No. 3.7: Rutina que Imprime la Informacion ButTer de la Impresora,

Contenida

en el

LA INTERRUPCION DE TIEMPO.
Se crearon variables de tiempo, como 10 son CENTSEG,

SEGUNDOS,

MINUTOS, RORAS, DIA, MES Y ANO para guardar temporalmente estas referencias de tiempo; para los dias del mes se creo una tabla que informa del numero de dias que tiene eada uno de eUos, esta tabla cambia en el segundo mes de acuerdo si es bisciesto
0

3-7

CAPITULO III

SOFTJiVARE

no. Para generar la interrupcion se coloco un $80 en TMSK2 y TFLG2 cuya direcci6n es la $B024 y $B025.
$B024 $B025

Figura No. 3.1: Representacien

del Registro TMSK2 del Timer.

A1generarse la interrupcion incrementa las centesimas de segundo en CENTSEG y cuando sean 60 borra esta variable e incrementa SEGUNDOS de igual forma se haee con el rest a de las variables; eada vez que se genera la interrupcion envia at buffer del display la feeha y la hora; tambien verifica si es

ana

bisciesto para modificar el numero de dias del

mes de Febrero. La rutina de interrupcion se muestra en el Diagrama de Flujo No. 3.8.

Diagrama

de Flujo No. 3.8: Rutina de la Interrupchin

de Tiempo.

La rutina PONE _FYH es donde se increment an los segundos, minutos, horas, dias, meses y afios, y se colocan en las variables correspondientes. La rutina RAMFYH _COL coloea la fecha y hora en el buffer del display en la posicion eorrespondiente.

3-8

ANEXOA
RUTINAS DEL PROGRAMA PARA EL MICROCONTROLADOR MC68HCll

A-I

RUTINAS DEL RELDJ CHECADOR MULT/ENTRADA


ORG$COOO

ANEXOA

MINUTOS SEGUNDOS CENTESEG AYO

HORAS

IvIES
DIA CVE 2 CVE 1 CONT_TECLA PAS01 HOR_CHECAD ESTAT PRN

UMC
DU

EQU $0100 EQU $0101 EQU$OlO2 EQU $0103 EQU $0104 EQU$0105 EQU $0106 EQU $0107 EQU$0108 EQU$0109 EQU $OlDA EQU $0 lOB EQU $0100 EQU$lOE EQU$lOF EQU$4000 EQU$4FFF EQU $3000 EQU$3FFO EQU$3FFE

*DOS LOCALIDADES $lOB Y $10C *BYTE DE EST AIDS DE LA llvIPRESORA *BYfE DE UNIDADES DE J\.ffi....LAR CENIENAS Y *DECENAS Y UNIDADES PARA *CANTIDAD DE RAM DE DATOS INI_RAM_NOM

FIN _RAM _NOM DAT_INI_RAM DAT_FIN_RAM Dffi_ULT_CVE

*INICIA RAM DE DATOS *FINALIZA RAM DE DATOS *CONTIENE LA PRIMERA DIRECCION *LIDRE PARA DATOS

TECLA EQU SBOOO ************************* DIRECCIONES DE LA Uv1PRESQRA (PIAl) EQU$CCOO CONTROL_PRN EQU $Ce02 DATOS PRN EQU$0130 HOR __ _PRN B EQU $0143 FEC_B_PRN EQU$014D CVE_B_PRN EQU $0152 NOM B PRN *FIN DEL BUFFER + 1 (2 LINEAS) EQU $016A FIN 1_B_PRN * FIN DEL BUFFER + 1 (3 LINEAS) EQU $0188 FIN_BU_PRN * FJN+ 1 SEGUNDA LINEA DEL BUF EQU$OI6A I_R2B_PRN * T AlvIBIEN INICIO DE LA TERCERA FGB _LIP *FIN DE CARGA DE LINEA UNO EQU $14B *FIN DE CARGA DE LINEA DOS EQU$168 FGB_L2P *FIN DE CARGA DE LINEA TRES EQU $185 FGB_L3P ************************'" DATOS DEL OISPAL Y RDDC EQU $dOOO RDOD EQU $dOOI **uu*******************DATOS DEL BUFFERS DEL DISPALY B_DISl_RAM EQU $OlBO *BASE del BUFFER DISPLAY DIS_REN2 EQU $0108 *INICIO DEL RENG. 2 EN BUFFER INI_DIS_NOM EQU $OIDO *INIClA EL NO:tvIBRE EN EL BUF. DlSP. DIS_B_HOR EQU $OIDO *INICIA LA HORA EN EL BUF. D1SP. F_BUF _DISP EQU $0200 *FIN DEL BUFFER DEL DISPLAY + 1 PON_TIEMPO EQU $01B8 *INICIO DELMENSAJE RENG. 1 EN BUF.DlSP. POS_CONS EQU $01E2 *INICIO DEL MSJE. CONSULTAR Fl._PT EQU$OlCC *POS. DE LA FLECHA EN EL BUFFER Fl._CONSU EQU $OlF3 *POS. DE FLECHA DE CONSULTAR

A-2

RUTINAS DEL RELO] CHECADOR MULT/ENTRADA


M21_RAM FL M2IR M22_IN
FL M22 IN FL_M23_IN EQU$OlBA EQU$OlCB EQU $OlD9 EQU $OlFl

ANEXOA

TEC MIl FYH_lEO


FYH IF8

EQU$OIFF EQU$OIB9 EQV$OIEO EQU $OIF8

*DESPLIEGA:(l)RAM UTIL *FLECHA DE RAM UTIL *IMPRIME:(2) NOMBRES *FLECHA IMPRlME NOMBRES *FLECHA IMPRIME DATOS *POS. DEL BUF DE < 1 <~~ TECLEE *POS. DONDE INICIA CAMBIO DE FECHA *POS. INICIA CAMBIO DE HORA

CONFIGURACION

DE PUERTOS Y DISPLAY

JSR CONF _DIS


ldaa#$7e
staa

INIT_PIA

$OOdO ldx #reloj stx $OOdI ldaa#$80 staa $B024 LDAA #00 * INIC. REG. DE CONTROL DEL PIA STAA $CCOI STAA$CC03 LDX #$0704 *INICIALIZA PIA STX CONTROL_PRN LDX #$OFF04 STX DATOS PRN
LDAA#$07

STAA CONTROL_PRN

PROGRAMA PRINCIPAL

JSR BORRA_ DIS


LDX#$FF

JSRESPERAI AQUI_DIAG FUE EO JSREO JMP AQUl_DIAG


FOE El

JSREI
JMP AQUI_DlAG

FUE E2
FIN PAL

JlvIP AQUI_DlAG

JMP AQUI_DIAG

A-3

RUTINAS DEL RELD} CHECADOR MULTIENTRADA

ANEXOA

FEe_PON_RAM:

PONE LA FECHA EN LA RAM DE DATOS CADA QUE SEAN LAS 00:00:00 LOX OIR_ULT_CVE

CPX #DAT_INI_RAM
BEQ PONE _FEC_RAM LDXHORAS

CPX#$OQ
BNE FFEC_RAM. LDAASEGUNDOS CMPA#5

BGTFFEC
LDXDIR DEX DEX DEX DEX LDAA.X

RAM ULT CVE

CMPA#'/' BEQ FFEC_RAM


PONE_FEe_RAM

LOX DIR_ULT_CVE
LDAA#'/'

STAA,X
INX LDAADIA

STAA,X
INX LDAAMES STAA,X

INX
LDAAAYO STAA.X

INX STX DIR_ ULT_ CVE


FFEC_RAM RTS

El: RUTINA QUE ENTRA A LA MODALIDAD El EN RAM

El
LDAA#$20 JSR COL _BL_ DIS JSR DISP _PRN JSREI MENUI RTS

*DESPLIEGA BUFFER DEL DISPLAY

FIN El

A-4

RUTINAS DEL RELD] CHECADOR MULT1ENTRADA

ANEXOA

El_MENUl: RUTINA QUE COLOCA EN EL DISPLAY EL MENUl


El ~NUI LDAA #$1 STAAPASOI LDY #PON_TIEMPO LDX #M _I JSR B_MSJE_DIS LDY #POS CONS LDX#M 2 JSR B_MSJE _DIS JSR DISP _PRN JSR ESPERA _lECLA CMPA #$1 BNEFUE CONS STAAPASOI LDAA #$20 ST AA FL CONSU LDAA#'<' STAAFL PT JMPEl_OT_TEC CMPA#$2 BNE EI_ESC STAAPASOI LDAA#$20 STAAFL PT LDAA #'<' ST AA FL_ CONSU JMP El~OT_TEC CMPA#$B BEQF_EI_MI CMPA#$A BNE EI_OT_TEe LDABPASOI CMPB#$I BEQPON_T CMPB #$2 BEQ CONSUL TAR LDY #TEC_Mll LDX #HOR_Mll JSR B_MSJE_DIS LDY #DIS_REN2 LDX#C_MSJE JSR B_MSJE_DIS LDY #FYH_lEO WX#FECHA_ JSR B_MSJE_DIS JSR DISP _ PRN

*Y *X

POSICION DEL NOM EN BUF. POS. DEL MSJE EN RAM ,. RUTINA PARA COLOCAR MSJE EN BUF.

EI_OT_TEC

FUE_CONS

EI_ESC El FUE CR

PON T

JSR CO_FYH_DI

*DESPLIEGA BUF. DEL DISPLAY *COLOCA PECHA Y HORA EN DlSP.

A-5

RUTINAS DEL RELD] CHECADOR MULTIENTRADA


IMPF CONSULTAR LDY#M21 RAM LDX #M_DES_2_1 JSR B MSJE _ DIS LDY#M22_IN LDX #M_IMP _2_2 JSR B_MSJE_DIS JSR MENU2_El RTS El Ml

ANEXOA

F El Ml

CO _FYH_DI:

COLOCA PECHA Y HORA EN DISPLA, ADEMAS ACTUALIZA FECHA YHORA

CO FYH DI
LDAA#$l *COLOCAELDEFAULT=l STAAPASOI JSR ESPERA 1ECLA *REGRESA EN A LA 1ECLA OPRIMIDA CMPA#$l BNEFYH 2 STAAPASOI LDX#FECHA_ LDY#FYH lEO JSR B_MSJE_DIS
JMP

FYH_OT1EC

FYH OTTEC

FYH 2

CMPA#$2 BNEFYH ESC STAAPASOI LDXflHORA_ LDY#FYH lEO

JSR B_MSJE _DIS JMP FYH OTTEC


FYH_ESC

FYH_CR

GMPA#$B BEQ FCO _FYH_ DI CMPA#$A BNE CO_ FYH_DI LDAAPASOI CMPA #$1

BNEFUE2

FYH
*FECHA A LA RAM DEL DISPLAY FUE2 _FYH

JSR FEC _RYD CMPA#$2

BNE CO_FYH_DI
JSR HOR RYD *HORA A LA RAM DEL DISPLAY

FCO_FYH_DI

JMP FYH_ OITEC RTS

A-6

RUTINAS DEL RELDJ CHECADOR MULTIENTRADA

ANEXOA

FEC_RYD: RUTINA QUE LEE EL 1ECLADO Y COLOCA EN LA RAM 20. RENGLON LA FECHA Y LA ACTIJALIZA FEC_RYD LOY #DIS REN2 JSRLEE 2T STAADIA LDAA#'{' STAA ,Y INY JSRLEE 2T STAAIVIES LDAA#'{' STAA,Y INY

JSRLEE_2T
FFEC RYD STAAAYO RTS

LEE_2T:

LEE DOS TECLAS LAS COLOCA EN EL DlSPAL Y Y LAS TRANS FORMA A BCD EN UN BYTE

LEE_2T TECI PSHY JSR ESPERA _TECLA CMPA#$9 BGTTECI TAB

ROLB
ROLB

ROLB
ROLB ANDB#$FO PULY ADDA#$30 STAA$120 STAA,Y INY PSHB PSHY JSR ESPERA TECLA CMPA#$9 BGTTEC2 TAB

TECl

PULY
ADDA#$30

STAA,Y INY
PULA

A-7

RUTINAS DEL RELD] CHECADOR MULTIENTRADA


ABA FLEE
2T RTS

ANEXOA

HOR_RYD:

COLOCA EN EL 20. RENGLON LA NUEVA HORA Y LA ACTUALIZA EN LA RAM DE HORA

HOR_RYD LDY#FYH IF8 JSRLEE 2T STAAHORAS LDAA#':' STAA,Y !NY JSRLEE_2T STAA MINUTOS LDAA#':' STAA,Y

£NY JSRLEE 2T
FHOR RYD STAA SEGUNDOS RTS

MENU2_El:

RUTINA QUE SELECCIONA VER RAM UTIL, IMPRIME NOMBRES o IMPRlME DATOS

MENU2 El .M2 OT TEC

JSR ESPERA._TECLA
CMPA#$l

ENE FUE _R_UTIL


STAAPASOI LDAA#$20 STAA FL_M22_IN STAA FL_M23_IN LDAA#'<' STAAFL_M21R JMP M2_OT_TEC CMPA#$2

FUE R UTIL

ENE 1M NOMBRES
STAAPASOI LDAA.#$20 STAA FL_M21R STAA FL__ 23_IN M LDAA#'<' STAA FL_M22_IN

IMP M2_OT_TEe
1M NOMBRES CMPA#$3 BNE M2 _ESCAPE STAAPASOI LDAA#$20 STAAFL M21R

A-8

RUTINAS DEL RELDJ CHECADOR MULTIENTRADA


STAA FL M22 IN LDAA#'<' STAA FL_M23_IN JMPM2 OT TEe CMPA#$B BEQ F_EI_MENU CMPA#$A BNE M2_OT_TEC LDABPASOI CMPB#$l BEQVE_R_U CMPB #$2 BEQ IMP_NOMS CMPB#$3 BEQIMP_DAT JSR VE_RAM_D IMP F_El_MENU IMP NOMS JSR CHECA_PRN LDAA ESTAT_PRN CMPA#$1 BEQ NOEXl_PRN JSR IMP CABEZA LDX #INI_RAM_NOM PSHX LDX #FGB _LIP STX BU_PRN_FIN illY #HOR_B_PRN LDAA#$20 JSR COL_eAR_BU LDY #HOR_B_PRN

ANEXOA

M2_ESCAPE M2_FUE_CR

VE_R_U

****

LE_OTNOM_R

*FIN DEL RENGLONI


*HSTA AQill CARGA *IN1CI0 DE CARGA *CARACTER A CARGAR (" ") ·COLOCA EN EL BUFFER

PULX CPX #FIN_RAM_NOM


BEQ F_El_MENU LDAA,X CMPA#$FF BEQ F_E 1_MENU JSR IMP _ CLAVE

*CLA VE EN EL BUFFER L 1

INX
£NY LDAA,X JSR IMP_CLAVE *CLAVEENELBUF_ Ll

INY
LDAA#$20 STAA,Y OT _ NOM CAR

LDAB #22 INX


(NY

LDAA,X STAA,Y DEeB BNE OT_NOM_CAR PSHX

A-9

RUTINAS DEL RELDJ CHECADOR MULT1ENTRADA


LOX #CVE_B_PRN

ANEXOA

STX BU_PRN_FIN LDX #HOR_B_PRN JSR IMP BU PRN NOEXI PRN


IMP DAT PULX INX JMP LE _ OTNOM R

* PARA

IMPRIMIR *OOCIO DE IMPRESION *IMPlUME

* POS. DE FIN DE BUF PRN

*LEE OTRO NOMBRE DE RAM

F_El_MENU

JSRPRN DAT RTSPRN NOM

VE_RAM_D: VE RAM _ D

eUENT A LA RAM DE DATOS DISPONIBLE Y LA COLOCA EN EL

DISPLAY

CLRPASOI CLRUMC CLROU LOX OIR_ULT_CVE LDD #DAT FIN RAM SUED DIR ULT CVE PSHB PSHA PULX INX OT_eDENTA
DEX BEQ MUEST_RAM_D

IdaaDU
ADDA#$l TAB

DAA STAADU CMPB #$9A


BNE O1'_ CUENT A

CLRA STAADU LDAAUMC


ADDA#$l TAB

DAA STAAUMC CMPB #$9A


ENE OT_eUENT A

CLRA STAA UMC LOAAPASOI


ADDA#$l DAA

STAAPASOI JMP OT _CVENT A

A-lO

RUTINAS DEL REIO] CHECADOR MULTIENTRADA


MUEST_RAM_D LDAA #$20 JSR COL_BL_DIS LDAAPASOI ANDA#$F ADDA#$30 LDY #DIS REN2 *ES UN BLANCO *BLANCOS AL 2DO. RENG. DEL DISP

ANEXOA

*POSICION DEL CARAClER

STAA,Y INY
LDABUMC JSRDER ROTA ADDB#$30 STAB,Y INY LDAAUMC ANDA#$OF ADDA#$30 STAA,Y

!NY
LDABDU JSR DER_ROTA ADDB#$30 STAB,Y

!NY
LDAADU ANDA#$OF ADDA#$30

STAA,Y
!NY INY LDX#CAR DIS JSR B_MSffi_DIS JSR ESPERA TECLA CtvrPA #$8 BNERA_TEC RTS

RA

rae

FVE RAMO

PRN_DAT:

IMPRIME DATOS DE LA RAM DE DATOS

PRN DAT JSR CHECA_PRN LDAA ESTAT_PRN


CMPA#$l BEQNOEX3_PRN ****** JSR CABEZAl_PRN LDX IDA T_INI_RAM *CARGA EN X EL INICIO DE LA RAM DE DATOS LDY #HOR _B _PRN *INICIO DE CARGA PARA BUF PRN LE2_OTNOM_R JSR VER_DlAG PSHX *RUTINA PARA IMPRIMIR FECHA, REGRESA * LA POS. DEL DATO SIGUIENIE H:M

A-II

RUTINAS DEL RELD} CHECADOR MULTIENTRADA


LDX #FGB_LIP STX BU_PRN_FIN LDY #HOR B PRN LDAA#$20 JSR COL_CAR_BU LDY #HOR_ B_PRN PULX CPXDIR_ULT_CVE BGE FPRN_DAT BYTE_A_2ASC LDAA#':' STAA,Y !NY JSR BYTE_A_2ASC LDAA#" STAA,Y INY JSR BYTE A 2ASC JSR BYTE_A_2ASC PSHX LDX #CVE _ B_PRN STX BU_PRN_FIN LDX #HOR_B_PRN JSRIMP_BU_PRN PULX JMP LE2_OTNOM_R NOEX3 PRN ********
FPRN DAT

ANEXOA

*FIN DEL RENGLONI *HST A AQUI CARGA *POS. DEL INICIO DEL RENG. 1 DE BUF PRN *CARACTER A CARGAR (" ") *COLOCA EN EL BUFFER *PQS. DEL INICIO DEL RENG. 1 DE BUF PRN *ES LA ULTIMA DIRECCION DE DATOS? *SI ES ASI, SALTA AL FINAL *SI NO SALTA A LA RUTINA SIG. JSR *TRANSFORMA BCD A DOS ASCII *COLOCA LOS DOS PUNTOS *TRANSFORMA BCD A DOS ASCII *COLOCA UN ESPACIO EN BLANCO *LEE E IMPRIME PRIMER BYTE DE CVE *LEE E IMPRIME SEGUNDO BYTE DE CVE *GUARDA EL APUNT ADOR DE DATOS * POS. DE FIN DE BUF PRN * PARA IMPRIMIR *INICIO DE IMPRESION *fMPRIME *EXTRAE EL APUNT ADOR DE DATOS *LEE OTRO NOMBRE DE RAM

RTS

BYTE_A_2ASC: LEE UN BYTE Y La TRANSFORMA EN ASCII COLOCANDOLO EN EL BUFFER DE LA IMPRESORA Y LO IMPRIME BYTE A 2Ase LDAB,X PSHX JSRDER_ROTA LDX#TABLA JSRRCOLOCA
!NY

PULX LDAB,X PSHX LDX#TABLA JSRRCOLOCA PULX

*SI NO ES FIN DE DATOS *CARCA UN BYTE *GUARDA POS. DEL DATO *LO ROT A B<- DATO ROT ADO (DECENAS) *APUNT A A LA TABLA *COLOCA VALOR EN BUFFER DEL DlSP. * INCREMENT A POS. DEL BUP. PRN *EXTRAEPOS. DELDATO *EXTRAE DATO *EXTRAE EL EQUIV ALENTE *LO COLOCA EN EL BUF. PRN

A-12

RUTINAS DEL RELOJ CHECADOR MULTIENTRADA


INY INX RTS *TNCREMENTA POS. DEL BUF. PRN *INCREMENTA POS. DEL DATO

ANEXOA

FBYTE 2ASC

VER_ DIAG: VERIFICA EN LA RAM DE DATOS SI LA POSICION ES "/" DE SER ASI, IMPRIME FECHA. VER DIAG LDAA,X CMPA#'!' BNE F VER DIAG INX LDY#FGB LIP STY EU_PRN_FIN LDY #HOR B PRN LDAA#'*' JSR COL_CAR _ BU LDY #CVE B PRN LDY#FGB L2P STY BU_PRN_FIN WY#CVE B PRN *ES '/' EL DATO DIRECCIONADO EN X? * 51 NO, FINALIZA *SI 51, INCREMENTA A POS. DEL DIA *ULTIMA POSICION DEL RENGLON 1 BUF PRN *LO ALMACENA *POS. DEL INICIO DEL RENG. 1 DE BUF PRN *COLOCA ,*, EN BUF PRN *LOEJECUTA *CARGA INICIO DE RENG 2 DE BUF PRN *ULTIMA POSICION DEL RENGLON 2 BUF PRN -to ALMACENA *POS. DEL INICIO DEL RENG. 2 DE BUF PRN *COLOCA ' , EN BUF PRN WAA#" "'LQEJECUTA JSR COL_CAR_BU *y <-- POS. DE BUF. DE PRN RENG. 2 LDY #CVE_B_PRN JSR BYTE_A_2ASC *LEE DIA Y LO TRT ANSFORMA A ASCII WAA#'I' *CARGA'/' STAA,Y "'LO COLOCA EN BUF PRN "'INCREMENT A POS. DEL BUF PRN INY JSR BYTE_A_2ASC *LEE MES Y LO 1RANSFORMA A ASCII *CARGA'/, LDAA#'I' *LO COLOCA EN BUF PRN STAA,Y "'INCREMENT A POS. DEL BUF PRN !NY JSR BYTE A 2ASC "'LEE A¥O Y 10 TRANSFORMA A ASCII *ULTIMA POSICION DEL RENGLON 1 BUF PRN LDY#FGB L3P *LO ALMACENA STY BU_PRN_FIN *POS. DEL INICIO DEL RENG. 1 DE BUF PRN LDY#EINI_B_PRN *COLOCA '*' EN BUF PRN LDAA#'*' *LOEJECtrrA JSRCOl_CAR_BU PSHX LDX #FIN BU PRN * POS. DE FIN DE BUF PRN STX BU_PRN_FIN * PARA IMPRIMIR *INICIO DE IMPRESION LDX #HOR_B_PRN JSR IMP_BU_PRN *IMPRIME

F_VER_DIAG

PULX
RTS

CABEZA1_PRN:

IMPRIME EL ENCABEZADO DE REPORTE DE DATOS DE LA RAM DE DATOS

CABEZAI PRN JSR IMP_1CABEZA LOX #16 CABEZA "'CVE. NOJ\.1BRESEN RENG. 1

A-I3

RUTINAS DEL RELD] CHECADOR MULT/ENTRADA


LDY #HOR_B _PRN JSR B_MSJE_DIS LOX #FGB _L2P STX BU_PRN_FIN LOY #CVE_B_PRN LOAA#'==' JSR COL_CAR_BU LDX #I_R2B_PRN
STX BU_PRN_FIN

ANEXOA

"'FIN DEL RENGLON2


*HST A AQUI CARGA *INICIO DE CARGA

"'CARACfER A CARGAR * COLOCA EN EL BUFFER * POS. DE FIN DE BUF PRN


'" PARA IMPRIMIR *INICIO DE IMPRESION

LDX #HOR_B_PRN JSR IMP BU PRN


F2 IMP CAB RTS

"'IMPRIME

IMP _ CABEZA:

IMPRIME EL ENCABEZADO DE REPORTE DE NOMBRES DELA RAM DE DATOS

lMP_CABEZA JSR IMP 2CABEZA LDX #15 CABEZA illY #HOR B PRN JSR B_ MSJE DIS LDX#FGB L2P STX BU_PRN_FIN LDY #CVE_B_PRN *CVE. NOMBRES EN RENG. I *FIN DEL RENGLON2 "'HST A AQUI CARGA *lNICIO DE CARGA *CARACTER A CARGAR ., COLOCA EN EL BUFFER ., POS. DE FIN DE BUF PRN * PARA IMPRIMIR *INICIO DE lMPRESION *IMPRllvIE

LDAA#''='

JSR COL _CAR_BU LDX #I_R2B_PRN STX BU_PRN_FIN LDX #HOR_B_PRN JSR IMP _BU_PRN
P IMP CABEZA

RTS

IMP_1 CABEZA:

IMPRIME PARTE DEL ENCABEZADO DE REPORlE DE NOMBRES DE LA RAM DE DATOS

IMP ICABEZA JSR CHECA PRN LDAA ESTAT PRN CMPA#$OO BNE F_IMP _ CABEZA LDX #Il_CABEZA LDY #HOR_B_PRN JSRB_MSJE_DIS LDX #I21_CABEZ LOY #CVE_B_PRN JSRB_MSJE_DlS LDX #I_R2B_PRN STX BU_PRN_FIN LDX #HOR_B_PRN JSR IMP _BU_PRN LDX #FGB _LIP

"'SEP SEIT DGIT ITCV "'PERSONAL DADO DE ALTA


...POS. DE FIN DE BUF PRN '" PARA IMPRIMIR

*INICIO DE IMPRESION *IMPRIME *FIN DEL RENGWN2

A-14

RUTINAS DEL RELOJ CHECADOR MULTJENTRADA


STX BU_PRN]IN LDY #HOR_B_PRN LDAA#$20 JSR COL CAR EU
JSRFYH B PRN

ANEXOA

LDX#FGB L2P STX BU PRN FIN LDY #CVE B PRN LDAA#'=' JSR COL CAR BU LDX #1 R2B PRN STX EU PRN FIN LDX #HOR B PRN JSR IMP_BU_PRN F_IMl_CAB RTS

*HST A AQUI CARGA *INICIO DE CARGA *CARACTER A CARGAR * COLOCA EN EL BUFFER "'FECHA Y HORA EN BUF. PRN *FIN DEL RENGLON2 *HST A AQUI CARGA *INICIO DE CARGA *CARACTER A CARGAR * COLOCA EN EL BUFFER * pas. DE FIN DE BUF PRN PARA IMPRIMIR *INICIO DE IMPRESION *IMPRIME

IMP 2CABEZA:

IMPRIME PARTE DEL ENCABEZADO DE REPORTE DE

NOIvlBRES DE LA RAM DE DATOS IMP 2CABEZA JSR CHECA _PRN LDAA ESTAT PRN
CMPA#$OO BNE F IMP CABEZA

LDX HIl_CABEZA LDY #HOR B PRN JSR B_MSJE _DIS LDX #12_CABEZA LDY #CVE_B_PRN JSR B_MSJE_DIS LDX #I_RlB_PRN STX BU_PRN_FIN LDX #HOR B PRN lSR IMP _BD_?RN LDX #FGB_LlP STX BU_PRN_FIN LDY #HOR B PRN LDAA#$20 JSR COL_CAR_BD JSR FYH_B_PRN LDX #FGB_L2P STX BU_PRN_FIN LDY #CVE B PRN LDAA#'d JSR COL_eAR_BU LDX #I_R2B_PRN STX BU_PRN _FIN LDX #HOR_B_PRN JSR IMP _BU_PRN F_IM2_CAB RTS

*SEP SEIT DGIT ITCV

* POS.

* PARA IMPRIWR

DE FIN DE BUF PRN

*OOCIO DE IMPRESION *IMPRIME *FIN DEL RENGLON2 *HSTA AQUI CARGA *INICIO DE CARGA "'CARACTER A CARGAR * COLOCA EN EL BUFFER *FECHA Y HORA EN BUF. PRN *FIN DEL RENGLON2 *HST A AQUI CARGA *INICIO DE CARGA *CARACTER A CARGAR * COLOCA EN EL BUFFER * POS. DE FIN DE BUF PRN * PARA IMPRIMIR *INICIO DE [MPRESION *IMPRIME

A-1S

RUTINAS DEL RELD} CHECADORMULTIENTRADA

ANEXOA

IMP _CLAVE: JMPRIME LA eLA VE EN LE REpORTE DE N'OMBRES DE LA RAM DE DATOS IMP_CLAVE RORA RORA RORA RORA ANDA#$OF ADDA#$30 STAA,Y

!NY
LDAA,X ANDA#$OF ADDA#$30 STAA,Y RTS

IMP_F_CVE

EO: RUTINA QUE ENTRA A LA MODALIDAD EO EN RAM EO JSR DlSP _PRN JSR TECLADO RTS *DESPLIEGA BUFFER DEL DISPLAY *LEE DEL TECLAOO

FIN EO

TECLADO:

LEE LA TECLA, LA ROT A, LA DESPLIEGA Y LA ALMACENA EN

RAM
TECLADO LDAA#$20 JSR COL BL DIS JSR DISP PRN LDAA #$00 ST AA CaNT_TECLA JSR ESPERA _TECLA C:MPA #$FF BEQ FFIN _TECLA eMP A #$A "'COLOCA BLANCOS EN EL RENG. 2 *BUFFER DEL DISPLAY AL DISPLAY ·CONTADOR DE TECLAS *REGRESA EN A LA TECLA OPRIMIDA ·SI NO ES TECLA REGRESA

TECLA NUEVA

BEQ ES_ CAR_RET


CMP A #$8 BEQ VE_ESCAPE PSHA JSR DISP _1ECLA PULA LDAB CaNT_TECLA INCB STAB CONT _ TECLA CMPB#$OI

* ES <CR>
* ES <ESC>

* FOE CARACTER
*AQUI YA SABEMOS QUE FOE CARAerER

PRIMERA

A-16

RUTINAS DEL RELOJ CHECADOR MULTIENTRADA


BNESEGUNDA ROLA ROLA ROLA ROLA ANDA#$FO STAACVE 2 JMP TECLA NUEVA CMPB#$02 BNETERCERA LDABCVE 2 ABA STAACVE_2 JMP TECLA _NUEVA J1vl.P ES ESCAPE CMPB #$3 BNECUARTA ROLA ROLA ROLA ROLA ANDA#$FO STAA CVE_1 JMP TECLA_NUEV A CMPB#$4 8NE TECLA_NUEVA LIJAB CVE_l

ANEXOA

SEGUNDA

VE ESCAPE TERCERA

CUARTA

ABA

FFIN TECLA ES_CAR_RET

STAACVE 1 JSR BUSCA_ CVE IMP TECLA NUEVA IMP FIN_TECLA LDAB CONT_TECLA CMPB #$4 BNE TECLA_NUEVA

~SI ENCUENIRA IMPRIME "'REGRESA Y BORRA RENG. 2 '" <ENTER> *B = NUMERO DE TECLAS

CONT3 L G

JSR GUARDA DATOS LDX #CVE B PRN '" FEe _B_PRN :" POS. DEL BUF DE PRN LOY #DIS REN2 '" DIS_B _HOR = POS. DEL BUF DE DlSP LDAB #27 LOAAO,Y STAAO,X INX £NY DECB "'CONTINUA LEYENDO Y GRABANDO BNE CONT3_L_G JSR CHECA PRN LOAA ESTAT_PRN CMPA#$} *AQUI FALTA MSJE ERR_PRN BEQ NOEX2_PRN LDX #FIN_BU_PRN * POS. DE FIN DE BUF PRN STX BU _PRN _:FIN * PARA IMPRIMIR LDX #BOR B PRN -n-rcro DE IMPRESION JSR IMP_BU_PRN

A-I7

Potrebbero piacerti anche