Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TESIS QUE PARA OBTENER EL GRADO DE MAESTRO EN CIENCIAS DE LA INGENIERIA ELECTRICA CON ESPECIALIDAD EN ELECTRONICP
PRESENTA
1"--\
. Me.
~s~..>~
FI t--u::::: ~c,.C1S
A.1_
FONDO TEalS
Los Miembros del Comite aprueban la Tesis de Maestria de 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.
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.
INDICE
PAGINA INDICE INDICE DE FIGURAS INDICE DE TABLAS
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
.
. . . __. . .. . . . ..
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
. 2-12 . 2-13 . .
.
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
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
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
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
RAMDENOMINADA
B_MSJE_DlS:
A-IS
EN EL
COLOCA
BUFFER
DEL
DISPLAY A -19
1-6
INDICE
lNDICE DE RUTINAS
FYB_B_PRN:
PAGINA
A - 20 A-21 A- 22 A- 22
'"
A- 23 A-23
A-23 A-24
VERIFICA SI EXISTE IMPRESORA, 0 TIENE ALGUN ERROR COLOCA EL CARACTER EN LA IMPRESORA EJECUTANDO
A - 24 A- 24
A- 25 A- 25
,..........
COLOCA EN LA :MEMORIA FECRA Y HORA COLOCA FECHA Y HORA EN EL BUFFER DEL DlSPLAY
A- 2 6
A-27
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,
DE
SE CAPTURAN
LAS TARJET AS
SE PROCESA LA INFORMACION
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
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
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.
1-2
CAPITULO I
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
el diagrama
a bloques
de la estructura
general
de este
dispositivo.
Tablero de Potencia
~;--;:-;-:::::::::::::~~J-I(
IMPRESORA -.......
TECLADO
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
computadora)
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.
Retardo
EnviaError
Diagrama
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
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
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
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
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
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
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
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=
=
0
Figura No. 1.6: Menu principal del Subsistema de Consulta. Seleccionando 1 6 2 el cursor
«)
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
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
eVE. NOMBRE
0101 TOMAS GARZA WONG 0102 FCO RODZ. PRADO
CVE. HORA
*************************
02/01195
*************************
0101 07:25 0102 19:45
RAM de Datos
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
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
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
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.
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
"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
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
·..
-
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
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.
RAM
DE
E Rlw
WE
de la Ram del Sistema.
CE
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
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
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
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
23 24 25 26 27
28 29
7 8 10 12 14
9 DAT08
--
ACK SINPAPEL
-
30
31
OOT
ERROR TIERRA N.C. N.C.
E S
32 33 34 36
35 N.C.
Centronics de la Impresora.
STROBE
DATO
1-8
min 1 s-JI ,
-!- -lI
I -if- -.~-.-~
ir ;
."..
I ,
1-50 S
--'
min 1 s
BUSY
ACK
Aprox, 5 s - ~ ,
U
--it-, 2-7
CAPITULO II
HARDWARE
BUSY ACK
5).1S
--_----·L
--~
$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
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
en Puerto Centronics.
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
UK
Linea de Control d. Carga Y Crnruruenlo
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
bit de inicio y los 8 bits de datos usando el reloj receptor como guia,
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
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
0..
TIMER SYSTEM
M68HCII CPU
sa
MC68HClI.
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
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.
Von
PAO PB7 PB6 PB5 PB4 PB3 PB2 PBI PBO PEO PEl PE2 PE3 VRH
Vss
VRL
MODB
E AS MODA
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
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
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
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}
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
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.
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
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
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
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
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
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
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 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
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
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
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
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
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
s
0 8 0
3
II
3 OM4
ED028
1 OMS
EDG3B
OL5
EDG3A
Bit 7 SPIE SPIP Bit 7 TCLR R8 TIE TORE R7ff7 ceF Bil7 Bit 7 Bit 7 Bit 7 0 MBE
14/05]
leu
IClF 0 0 14/05 2 CPHA 0 2
14/05F
0 0
DDRA3
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
3 RCKB
SCRl
0
RE
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
ADR3 ADR4
BPROT EPROG
Reservada
Reservada
ADPU
Bit 7
ODD
RBOOT
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
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,
del codigo de
Existen instrucciones de tres bytes (0 cuatro dos bytes son necesarios para el codigo de
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
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
2-25
CAPITULO II
ALTA
HARDWARE
RESET EXTERNO
-------___
P_RI_O_RI_D~ BAJA
RELOJ MONITOR
LOS REGISTROS DEL CPU AL STACK A UNOS LOS BITS XeI APUNT A LOS VECTORES
$FFE4-$FFE5
2-26
CAPITULO II
HARDWARE
SI
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 )
2-27
CAP/TVLO]]
HARDWARE
CARGA EL VECTOR
CARGA EL VECTOR
$FFF2-SFFF3
"">-_.
CARGA EL VECTOR
SFFEO-SFFEI
>---w
>-_ ..
>-_ ..
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
$FFDA.$FFDB
CARGA EL VfiCTOR
SFFDS-SFFD9
r------------11
CARGAEL
SFFD6-$FFD7
vscron
.__
CARGAEL VECTOR
SFFF2-SFFF3
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
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.
RTR[1:01
00 01 10
E=XMHz
11
interrumpido,
algunos registros
Mask Register 2)
de tiempo real. PRI 0 PRO
TOI
RTII
I PAOVl I
a
PAll
RESET
I TMSK2
del TMSKl.
o == La
interrupcion
1 == Requerimiento
o = La
interrupci6n
R TIF deshabilitada.
de intenupci6n
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
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
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
o;
fi.
'" ...
0..
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.
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
SPRI
0
SPRO
0
SPCR
RESET
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
Serie,
mAN SMITTER
B/I UD
RATE
CL OCK
I
H
SCDR h SUFFER
.J
[WRln ONLY)
l
7 6 5 4
J ....
Ilad
I
lJ-
_",J
'1
[)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-.
" 'I
COOTROL LOGIC
TRANSMITTER
~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' ~
2-36
CAPITULO II
HARDWARE
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.
I
PDQ R.D
DDDO
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
WAKEUP
LOGIC
:-:
,.
RWU
\
,If
\
w
~
\~
,
.._ w
~ :-:II~
SCCRl
~ -c '" ~
III
[
SCI CONTROL 1
I
RORF RIE IOtE LIE OR
~I~I~
cr_
°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
el bit para
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
____;,O_J..-......;O~...L..-_O;.............l 0 0
SeeR!
o = Activa para
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
deshabilita las
TIE
TeIE
RIE
ILIE
TE
RE
RWU
SBK
SCCR2
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
o = Deshabilita
alto.
la interrupcion
TC.
SCI cuando el estatus
1 = Requerimiento
de interrupcion
de la bandera Te esta
o ::::Interrupciones
1
=
RDRF
y OR
Requerimiento
de interrupcion
OR esta alto.
n.re.
o = Deshabilita
1
=
Requerimiento
alto. TE: Transmitter Cuando Enable. TE va desde cera a uno, una unidad de caracteres deshabilitado. libres (unos logicos)
o = Transmisor
1 = Transmisor habilitado.
RE: Receiver Enable.
o = Receptor
1 = Receptor
deshabilitado. habilitado.
o = Receptor
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.
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.
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.
=
o =: La
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
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
1
3
0
1
4 13
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),
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
por
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
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
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
RESET
D4
05
D6 D7
E
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
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
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.
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
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
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
'"
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·
<>~
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'
AE5H
~.
h
R~11tll!" 8
IDQFl8
FtO"a J ~
,8
I~
<:6' ce>
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
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
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
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
ecce
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
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
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
SIC
* *
Funci6n SET
DL
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
Escribe Datos
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.
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
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
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
Diagrama
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
ANEXOA
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
*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
ANEXOA
*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
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
JSREI
JMP AQUI_DlAG
FUE E2
FIN PAL
JlvIP AQUI_DlAG
JMP AQUI_DIAG
A-3
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
LOX DIR_ULT_CVE
LDAA#'/'
STAA,X
INX LDAADIA
STAA,X
INX LDAAMES STAA,X
INX
LDAAAYO STAA.X
El
LDAA#$20 JSR COL _BL_ DIS JSR DISP _PRN JSREI MENUI RTS
FIN El
A-4
ANEXOA
*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
A-5
ANEXOA
F El Ml
CO _FYH_DI:
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
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
BNE CO_FYH_DI
JSR HOR RYD *HORA A LA RAM DEL DISPLAY
FCO_FYH_DI
A-6
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
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
ANEXOA
HOR_RYD:
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
JSR ESPERA._TECLA
CMPA#$l
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
ANEXOA
M2_ESCAPE M2_FUE_CR
VE_R_U
****
LE_OTNOM_R
*CLA VE EN EL BUFFER L 1
INX
£NY LDAA,X JSR IMP_CLAVE *CLAVEENELBUF_ Ll
INY
LDAA#$20 STAA,Y OT _ NOM CAR
A-9
ANEXOA
* PARA
F_El_MENU
VE_RAM_D: VE RAM _ D
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
A-lO
ANEXOA
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:
A-II
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
*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
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:
CABEZAI PRN JSR IMP_1CABEZA LOX #16 CABEZA "'CVE. NOJ\.1BRESEN RENG. 1
A-I3
ANEXOA
"'IMPRIME
IMP _ CABEZA:
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:
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
A-14
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:
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
* POS.
* PARA IMPRIWR
*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
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:
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
* ES <CR>
* ES <ESC>
* FOE CARACTER
*AQUI YA SABEMOS QUE FOE CARAerER
PRIMERA
A-16
ANEXOA
SEGUNDA
VE ESCAPE TERCERA
CUARTA
ABA
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