ingenieria electronica en computacion …148.206.53.84/tesiuami/uam0946.pdf · existen básicamente...

101
INGENIERIA ELECTRONICA EN COMPUTACION PROGRAMABLE (PLC), BASADO EN EL C.I. 8031 PROYECTO TERMINAL - CONTROLADOR LOGIC0 CONTROIADOR LOGIC0 PROGRAMABLE REPORTE FINAL REAL I ZADORES : CHAVEZ ZEGARRA RICARDO S. FLOREAN CASTELLANOS JAVIER M. AsEs.cm: ING. PEREZ SUAREZ JOAQUIN UNIVERSIDAD AUTONOMA METROPOLITANA - IZTAPALAPA Mt5xico D.F., Septiembre de 1993

Upload: vandang

Post on 05-Oct-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

INGENIERIA ELECTRONICA EN COMPUTACION

PROGRAMABLE (PLC), BASADO EN EL C.I. 8031 PROYECTO TERMINAL - CONTROLADOR LOGIC0

CONTROIADOR LOGIC0 PROGRAMABLE REPORTE FINAL

REALIZADORES:

CHAVEZ ZEGARRA RICARDO S. FLOREAN CASTELLANOS JAVIER M.

AsEs.cm:

ING. PEREZ SUAREZ JOAQUIN

UNIVERSIDAD AUTONOMA METROPOLITANA - IZTAPALAPA Mt5xico D.F., Septiembre de 1993

Page 2: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

INDICE

INTRODUCCION .........................................................................................................................

PARTF 1: FL MlCROCONTROl ADOR 8031 ............................................................................

1.1 VISION GENERAL ...............................................................................................................

1.2 ORGANIZACION DE LA MEMORIA .....................................................................................

1.3 EL SOFTWARE .................................................................................................................... 1.3.1 Memoria de Datos Interna ...................................................................................... 1.3.2 Memoria de Datos Externa ..................................................................................... 1.3.3 Manejador de Bits .................................................................................................. 1.3.4 Dispositivos de ENTRADNSALIDA ........................................................................ 1.3.5 Datos Dkbiles .........................................................................................................

1.4 INTERRUPCIONES .............................................................................................................. 1.4.1 Interrupciones Externas .......................................................................................... 1.4.2 Interrupciones de los Timers ................................................................................... 1.4.3 Interrupciones del Puerto Serial .............................................................................. 1.4.4 Habilitación de Interrupciones ................................................................................. 1.4.5 Prioridad de las Interrupciones ...............................................................................

1.5 TIMERS ................................................................................................................................

PARTF 7- USO DFI PUFRTO SFRIF .....................................................................................

2.1 TRANSMISION ASINCRONA EN SERIE DE DATOS ...........................................................

2.2 EL ESTANDAR RS-232 ........................................................................................................

2.3 DIALOGO HARDWARE ........................................................................................................

2.4 PROBLEMAS CON LA COMUNICACION ............................................................................. 2.4.1 Sobreescribiendo el Registro de Recepción ............................................................

1

2

2

3

6 7 7 7 7 8

8 8 8 8 9 9

9

10

11

11

13

15 15

2.5 ACCESO A LOS PUERTOS SERIES DE LA PC A TRAVES DE LA BIOS ............................ 15 2.5.1 lnicializaclon del Puerto .......................................................................................... 16 2.5.2 Transmislon de Bytes ............................................................................................. 18 2.5.3 Comprobación del estado de un Puerto .................................................................. 18 2.5.4 Recepclon de un byte 19

.. ..

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

Page 3: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

.............................................................................. PARTF 3: 0 FSCRlPClON DFL PROYFCTQ 20

3.1 PRIMERA SECCION: C . I . 8031 ............................................................................................. 3.1.1 La Señal ALE ........................................................................................................... 3.1.2 RESET ..................................................................................................................... 3.1.3 Selector de Dispositivos ...........................................................................................

3.1.4 Bus de Datos y de Direcciones .................................................................................

3.2 SEGUNDA SECCION: LA MEMORIA DEL KIT ....................................................................... 3.2.1 Memorias Semiconductoras ..................................................................................... 3.2.2 Memorias de Acceso Aleatorio (Directo) ................................................................... 3.2.3 EPROMs .................................................................................................................. 3.2.4 Organización de Sistemas de Memoria ..................................................................... 3.2.5 Acceso Directo a la Memoria ....................................................................................

3.3 TERCERA SECCION: INTERFAZ PROGRAMABLE DE PERIFERICOS (8255A) .................. 3.3.1 El 8255A . Descripci6n Funcional ............................................................................. 3.3.2 El 8255A . Descripci6n Operacional ......................................................................... 3.3.3 El 8255A . Modos de Operación ............................................................................... 3.3.4 Combinaciones Especiales de Modos ...................................................................... 3.3.5 Aplicaciones del 8255A ............................................................................................

3.4 CUARTA SECCION: INTERFAZ DE TECLADO/DISPLAY (8279) .......................................... 3.4.1 Inicialización y Comunicación con el 8279 ...............................................................

3.5 ETAPA DE POTENCIA (CONTROL ELECTRIC0 EXTERNO. ANALOGICO) ........................

3.6 PROGRAMACION DEL KIT ...................................................................................................

21 21 21 23 23

24 24 24 26 29 31

32 32 39 40 45 47

47 50

54

55

Page 4: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

I N T R O D U C C I O N

La necesidad de fomentar y obtener en las Instituciones de Enseñanza Superior por parte de los alumnos una independenciay autonomía en el diseñoy la creacibn de Tecnología propia uflizando los elementos y material existente en el mercado nacional, hace que se realice proyectos como el presente, con el Único propbsito de tratar de solventar las carencias de tecnologia en el ámbito de la Ingeniería Electrdnica en el pais. Para tal efecto se hace uso de todos los conocimientos adquiridos durante toda la carrera tanto en el campo del soflware (programación) como en el hardware (electrónica digital y analdgica) para obtener un producto que sea útil y rentable no ljnicamente para los creadores o la Universidad, sino, para toda aquella persona interesada en dicha clase de proyectos.

El presente reporte no sdamentetrata de describir el proyecto en si, sino además, precisar como se realizd y lo que se emple6 para su culminación, así como las posibles aplicaciones en otras ramas y usos comunes del mundo actual, además de las pequeñas introducciones te&icas que se realizan con respecto de algunos aspectos utilizados en el análisis y desarrollo del proyecto. El análisis y diseño se realizaron tomando en cuenta los conocimientos adquiridos y además de algunas investigaciones que se hicieron más allá delo aprendido para poder obtener mejores resultados, así como tambien se tomb muy en cuenta el mercado nacional en cuanto al material electdnico disponible, el cual cabe mencionar es muy amplio, y por lo tanto no se tubo ningun inconveniente al momento de realizar el proyecto y obtener el material de trabajo adecuado.

Se pretende además que este proyecto pueda servir de base como muchos otros para mejoramientos y obtención de mejores resultados en cuanto a la aplicación de la Electrónica y muy particularmente de la Electrbnica digital en este caso diseñar y usar un Circuito Electrónico Digital Basado en un microcontrolador (C.I. 8031), y además del uso y auxilio de una computadora del tipo PC y compatibles IBM; donde se consideró que una aplicacih muy interesante seria en utilizarlo para controlar dispositivos externos a &I; de ahí el nombre del Proyecto: Controlador Lógico Programable (CLP). Un ejemplo muy sencillo; hacer girar un motor hacia un lado u otro o mantenerlo funcionando un tiempo determinado.

Un Circuito Electrónico de estas caracteristicas (al cual denominaremos en lo sucesivo M) y con el apoyo de una computadora aportan su potencia de cálculo y su facilidad para ser programados lo que nos permite obtener con comodidad la solucih a nuestros problemas de control. Conectar un aparato a una hora determinada y desconectado a otra es un programa muy sencillo que se resuelve con unas pocas instrucciones. Si complicamos el problema y deseamos que la conexión o desconexión se realice cuando se cumplan unas determinadas condiciones, (por ejemplo, cuando una temperatura supere un determinadovalor), tenemos queusar sensores que midan las magnitudes que queremos tener controladas y proporcionar esos valores a la computadora y al kífpara que el programa realizado los procese. Pero aún con esta mayor complejidad el programa sigue siendo de unas pocas instrucciones.

En general, los programas implicados para estos trabajos no son complicados para la mayor parte de la gente con algunos conocimientos de programacidn. El problema suele ser en primer lugar: ¿Cómo conseguir

1

Page 5: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

"sacar" las señales tanto de la computadora como del kif que activen o desactiven dispositivos?. Más tarde se complican con: ¿Cómo pueden "leer" la computadora y el kitdatos del exterior, por ejemplo la temperatura en un punto?. Para obtener las respuestas a estas y más preguntas es que se desarrollb dicho proyecto y se espera que cumpla dicho cometido.

PARTE I : EL MICROCONTROLADOR 8031

1.1 VISION GENERAL:

El microcontrolador 8031 es uno de los miembros de la familia MCS-51 de INTEL, y es toda una computadora fabricada en una sola pieza de silicio. Esta familia fue hecha para usarse en aplicaciones de tiempo real, control industrial y para perif&icos de computadora, inteligentes. Existen básicamente 3 miembros de esta familia:

- El 803 1 que no tiene memoria de programa interna, pero puede dkecuónar 64 kbytes de memoria de programa externa, además de 64 kbytes de datos externa.

- EL 8057 que tiene sus primeros 4 kbytes de memoria de programa incluidos en una ROMÍnterna, grabada almomento de la fabricau*&.

- €1 8751 que tiene esos 4 kbytes de memma de programa Índtidos en una €FROM Íntema.

- 128 bytes de memoria de datos interna y una pade de ella se puede direccÍmar bit por bÍt. - Un área de 128 bytes de memoria interna asgnada para los SFRs (Special Functim RegÍsters); aunque basta elmmento sdo se pueden usar 2 7 de ellos, los dmás lntd los ba reservado para expansiones futuras.

- Una Unidad de FrocesamÍento Centrd. - 4 Fuedos pmgmnables de €ntrada/Sa/tda (3.2 lheas en to tao; sh embargo algunos de ellos se usan para

- 2 timers/contadores de 16bits cada uno. - 1 Puedo sevial. - Circuiteria interna para el oscflador del rdoi - 4 bancos de registros (cada banco tiene 8 registros), localliados en la mmma de datos interna. - 5lineas de Ínferupcidn (dos de fuentes externas y 3 de fuentes Ínemas: dos de los timers O y 1 y od-a

el manejo de la memma externa.

del puedo senao con dos niveles de pnóridad.

2

Page 6: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1.2 ORGANIZACION DE LA MEMORIA:

La familia del 8031 tiene dos tipos de memoria: la memonh de prvgmma y la memoia de dafos. La memmk de programa puede ser hasta de 64 kbyfes. Los primeros 4 kbyfes pueden residir dentro del microcontrdador (8051 y 8751) o pueden estar los 64 kbyfes externamente (8031,8051 y 8751).

Dentro de lamemoná dedafosse distinguen dos tipos: una es la exfemaque puede crecer hasta 64 kbytes y la otra es la infema que consta de 128 bytes, más 21 SFRs (Special Funcfon Registers). Los 128 byfes mencionados pueden ser accesadosya sea directamente (MOV data addr) o bien indirectamente (MOV @RJ. Los SFRs sdo pueden ser direccionados en forma directa. Los 128 byfesde memoria de datos interna están divididos en tres áreas:

l. Bancos de Regkfros 0 3 de la direccidn OOH a la OFH (32 bytes). Despues del reset el banco que se usa por default es el O; sin embargo se puede seleccionar por sofiwareotro banco. Cada Banco contiene 8 registros numerados del O al 7. El Resefinidaliza el sfackpohferen la localidad 07H y hará que el sfackcoincida con el segundo banco de registros por lo que si se desea usar más de un banco de registros se debe inicializar el spa una localidad superior.

2. Area dkecubnafdepor bifs de la direccidn 20H a la 2FH para un total de 16 byfes. Cada uno de los 18 bifsde esta área puede ser direccionado directamente (0-7FH). En ensamblador se puede hacer referencia a estos bits de dos maneras, una mediante sus direcciones directas (O a 7FH) y la otra es con referencia a sus bytes (20H- 2FH) de esta manera los bits 0-7 pueden referirse como los bifs 20.0-20.7 o el bit 8 como el 21.0 y así sucesivamente. Cada uno de estos 16 byfes de esta área tambien puede ser direccionado como byfe.

3. Area mulltirsos; que va de los bytes 30H al 7FH y que puede usarse como área de datos del usuario o cualquier otro uso.

Los SFRs (Special Function Registers) con que cuenta el 8031 son:

ACC (direccidn OEOH); es el registro Acumulador. El mnembnico para ciertas instucciones es A. Es el registro más usado en el juego de instrucciones.

B (direccibn OFOH); este registro se usa durantelasoperacionesde mulfplicacidn y divisibn. Para las otras instrucciones puede ser usado como otro registro más.

PSW (program status word; direccih OdOH); este registrocontieneinfomacibn del sfafusdel programa, ver descripcibn de sus bifs más adelante.

SP (Stack Pointer; direccidn 81 H); este es un registro de 8 bifs. Se incrementa antes de meter datos en la pila ya sea por instrucciones PUSH o CALL. El slack o pih puede residir en cualquier lugar de la memoria de datos interna. Despues de un reset el SP se inicializa con un valor 07H lo que el slack comience en la localidad 08H.

3

Page 7: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

DPTR(Data Pointer; DPH DPL; direccih 83H y 82H); este registro eskiformado deun byfealto(DPH) y un byfe bajo (DPL). Su función es guardar una dirección de 16 byfes. Este registro puede ser manipulado corno un registro de 16 byfes o como dos registros independientes de 8 bits).

pop3 (puertos 0-3; direccih 80H, WH, OAOH, OBOH); son los "lafcbes" de los puertos de entrada/salida O a 3.

SBUF (direccih 99H); En realidad son dos registros: un bufferde transmisi6n y un bufferde recepción. Cuando un dato se transfiere a SBUF este va al buffev de transmisión donde se mantiene para la transmisión serial (el transferir un byfe a SBUF es lo que inicia la transmisión). Y cuando el dato es transferido del SBUF se lee del buffer de recepción.

(TH0,TLO; TH1,TLl; direccidn 8CH, 8AH, 8DH, 8BH); son los registros de 16 bik de los timer/contadores O y 1 respectivamente. TH corresponde al byfe alto y TL al byfe bajo.

IP (Interrupt Priority; direccih OB8H); Este es el registro de control para manejar la prioridad de las interrupciones.

IE (Interrupt Enable; direccih OA8H); Este es el registro de control para habilitar las interrupciones.

TMOD (Tirner/Cwnter Mode Control; direccidn 89H); Registro de control para configurar el modo de operación de los ti#er/counfers.

TCON (Tirner/Cwnter Conbol; dirección 88H); Registro de control para arrancar o parar los fkners. Tambikn contiene bíisde sfafus, puestos por hadware, de las interrupciones externas y las interrupciones de los timers cuando llegan a un estado de sobreflujo.

SCON (Serial Control; direccih 98H); Registro de Control y sfafusdel puerto serie.

A continuación se detallan los SFRs que tienen funciones especiales asignadas a sus bífs

PSW Program Status Word (direccionable por bífs)

CY PSW.7 Bandera de Acarreo AC PSW.6 Bandera auxiliar de acarreo FO PSW.5 F/agOdisponible al usuario para uso general RS1 PSW.4 Bif 1 para seleccionar banco de registros (ver nota) RSO PSW.3 Bit0 para seleccionar banco de registros (ver nota) OV PSW.2 Bandera de sobreflujo

P PSW.0 Bandera de paridad. Se pone a l/O por hardware cada ciclo de instrucción para indicar si

CY AC FO RS1 RSO OV -- P

"_ PSW.l Bandera definible por el usuario

el número de bifs"1" en el acumulador es impadpar.

4

Page 8: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

nota: (RS1, RSO) determinan el banco de registros que se usa (0,O) Banco O (00H47H) (0,l) Banco 1 (08H4FH) (1 ,O) Banco 2 (10H-17H) (0,l) Banco 3 (1 8H-1 FH)

IE Interrupt Enable (Direccionable por bit) EA I- ES ET1 EX1 ET0 EX0

EA IE.7

"- IE.6 I IE.5 ES IE.4 ET1 IE.3 EX1 IE.2 ET0 IE.l EX0 IE.0

Deshabilita todas las interrupciones. Si EA=O ninguna interrupcih sera reconocida. Si E A 4 cada una de las interrupciones se habilita de acuerdo a su bif correspondiente. No implementada, reservada para futuros usos. No implementada. Habilita o deshabilita la interrupcih del puerto serial. Habilita o deshabilita la interrupcibn del timer l. Habilita o deshabilita la intermpcibn externa l. Habilita o deshabilita la interrupcibn del timer O. Habilita o deshabilita la intermpcibn externa O. Si el bíf es O la interrupcibn correspondiente se deshabilita, y si es 1 se habilita.

IP Interrupt Priority (Direccionable por bir) " I " PS PT1 PX1 PTO PXO

--- IP.7 "- IP.6 "- IP.5 PS IP.4 PT1 IP.3 PX1 IP.2 PTO IP.l EX0 IP.0

No implementada, reservada para usos futuros. No implementada, reservada para usos futuros. No implementada. Define el nivel de prioridad de la interrupcibn del puerto serial. Define el nivel de prioridad de la intermpcibn del timer l. Define el nivel de prioridad de la interrupcibn externa l. Define el nivel de prioridad de la interrupción del timer O. Define el nivel de prioridad de la interrupcibn externa O. Si el biles O la interrupcibn correspondiente tiene un nivel de prioridad bajo, si el bifes 1 el nivel de priotidad es alto.

TCON Timer/cwnter Control (Direccionable por bit) TF1 TR1 TFO TRO IEl IT1 IEO IT0

TF1 TCON.7

TR1 TCON.6 TFO TCON.5

TRO TCON.4 IEl TCON.3

Bandera de sobreflujo del flinev l. Se activa por hardware y se desactiva por hardware tambien, cuando se hace el salto al vector de interrupciim. Bif de control del f/iner l. Se pone en 1 para arrancarlo y a O para detenerlo. Bandera de sobreflujo del flinev O. Se activa por hardware y se desactiva por hardware tambien, cuando se hace el salto al vector de interrupciim. Bíf de control del i9mevO. Se pone a 1 para arrancarlo y a O para detenerlo. Bandera de flanco de la interrupcibn externa 1, Se pone a 1, por hardware cuando se detecta el flanco de la interrupcibn externa. Se pone a cero por hardware, cuando se procesa la informacih.

5

Page 9: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

IT1 TCON.2 5íf de control para el tipo de interrupcibn l. Se pone por soffware, si es 1 indica que la interrupcibn se activa por flanco de bajada y si es O que se activa por nivel bajo.

IEO TCON.? Banderadeflancodelaintempa6n externaO.Seponea 1 porharharecuandosedetecta el flanco de la intmpcidn externa. Se pone a cero por hardware, cuando seprocesa la informaah.

IT0 TCON.0 5íf de contrd para el tipo de interrupcibn O. Se pone por soffware, si es 1 indica que la interrupcidn se activa por flanco de bajada y si es O que se activa con nivel bajo.

TMOD Timer/Cwnter Mode Control (No direccionable por bít)

GATE TMOD.7 y TMOD.3 Cuando TRx (en TCON) está puesto a 1 y GATE=l, el amem correrh sdo GATE C/T M1 M0 GATE C/T M1 M0

mientas el pin INTx este en nivel alto (Control por hadware). Cuando GATE=O, el timem correrá sdo mientas T k = 1 (Control por soffware).

C/T TMOD.6 y TMOD.2 Selector del timero contador. O indica timer(entrada del relq del siskw interno). 1 indica contador (entrada del pin Tx).

M1 TMOD.5 y TMOD.l 5d selector de modo. M2 TMOD.4 y TMOD.0 5íf selector de modo

M I M0 Modo O O timerde 13 bífs(timers0 y 1) O 1 timerde 16 bífs(timers0 y I) 1 O modo3 fímer0 1 1 modo3timerl

1.3 EL SOFTWARE:

El juego de instrucciones de estos microcontroladores se puede dividir en: 55% son instrucciones de un byfe, 36% son de dos byfesy 9% son de 3 byfe5 58% de las instrucciones toman 1 ps en ejecutarse, 40% tardan 2 ps, y 2% se ejecutan en 4 ps (con un relq de 12 MHz), las instrucciones que se llevan 4 ps, son las instrucciones para realizar multiplicaciones y divisiones.

Para comprender el juego de instrucciones de la familia del 8031 hay que tener en cuenta que, desde el punto de vista de las instrucciones, existen tres tipos de memoria: 64 Kbyfes de memoria de programa (interna, externa oambas) quesedireccionan con el registro PC (Program Counter), 64 Kbyfesde memoria dedatos externa que se direccionan con el registro DPTR (Data Pointer), y la memotia de datos interna que puede direccionarse de vanas maneras. Cada instruccih hace referencia a uno de estos tipos así que hay que estar seguros de donde se va a trabajar para de este modo escoger la instruccih adecuada.

6

Page 10: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Hay una gran diferencia entre la memoria de datos interna y externa, las direcciones de datos internas se refieren a aquellas que esthn dentro del c/?@ y que se pueden accesar de varias formas; mientas que las direcciones externas están localizadas fuera del dip, en los 64 Kbytesde memoria de datos externa y sólo puede ser accesada con las instrucciones MOVX.

1.3 .1 Mmmá de Datas Infernas Las 4 principales formas de direccionamiento de la memoria de datos interna son: directa, inmediata, por

regisBo e indirecta por registro. El modo directo usa una dirección de la RAM interna para accesar el dato, el modo inmediato usa elvalor del dato que sigue a la instrucción; el direccionamientoporregisto usa un numero de registo para accesar el dato; y el modo por regisfo indirecto toma el contenido del registro como una direcci6n directa para accesar el dato.

1 -3.2 Mmmá de Datas l5tema: La instrucción MOVX transfiere un byte ente el acumulador y la memoria de datos externa. La dirección

de la memoria de datos externa está contenida en el registro DPTR de 16 bifs, esta dirección puede ser cargada al DPTR con una sola instruccidn MOV o bien puede ser incrementada. Desafortunadamente no hay más instrucciones de 16 bifs.

El 8031 tiene un solo acumulador, llamado "ACC o A" dependiendo de la instrucción. Casi todas las instrucciones usan el acumulador ya sea en una forma u otra. Un acumulador auxiliar llamado B se usa en las instrucciones de multiplicación y división. Existen muchas inslrucciones de manipulación de datos que pueden moverlos de o hacia uno de los registros del banco de registros activo, existen cuatro bancos de registros. El Stack se puede colocar en cualquier lugar de los 128 bfles de la memoria de datos interna. El contenido de cualquier localidad de la memoria de datos interna se puede meter y luego sacar del stack.

1.3.3 ManeB& de b-&: Debido a que la mayoría delas aplicaciones de un controlador requiere el manejo de bitsde entada/salida,

el 8031 tiene una gran variedad de instrucciones para manipular bifs. Una sola inshcci6n puede poner, limpiar, complementar o copiar cualquier bifen la memoria de datos interna. Los puertos de entada/salida caen dentro de ese espacio por lo que no hay necesidad de usar las clásicasinstrucciones de "leer, enmascarar, poner, combinar, escribir" que se tiene que hacer con otos microprocesadores. Esta capacidad de direccionar bifs permite que cualquier bifde algún puerto de entradahalida sea transferido a o to pin de o to puerto vía el acumulador booleano (el bitde carryj. En total se tiene 21 O bits que se pueden direccionar individualmente y cada uno de ellos se puede probar y así tomar decisiones en base a su estatus (es decir saltos condicionales).

1 -3.4 D ~ o s - 0 ~ de EirWaSdi.: El 8031 no tiene instucciones explícitas de entraddsalida ya que maneja un esquema de "memor-

mapped. Los puertos del cnl;o están mapeados en el espacio de memoria de datos interna, y se accesan con la misma instruccibn MOV que se usa para las otras transferencias, esto quiere decir que el contenido de cualquier registro o en general cualquier localidad de la memoria interna puede ser transferida directamente a uno de los cuatro puertos de entrada/saEda o viceversa. Todos los perif&ricos externos que se usen tiene que ser mapeados en la memoria de datos externa y accesados con la instrucción MOW.

7

I

Page 11: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Se debe hacer incaple en las poderosas capacidades antmeticas que posee el 8031 (instrucciones de multiplicacibn y divisi6n riipidas) que pueden ser aprovechadas para aplicaciones de tiempo real y de procesamiento de señales, estojunto con sus grandescapacidades demanejo de bifslo hacen un microprocesador idheo en aplicaciones de contrd.

1 3.5 punfos D&&S: El 8031 tiene una arquitectura basada en el acumulador para accesar la memoria de datos externa, por

lo que se tiene que desperdiciar tiempo y &digo en leer un dato al acumulador y luego transferir el acumulador para conseguir mover un dato de una localidad a otra en la memoria externa.

La unica instruccih de salto condicional es: "compara y salta si no es igual" esto hace que se tenga que desperdiciar cbdigo y tiempo para hacer saltos condicionales del tipo: "compara y salta si es igual", "compara y salta si es menor", "compara y salta si es mayor".

Si bien es cierto que basta una inshccibn para cargar el registro DPTR de 16 bits y tarnbih una para incrementarlo no exista una para decrementarlo. Este registro es con el que se hace acceso a la memoria de datos externa por lo que se puede imaginar los problemas que esto trae consigo.

1-4 INTERRUPCIONES:

El 8031 tiene, como ya se ha mencionado, 5 fuentes de interrupcibn:

1.4.1 /ntmm-ms t?%&?lna: Las interrupciones externas INTO e INTI pueden ser activadas por nivel o por transicibn dependiendo del

estado de los bÍts IT0 e IT1 en el registro TCON. Las banderas que realmente generan estas interrupciones son los IEO e 1El del registro TCON; as1 cuando un dispositivo externo genera una intermpcih y esta señal llega a uno de los pines de interrupcibn del 8031 se enciende la bandera correspondiente. Si la interrupcibn está configurada como activa por transici6n la bandera correspondiente se limpiarh al saltar al vector de interrupcih, pero si es activa por nivel entonces es el dispositivo externo el que debe desactivar la bandera (dejando de pedir interrupcibn).

1 -4.2 /ntimp&nes de /os thtys: Las interrupciones de los fimers O y 1 son generadas por medio de las banderas TFO y TFI (del registro

TCON) que se activan cuando se llega al sobreflujo de los contadores correspondientes (salvo en el caso del fliner O trabajando en el modo 3). Las banderas correspondientes son desactivadas una vez que se haga el salto al vector de interrupci6n.

1.4.3 /nfmpcͿh del- sen;a/l- La interrupcibn del puerto serial se genera mediante la funcibn OR de las banderas T I y R1 del registro

SCON. Ninguna de estas banderas se desactiva al saltar al vector de interrupcibn, de hecho la rutina de atencidn de interrupcibn tiene que determinar cual de las dos banderas es la que generb la interrupcibn y despues desactivar la bandera correspondiente.

8

I

Page 12: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

En general todas las banderas que generan las interrupciones pueden ser activadas o desactivadas por software, con el mismo resultado que si hubieran sido activadas o desactivadas por hardware. Esto quiere decir que pueden generarse interrupciones o bien cancelar interrupciones pendientes por medio de software.

1.4.4 HaMaa*& de in&"mes: Cada una de las interrupciones puede habilitarse o deshabilitarse individualmente por medio del bif

correspondiente en el registro IE. Este registro tiene tambien un bif para deshabilitar globalmente todas las interrupciones.

1.4.5 h*m*.d de las idtmpdmes: Cada una de las interrupciones puede ser individualmente programada a uno de los niveles de prioridad

mediante el bifcorrespondiente en el registro IP. Una interrupcibn de prioridad baja puede a su vez ser interrumpida por una alta prioridad, pero no por otra de baja prioridad. Una interrupcih de prioridad alta no puede ser interrumpida por ninguna otra interrupcih. Si se reciben dos peticiones de interrupcibn, de diferente prioridad simulthneamente, la peticibn de mayor prioridad es la que se atiende; sin embargo si las peticiones son de igual prioridad una secuencia de "pod interna es la que determina cual peticibn es la que se atiende.

1.5 TIMERS:

El 8031 tiene dos timers/contadores con un registro de 16 bifscada uno: fimer0 y flmerl. Cada uno de ellos puede ser configurado para trabajar como fimero como contador de eventos.

En la funcih de fimHel registro se incrementa cada ciclo de maquina, así que se puede decir que es un contador de ciclos de máquina. Ya que cada ciclo de máquina consiste de 12 periodos de oscilador, la velocidad de conteo es de 1/12 de la frecuencia del oscilador del reloj.

En la funcibn de contador el registro se incrementa cada vez que haya una transicih de 1 a O en el pinde entrada correspondiente (TO o Tl) .

Cada fimertiene un registro de 16 bifs formado por un byfealto (THx) y un byfe bajo (TLx), donde "x" es O b 1 segljn el fimercorrespondiente.

Además de configurarse como fimerso como contadores los fiinerspueden programarse para trabajar en 4 diferentes modos de operacibn. Los modos O, 1 y 2 son iguales para los dos fimers; pero el modo 3 es diferente para cada uno:

Mad0 o: Este modo trabaja con un registro de 13 bits, los 8 bifs del THx y los 5 bifsmenos significativos del TLx.

Los 3 bifs restantes del TLx contienen datos indeterminados asi que deben ignorarse. Cuando en el conteo este pasa de todos los bifs en "1" a todos los bifs "O" (sobreflujo) se enciende la bandera de interrupcibn del fimer correspondiente, es decir TFx, que se encuentra en el registro TCON.

9

I

Page 13: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Mado2: En este modo se tienen 8 bits para el regisko de conteo (TLx) y cuando se llega al sobreflujo, no sdo se

enciende la bandera de interrupcibn correspondiente sino que además se recarga en el registro TLx el valor del registro THx el cual se establece por soflware. El valor de THx no se ve afectado.

Mad0 3: Para el fimer 1 el modo 3 simplemente hace que mantenga la cuenta. El efecto es el mismo que si se

Para el timer O el modo 3 configura a TLO y THO como dos contadores independientes. TLO controla pusiera el bitTRl =O (del regisko TCON).

interrupciones del fimer0 y THO controla las interrupciones del fimer 1.

PARTE 2: USO DEL PUERTO SERIE

Posiblemente no existe otro dispositivo estándar que de más problemas al programador que el puerto serie asíncrono. Se diferencia del puerto paralelo, que es mucho más simple, en que el puerto serie puede dar más tipos de error de transmisibn. Para complicar las cosas, las posibilidades de diálogo del puerto serie, que aseguran una buena comunicacih, no se pueden tener en cuenta al conectar los hilos que ligan el puerto serie con el dispositivo externo. Pero a pesar de estas dificultades, el puerto serie se usa mucho, al ser el medio más barato de conectar dos dispositivos separados por algo más de medio metro.

EL objetivo de esta inkoducción es el explicar las bases para el manejo del puerto serie, incluyendo la inicializacibn, transmisih y recepcih de datos, y el tratar algunos de los errores que ocurran más a menudo. Una vez cubierta l a f m a de trabajar con el puerto serie, se desarrollan dos aplicaciones distintas que usarán el puerto. La primera es un programa de transferencia de archivos, que se podrá transferir cualquier tipo de archivo (incluso los archivos binarios) entre dos computadoras. La segunda es la creacih de una red local "de un hombre pobre" (LAN), que incluye un servidor de archivos y dos nuevos comandos, que permiten a computadoras remotas el cargar o salvar archivos en el servidor.

Los ejemplos en esta parte una vez más son válidos para un IBM PC, XT, AT o PSR sobre DOS. Se puede ampliar a otros sistemas incluyendo el OS/2. En la Figura 2.1 se muestra la estruchra de interrupción de una IBM PC para el trabajo y aplicaciones con el puerto serie de la misma máquina.

10

Page 14: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

2.1 TRANSMISION ASINCRONA EN SERIE DE DATOS

Antes de estudiar en si mismo el puerto serie asíncrono, necesita entender quk son las comunicaciones asíncronas.(De ahora en adelante, el puerto serie asíncrono se llamará simplemente "puerto serie". A Travks de un puerto serie los datos se transmiten bit a bit, uno en cada momento. En esto se diferencia de la transmisibn a traves de un puerto paralelo, que envía un byte cada vez. Latransmisidn se denomina aslncrona si el tiempo ente la transmisibn de un byte de los datos (bit a bit) es indiferente. Sin embargo, tanto el tiempo de transrnisibn como el orden de los bits, que componen un byte más otra infotmacibn, es critico.

Cada byte de datos que se transmite a traves del puerto serie, usa esta secuencia de señales:

1. Un bit inicial. 2. Ocho bits de datos (siete en algunas circunstancias). 3. Un bit de paridad de fin de transmisibn. 4. Uno o dos bits de fin de transmisibn.

Puede transcurrir cualquiertiempo entre la transmisibn de un par de bytes cualquiera. El estado de la línea de transmisib cuando no esa ocupada es en alto. Un bit puesto a cero hace que la línea esté en bajo; un bit puesto a uno hace que la línea esté alto. El bit inicial que marca el principio de latransmisibn de un nuevo byte lleva la línea a cero por un ciclo. Se transmiten entonces los bits de datos. Finalmente se envían uno o dos bits de parada,que corresponden a estados de la línea en nivel bajo. Los bits de parada determinan el tiempo más corto ente el envío de dos bytes. En general, no tiene importancia el usar uno o dos bits de parada,siempre y cuando los dos puertos, tanto el que envía como el que recibe, utilicen el mismo numero.

El bit paridad, si se usa, sirve para detectar los errores de transmisib. La paridad puede ser par o impar. Si se elige la paridad par, al bit de parada se le da un valor de forma que el byte transmitido más el bit de paridad de un número par. Si se usa la paridad impar, el byte más la paridad darán un numero impar.

La velocidad a la que se transmiten los bits se mide en baudios (bits por segundo). La velocidad más baja que se usa es de 300 baudios, que se utiliza fundamentalmente en los modems más viejos i lentos. (La mayoría de los modems actuales van a 1.200 b 2.400 baudios.) La familia de microcomputadoras IBM PC es capaz de transmitir a 9.600 baudios. ¡Otros modelos de computadoras alcanzan velocidad de hasta 38.400 baudios!

2.2 EL ESTANDAR RS-232

Aunque no es crítico el entender en gran detalle el estándar de comunicaciones serie asíncronas RS-232, para cubrir los objetivos de este capítulo, es importante el comprenderlo lo suficiente para ver cbmo y por quk aparecen tantos problemas al usar los puertos serie.

11

Page 15: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

B U S D E C O N T R O L 1

I I ” I

W

I m-

6 U S

D E

D A T O 8

0

U s

D E

C O N T R o L

FIGURA 2.1: Estructura de Intermpcidn de una IBM PC

12

Page 16: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

La configuracidn de la mayoría de los puertos serie se basa, aunque relajada, en el estándar RS-232 usando un conector de 25 patillas en cada extremo. (El IBM AT usa un conector de 9 patillas.) Sin embargo, una gran cantidad de los puertos serie no emplea todas las señales especificadas en el estándar RS-232. Algunas de estas señales no se usan por no tener uflidad en la aplicacih prevista; otras no se emplean debido a que el fabricante prefiere un conjunto mínimo, en lugar de suministrar soporte para RS-232. Las señales RS-232 más comunes son:

Seiial Abreviatura Patilla del conector

Preparado para enviar Línea de contrd Datos preparados Terminal datos preparados Transmisión de datos Recepcih de datos Tierra

RTS CTS DSR DTR TxD RxD GRD

4 5 6

20 2 3 7

La existencia de tantas señales se debe al hecho de que el puerto serie se diseño inicialmente para soportar un modem. Por ello, cuando se usa con otros dispositivos, muchas de esas señales no sirven de nada. Esas señales se uflizan normalmente para establecer un protocdo de hardware entre el modem y la Computadora, deforma que tista: 1) no le envíe infmacibn antes de que pueda transmitirla, o 2) no lea infwmacibn del modem antes de que este lista.

Un error de configuracibn se produce si los relojes internos que controlan los dos puertos son muy diferentes el uno del otro. Como puede imaginar, el puerto serie, una vez que ha detectado el bit inicial, muestra el registro de entrada una vez cada ciclo del reloj para leer los siguientes bits. La longitud de cada ciclo viene determinada por la velocidad de transmisih. Sin embargo, el tiempo que cada bit permanece en el registro viene determinado por el reloj que controla el sistema. Si la velocidad del reloj de la computadora que recibe no está suficientemente cerca de la del que envia, puede machacarse un bit, dando un error de configuracih. La Figura 2.2 muestra un diagrama lógico de la conexidn de dicha interfaz para el puerto serial.

2.3 DIALOGO HARDWARE

La forma adecuada de transmifr datos a t ravb de un puerto serie es controlar el estatus de la señal línea de contrd del puerto receptor. No debe enviar datos hasta que la señal linea de contrd indique que es seguro hacerlo. De esta forma, cuando se usa el diálogo hardware, la rutina de transmisih, en pseudocddigo C, tiene el aspecto:

do{ while (no CTS) esperar: enviar (bite):

)while (bytea a enviar):

13

Page 17: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

B U S D E C O N T R O L

B U

D E

D A I U

B U S D E D I R E C C I O N E S

FIGURA 3.2: Interface Serial Diagrama Ldgico

14

Page 18: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Si tiene un cable con las conexiones adecuadas, y en cada extremo el hardware adecuado para soportar el estándar RS-232, debe usar sin dudas el diálogo hardware. Sin embargo, en un mundo mucho menos perfecto, no siempre es posible hacerlo.

2.4 PROBLEMAS CON LA COMUNICACION

Para permitir la comunicaah vía modem, se usan señales para determinar cuándo los datos están listos o cuándo se puede enviar el prdximo byte. Sin embargo, cuando la comunicacidn se lleva a cabo entre computadoras, es posible (aunque no necesariamente recomendable) el usar S 6 1 0 las señales GRD, TxD y RxD. La razdn que hay detrás de esto es que tender tres cables es bastante más barato que tender cinco o seis. Si dos computadoras del mismo tipo están en comunicacidn entre sí, cuando una está lista para enviar datos, la otra lo está, en teoría, para recibirlos. Sin embargo, al obviar el protocolo de señales inmerso en el estándar RS-232, abre la caja de Pandora de los problemas. El peor de estos es el error de sincronizacidn.

2.4.1 Sobrescribiendo el registro de recepcidn

Cuando se usan sdo tres hilos para conectar entre si dos puertos serie, es necesario "engañar" al puerto que transmite, hacihdole creer que el puerto receptor está siempre listo. Esto se lleva a cabo puenteando las patillas 6 , 8 y 20del conector de 25 patillas. Desafortunadamente, este metodo hace que aparezca muy a menudo un error de sobreescritura. Supongamos que la computadora A es más rápida que la B. Si no se utiliza diálogo hardware, posiblemente la computadora A puede enviar a la B un segundo byte antes de que esta haya leído la informacidn del registro de entrada de su puerto serie. Este es el denominado minadoerror de sincronizaci6n. Este tipo de error se puede producir incluso siendo la computadora B más rápida que la A, si el software de la B fuera demasiado lento.

Este problema aparece debido a que las patillas 6, 8 y 20 se han ligado entre si y, por tanto, el puerto transmisor cree que el receptor está listo para recibir datos siempre. Dentro de poco se vera c&mo se puede vencer esta dificultad.

2.5 ACCESO A LOS PUERTOS SERIE DE LA PC ATRAVES DE LA BIOS

A los puertos serie de un PC o compatible se puede acceder a traves del DOS, a través de la ROM-BIOS, o bien sin pasar por el DOS y la BIOS controlando directamente el hardware. En general, el acceso a los puertos serie a traves del DOS no es una buena idea, ya que el DOS no provee de posibilidad de realimentacidn con el estatus del puerto, sdo nos brinda lecturas o escrituras ciegas en el puerto. Por ello no se usarán lasinterrupciones del DOS. A pesar de que en los capítulos anteriores se ha optado por el contrd directo del hardware de los recursos del sistema, para los puertos serie no es necesario este metodo, ya que pueden obtener buenas prestaciones a t ravb de las interrupciones de la ROM-BIOS.

15

Page 19: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Cuatro rutinas de la ROMBIOS permiten el acceso a los puertos serie. Estas rutinas se lanzan a través de la interrupadn 14H. A confnuación las veremos.

2.5.1 Inicializacich del puerto

Antes de utilizar el puerto serie, probablemente se desean inicializar losvalores característicos con valores distintos de los dados por defecto. (Losvalores detrabajo dados para el primer puerto serie son normalmente 1.200 baudios, paridad par, siete bits de datos y un bit final.) La rutina de servicio O de la interrupcibn 14H se utiliza para inicializar un puerto serie. Como con las otras interrupciones de la BIOS, se usan el registro AH para suministrar el número de la rutina de servicio. En el registro AL se suministran los parámetros de inicialización, que se codifican en un byte t a l y como se muestra a continuacidn.

numJ 1 baudios paridad fin de trans bits de datos ~

La velocidad de transmisión se codifica como se muestra en la Tabla 2.1. Los bífs de paridad se codifican según se ve en la Tabla 2.2. El número de bits de fin detransmisión viene dado en el bíf2 del byte de inicialización del puerto serie. Si el bíf2 está en 1 , se usan dos bítsde fin de transmisión; en otro caso se usarla un solo bitde fin de transmisión. Finalmente, el número de bífs de datos viene dado por los bits 1 y O del byte de inicialización. De los cuatro posibles valores, sdo dos son válidos. Si l o s bífs 1 y O contienen el par a1 OB, se usarán siete bits de datos. Si muestra el par ctl I D , se utilizan ocho bífsde datos.

Tabla: Codificación de la velocidad en baudios con los bits 7,6 y 5 del byte de inicialización del puerto sene.

16

Page 20: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Paridad Valores de los bits

no paridad desigual

O 0 b 1 0

11 imparcial o 1

Jabla 2.2: Codificacibn de la paridad con los bits 4 y 3 del byte de inicializacih del puerto serie.

Por ejemplo si se desea configurar el puerto a 9,600 baudios, paridad par, un bit final y ocho bits de datos, se tendrá que utilizar el formato que sigue. En forma decimal, su valor es 251.

baudios paridad fin de trans bits de datos ___

En una PC estándar puede haber hasta 7 puertos serie (más a h en las máquinas más nuevas). Se especifica el puerto a usar en el registo DX. El primer puerto serie es el O, el segundo es el 1, y así sucesivamente. La funcih que sigue, denominada inicguerto(), se utiliza para inicializarlos parhetros de cualquier puerto serie del sistema.

/* lnicializacibn del puerto. */

void inicguerto(puerto, code) int puerto; unsigned char code;

union REGS r;

r.x.dx = puerto; /* puerto serie */ r.h.ah = O; /* inicializaabn de la funcibn */ r.h.al = code; /* cbdigo de inicializauch */ int86(0x14, &r, &r);

1

17

Page 21: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Esta funcidn se basa en la funcibn int860, que existe en muchos compiladores, entre ellos el Turbo C y el MicroSoft C, aunque lafunci6n puede recibir algun otro nombre si utiliza otro compilador distinto. Tambih puede ocurrir que exista unafuncidn especifica que inicialiceel puerto serie. (Por ejemplo, la funcidn bioscom() del Turbo C permite la inicializacidn de los puertos.)

2.5.2 Transmisih de byfe

La rutina de servicio 1 de la interrupcidn 14H de la BIOS transmite un byte a traves del puerto serie especificado en DX. El byte que desea enviar debe estar en AL. El estatus de la transmisibn se devuelve en el regisbo AH. La funcih epuerto() que sigue envia un byte a través del puerto serie especificado.

Si el bit7 de AH es devuelto por la interrupcibn a 1, ha habido un error en la comunicacidn. Para determinar la causa del error, debe mirar el estatus del puerto; aunque ahora ewerto() se limita a salir ante un error, se podría describir una rutina de control de errores que intentase recuperar cierto tipo de errores.

/* Envía un caracter al puerto serie */

void epuerto(puetto, c) int puerto; r* puerto els *I char c; /* caracter a enviar *I

{ union REGS r;

r.x.dx = puerto; r* puerto serie *I r.h.al = c; /* caracter a enviar *I r.h.ah = 1; /* funcidn que envía un caracter *I int86(0x14, &r, &r); if(r.h.ah & 128) /* comprueba el bit 7 *I f prinff("detectado error de transmisidn en el puerto serie"); exit(1);

I I

2.5.3 Comprobacih del estado de un puerto

La rutina de servicio 3 de la interrupcibn 14H de la BIOS sirve para cornprobar el estatus de un puerto. El puerto a comprobar se especifica en el registro DX. A la vuelta de la interrupcidn, AH y AL contendrán el estatus del puerto codificado como se muestra en la Tabla 3.

18

Page 22: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Como puedeverse, la mayoría delosvalores queforman el estatus se refieren a los modems, y son menos importantes cuando se utiliza el puerto serie para mmunicacionescon otros dispositivos. Sin embargo, hay un valor de estatus que sí es muy importante {{Datos preparados>>. Comprobando este valor, se puede determinar si se ha recibido un bytede datos de un puerto y si estd listo para leerlo. La funcibn Ipuerto(), usada para leer datos de un puerto, muestra el uso del valor de estatus {{datos preparados, como vera en el prbximo apartado.

2.5.4 Recepci6n de un byte

La rutina de servicio 2 de la interrupción 14H se ufliza para leer un byte en un puerto serie. Una vez más el puerto serie a usar se especifica en DX. A la vuelta de la intermpcibn, el cardcter leído se encuenta en AL. Y de identica forma a como ocurría en la transmisih, al acabar, el bit 7 de AH indica el exit0 o el fracaso de la operaah. La funcibn Ipuerto(), que sigue, lee un byte en un puerto dado.

/I Estado de la linea (AH) Valor de 1

Datos preparados Error de sobreescritura Error de paridad Error de tramas Error en la detección de la portadora Buffer de transmisih vacío Registro de desplazamiento vacío Error de temporizacidn

Estado del M6dem (AL) Valor para 1

Preparado para el envío. Secundario Datos preparados. Secundario Detección secundaria de llamada Detección de portadora secundaria Preparado para el envío Datos preparados Indicador de llamada Deteccih de portadora

Bit

O 1 2 3 4 5 6 7

Bit

O 1 2 3 4 5 6 7

Tabla 7 3: Los bytes de estado del puerto serie.

19

Page 23: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

/" Lee un caracter del puerto *I

Ipuerto; P puerto els *I ( union REGS r; /" espera por el caracter "l while(!(chequea-estado(PUERT0)&256))

if(kbhit()) P aborta en caso de pulsar una tecla */ { getch0; exit;

1 r.x.dx = puerto; P puerto serie "I r.h.ah = 2; /" funcibn de lectura de un caracter " I int86(0x14, &r, &r); if(r.h.ah 8 128)

return r.h.al; printl("detectad0 eror de lectura en el puerto serie");

1

La interrupcidn de lectura de un puerto espera hasta que se ha recibido un byfe en el puerto serie antes de retomar. Sin embargo, cierto tipos de errores, como un cable mal conectado, pueden bloquear la computadora. Para evitar este problema, l p u e r t o ( ) lee el estatus del puerto especificado, comprobando el bit de datos listos. Simultáneamente, la funcibn kbhit() controla si se pulsa una tecla. Si se pulsase alguna, el contrd abandona la funcidn. (En algunos casos, se puede llamar aunafuncicin de control de errores especifica.) Esto le permite abortar si no se recibiera ningun dato. Tan pronto como se recibe un dato, se llama a la rutina de servicio 2 de la interrupcibn 14H y se lee el byfe. Una vez m&, se comprueba el bit7 de AH para ver si la operacih fue exitosa. Finalmente la funcih devuelve el byfeleído.

PARTE 3: DESCRIPCION DEL PROYECTO

El Proyecto, como se explicd a grandes rasgos en la introduccibn, corresponde a un Controlador Lbgico Programable (CLP), basado en el Circuito Integrado 8031 de Intel. Básicamente el Proyecto se divide en cuatro secciones para mayor simplicidad en el manejo y desctipcibn del mismo: La primera seccih corresponde al contrdador 8031 en si; donde se encuentan además el fesefy el circuito i6gico de seleccibn y direccionamiento de las memorias del circuito (ROM y RAM); la segunda seccidn corresponde exactamente a la memoria del Proyecto (a partir de este momento al Proyecto se le denominará por la palabra Kit, refirihdose de esta manera

20

I

Page 24: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

a todo el circuito en general), donde se describe tanto a la ROM como a la RAM; la tercera seccibn corresponde al contrd de los puertos realizado por el Circuito Integrado 8255, esta s e c c i h esta encargada de sacar las señales u ordenes al exterior; y por ultimo tenernos la cuarta seccibn en la cual se describe al controlador del teclado y display del Kíf.

Cada una de estas cuatro secciones se describirán detalladamente, desde su diagrama Ibgico hasta las operaciones que realizan dentro detodo el conjuntodel Kit, se presentarán ademáslosdiagramascorrespondientes a cada una de las secciones respectivamente. No sdose pretende describir detalladamente el Proyecto en sí, sino que además se trata demostrary explicarsu re laah con el medio exteriory su utilizacih en interrelacih con otros medios electrhicodigitales como pueden ser otros circuitos digitales, computadoras, dispositivos industriales etc.

3.1 PRIMERA SECCION: C-1- 8031

Esta seccibn que corresponde al la del microcontrolador 8031, es la parte básica del circuito en si, ya que es aquí, desde donde se van a direccionar las memorias, y los demes circuito básicos del Kít asi como el circuito de reset, que corresponde al de reiniaalizacih de todo el Mtreiniciando todas sus operaciones nuevamente. La descripcih correspondiente al Microcontroladorya se hizoen la Parte 1, del reporte, quedandounicamente explicar como es que funciona esta parte del proyecto.

3.1 .I LA SEAAL ALE Como se muestra en el diagrama correspondiente a esta secibn, el circuito principal es el del

Micrucontrdador 8031 de INTEL, al cual se le ha conectado un circuito que corresponde al de oscilacibn, el cual consta de dos capacitores de 27 nF y un Cristal Oscilador de 4 MHz, que en su conjunto generan una señal de oscilacih que enka por las terrninalesX1 y X2 que corresponden a los pínes19y 18 respectivamente, esta señal permite que el Microcontrolador de la señal de ALE, la cual es la habilitacih del latch de direcciones; esta señal habilita el regisko de las señales AO-A7, esta señal sale por la terminal ALE/P en el pin 30, lo que indica que el Microcontrolador está respondiendo a la inicializacibn y esta listo para poder ser programado y/o realizar las operaciones que en ese momente se esten por realizar.

3.1.2 RESET El pín9 del Microcontrolador 8031 está denominado por la señal de Reset, este pin está conectado a un

pequeño circuito discreto como se puede apreciar en el diagrama de dicha seccih; dicho circutio está diseñado de tal manera que cuando se presione el push buffomle llegará a dichopínuna señal lógica de "O" lo que hará que se reinicialize todo el sistema nuevamente, comenzando todos los circuitos en las direcciones iniciales de operacih, esto por que dicha señal no sdo llega al pín9 del Microcontrolador sino que tambih llega a lospínes correspondiente de reset de los Circuitos Integrados 8255A (Interfaz Programable de Perifericos) y 8279 (Controlador de Teclado y Display). Es obvio que al realizar dicha operacih las Memorias del Kít también se reinicializarán,tanto la RAM borrandosecompletamente toda lainformacibn y datosquecontenga,como la EPROM comenzando nuevamente con el Programa Básico (Programa Monitor) el cual lo tiene grabado y contiene las direcciones de inicializacibn y coloca a todo el Kíten condiciones de comenzar las operaciones que se le indiquen por medio de programas instalados o cargados en la memoria RAM.

21

Page 25: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,
Page 26: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

3.1.3 SELECTOR DE DISPOSITIVOS El Selector de Dispositivos o tambikn comunmente llamado en el ambiente de la electrdnica cb@ se/&,

como se muestra en el diagrama consta de un circuito simple comprendido por dos compuertas TTL 74LSO8 y un C.I. l T L 74LS138 el cual es un multiplexor de 3 a 8 líneas. La Palabra de Control o Señal de Seleccih le llega por medio de tres líneas que provienen del bus de diredones directamente del Microcontrolador, estas líneas son AD13, AD14 y AD1 5 correspondiendo a l o s pines 26,27 y 28 respectivamente, la combinacih de estas señales generar& a lasalida del Mulfplexorunaseñal de habilitaah para los Circuitos Integrados 8255A y 8279, as¡ como una señal tambih de habilitacidn para la memoria EPROM y para la memoria RAM, indicando que para esta memoria le llegaran dos señales dependiendo del modo de seleccicxl los cuales pueden ser el de Escritura o el de Lectura. La combinacih de estas tres líneas y sus respectivos resultados de seleccidn se muestran en la Tabla 3.1.1.

11 AD15 1 AD14 1 AD13 I CHIP SELECCIONADO

O

NINGUNO I O

NINGUNO O O

. ~~~ ~ ~

O

HABlLlTAClON DEL 82SA Y EPROM 1 1 O

HABlLlTAClON DE RAM Y EPROM O 1

1

HABlLlTAClON EPROM O 1 1

HABlLlTAClON EPROM 1 O 1

HABlLlTAClON EPROM O O

1 HABlLlTAClON 8279 Y EPROM 1 1

TABLA 3.1: Habilitaci6n de los Dispositivos del KIT

3.1.4 BUS DE DATOS Y DE DIRECCIONES El Busde Datos correspondiente al Circuito es bidireccional de 8 bifsde datos, conocido por byfede datos,

que permite latransferencia de informaci6n entre el microcontroladory la memoria o dispositivos de entrada/salida. Los datos que aparecen en el bus de datos pertenecen a algunos de los siguientes tipos: - Un byfede datos que ingresa procedente de un dispositivo de entrada. - Un byfe de instruccih procedente de la memoria. - Un byfe de datos procedente o enviado a la memoria. - Bifs de control de sfafus empleados en derivar algunas de las señales del bus de control. - Un byfe de instruccih enviado por un dispositivo de entradalsalida durante una interrupcidn.

23

Page 27: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Como se puede apreciar en la lista anterior, muchos tipos de datos aparecen en el busde datos y la única manera de diferenciarlos es observando las señales de control.

El Bus de Direcciones se utiliza para identificar ubicaciones de memoria o dispositivos específicos de entradaklida. El Bus de direcciones del microcontrolador se usa tambih para proveer l o s 8 bits del c6digo requerido por los dispositivos de entraddsalida. Cuando se direccionan tales dispositivos, el bus de direcciones asume una nueva identidad, capaz de soportar la coneccibn de una interfaz a los dispositivos de entrada/salida. EL microcontrdadw se encuentra informado siempre si el busde direcciones estA siendo usado para identificar dispositivos de entraddsalida o si se trata de acceder a la memoria. Esta provee las señales de control necesarias para indicar que tipo de actividad está efectuando. El Bus de Datos comprende 8 líneas (DO - D7) y el Bus de Direcciones comprende tambib inicialmente de 8 líneas (AD8 - AD15).

3.2 SEGUNDA SECCION: LA MEMORIA DEL KIT

Antes de comenzar con la dexripcibn particular de la parte correspondiente a la memoria del Kit, se dará una breve desuipcih de lo que es la memoria en un circuito Lbgico-Digital. Para comenzar diremos que los avances producidos en los úlfmos años en la industria de los semiconductores, han dado por resultado un cambio en el tipo de tecnología de las memorias empleadas en los sistemas digitales. Las memorias semiconductoras son usadas hoy en día por su bajo costo, su alta densidad, velocidad en los tiempos de ciclo y acceso, mejor fidelidad, ymaywmodularidadquelascorrespondientesmemoriasmagn~ticas. Lossistemasbasadosenmicroprocesadores emplean memorias semiconductoras, como es nuestro caso en la realizacibn de nuestro proyecto, ya que úricamente se emplearon este tipo de memorias.

3.2.1 MEMORIAS SEMICONDUCTORAS Las memorias semiconductwas se dividen entres categorías principales, tal como se muestra en la Figura

3.1. Con tres excepciones, cada una de estas categorías puede ser implementada con una de las dos tecndogias principales delos semiconductores: MOS o bipolar. Estas excepciones son CCD (Charge Couple Device), EPROM (Erasable Programmable Read Only Memory) y EAROM (Electrically Alterable Read Only Memory), que se irnplementan unicamente con las categoría MOS.

3.2.2 MEMORIAS DE ACCESO ALEATORIO (DIRECTO) Ninguna dase dememoria semiconductora ha avanzadotan rapidamente como las RAMs (Random Acces

Memory, Memoria de Acceso Aleatorio(Directo). Entre las principales RAMs se encuentras lasde tecnología MOS. Una de las mayores razones de la gran aceptacibn de estas memorias es la gran densidad de integracih de los dispositivos MOS. Las R A M s estáticas, que no requieren circuitos especiales para refrescar la memoria, son usadas con la misma facilidad que las compuertas TTL.

La familia de las RAMS estáticas es ideal para ser usada en las aplicaciones de los microprocesadores. Las funciones de control y tiempos son efectuadas por el mismo microprocesador, por lo que no se requiere de un funcionamiento especial porparte de la memoria. En el circuito desarrollado para este proyecto se usa una de estas R A M s la cual es la RAM 6416 de INTEL. La Figura 3.2 muestra un diagrama de las formas de onda de una RAM en los ciclos de lectura y escritura.

24

Page 28: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,
Page 29: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

3.2.3 EPROMs Las memorias ROMs, tal como las RAMS, han sufrido una gran evolucibn en un período corto. Las

innovaciones en la tecnología MOS han dado por resultado las memorias EPROMs. El Kif utiliza una de estas memorias la cual es la 2732 de INTEL, que consiste en bits organizados en palabras de bíts cada una. La Figura 3.3 muestra el correspondiente diagrama en bloques.

Deberá notarse que todas las entradas para los cinco modos son referidas en niveles lTL. Las fuentes de alimentacibn requeridas son V, = +5 Volts y Vpp. La fuente de alimentacibn V,, debera estar en 25 Volts durante los tres modos de programacibn y será 5 Volts para los otros dos modos, los cuales son los que se van a usar regularmente en el desarrollo del Proyecto.

E L

1 FIGURA 3.2: Familia de Memorias Semiconductoras

26

Page 30: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

La 2732 poseedosfuncionesde contol, las cualesdeberán cumplirse simultáneamente para obtener datos de salida. La funcih CE (Chip Enable o Habilitacidn del circuito integrado) es la empleada para seleccionar el dispositivo. La funcih OE (Output Enable o Habilitaci6n de la salida) es el control de la salida y podrá ser usado para examinar los datos de salida, independientemente de la seleccidn del dispositivo. Suponiendo que las direcciones son estables, el tiempo de acceso de las direcciones ( k c ) es igual al retardo entre CE y la salida (fCE).LOS datos se encuentran disponibles en las salidas luego de haber transcurrido 120 ns (fOE) despues del flanco descendiente de OE, asumiendo que CE se encuentra en "O" y que las direcciones se hallaban estabilizadas por lo menos el tiempo t ~ c c - toE.

' T T

I C I

FIGURA 3.3: Diagrama en Bloques de una EPROM 2732

La 2732 posee un modo de reposo que reduce la potencia de disipacih en un 75 %, de 525 mW a 132 mW. La 2732 es llevada al modo de reposo cuando se aplica una señal de nivel l T L y valor Idgico "1" a la entrada CE. En este modo, las salidas estardn en el estado de impedancia alta, independientemente de la entada OE.

Para facilitar su uso en sistemas grandes de memoria, INTEL ha provisto a la 2732 de dos líneas de contrd que permiten:

27

Page 31: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Dwt

Dwt

DIN

t

/ '

FIGURA 3.2: Formas de Onda de una RAM 6416 (LecturdEscritura)

28

Page 32: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

a) obtener la menor potencia de disipaci6n y b) asegurar que no se producirá contención del bus de salida.

TERMINALES MODO

Lectura

Reposo

Prograrnacih

Verificacidn de la Programadim

lnhlbid6n de la Prograrnadbn

+-F Indistinto + Pulso V, a V,,

VPP v, SALIDAS (21) (24) (9-1 1.1 3-1 7)

+5 +5 DOULT

+5 +5 Alta Impedanda(z)

+25 I +5 I Alta Impedancia(2)

~ ~~ ~ ~~ ~

JAB1 A 3.2: LA EPROM 2732 - SELECCION DE MODOS

Para obtener el uso más eficiente de estas dos líneas de control se aconseja seleccionar la memoria con CE (terminal 18), mientras que OE (terminal 20) podrá conectarse a todos los dispositivos en conjunto con la señal de lectura (READ) procedente del bus de control. Esto asegura que todos los dispositivos de memoria no seleccionados est& en el modo de reposo de baja potencia, y que los terminales de salida est& activos solamente cuando se requieran datos de algun dispositivo de memoria en particular. La Figura 3.4 muestra el diagrama de las formas de Onda de una EPROM 2732 en el ciclo de lectura.

3.2.4 ORGANIZACION DE SISTEMAS DE MEMORIA La organizacih y el diseño de medios de almacenamientos de programas y datos en microcomputadoras

es una tarea ardua.

Los medios de almacenamiento incorporan una serie de registros idénticos, cada uno de loscuales deberá ser seleccionado para su lectura y/o escritura.

La Figura3.5nosmuestra un esquema generalizado del modo en que se relacionan los elementos bhsicos de un subsistema de memoria, con una microcomputadora.

El bus de direcciones necesitará bmers si las condiciones de carga dinámica y estática de las memorias lo requieren. De todas formas, el diseñador deberá considerar no &lo la Suma de las corrientes en el estado lógico "O", sino tambih la capacitancia de cada entrada de la línea de direccidn.

29

Page 33: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

FIGURA 3.4: Diagrama de las Formas de Onda de una EPROM 2732

Paracircuitosintegradosdememoria conectadasen paralelo, estacapacitanciapuedeinfluiradversamente en los tiempos de acceso de los subsistemas de memoria. Este efecto de carga dinwica determina el requerimiento o no de buffixs, mhs aun que la carga esthtica.

Por o to lado, si una microcomputadora posee un Único dispositivo de memoria contenido en un circuito integrado, probablemente no serhn requeridos buffersen las líneas de direcciones o datos.

En los diseños de memorias para microcornputadoras, la velocidad no es generalmente un requisito de primera consideracibn. Los microprocesadores tipicos de 8 bits requieren memorias con tiempo de acceso quevan de 500 nanosegundos a 1 microsegundo y tiempos de ciclo de memoria de 1 a 2 microsegundos, para un procesador funcionando a mBxirna frecuencia de operacidn. Pero puede ocurrir que la velocidad se convierta en un factor primordial. En tales casos, el diseñador debera considerar los dos aspectos de la velocidad de las memorias: tiempo de acceso y tiempo de ciclo.

Page 34: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

FIGURA 3.5: Arquitectura de Almacenamiento

Tiempo de acceso es el tiempo comprendido entre la aplicacidn de una señal de habilitacibn del dispositivo (chip enable o CE) o una direccidn y el punto en que los datos de salida se estabilizan, presentándose listos para ser usados.

Tiempo de ciclo es el menor tiempo comprendido entre dos accesos sucesivos a la misma direccih. Los dispositivos estdticos, tales como las memorias ROM, tienen sdo tiempo de acceso a ser considerado; las RAMs estAticas presentan una diferencia tan pequeña entre sus tiempos de acceso y del cido, que por lo general podrá ser ignorada. Las RAMs dindmicas, contrariamente a las estdticas, insumen grandes cantidades de tiempo de acceso disponible, Serd el tipo de aplicacibn el que en definitiva resuelva el tipo de memoria a ser empleada en cada diseño especifico.

3.2.5 ACCESO DIRECTO A LA MEMORIA Los diseños eficientes de microcomputadoras requieren a menudo dispositivos, distintos del

microprocesador, que puedan acceder en forma directa a la memoria.

31

Page 35: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Ciertas unidades en las que el tiempo es un valor crítico, tales como los display devideo en los que se debe refrescar la imagen, deberán poder leer directamente la memoria sin tener que recurrir al microprocesador, porque los requerimientos de velocidad de transferencia son mayores que los que el microprocesador puede ofrecer.

Para obtener el acceso a la memoria se deberá emplear cierta interfaz que resuelva entre los pedidos de acceso por parte del microprocesador y aquellos generados por el dispositivo solicitante del DMA (Direct Memory Access).

Cuando el microprocesador recibe un pedido de DMA, éste responderá desconectando sus buses de la memoria. Las llneas HOLD y HOLDA proveen estas funciones en la microcomputadora, en este caso particular será el Kif desarrollado para el proyecto. A continuacicin se mostrarán dos figuras, la Figura 3.6 mostrando un diagrama de flujo de una rutina de escritura para una memoria RAM y la Figura 3.7 muestra tambien un diagram de flujo pero de una rutina de examen de una memoria EPROM.

3-3 TEFtCERA SECClON: INTERFAZ PROGRAUABLE DE FERIFERICOS (8255A)

Los diseños basados en los microprocesadores son una soluci6n efectiva para una gran variedad de problemas. Cuando un diseñador de sistemas se enfrenta con la necesidad de seleccionar un microprocesador en un diseño, no podrá tener como unica considerauh las aptitudes del microprocesador. El microprocesador tendrá queser un elemento de una serie de dispositivos compatibles entre sí. La lnterfaz Programable de Periféricos (PPI) 8255A de INTEL, es un miembro de la familia de componentes MCS-85. Este dispositivo reemplaza a un porcentaje significativo de la Icigica necesaria para sustentar una variedad de interfaces de entradalsalida, con estructura de byfe.

El empleo de este componente simplifica los diseños de entradalsalida, aumenta la flexibilidad de los mismos y disminuye la cantidad de componentes requeridos para la implementación de tales interfaces. En el Proyecto desarrollado se emplea dicho componente para la salida de datos hacia los periféricos del Kit, llevando además las señales de contrd y de programa, para el correcto funcionamiento de dichos perifhcos.

3.3.1 EL 825% - DESCRIPCION FUNCIONAL

El 8255A es un dispositivo de interfaz programable de periféricos (PPI) diseñado para ser usado en los sistemas de microcomputadoras INTEL. Este componente funciona como una interfaz entre el sistema de busde la microcomputadora y el equipo periférico. Su configuraah funcional se determina por medio de la programacicin, por lo que no necesitara de otros circuitos electrhicos externos para definir la estructura de la interfaz. La Figura 3.8 muestra el diagrama en bloques del 8255A y la Tabla 3.2 proporciona los nombres de las terminales.

32

Page 36: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

1

L

I

Page 37: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

I AN I

FIGURA 3.7: Diagrama de Flujo de una rutina de Escritura (RAM)

34

Page 38: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.) . Defina la8 D i W n e s lnldal y Rnal de la EPROM

.

I c

FIGURA 3.6: Diagrama de Flujo de una rutina de Examen de EPROM

35

" I

Page 39: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

RESET ENTRADA DE RESET

RD

WR

ENTRADA DE LECTURA

DIRECCON DEL PUERTO AD, Al

ENTRADA DE ESCRITURA

PA7 - PA0 PUERTO A (BIT)

PB7 - PBO PUERTO B (BIT)

11 PC7- PC0 I PUERTO C (BIT) II vcc

O VOLTS GND

+5 VOLTS

TAB1 A 3.3: EL 8255 - Nombre de los Terminales

El 8255A posee 24 terminales de entrada/salida que pueden ser individualmente programados en 2 grupos de 12 y ser usados en 3 modos principales de operacibn. En el primer modo (MODO O), cada grupo de 12 terminales de entradaklida podrá programarse en conjuntos de 4 para su uso como entrada o salida. En el MODOl, que es el segundo modo, cada grupo podrá ser programado en 8 líneas de entrada o salida. De los 4 terminales restantes, 3 de ellos serán usados como señales contrdadoras de sfafusy de interrupciones. El tercer modo de operacih (MOD02) constituye un bus bidireccional que usa 8 líneas para ello y otras 5 para controlar el sfatus, tomándolas de otro grupo.

A) BUFFER DEL BUS DE DATOS Este bMerbidireccional de 8 bits y con estado de impedancia alta, se usa para conectar el 8255A con el

sistema de busde datos. Los datos son transmitidos o recibidos por el bufercuando el CPU ejecuta una instrucción de entrada o salida. Este bufertambic3n se emplea para transferir palabras de control y sfafus.

B) LOGICA DE CONTROL Y LECTUWESCRITURA La funcih de este bloque es controlar todas las transferencias externas de las palabras de datos y control

o status. Este acepta las entradas de los buses de control y direcciones provenientes del CPU y en respuesta, envía los comandos a los grupos de control.

C) cs Es la entrada de Ch@ Sdecfo seleccidn del dispositivo. Un "O" en esta entada habilitará la comunicación

ente el CPU y el 8255A.

37

Page 40: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

D) RD Es la entrada Reado de lectura. Un "O" en esta entrada habilita al 8255A para enviar la informacih de

datos o sfafus al CPU, atraves del bus de datos. Esencialmente posibilita al CPU leer el 8255A.

E) WR Es la entrada Wnfe o de escritura. Un "O" en esta entrada habilita al CPU escribir palabras de datos o de

control en el 8255A.

F) A0 y A l A0 es la seleccidn del Puerto O y A I lee del puerto 1. Estas señales de entrada, conjuntamente con RD y

WR, controlan la seleccidn de uno de los tres puertos o los registros de palabras de Control. Estahn conectados normalmente a los bifsmenos significativos del bus de datos (A0 y Al).

G) RESET Un " I " en esta entrada borra el registro decontrol y llevaa todos los puertos (A, B y C) al modo de entrada.

H) CONTROLES DEL GRUPO A Y GRUPO B La programación define la configuraabn funcional de cada puerto. El CPU escribe una palabra de control

en el 8255A, que contiene la información de "modo", "examen de bit, "resef del bit, etc. Esta palabra es la que fija la configuracih funcional del componente.

Cada bloque de Control (Grupo A y Grupo B) acepta el "comando" de la Ldgica de Control de Lectura/Escritura, recibe las "palabras de control" del businterno de datos y emite los comandos apropiados a sus correspondientes puertos.

Grupo A de Control - Puerto A y Puerto C Superior (C7 - C4) Grupo B de Control - Puerto B y Puerto C Inferior (C3 - CO)

El Registro de Palabras de Control podh ser escrito unicarnente. La operación de lectura no es posible con este registro.

I) PUERTOS A, B Y C El 8255A contiene tres puertos de 8 bib cada uno (A, B y C). Ellos podrán ser definidos segun una gran

variedad de configuraciones por medio de la programación, pero cada puerto posee una serie de funciones especificas que lo distingue de los demás.

Puerto A: Posee un lafch/b#7H de 8 bifs de datos de salida y un fafch de 8 bifs de datos de entrada.

Puerto B: Posee un fafch/bMi de 8 bifs de datos de entrada/salida y un bmkrde 8 bifs de datos de entada.

Page 41: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Puerto C: Posee un lafch&ufferde bits de datos de salida y un buflerde 8 bits de datos de entrada (sin lafch de entrada). Este puerto puede ser dividido en dos puertos de 4 bíts mediante el control de modo. Cada puerto de 4 bíts contiene un hfcb de 4 bítsy puede ser usado para las salidas de señales de control y entradas de señales de sfafus, conjuntamente con los puertos A y B. La Tabla 3.3 muestra las operaciones bhsicas del 8255A.

A l I A0 I RD I WR I CS I OPERACIONDE ENTRADA (LECTURA)

O

PUERTO C - BUS DE DATOS O O 0 1 1 PUERTO B -BUS DE DATOS O o í 1 O PUERTO A -BUS DE DATOS O O 0 1

OPERACON DE SALIDA (ESCRITURA)

O

BUS DE DATOS -CONTROL O O í 1 1 BUS DE DATOS -PUERTO C O 1 0 O 1 BUS DE DATOS - PUERTO B O 1 0 1 o BUS DE DATOS - PUERTO A O O í O

FUNCION DE INHABLITACION

x x x x

BUS DE DATOS * 3-STATE o 1 x x 1 CONDICDN ILEGAL O o 1 í 1

BUS DE DATOS - 3-STATE í

TAB1 A 3.4: EL 8255A - Operaciones Bhsicas

3.3.2 EL 8255A - DESCRIPCION OPERACIONAL

A) SELECCION DE MODO La programacih podrá definir uno de los tres modos básicos de operación:

Modo O - Entrada/Salida Básica Modo 1 - Entrada/Salida Sincronizada Modo 2 - Bus Bidireccional

Cuando la entrada reseipasa a "l", todos los puertos son llevados al modo de entrada (las 24 líneas pasarán al estado de impedancia alta). Al retirar la señal de reset, el 8255A permanecerá en dicho modo sin que se requiera la aplicacih de controles adicionales para tal efecto. Los modos de operación se seleccionan ejecutando una simple instruccibn de salida. Esto posibilita al 825% atender a una variedad de dispositivos perif&icos por medio de una simple rutina de mantenimiento de programación,

39

Page 42: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Los modos de los puertos A y B podrán definirse separadamente, mientas que el puerto C se encuentra dividido en dos porciones, tal como lo requiere la definicidn de los puertos A y B. Todos los registros de salida, induyendo los flp llopsde sfafus, serán cancelados con el cambio de modo. Los modos podrán combinarse de tal modo que se adapten a casi todas las estructuras de entradakalida. Por ejemplo, el Grupo B podrh ser programado en el Modo O para controlar la apertura de conmutadores simples o los resultados de un cSlculo en un indicador luminoso y el Grupo A podrá ser programado en el Modo 1, para controlar un teclado o una lectora de cinta segun un sistema de interrupciones. La Figura 3.9 da el formato de la Definiatxl de modo.

Las definiciones de modos y sus posibles combinaciones parecedn en un principio confusas, pero luego del estudio de la operacitxl del dispositivo, estas mostrahn su simplicidad que está de acuerdo con un concepto ldgico de entada/salida. En el diseño del 8255A se ha tomado en consideracitxl la simplificacibn del diseño del circuito impreso.

6) FACILIDAD DE BIT UNICO DE SETlRESET La instrucción OUT podrá ser usada para determinar el estado 16gico de cualquiera de los bífs del puerto

C. Esta facilidad reduce los requerimientos de la programacibn en las aplicaciones de contrd de sistemas. Cuando se usa el puerto C como sfafus o control de los puertos A y B, se podrá determinar el estado ldgico de sus bíts usando la operacibn de setheset de bit tal como si se tratara de puertos de salida de datos. La Figura 3.10 proporciona el formato de setkesef de bit

C) FUNCIONES DE CONTROL DE INTERRUPCIONES Cuando se programa el 8255A para ser operado en el modo 1 ó 2, son provistas señales de contrd para

ser usadas como entadas de pedidos de interrupción del CPU. Estas señales son generadas en el puerto C, pudiendo ser inhibidas o habilitadas fijando el estado I6gico del fip 1790 INTE, mediante la función de set/resef de bif del puerto C. Esta funcibn habilita al programador permitir o no la interrupcifxl del CPU por parte de un determinado dispositivo de entada/salida, sin que ello signifique afectar la estructura de interrupcidn de cualquier otro dispositivo. El flp 1790 INTE se define del siguiente modo: - El bif de Sef aplicado a INTE habilita la interrupcidn. - El bif de Reseiaplicado a INTE inhabilita la interrupción. NOTA; La sdecúdn de modo o la apkcacidr, de Resef, canda fodas las mdscaras de los flp llops en forma

aufomAfli=a.

3.3.3 EL 8255A - MODOS DE OPERACION

A) MODO O (ENTRADNSALIDA BASICA) Esta configuracibn funcional provee operaciones simples de entada y salida para cada uno de los tres

puertos. Los datos se escriben y leen directamente del puerto especificado. La Tabla 7 muestra la definición de los puertos para el Modo O.

Page 43: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

L I

L

L I

D 7 W W M W W D l W

I ' I 4

L

c 8.I.odbndeyodo OO-Moda0 Ol-Modal 1x- yodo2

FIGURA 3.9: Formato de la Definicih de Modo

41

Page 44: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Las definiciones funcionales para este modo son:

- Dos puertos de 8 bib y dos puertos de 4 bits. - Cualquier puerto podrd ser de entrada o de salida. - Las salidas son almacenadas en /atches. - Existen 16 configuraciones posibles de enlradahalida.

B) MODO 1 (ENTRADNSALIDA SINCRONIZADA) Esta configuracibn funcional posibilita la transferencia de datos de o a determinados puertos, mediante el

empleo de señales de disparo de sincronizacih. En el modo 1, los puertos A y B usan líneas del puerto C para generar o aceptar dichas señales.

A B I

I 1

I

GRUPO

PUERTO A

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

ENTRADA

ENTRADA

ENTRADA

ENTRADA

ENTRADA

ENTRADA

ENTRADA

ENTRADA

SALIDA ENTRADA ENTRADA 11

ENTRADA

ENTRADA ENTRADA 15 ENTRADA

SALIDA ENTRADA 14 ENTRADA

ENTRADA SALIDA 13 ENTRADA

SALIDA SALIDA 12

TABLA 3.5: Definición de puertos para el Modo O

42

Page 45: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

L I-

D 7 D 6 D 6 W W D 2 D I D O

- x x x Sh

sianiticgdo

T

FIGURA 3.1Q: Formato de Set/Reset de Bit

Las definiciones funcionales básicas del modo 1 son:

- Existen dos grupos (Grupo A y Grupo B). - Cada grupo contiene un puerto de 8 bífs de datos y un puerto de 4 bífs de control y datos. - El puerto de 8 bífs de datos podrá ser la salida o entrada. Tanto las salidas como las entradas son almacenadas en lafcbes. - El puerto de 4 bífs se usa para el control y la información de sfafus del puerto de 8 bífs de datos.

Las señales de control de entrada se definen del siguiente modo: STB (Store Input o entrada de disparo de sincronizacih) Un estado lbgico "O" en esta entrada almacena los datos en el latch de entrada.

IBF (Input Buffer Full F/F o buffer de entrada completo) Un estado lbgico "I" en esta salida posibilita su uso para indicar que el lafch de entrada ha sido cargado

con los datos. La entrada STB llevará a IBF a "1" y pasará a "O" con el flanco ascendiente de la entrada RD.

43

Page 46: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

INTR (Interrupt Request o pedido de interrupcibn) El CPU podrá ser interrumpido llevando esta salida a "1". Cuando STB se encuentra en "l", INTR es

llevado al mismo estado, estando simulthneamente IBF e INTE también en "1". El flanco descendiente de RD llevará la señal INTR a "O". Esto posibilita generar un pedido de interrupcibn, simplemente escribiendo los datos en el puerto.

INTE A: Se contrda mediante una operacih de seVresef de bif con PC4. INTE B: Se controla mediante una operacih de seVresef de bif con PC2.

Las señales de contrd de salida se definen del siguiente modo:

OBF (Output Buffer Full F/F o buffer de salida completo) La salida OBF pasará a "O" para indicar que una operacih de escritura ha sido llevada a cabo con un

puerto determinado. El flanco ascendiente de la entrada WR la llevaráa "1" y vdverá a "O" cuando la entrada ACK pase a "O".

ACK (Acknowledge Input o enbada de reconocimiento) Un "O" en esta entrada informa al 8255A que han sido aceptados datos procedentes del puerto A o B. Esta

es, fundamentalmente, una respuesta del dispositivo periférico para indicar que se han recibido los datos del CPU.

INTR (Interrupt Request o pedido de interrupcibn) ElCPUpodráserinterrumpidollevandoestasalidaa"l",luegodehabersidoaceptadoslosdatosporparte

del dispositivo de salida. INTR tendrá el estado Idgico "1" cuando ACK, OBF e INTE sean "1" simultáneamente. El flanco descendiente de WR llevará a INTR al estado lbgico "O". INTE A: Se controla mediante una operacih de seVresef de bíf con PC6. INTE B: Se contrda mediante una operacih de seuresef de bif con PC2.

C) COMBINACIONES DEL MODO 1 Los puertos Ay B podrán ser definidos individualmente como entradas o salidas en el modo 1 que permite

su empleo en una gran variedad de aplicaciones de entraddsalida.

D) MODO 2 (BUS BIDIRECCIONAL DE DISPARO DE ENTRADAEALIDA) Esta configuracibn funcional permite la comunicacibn con un dispositivo periférico mediante un bus

bidireccional de 8 bífsde entradalsalida. Las señales que contolan este modo son las mismas que las explicadas para el modo l. Tambien se dispone de funciones de habilitación e inhabilitaah de interrupciones.

Las definiciones funcionales básicas del modo 2 son:

- Se usa tinicarnente en el grupo A. - El puerto A es un bus bidireccional de 8 bífsy el puerto C es el de control y posee 5 bifs. - Tanto las entradas como las salidas se almacenan en /afches. - El puerto de control (C) se usa para controlar e indicar el sfafus del puerto de bus bidireccional (A).

44

Page 47: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

La señal de control se define de la siguiente forma:

INTR (Interrupt Request o pedido de interrupcibn) Mediante un "1" en esta salida se podra interrumpir el CPU tanto en Operaciones de entrada como de

salida.

Las operaciones de salida son:

OBF (buffer de salida completo) La salida OBF pasará a "O" para indicar que una operacidn de escritura ha sido llevada a cabo por el CPU,

con el puerto A.

ACK (entrada de reconocimiento) Un estado Idgico "O" en esta entrada habilitará la salida de impedancia alta del b f l e r de datos

perteneciente al puerto A. Con el estado lr5gico "l", el buffer permanecerá en el estado de impedancia alta.

INTE 1 (El flip-flop INTE asociado a la señal OBF) El Ik;p #cp será contrdado por la operacih de sevresef de bif con PC6.

Las operaciones de entrada son:

STB (Entrada de disparo de sincronizacibn) Con un "O" en esta entrada se cargarán los datos en el /afcbde entrada.

IBF (Buffer de enlrada completo) Esta salida indica con el estado Ibgico "1" que los datos han sido cargados en el latch de entrada.

INTE 2 (El flip flop INTE asociado a la señal IBF) El nl;o #cp será contrdado por la operaah de sevresef de bíf con PC4.

La figura3.11 muestra la palabra de control del Modo 2.

3.3.4 COMBINACIONES ESPECIALES DE MODOS

Cuando no se emplean todos los bifs del puerto C para indicar el sfafus o funcionar como señales de control, existen varias combinaciones especiales de modos. Los restantes bifspodrán ser usados de la siguiente manera:

- Si son programados como entradas, se podrá tener acceso a todas las líneas en una operacih normal de lectura del puerto C.

45

Page 48: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1 1 1p 1P llo

I 1 I

FIGURA 3.1 2: Modo 2 - Palabra de Control

- Si son programados como salidas, los bífs superiores del puerto C (PC7 - PC4) podrán ser seleccionados individualmente usando la funcibn de sevresef de bít. Los bíts inferiores del puerto C (PC3 - PCO) podrán ser seleccionados como los superiores o bien en conjunto mediante una operación de escritura del puerto C.

A) CORRIENTES DE SALIDA EN LOS PUERTOS B Y C Cada conjunto de 8 salidas seleccionadas al azar entre los puertos B y C, proveed 1 rnA a 1 3 Volts. Esto

posibilita la mex ibn directa enlre el 8255A y dispositivos Darlington para contolar indicadwes luminosos de alto voltaje que requieran tal fuente de corriente.

6) LECTURA DE STATUS DEL PUERTO C En el modo O el puerto C transfiere datos al o del dispositivo perif6rico. Cuando el 8255A es programado

en los modos 1 b 2, el puerto C generará señales de comunicacibn con el dispositivo perif6rico. La lectura del contenido del puerto C permitirá verificar el statusde cada perif&ico y cambiar el flujo de programa de acuerdo con tales valores. Para la lectura del stafusno se requerirá de una inskuccibn especial; la lectura del puerto C ejecuta esta funcibn. La Figura 3.12 muestra el formato de las palabras de status para los modos 1 y 2.

46

Page 49: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

3.3.5 APLICACIONES DEL 8 2 5 M

El 8255A es un dispositivo apto para ser usado como interfaz con una gran variedad deperif&icos, sin que se necesite agregarle Idgica externa.

Cada disposifvo periferico en un sistema de microcornputadoras poseerá una “rutina de servicio” asociada a el. Esta rutina maneja el flujo de informacidn entre el CPU y el perif&rico. La definicih funcional del 8255A es programado por una rutina de servicio, lo que permite tratar a la interfaz como a una extensibn del sistema de programacibn. La seleccih de la adecuada palabra de control proporcionará la configuracih que se adapte exactamente a la necesidad de la aplicacidn.

3.4 CUARTA SECCION: INTERFAZ DE TECLADOIDISPIAY (8279)

El circuito integrado 8279 provee la interfaz entre el 8031 y el tecladoy display del KJ. El 8279 “refresca” el display mediante una memoria interna que posee para tal fin y además, examina permanentemente si alguna tecla del teclado ha sido oprimida. En diagrama tambikn se aprecia el circuito TTL 74LS138 el cual es un multiplexor de tres a ocho lineas, que se usan para codificar las líneas de rastreo del 8279. Se tiene entonces que el 8279 es un circuito integrado periferico que se selecciona usando el mapa de memorias.

Las lineas de segmento del buspara l o s displayseestan conectadas a las salidas del 8279 A3-AOy 83-60 a traves de dos bm7a-s de tres estados 74LS240, estos buflersayudan en la modalidad en la que se les inicialize teniendo en el nivel bajo (tierra) la salida 0 4 , las salidas del 8279 continuan el conteo en secuencia desde 0000 hasta 11 11 ; esto causa un nivel bajo paso a paso seguido de una salida a otra del 74LS240 en la modalidad de un contador de anillo, encendiendo cada led por turno de cada u ‘ Í ~ / / a y . Esto quiere decir que una salida del 74LS240 estará en el nivel bajo a la vez, lo que hará que unicamente se encienda y /eda la vez de cada díq~/ ’y .

Cuando se desea desplegar en los u‘Ísp’ay algunas letras o números, se escribe el codigo de siete segmentos para las letras o números que se desean desplegar a la memoria RAM de 16 byfeinterna del 8279. El 8279 automhticamente realiza el proceso de mandar o enviar estos codigos en secuencia hacia los dísp/ays. Se tiene que una de las funciones del 8279 es el de refrescar tambib los dísphy, para esto se tiene como ya se mencionb linesa arriba, las salidas del 8279 continuamente están haciendo una secuencia de conteo desde 0000 hasta 11 11 por las lineasSLOSL3 (p/ires3235)del8279. Esta secuencia se aplica a las entradas de un multiplexor 74LS138, el cual va a actuar como un decodificador detres a ocho lineas en nivel bajo, esto causará que que cada

47

Page 50: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

E

I

Page 51: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

cldbumd4n da Entrada D 7 W W M W W D f W D 7 D 8 W M W D 2 D l W

m I N T R A INTE2 IRFA WlE1 -A INTRB IBFB WTEB I N T R A I N T E A IWA

\ A / \ A / Y v v v

QRUPOA QRUPO B GRUW A GRUW 6

FlGURA3.12: Formato de la Palabra de Status

salida del decodificador se encuentre en un"0" a la vez, colocando este "O" en un renglon del teclado a la vez. Las líneas correspondientes a las columnas del teclado están conectadas a las lineas RLO-RL7 del 8279 (pines38-08). Tan pronto como es colocado un "O" en cada rengl6n por el rastreo de linea y el 74LS138, el 8279 checa y revisa el retorno de estas lineas una a la vez para verificar si alguna de ellas se encuentra en "O". En la Figura 3.1 3 del diagrama de tiempo para lasformas de onda se muestra en la linea inferior cuando dichas lienas son revisadas. Si el 8279 encuentra cualquiera de estas lineas de retorno en un nivel bajo, esto indica que se ha presionado una tecla del teclado, este espera un tienpo determinado cano de 10.3 ms y revisa de nuevo; si la tecla presionada sigue presente, el 8279 genera un código de 8 bitsel cual representa a la tecla presionada, la Figura 3.14 muestra el formato del codigo generado. Tres bifsde este &digo representan el numero de el renglón en donde se encon.trÓ la tecla presionada, y los otros tres representan el numero de la columna de la teda presionada.

Despues el 8279 produce unc6digo de 8-bitsparala tecla presionada cargando la palabra en una memoria interna FIFO RAM de g-bfle, esto significa que cuando se comienza a leer el código de la FIFO (First In First Out), el primer código que se lea corresponderá al de la primera tecla que se presionó. La FIFO puede establecer el código para las primeras ocho teclas presionadas antes de entrar en un sobreflujo.

49

Page 52: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

FIGURA 3.13: Diagrama de Refresco de Tiempo y Tiempo de Busqueda del Teclado

Cuandoel 8279 encuentra una tecla vhlida presionada, este realiza dosoperaciones paraindicar6sto. Este mantiene su p h d e Requerimiento de Intermpcih, IRQ, en alto, y esto hace que se incremente un contador de la FIFO en un registro interno de stabs. Se puede conectar la salida IRQ a una entrada de interrupcih y detectar cuando la FIFO tiene un caracter para ser enviado en una base de interrupcibn, o simplemente se puede checar el contador en la palabra de sfatus para determinar cuando la FIFO tiene un cddigo para ser leido.

3.4.1 INICIALIZANDO Y COMUNICANDOSE CON EL 8279 El primer paso para inicializar una unidad programable, es el de determinar el sistema base de direcciones

para la unidad. El 8279tiene solamente dos direccionamientos internos, los cuales son seleccionados por el nivel Ibgico de la salida AO, ph21. Si dicha salida tiene un nivel Ibgico bajo cuando el 8279 es seleccionado, es entonces que el 8279 es habilitado para la lectura de datos o para le escritura de los mismos. AI estar esta salida A0 en el nivel lbgico alto se selecciona los registros internos de control y status. El siguiente paso es serciorarse del formato correcto para la(s) palabra(s) de contrd que se tienen que enviar para mantener la unidad operando en el modo que uno desea.

Page 53: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

BIT MAS SlQNlRCATlVO BIT MENOS SlGNlFlCATNO

CNTL RITURN SCAN SHIFT

FORMATO DE DATOS DE MASTRE0 ( S C A N ) DEL TECLADO

FIGURA 3.14: Formato de la Palabra de Control producida para la codificacich teclado

Una pregunta que regularmente surge cuando se tiene o mira el formato de las palabras de control para el 8279 es: "¿Si el 8279 tiene &lo un registro decontrol de direcciones, como se podría enviartodas las diferentes palabras de control?". La respuesta a Bsto es que todas las palabras de control son enviadas al mismo registro de contrd de direcciones. Los tres bibrnes altos de cada palabra de control le indican al 8279 que palabra de contrd este siendo enviada. Una señal de O10 en los tres bibmás altos de la palabra de contrd, por ejemplo, identificando la palabra de contrd como una "Read FIFO/Sensor RAM". La primera palabra de control que se envia para inicializar el 8279 es la del Modo de Palabra de lnicializacion Tec/ado/Dísp/ay, esta palabra y otras se muestran en la Figura 3.15. El bitdenominado como DD en la palabra de contrd especifica primero si se tiene para todo 8 dfgitos o 16 digitos para el refresco. Si se tiene ocho o menos dsphys, tiene que asegurarse de inicializar para 8 dlgitos, de esta manera el 8279 no desperdicia tiempo refrescando d@ys que no existen. Los bifs DD en la palabra decontrol tambikn espesifican el orden en el cual los caracteres en la RAM interna 16-bfleseran enviados hacia los digitos. En el modo de entrada izquierda, el cddigo de siete segmentos en la primera dirección de la memoria interna RAM serian enviados al digito de más a la izquierda del dispay, por ejemplo si se desea desplegar las letras abCd en los cuatro digitos de mes a la izquierda de un dispayde 8 dlgitos, entonces se debe poner los cMigos de siete segmentos para esas letras en las primeras cuatro posiciones de la RAM como se muestra en

51

Page 54: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

la Figura 3.16.a. Los c&digos colocados en las direcciones m& altas de la RAM desplegaría los digitos continuos desde la derecha. En el modo de entrada por la derecha, el primer &digo enviado a la RAM es colocado en la direccibn menos significativa. Estos caracteres serían desplegados en l o s dígitos de más a la derecha, si un segundo caracter es escrito en la RAM, este será colocado en la segunda pos iuh de la RAM como se muestra en la Figura 3.16.b. En el disp/ay, el nuevo caracter será desplegado en el digito de más a la derecha, y el caracter anterior será colocado sobre la segunda posicih desde la derecha. Esta es la manera de desplegar la rnayoria de las funciones de cálculo de operaciones con números.

~ l o u w P u I R u m ~

"VW

-V"

Y UI

l * * U A A A A b b b D D I I K K

~nmmmurro*r A D A l "

1 b b t r c l r r X W W L L 1

FIGURA 3.15: Formato de las Palabras de Control para la inicializaci6n del 8279

Otra palabra de control que se necesita enviar al 8279 es la Palabra de Programa-Relog. El 8279 requiere una frecuencia interna de relog de alrededor de 100 kHz. Un divisor programable en el 8279 le permite aplicar algunas frecuencias viables como las de una señal de 2.45 MHz PCLK a su relog de entrada y dividir la frecuencia a la necesaria 100 KHz. Los 5 bits más bajos de la plabra de control del relog de programa simplemente representan un número binario que se desea dividir para aplcarlo al relog interno. Por ejemplo, si se necesita dividir la frecuencia de entrada del relog por 24, se enviará una palabra de control con O01 en los tres bits más altos y 11 O00 en los 5 bits más bajos.

La úlfma palabra de control que se necesita para una inicialización base es la palabra CLEAR. Se necesita enviar esta palabra para indicarle al 8279 que c&iigo se está enviando a los segmentos para deshabilitarlos mientras el 8279 este conmutando de un digito a otro, añadiendo a esto diciendo que el 8279 usa un caracter en blanco para el refresco, esta palabra de control se puede usar para limpiar la meoria RAM de despliegue and/or y la FIFO en cualquier momento. Hasta el momento solo nos hemos refen'do cual es su principal funcicin. Los dos bítsmás bajos denominados Cp en la palabra de control mostrada en la Figura 3.15 especifica el cddigo en blanco requerido para esto. El c&iigo requerido depende de las conecciones de badware en sistema particular.

52

Page 55: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Lastres palabras decontrol descritaslfneasarriba mantienen la iniaalizacih básica. De cualquier manera, antes de que se envie c6digo a la memoria interna RAM de despliegue, se tiene que enviar al 8279 la palabra de control Wnfe-Display-RAM. Esta palabra le indica al 8279 el ulCmo dato enviado a la direccidn de datos el cual deberá ser puesto en la memoria RAM de despliegue, y además le indica a la memoria RAM de desplieguedonde colocar el bfle de dato. En la Figura 3.15 se muestra el formato de dicha palabra de control. El 8279 tiene un apuntador interno de 4 bits a la meoria interna RAM de despliegue. Se usará l o s cuatro bifs más bajos de esta palabra de control para inicializar el apuntador donde se quiere se quiere escribir el dato en la RAM. Si se desea escribir un dato en la primera posicibn en la memoria RAM de despliegue, se debe colocar O000 en estos bifs. Si se coloca un "1" en le bitde autoinmento, denominadoA1 en dicha Figura, el apuntador interno automáticamente se incrementará al punto de la siguiente pos iuh en la RAM despues de que cada dato haya sido escrito. Para comenzar la busqueda y carga de los caracteres en la primera posici6n en la RAM y seleccionando el autoincremento, entonces la palabra de control será 100100000.

6

(4

FIGURA 3.18: Relacibn entre la RAM y el Display y 8us posiciones de escritura

53

Page 56: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

3.5 ETAPA DE POTENCIA (CONTROL ELECTRIC0 EXTERNO, ANALOGICO)

EL Kittiene como funcibn como ya se mecion6 el de sacar o mandar señales de control a dispositivos externos al Sistema, en esta parte de circuito se cuenta con una etapa de potencia la cual va a convertir la señal Ibgica, en este caso un Vdtaje de +5 Volts a un voltaje mayor en AC para poder controlar en este caso un circuito de luces, el cual no sdo es contrdado de ese modo por esta etapa de potencia, sino que además posee un control porprograma, esta etapa depotencia esta compuesta por MOCs 301 1, porTRIACS, por compuertas lbgias NAND 74LSO0, resistores y capacitores los cuales como se muestra en su diagrama correspondiente conforman una etapa la cual va a proporcionar la señal (vdtaje) adecuado y en el momento especificado para poder realizar las operaciones correspondientes de acuerdo al programa o al usuario en el momento de su operacib.

Para entender un poco mejor como es que esta etapa trabaja, comanzaremos diciendo que los Triacs forman parte de lafamilia de tiristores. El termino tiristor incluye todos los dispositivos semiconductores los cuales presentan un funcionamiento inherentecomo dispositivo de CORTE y CONDUCCION, en oposicibn a aquellos que presentan un cambio gradual en la conducibn. Todos los tiristores son dispositivos de conmutacibn regenerativos, y no pueden operar en forma lineal. De este modo; un transistor no es un tiristor porque aun cuando puede operar en CORTE y CONDUCCION, Bsta no es su naturaleza inherente; es posible para un transistor operar linealmente.

Algunos tiristores no pueden llevarse al estado de CONDUCCION, pero pasan a este estado cuando el vdtaje aplicado alcanza un cierto valor de ruptura. Ejemplos de este tipo de tiristor son los diodos de cuatro capas y los diacs. Los tiristores pequeños, los cuales no conmutan la cm'ente principal, generalmente se denominan u7q10sifivos dedíqaro. Estos dispositivos son muy ufles en los circuitos de disparo de puerta de los tiristores que conmutan grandes cargas, tales como los triacs; siendo este nuestro caso y el uso que se le dará a este tipo de tiristores. Más concretamente podriamos dear que un fdac es un dispositivo de tres terminales utilizado para controlar el valor promedio de la cm'ente que fluye a una carga. Un triac es diferente de un SCR en que puede conducir corriente en una cualquiera de las dos direcciones cuando es llevado a CONDUCCION. Cuando un triac es BLOQUEADO, no puede fluir corriente entre sus terminales principales independiente de la polaridad de la fuente externa aplicada. Por tanto, el triac acKa como un interruptor abierto. Cuando el triac es llevado a CONDUCCION, presenta una resistencia m y baja al paso de la comente en el camino de un terminal principal al otro, donde el sentido del flujo depende de la polaridad de la fuente externa aplicada. Como se muestra en la Figura 3.17 correspondiente al diagrama del triac tenemos que cuando el voltaje es más positivo en MT2, la corriente fluye de MT2 a MT1. Cuando el voltaje es más positivo en MTl, la corriente fluye de MTI a MT2. En cualquier caso el triac actua como un interruptor cerrado.

Un triac no está limitado a 1800 de conducción por ciclo. Con el adecuado arreglo de disparo, puede conducir por la totalidad de los 3Wporciclo. Entonces proporciona control de potencia de onda completa en lugar del control de potencia de media onda posible con un SCR. Los triacs tienen las mismas ventajas que tienen los SCR y los transistores sobre los interruptores mecánicos. No tienen el rebote de contacto, no se produce arco en contactos parcialmenteabiertos, y pueden operarse mucho más rápido que los interruptores mecdnicos, por lotanto permiten un control de comente más preciso.

Page 57: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

I I m

I I 1 I

FIGURA 3.12: Caracterisfcas del Triac.

3.6 PROGRAMACION DEL KIT

La programacih del kitconsta de dos programas; el primero de ellos es un programa monitor el cual se realiz6 y se grabd en la EPROM del circuito y tiene como f u n a h de que el Kif realize ciertas operaciones especiales como el de permitir la escritura y despliegue de mensajes por medio de los &why, comprobación de las memorias, asi como permitir sacar señales especiales por el controlador de puertos. Este programa fue el que se presentb en la primera parte del proyecto, la operaddn del circuito gracias a este programa no es muy compleja, sdomuestralaoperacihcorrectadeelmicroprocesadorydetodossusdispositivosloscualesenconjuntorealizan la operacibn de contrd y operauh del Conkoladw L6gico Programable y sus periftkicos externos. A continuacicin se muestra el listado de este programa:

Page 58: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

El segundo progamacwresponde al de comunicaabn del Kítcon una computadora PC, esta comunicación es por medio del puerto serie, lo que nos dice que la mmunicacibn con la PC es en serie, por medio de un conector SR-322, la explicacih a todo lo que corresponde a la comunicacih serial se explicó en la Segunda Parte de este reporte, para mayw detalle referirse a esta parte, a continuaah se presenta el listado del programa correspondiente, el cual se realizó en el lenguaje de programacibn Turbo C:

P PROGRAMA QUE PERMITE LA COMUNICACIdN BlDlRECClONAL ENTRE EL CIRCUITO */ /* PLC Y UNA COMPUTADORA PC POR MEDIO DEL PUERTO SERIE DE LA MISMA */ /*****t**********C*"*\C**+**********C**CI**YY*************Y~*****C*************************Y**** /

#includeestdio.h> #include ebios.h> #include "vcjnc.h" #include "tec1as.h"

VC-VENTANA vent[l3]; int dirguerto;

main() { char larg = '1 3, atrib = ' O ;

VC-Iniciaventanas(); crea); VC-Abrir(&vent[l]); m e w ; delay( 500); VC-Cerrar(&venql]);

I

menu0 1 static short posics[2][7) = ((1,16,31,44,59~,(11,11,9,11,5~); short res-t, salir = O , I?, 12; char car; I1 = 0;12 = o; VC-CursorEn(&vent[l],l,l); VC-EscribeCadena(&vent[l],

Page 59: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

"INICIA-FTO. TRANSMICION RECEPCION DIRECTORIOS VC~AtributoLinea(&ven~l],vc~ForNegro~vc~BakGris,1,1,79); VC_AtributoLinea(&ve~l],vc_ForBlancolvc-BakNegro,l ,posics[O][l Po~cs[ l l [ l~ l ) ; do

1 do

{ res-t = -LeeCar(&car); switch (car)

case IZQ : if (res-t == O ) if (I1 O ) 12"; else 12 = 4;

{

break; case DER : if (res-t == O)

if (I1 e 4) 12++; else 12 = O; break;

J rswchit*/

SAL1 R");

1 1 3

VC~AtributoLinea(&vennt[l],vc~ForNegro~vc~BakGris,l ,posics[O][ll],

VC-Atributolinea(&ven~l],vc_ForBlanco~vc_BakNegro,l,posi~[O][l2],

I 1 = 12;

Po~cs[ l l [ l l l ) ;

Posics[ll[l21);

JPsegundo DO */ while ((car != ENTER)); if (car == ENTER)

switch (12) (

{ case O: rutina00; break; case 1 : rutina1 ();break; case 2: rutina2();break; case 3: rutina3O;break; case 4: Salir = 1 ;VC-CursorEn(&ven~l],l ,l);break;

I 1

1 while (!salir); VC_TipoCursor(&vent[1],1);

1

57

Page 60: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

crea()

VC-Crear(&vent[l], vc-ForArnarillolvc-BakCyan, vc-ForBlancoJvc-Bakul, 1, 1, 25, 80, 2, O , " COMUNICACION SERIAL ");

VC_Crear(&vent[2], vc-ForAzul Ivc-BakCyan, vc-ForRojolvc-BakAzuI,

VC_Crear(&vent[3], vc-ForBlancolvc-BakNegro, vc-ForRojol vc-BakGris, 3,32,4, 12, 2, O , "RECIBIR");

VC_Crear(&vent[4], vc-ForArnarillo(vc-BakRojo, vc-ForArnarillo( vc-BakAzul, 3,45,4,20,2, O, "");

VC-Crear(&vent[S], vc-ForBlancolvc-BakNegro, vc-ForArnarillol vc-BakMagenta, 1, 1, 25, 80, O , O, "");

VC_Crear(&vent[G], vc-ForRojolvc-BakCyan, vc-ForArnarillol vc-BakAzul, 1, 1,25,80, O , 1, "");

VC-Crear(&vent[-/l, vc-ForRojoIvc-BakCyan, vc-ForArnarillo( vc-BakAzul, 1, 1,25,80, 1, 1, "");

VC_Crear(&vent[8], vc-ForRojoIvc-BakVerde, vc-ForBlancolvcBakI, 20,20,3, 58, 1, 1, "");

VC-Crear(&vent[S], vc-ForArnariIIoIvc-BakCafe, vc-ForRojolvc-BakGris, 12, 10,8, 62, 1, 1, "");

3, 17,4,11 , 2, O, "TIPO");

I

rutina00 {

VC-Abrir(&vent[5]);VC-Borrar(&vent[5]); dirguerto=iniciaguertto(); VC-Borrar(&vent[S]);VC-Cerrar(&vent[5]);

1

subruto() 1 VC-Abrir(&vent[5]);VC-Borrar(&vent[5]); trans-arch(); VC_Bwrar(&vent[5]);VC_Cerrar(&ven~5]);

1

subrutl() {

VC_Abrir(&vent[Sj);VC-Borrar(&vent[5]); clrscr();

58

Page 61: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

rec-arch(); delay( 1 000); VC_Bwrar(&vent[5]);VC_Cerrar(&vent[5]);

1

subrut20 { VC-Abrir(&vent[5]);VC-Bmar(&venq5]); clrscr(); teclado(); VC-Bwrar(&venq5]);VC-Cerrar(&ven~5]);

1

subrut30 { VC-Abrir(&venq5]);VC-Borrar(&venq5]); clrscr(); lista-arch(); delay( 1 000); VC-Bwrar(&vent[S]);VC-Cerrar(&venq5]);

I

subrut4() { VC-Abrir(&vent[5I);VC-Borrar(&vent[S]); clrscr(); rec-panto; delay( 1 000); VC-Bwrar(&vent[S]);VC-Cerrar(&vent[5]);

I

subrut50 { VC-Abrir(&venq5]);VC_Borrar(&ventp]); clrscr(); lee-dir(); delay( 1 000); VC-Borrar(&vent[S]);VC-Cerrar(&ventp3]);

1

59

Page 62: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

rutina10

( static short posicl[2][2] = {{1,1),{9,9)); short fondo, res-t, salir = O; char car, ‘caden, larg = 5, atrib = 1, ‘13, ‘M; inti, j , marc = O;

caden = (char *)malloc(l00);13 = (char ‘)malloc(2);M = (char ‘)malloc(2); ‘13 = 0;*14 = O ; VC-Abrir(&vent[2]);VC-Bwrar(&vent[2]); VC-CursorEn(&vent[2], 1,l );VC-EscribeCadena(&venq2] ,* TECLADO ”); VC-CurswEn(&venq2],2,1);VC-EscribeCadena(&vent[2],“ ARCHIVO ”); VC-At~ibutoLinea(&vent[2],vc-ForBlanco~vc-BakNegro,l,l,l O); do

{ do

{ res-t = -LeeCar(&car); switch (car) {

case ARRIBA : if (res-t == O)

else ‘I4 = 1; break; case ABAJO : if (res-t == O ) if (“13 e 1) ++(“M); else ‘14 = O; break;

if (“13 > O ) “(Y4);

)PSWCHIT/ VC~Atributotinea(&vennt[2],vc~ForNegro(vc~BakGris,~l3+1,

VC~AtributoLinea(&v~nt[2],vc~ForBlanco~vc~BakNegro,~M+l,posic1[0]~14],

‘13 = ‘M;

posicl[0][*13],posicl[l]~l3]);

posicl[l][*M]);

) PSECOND DO ‘/ while (((car != ESC) ( 1 (res-t != 1)) && ((car != ENTER) 1 ) (res-t != 1)) && (car != IZQ) ¿?& (car != DER)); if (car == ENTER)

(

60

Page 63: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

switch ('14)

case O:subrutZ(); break; case 1 :suhtO(); break;

VC~Atributotinea(&ven~2],vc~ForBlanco~vc~BakNegro,*14+1,

(

1 P case o SWCHIT "1

p0sic1[0]~14],posic1[1]~14]); ) P si*/ else salir = 1 ;

)Pprimer DO '/ while (!salir); VC-Borrar(&venq2]);VC_Cerrar(&ven~2]);free(caden);

I

rutina2() ( static short posic1[2][2] = ((l,l),(lO,lO)); short fondo, res-t, salir = O; char car, 'caden, larg = 5, atrib = 1, '13, '14; inti, j , marc = O;

caden = (char *)malloc(l OO);l3 = (char *)malloc(2);14 = (char *)malloc(2); '13 = 0;*14 = O; VC-Abrir(&venq3]);VC-Borrar(&venq3]); VC-CurswEn(&vent[3], l11);VC-EsctibeCadena(&venq3] ," PANTALLA "); VC-CurswEn(&ven~3],2,1);VC-EscribeCadena(&ven~3]," ARCHIVO "); VC~A~ibutoLinea(&ven~3],vc~ForBlanco~vc~BakNegro,l,1,11);

do r

do

res-t = -LeeCar(&car); switch (car)

case ARRIBA : if (res-t == O)

else '14 = 1; break; case ABAJO : if (res-t == O) if (*I3 e 1) ++("PI);

if (*I3 > O) -yl4);

61

Page 64: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

else *I4 = O; break;

)/*SWITCH*/ VC-AtributoLinea(8vent[3],vc-ForNegro]vc-BakGris,*l3+lI posicl[o][*13],posicl[l]~l3]); VC_AtributoLinea(&vent[3],vc_ForBlanco(vc_BakNegro,'14+1 ,posicl[O]rl4], posicl[1][*14]); *I3 = *M;

) Psegundi DO */ while (((car != ESC) 1 1 (res-t != 1)) && ((car != ENTER) 1 1 (res-t != 1)) && (car != IZQ) && (car != DER)); if ( car == ENTER) { switch (74) { case O:subrut4(); break; case 1 :subrutl(); break; ) /* case OR SWCHIT */ VC~AtributoLinea(&ven~3],vc~ForBlanco~vc~BakNegro,*14+1,

posicl [O][*l4],pOsicl[ 1]r14]); ) P si*/ else salir = 1;

)/*FIRST DO */ while (!salir); VC-Bwrar(&vent[3]);VC-Cerrar(&venq3]);free(caden);

rutina30

( static short posic1[2][2] = ({1,1),(18,18)); short fondo, res-t, salir = O; char car, *caden, larg = 5, atrib = 1, '13, '14; inti, j, marc = O;

caden = (char *)malloc(lOO);l3 = (char *)malloc(2);l4 = (char *)malloc(2); *I3 = 0;*14 = O; VC-Abrir(&vent[4]);VC-Bmar(&venq4]); VC-CurswEn(&ven~4],1,1);VC-EscribeCadena(&ven~4]," LISTAR-ARCHIVO "); VC-CurswEn(&ven~4],2,1);VC-EscribeCadena(&ven~4]," LEER-DIRECTORIO "); VC~A~butoLinea(&vent[4],vc~ForBlanco~vc~BakNegro,l,1,19);

62

Page 65: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

do {

do (

res-t = -LeeCar(&car); switch (car) I

case ARRIBA : if (res-t == O)

else *I4 = 1; break;

case ABAJO : if (res-t == O ) if (*I3 e 1) ++(*PI);

else *I4 = O; break;

if (73 > O) "(74);

)PSWCHlT/ VC-AtributoUnea(&venf[4],vc_ForNegroIvc_BakGris,*l3+l1

VC_AtributoLinea(&ven~4J,vc_ForBlanco~vc_BakNegro,*I4+1,

*I3 = "14;

p0sic1[0][*13],posic1[1]~l3]);

p0sic1[0][*14],p0sic1[1]~14]);

) PSECOND DO */ while (((car != ESC) 1 1 (res-t != 1)) && ((car != ENTER) 11 (res-t != 1)) && (car != IZQ) && (car != DER)); if (car == ENTER)

switch ("14) I

I case O:subrut3(); break; case 1 :subrut!jo; break;

I /* case o SWCHIT */

posicl[o]~14],posicl[l]~l4]); VC~AtributoLinea(&ve~4],vc~ForBlanco~vc~BakNegro,*I4+1,

) r si*/ else salir = 1 ;

Irprimer DO "/ while (!salir); VC-Bwrar(&ven~4]);VC_Cerrar(&vent[4]);free(caden);

I

63

Page 66: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

iniciaguerto()

int puerto, bps, palabra, paridad, bits, dirguerto, data=O; do { printf('7n No. de Puerto? (O-COMl, l-COM2,2-COM3,3-COM4): "); scanf("%d", &puerto); switch(puerto)

case O: 1

dirguerto = Ox3F8; break;

dirguerto = Ox2F8; break;

dirguerto = 0x3E8; break;

dirguerto = Ox2E8; break;

case 1 :

case 2:

case 3:

default: printf("Errw!"); fflush(stdin);

1 I while( !(O e= puerto && puerto e= 3) );

do

{ Printf('7n Velocidad? (1 10,150,300,600,1200,2400,4800,9600 Baud): y; scanf("%d", &bps); switch(bps)

case 11 O: {

data I = 0x00; break;

data I = 0x20; break;

case 150:

64

Page 67: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

case 300: data I= 0x40; break;

data I = 0x60; break;

data I= 0x80; break;

data I= OxAO; break;

data I = OxCO; break;

data I = OxEO; break;

printf("Error!"); fflush(stdin);

case 600:

case 1200:

case 2400:

case 4800:

case 9600:

default:

I I while( bps!=ll O && bps!=l50 88 bps!=300 88 bps!=600 && bps!=l200

do && bps!=2400 && bps!=4800 && bps!=9600 );

( printf( '7n Tamaño palabra? (7 o 8 bits): "); scanf("%d", &palabra); switch(pa1abra) (

case 7: data I= 0x02; break;

data I = 0x03; break;

printf("Error!"); fflush(stdin);

case 8:

default:

I I

65

Page 68: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

while (palabra != 7 && palabra != 8); do { printf(7n Paridad? (BNONE, l=EVEN, 2=ODD): "); scanf("%d",&paridad); switch(paridad) (

case O: data I= 0x00; break;

data )= 0x18; break;

data I= 0x08; break;

printf("Errw!"); fflush(stdin);

case 1 :

case 2:

default:

1 1 while(paridad != O && paridad != 1 && paridad != 2); do (

printf(7n Numero de stop-bits? (1 o 2 bits): "); scanf("%d", &bits); switch(bits) {

case 1 : data I = 0x00; break;

data I = 0x04; break;

printf("Error!"); fflush(stdin);

case 2:

default:

1 I while(bits!=l && bits!=2); bioscom(O,data,puerto); return(dirguert0);

66

Page 69: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

I

enviacar(dir-puerto,car) int dirguerto, car; {

while ( !(inpwtb(dirguerto+5) & 0x20) ); outportb(dirguerto, car);

I

obtencar(dir-puerto) int dirguerto; ( while ( !(inportb(dirguerto+5) & 0x01) ); return(inportb(dir-puerto) & 0x79;

I

trans-arch() {

FILE 'infile; int c, eco=O; char filename[80]; printf('7nNombre del Archivo que transmite: "); scanf("%s",filenarne); if ( (infile = fopen(filename, "r")) == NULL)

perror("fal1a de apertura de archivo"); return(-1);

printf("Desea Eco? (1-ON, 0-OFF): "); scanf("%d", &eco); while ((c = getc(infile)) I= EOF)

{ enviacar(dir-puerto, c); if (eco) 1

I I I

{

1

putchar(c);

67

Page 70: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

rec-arch() {

FILE *outfile; int c, eco=O; char filename[80]; printf("\nNombre del Archivo que recibe: "); scanf("%s",filename); if ( (outfile = fopen(filename, "w")) == NULL) { perror("fa1la de apertura de archivo"); return(-I);

1 printf("Desea Eco? (1-ON, 0-OFF): "); scanf("%d", &eco); while ((c=obtencar(dirguerto)) != EOF) {

{

I

1 1

if (eco)

putchar(c);

putc(c, outfile);

teclado() { int c, salida=O; printf(" Transmitiendo del teclado ... (Teclee '$' para salir)\n "); while(!salida) {

if (bi oskey( 1 )) { c = bioskey(0) & Oxff; if (c == I$')

{ . enviacar(dir-puerto, EOF); salida=l ;

1 else {

68

Page 71: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

enviacar(dir-puerto, c); gotoxy(20,10);putchar(c);

I I

I I

lista-arch() {

FILE 'infile; int c; char filename[80]; printf(lnNombre del Archivo que lista: "); scanf("%s",filename); if ( (infile = fopen(filename, Y ) ) == NULL) { perror("fa1la de apertura de archivo"); return(-1);

while ((c = getc(infi1e)) != EOF) putchar(c);

I

I

int c; printf("Recibiendo en pantalla ...\n"); while ((c=obtencar(dirguerto)) != EOF) putchar(c);

lee-dir()

system("D1R"); I

69

Page 72: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

A continuacibn se presentan los listados de los programas Monitor del 8031, el cual realiza operaciones de inicializacih de todos sus dispositivos permitiendo la escritura y visualizacibn de datos y direciones por medio del teclado y díspkys, así tambien se presentan los listados de los programas de inicialización del puerto serie, de retardos y de envio de datos por el puerto serie:

r* PROGRA31 .TXT, ESTE ES EL LISTADO DEL PROGRAMA MONITOR CORRESPONDIENTE */ r* A LA INlClALlZAClON DEL 8031 Y TODOS SUS DISPOSITIVOS, INCLUYENDO LAS */ r* MEMORIAS DE USO DEL KIT */

TECLA? EQU 07EH ;direction de la variable TECLAl DESPLEGA EQU 03B8H ;direction de la rutina DESPLEGA DESPBUF EQU 03D8H ;direction de la rutina DESPBUFF SIETESEG EQU 0416H ;direcum de la rutina SIETESEG AUX EQU 16FOH

ORG 1408H ;direction de inicio del programa MOV RO,#OOH MOV R1 ,#OOH ;en este segmento de codigo, se inicializan MOV RZ,#OOH MOV R3,#00H ;los registos RO,R1, ..., R7, para su MOV R4,#00H MOV R5,#00H ;posterior uso MOV R6,#00H MOV R7,#00H MOV TECLAl,#OFFH ;inicializacion de registro tecla1

;desplegar el primer letrero para pedir el primer dato

MOV DPTR,#LETREROl ;se mueve LETRERO1 al DPTR LCALL DESPLEGA ;se muestra en los displays LETRERO1

, ;introduction y desplegado de los datos de entrada ;petition del primer digito

CICLO2: MOV A,TECLAl ;se pide un primer numero MOV R2,A ;se guarda el contenido de A en r2 MOV B,#OAH ; s e guarda en B el numero OAH DIV AB ;se hace la division de A/B CJNE A,#OOH,CICL02 ;se verifica que el primer digito sea menor que 10 LCALL SIETESEG ;cambio del digito a siete segmentos MOV 70H,A ;se mueve al numero a la direccion del primer display

70

Page 73: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

LCALL DESPBUF ;se muestra en el display al numero

CICLO3: MOV A,TECLAI ;se pide otro numero MOV R1 ,A ;se guarda en r l MOV B,#OAH DIV AB CJNE A,#OOH,CICL03 MOV 71H,70H LCALL SIETESEG MOV 70H,A LCALL DESPBUF

CICLO4: MOV A,TECLAI MOV ROA MOV B,#OAH D IV AB CJNE A,#OOH,CICLW MOV 72H,71 H MOV 71H,70H LCALL SIETESEG MOV 70H,A LCALL DESPBUF

; aqui se verifica si se termino de escribir el numero

MOV TECLA1 ,#OFH ;inicializo tecla1

MOV R6,A CLR C MOV B,#OEH SU BB A, B JZ PONLETl ;si ya fue enter salta a poner el oto letrero MOV A, R6 MOV B,#OAH D IV AB CJNE A,#OOH,CICLON ;si es letra salta a pedir otra vez AJMP CICLO2 ;si no fue letra vuelve a meter datos

CICLON: MOV A,TECLAI ;pido lo que hay en tecla

71

Page 74: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

;petition del segundo digito

PONLETl: MOV DPTR,#LETRER02 ; desplega la peticion LCALL DESPLEGA MOV TECLAl ,#OFFH

CICLO7: MOV A,TECLAl MOV R5,A MOV B,#OAH DIV AB

;pongo lo que hay en tecla en A

CJNE A,#OOH,ClCL07 LCALL SIETESEG MOV 70H ,A LCALL DESPBUF

CICLO8: MOV A,TECLAl MOV R4,A MOV B,#OAH D IV AB CJNE A,#OOH,CICL08 LCALL SIETESEG MOV 71H,70H MOV 70H ,A LCALL DESPBUF

, CICLOS: MOV A,TECLAl

MOV R3,A MOV B,#OAH DIV AB CJNE A,#OOH,ClCL09 LCALL SIETESEG MOV 72H,71 H MOV 71H,70H MOV 70H,A LCALL DESPBUF

; aqui se verifica si se termino de escribir el numero

MOV TECLAl ,#OOFH CICLON2: MOV A,TECLAl

MOV R6,A CLR C MOV B.#OEH

72

Page 75: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

SUBB A,B JZ BANDER1 MOV A,R6 MOV B,#OAH D IV AB CJNE A,#OOH,CICLON2 AJMP CICLO7

;ahora a convertir de decimal a hexadecimal el primer dato ;dejanddos en 2 bytes: R1 ,RO

BANDER1 : MOV A,R1 MOV B,#OAH MULAB ADD A,RO MOV ROA MOV B,#64H MOV A,R2 MUL AB ADD A,RO MOV RO,A ;aqui ya tengo la parte baja CLR A ADDC A,B MOV R1 ,A ;aqui ya tengo la parte alta

, ;ahora el segundo dato, dejandolos en R4,R3

MOV A, R4 MOV B,#OAH MUL AB ADD A,R3 MOV R3,A MOV B,#64H MOV A,R5 MUL AB ADD A,R3 MOV R3,A ;aqui ya tengo la parte baja CLR A ADDC A, B MOV R4,A ;aqui ya tengo la parte atta

,

73

Page 76: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

; s e l e d o n de menu

MOV DPTR,#LETRER03 LCALL DESPLEGA MOV TECLA1 ,#OFFH

CICLOX: MOVA,TECLAI MOV R7,A MOV B,#OAH CLR C SU BB A, B JZ PARADA1 MOV A, R7 MOV B,#08BH CLR C SUB6 A,B JZ PARADA2 MOV A,R7 MOV B,#OCH CLR C SUB6 A,B JZ PARADA3 MOV A, R7 MOV B,#ODH CLR C SUB6 A,B JZ PARADA4 MOV B,#OFFH CLR C MOV A, R7 SUB6 A,B JZ CICLOX

, PARADAI: MOV TECLA1 ,#092H

LCALL SIETESEG MOV 072H,A MOV TECLA1 ,#OE3H LCALL SIETESEG MOV 071 H,A MOV TECLAl,#OA8H LCALL SIETESEG MOV 070H,A LCALL DESPBUF

74

Page 77: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

AJMP PAUSA AJMP SUMA

I

PARADA2: MOV TECLA? ,#OAH LCALL SIETESEG MOV 072H,A MOV TECLAl ,#086H LCALL SIETESEG MOV 071 H,A MOV TECLA1 ,#092H LCALL SIETESEG MOV 070H,A LCALL DESPBUF AJMP PAUSA AJMP RESTA

PARADA3: MOV TECLAl ,#OA8H LCALL SIETESEG MOV 072 H ,A MOV TECLA1 ,#OE3H LCALL SIETESEG MOV 071 H,A MOV TECLAl ,#OC7H LCALL SIETESEG MOV 070H ,A LCALL DESPBUF AJMP PAUSA LJMP MULTIPL

PARADA4: MOV TECLAl ,#OAl H LCALL SIETESEG MOV 072 H ,A MOV TECLAl ,#OFBH LCALL SIETESEG MOV 071 H,A MOV TECLAl ,#OE3H LCALL SIETESEG MOV 070H,A LCALL DESPBUF AJMP PAUSA LJMP DIVISION

75

Page 78: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

PAUSA: MOV A,TECLAI CJNE A,#OEH,PAUSA RET

, ;ahora haremos la suma de R4,R3 + R1,RO = R1 ,RO

SUMA: MOV A,RO ADD A,R3 MOV RO,A CLR A CLR C ADDC A,R1 ADD A,R4 MOV R1 ,A AJMP HEXDEC

t

;ahora haremos la resta de R1 ,RO - R4,R3 = R1 ,RO

RESTA: MOV A,RO CLR C SUBB A,R3 MOV RO,A MOV A,R1 SUB6 A,R4 MOV R1 ,A JNC HEXDEC MOV A,RO CPL A MOV R0,A MOV A,RI CPL A MOV R1 ,A AJMP HEXDEC

;ahora haremos la multiplicancia de R1 ,RO y R4,R3 = R1 ,RO

MULTIPL: MOV A,RO MOV B,R3 MUL AB JB PSW.2,ERROR MOV R5,A ;primer resultado en R5 MOV R6,B

76

Page 79: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

MOV A, R1 MOV B,R3 MUL AB JB PSW.2,ERROR ADD A, R6 MOV R2,#OOH JNC LABEL INC R2

LABEL: MOV R6,A ; primer acarreo MOV R7,B MOV A, RO MOV B,R4 MUL AB JB PSW.2,ERROR ADD A,R6 ADD A,R2 MOV R6,A ; segundo resultado en R6 MOV A,B CJNE A,#OOH,ERROR M OV A, R5 MOV RO,A MOV A,R6 MOV R1 ,A AJMP HEXDEC

;ahora haremos la division de R1 ,RO / R4,R3 = R1,RO I

DIVISION: MOV A,R3 MOV R2,A ; aqui se verifica si B es cero MOV A, R4 MOV R3,A ; y si esto sucede, significa que habra MOV A,R3 ; un error. ADD A,R2 ; por ello se manda a la etiqueta JZ ERROR ; de ERROR MOV R6,#00H MOV R7,#00H

JC CAMBIA ; va a cambiar el resultado a R l ,RO CLR C MOV A,R6 ADD A,#01 H MOV R6,A

RES: LCALL RESTDIV ; va a la rutina TESTDIV

77

Page 80: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

JNC RES MOV A, R7 ADD A,#01 H MOV R7,A AJMP RES

, RESTDIV: CLR C

MOV A, RO SUBB A,R2 JNC ClCLll MOV B,A MOV A,R3 ADD A,#01 H MOV R3,A MOV A,B

CICLII: CLR C MOV RO,A MOV A,RI SUBB A,R3 JNC CICL12 RET

9

CICL12: MOV R1 ,A RET

1

CAMBIA: MOV A,R6 MOV RO,A MOV A, R7 MOV R1 ,A

I

; ahwa convertiremos de hexadecimal a decimal , ERROR: MOV DPTR,#LETREROS

LCALL DESPLEGA LJMP PAUSFIN

I

HEXDEC: MOV R3,#03H MOV R2,#OE8H MOV A, RO MOV R4,A MOV A,RI

78

Page 81: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

MOV R5,A LCALL RESTDIV JC ERROR

I

LCALL DIVI10 MOV A,R2 MOV R5,A LCALL DlVll O MOV A, R2 LCALL DlVllO MOV A,R5 SWAP A MOV B,A MOV DPTR,#AUX MOV A,R2 MOVX @DPTR,A MOV A,B XCHD A,@DPTR SWAP A MOV R5,A LCALL DlVll O MOV A,R2 MOV R6,A AJMP DESPSAL

DIVI10: MOV A,RO MOV R2,A MOV A,R1 MOV R3,A MOV RO,#OOH MOV R1 ,#OOH

DIVIIOB: LCALL RESTA10 JC DlVllOC CLR C MOV A, RO ADD A,#01 H MOV RO,A JNC DlVll OB MOV A,Rl ADD A,#01 H MOV R1 ,A JMP DlVllOB

79

Page 82: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

D IVI 1 OC: RET RESTA10: MOV B,#OAH

MOV A,R2 CLR C SUBB A,B MOV B,#OOH JNC CICLOS1 MOV B,#OlH

CICLOS1: CLR C MOV R7,A MOV A,R3 SUBB A,B JNC CICLOS2 RET

CICLOS2: MOV R3,A MOV B,R7 MOV R2,B RET

DESPSAL: MOV DPTR, #LETRERO4 LCALL DESPLEGA MOV TECLAl,R6 LCALL SIETESEG MOV 72H,A CLR A MOV 16FOH,R5 MOV R5,#16FOH XCHD A,@R5 MOV TECLAl ,A LCALL SIETESEG MOV 71H,A MOV A,R5 SWAP A MOV TECLAl ,A LCALL SIETESEG MOV 70H,A

PAUSFIN: MOV A,TECLAl CJNE A,#OFH,PAUSFIN

Page 83: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

LETRERO1: DB OAlH,OFBH,09OH,OF9H ;este codigo pone el letrero DB OFFH,OFFH,OFFH,OFFH ;diG1

LETRER02: DB OAl H,OFBH,OSOH,OA4H ;este codigo pone el letrero DB OFFH,OFFH,OFFH,OFFH ;diG2

LETRER03: DB OA3H,08CH,086H,OAFH ;este codigo pone el letrero DB OFFH,OFFH,OFFH,OFFH ;oPEr

LETRER04: DB 087H,OA3H,087H,OFFH ;este codigo pone el letrero DB OFFH,OFFH,OFFH,OFFH ;tot

I

LETREROS: DB 086H,OAFH,OAFH,OA3H ;este codigo pone el letrero DB OAFH,OFFH,OFFH,OFFH ;Error

END

f NUNO.TXT, ESTE PROGRAMA CORRESPONDE A LA INlClALlZAClON DEL PUERTO SERIE ”/ f PARA INICIAL LA COMUNICACION POR DICHO PUEWRTO */

DESPLEGA EQU 03D8H DESPBUF EQU 03B8H ASIETE EQU 040FH TECLA EQU 07EH PCON EQU 087H

ORG 1500H

SPlNlT : MOV SCON,#0101001OB ;inicialhacion del PUERTO SERIE TllNlT : MOV TCON,#11010010B ;inicializacion para la TRANSMISION

MOV THl,#ODEH ;ponemos TIMER1 en modo l. SETB IE.4

MOV TECLA? ,#OFFH ;inidalizacion de registro tecla1

CICLO2: MOV A,TECLAl ;se pide un primer numero MOV R2,A ;se guarda el contenido de A en r2 MOV B,#OAH ;se guarda en B el numero OAH DIV AB ;se hace la division de AIB CJNE A,#OOH,ClCL02 ;se verifica que el primer digito sea menor que 10

81

Page 84: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

LCALL SIETESEG ;cambio del digito a siete segmentos MOV 70H,A ;se mueve al numero a la direccion del primer display LCALL DESPBUF ;se muestra en el display al numero

SETB TRI ;se enciende el timer1 MOV R3,#00H MOV R3,#OFFH

SALTA: DEC R3 LCALL SPIN LCALL ASIETE MOV 70H,A LCALL DESPBUF CJNE R3,#OOH,SALTA

SPOUT: MOV C,P ;se mueve el bit de paridad a la bandera de carry CPL c ;se complementa la bandera de carry MOV ACC.7,C ;se inserta la paridad en el bit8 de datos a transmitir. JNB TI,$ ;salta a $ si el bit TI=O (SCON.l) CLR TI ;apaga la bandera de interrupcion para transmision. MOV SBUF,A ;saca el caracter

RET

SPIN: JNB RI,$ ;espera la recepcidn de un bit CLR RI MOV A,SBUF ;mueve el caracter al acumulador MOV C,P CPL c ANL A,#07FH

RET

END

82

Page 85: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

/" PRUEBA.TXT, PEQUEÑO PROGRAMA DE PRUEBA DE LAS MEMORIAS DEL KIT "/

DESPLEGA EQU 03D8H DESPBUF EQU 03B8H ASIETE EQU 040FH TECLA EQU 07EH

ORG 1000H

MOV A,#OFFH MOV RO,A

PON: DEC RO FIN: DEC A

MOV DPTR,#MENSAJE LCALL DESPLEGA CJNE A,#OOH,FIN MOV A,#OFFH CJNE RO,#OOH,PON ;MOV A,#FFH

MENSAJE: DB 003H,006H,OO7H,023H DB OFFH,OFFH,OFFH,OFFH

END

PMENSAJE.TXT, PROGRAMA QUE DESPLIEGA UN MENSAJE POR MEDIO DE LOS DISPLAY DEL KIT*/

DESPLEGA EQU 03D8H DESPBUF EQU 03B8H ASIETE EQU 040FH TECLA EQU 07EH

ORG 1500H

MOV DPTR,#MENSAJE LCALL DESPLEGA

83

Page 86: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

MENSAJE: DB 003H,006H,007H,023H DB OFFH,OFFH,OFFH,OFFH

END

/*DELAY.TXT, PEQUEÑO PROGRAMA QUE PONE UN RETARDO EN LAOPERACION DEL KIT */

DESPLEGA EQU 03D8H DESPBUF EQU 03B8H ASIETE EQU 040FH TECLA EQU 07EH

ORG 1500H

MOV R1 ,#OOH MOV R3,#00H MOV R5,#00H MOV R5,#003H

CICLO: MOV R3,#OFFH CLR P1.0 CLR P1.l CLR P1.2

SALTA: MOV RI,#OFFH MOV R2,#OFFH DEC R3 LCALL PAUSA LCALL PAUSA1 CJNE R3,#OOH,SALTA SETB P1.0 SETB P1.l SETB P1.2 MOV R4,#00H MOV R4,#OFFH MOV R6,#00H MOV R6,#OFFH MOV R7,#00H MOV R7,#OFFH

PAUSA2: DEC R4 CJNE R4,#00H,PAUSA2

Page 87: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

PAUSA3: DEC R6

PAUSA4: DEC R7 CJNE RG,#OOH,PAUSAS

CJNE R7,#00H,PAUSA4 LCALL PAUSAl LCALL PAUSA1 LCALL PAUSAl DEC R5 CJNE R5,#00H,CICLO

PAUSA: DJNZ R l ,$

PAUSAl: DJNZ R2,$ RET

RET

END

PDELAYl .PAS. PROGRAMA DE UNA RUTINA DE DISPLAYS */

DESPLEGA EQU 03D8H DESPBUF EQU 03B8H ASIETE EQU 040FH TECLA EQU 07EH

ORG 1500H

MOV R1 ,#WH MOV R3,#00H MOV R5,#OOH MOV R5,#003H

CICLO: MOV R3,#OFFH CLR P1.0 CLR P1.l CLR P1.2

SALTA: MOV Rl,#OFFH MOV R2,#OFFH DEC R3 LCALL PAUSA LCALL PAUSAl CJNE R3,#OOH,SALTA SETB P1.0

85

Page 88: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

SETB P1.l SETB P1.2 LCALL PAUSA LCALL PAUSA LCALL PAUSA1 LCALL PAUSA1 LCALL PAUSAl DEC R5 CJNE R5,#00H,CICLO

PAUSA: DJNZ R1,$

PAUSAI: DJNZ R2,$ RET

RET

END

Los programas que siguen a mntinuacih son l o s que corresponden al resultado en ensamblador para el 8031 tornando como base los realizados en un editor con extensibn TXT se genera su homdlogo con extensidn PRN.

PNUEVO.PRN*/

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.1 OM

SOURCE FILE NAME: NUEVO.TXT

03D8 DESPLEGA EQU 03D8H O 3 8 8 DESPBUF EQU 03B8H 040F ASIETE EQU 040FH 007E TECLA EQU 07EH 0087 PCON EQU 087H

1500 ORG 1500H

PAGE 1

1500 759852 SPlNlT : MOV SCON,#0101001OB ;inicializacion del PUERTO SERIE 1503 7588D2 TllNlT : MOVTCON,#ll01001OB ;inicializacion para la TRANSMISION 1506 758DDE MOV TH1 ,#ODEH ;ponemos TIMER1 en modo l. 1509 D2AC SETB IE.4

86

Page 89: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

150B D28E SETB TR1 ;se enciende el timer1 150D 7BOO MOV R3,#00H 150F 7BFF MOV R3,#OFFH 1511 1 B SALTA: DEC R3 1512 12152D LCALL SPIN 1515 12040F LCALL ASIETE 1518 F570 MOV 70H,A 151A 1203B8 LCALL DESPBUF 151D BBOOFI CJNE R3,#00H,SALTA

1520 A2DO SPOUT: MOV C,P ;se mueve el bit de paridad a la bandera de carry 1522 B3 CPL c ;se complementa la bandera de carry 1523 92 E7 MOV ACC.7,C ;se inserta la paridad en el bit8 de datos a transrnifr. 1525 3099FD JNB TI,$ ;salta a $ si el bit TI=0 (SCON.l) 1528 C299 CLR TI ;apaga la bandera de interrupcion para transmision. 152A F599 MOV SBUF,A ; s a c a el caracter

152C 22 RET

152D 3098FD SPIN: JNB RI,$ 1530 C298 CLR RI 1532 E599 MOV A,SBUF 1534 A2DO MOV C,P 1536 83 CPL c 1537 547F ANL A,#O7FH

1539 22 RET

0000 END

;espera la recepci”n de un bit

;mueve el caracter al acumulador

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VER

SOURCE FILE NAME: NUEVO.TXT -- SYMBOL TABLE ---

!SlON 1.1 OM

PAGE 2

ACC OOEO IE OOA8 SALTA 1511 SPlNlT 1500 TH1 008D AS I ETE 040 F P OODO SBUF O099 SPOUT 1520 TI O099 DESPBUF 03B8 PCON 0087 SCON O098 TCON 0088 TllNlT 1503 DESPLEGA 03D8 RI O098 SPIN 152D TECLA 007E TRI 008E

87

Page 90: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

'/DELAY.PRN'/

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DELAY.TXT

03D8 DESPLEGA EQU 03D8H 03 B8 DESPBUF EQU 03B8H 04OF ASIETE EQU W F H 007E TECLA EQU 07EH

1500 ORG 15OOH

1500 7900 MOV R1 ,#OOH 1502 7800 MOV R3,#OOH 1504 7000 MOV R5,#00H 1506 7003 MOV R5,#003H 1508 7BFF CICLO: MOV R3,#OFFH 150A C290 CLR P1.0 15OC C291 CLR P1.l 150E C292 CLR P1.2 1510 79FF SALTA: MOV R1 ,#OFFH 151 2 7AFF MOV R2,#OFFH 1514 1 B DEC R3 1515 121549 LCALL PAUSA 1518 12154C LCALL PAUSA1 1516 BBOOF2 CJNE R3,#00H,SALTA 151E D290 SETB P1.0 1520 0291 SETB P1.l 1522 O292 SETB P1.2 1524 7COO MOV R4,#00H 1526 7CFF MOV R4,#OFFH 1528 7E00 MOV R6,#00H 152A 7EFF MOV RG,#OFFH 152C 7FOO MOV R7,#00H 152E 7FFF MOV R7,#OFFH 1530 1C PAUSA2: DEC R4 1531 BCOOFC CJNE R4,#OOH,PAUSA2 1534 1 E PAUSA3: DEC R6 1535 BEOOFC CJNE RG,#OOH,PAUSA3

PAGE 1

Page 91: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1538 1 F PAUSA4: DEC R7 1539 BFOOFC CJNE R7,#OOH,PAUSA4 1 5 X 12154C LCALL PAUSAl 153F 12154C LCALL PAUSA1 1542 12154c LCALL PAUSAl 1545 I D DEC R5 1546 BDOOBF CJNE R5,#00H,CICLO 1549 D9FE PAUSA: DJNZ RI,$ 154B 22 RET 154C DAFE PAUSAl: DJNZ R2,$ 154E 22 RET

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DEIAY.TXT

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DELAY.TXT -- SYMBOL TABLE - ASIETE 040F DESPLEGA O308 PAUSAl 154C PAUSA4 1538 CICLO 1508 P1 0090 PAUSA2 1530 SALTA 1510 DESPBUF 03B8 PAUSA 1549 PAUSA3 1534 TECLA 007E

PRETARDO.PRN*/

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.1 OM

SOURCE FILE NAME: RETARDO.TXT

PAGE 2

PAGE 3

PAGE 1

89

Page 92: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

O308 DESPLEGA EQU 03D8H 03B8 DESPBUF EQU 03B8H 040F ASIETE EQU 040FH 007E TECLA EQU 07EH

1500 ORG 1500H

1500 7900 MOV R1 ,#WH 1502 7B00 MOV R3,#00H 1504 7BFF MOV R3,#OFFH 1506 C290 CLR P1.0 1508 79FF SALTA: MOV R1 ,#OFFH 150A 1 B DEC R3 150B 121513 LCALL PAUSA 150E BB00F7 CJNE R3,#00H,SALTA 1511 D290 SETB P1.0

1513 D9FE PAUSA: DJNZ R1,$ 1515 AAFF MOV R2,OFFH 1517 DAFE DJNZ R2,$ 1519 22 RET

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: RETARDO.TXT ---- SYMBOL TABLE ---

PAGE 2

ASIETE 040F DESPLEGA 03D8 PAUSA 1513 TECLA 007E DESPBUF 03B8 P I 0090 SALTA 1508

Page 93: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

P SEND.PRN*/

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: SEND-A.TXT

03D8 DESPLEGA EQU 03D8H 03B8 DESPBUF EQU 03B8H 040F ASIETE EQU 040FH 007E TECLA EQU 07EH 0087 PCON EQU 087H

1500 ORG 1500H

1500 759852 SPlNlT : MOV SCON,#0101001OB ;inicializacion del PUERTO SERIE 1503 7588D2 TllNlT : MOV TCON,#11 O1 001 OB ;inicializacion para la TRANSMISION 1506 758910 MOV TMOD,#Ol OH ;ponemos TIMER1 en modo 1. 1509 438780 ORL PCON,#080H ;ponemos SMOD=l para K=2 15OC 758DDE MOV THl,#ODEH ;se ajusta el timerl para generar los 150F

150F D28E 1511 7900 1513 7B00 1515 7BFF 1517 C290 1519 79FF 151B 16 151C 7441

;2400 bauds

SETB TR1 ;se enciende el timerl MOV R1 ,#00H MOV R3,#00H MOV RS,#OFFH CLR P1.0

SALTA: MOV Rl,#OFFH

MOV A,#041H DEC R3

PAGE 1

151E 121524 LCALL SPOUT 1521 BBOOF5 CJNE R3,#00H,SALTA

1524 85DOD7 SPOUT: MOV PSW.7,PSW.0 ;se mueve el bit de paridad a la bandera de carry 1527 B2 D7 CPL PSW.7 ;se complementa la bandera de carry 1529 85D7E7 MOV ACC.7,PSW.7 ;se inserta la paridad en el bit8 de datos a transmitir. 152C 3099FD JNB TI,$ ;salta a $ si el bit TI=O (SCON.l) 152F C299 CLR TI ;apaga la bandera de interrupcion para transmision. 1531 F599 MOV SBUF,A ;saca el caracter 1533 12040F LCALL ASIETE

91

Page 94: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1536 F570 MOV 70H ,A 1538 1203B8 LCALL DESPBUF

153B 22 RET

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.1OM

SOURCE FILE NAME: SEND-A.TXT --- SYMBOL TABLE --

PAGE 2

ACC OOEO P I 0090 SBUF O099 TCON O088 TllNlT 1503 ASIETE 040F PCON 0087 SCON 0098 TECLA 007E TMOD 0089 DESPBUF 0368 PSW OODO SPlNlT 1500 TH1 008D TRI 008E DESPLEGA 03D8 SALTA 1519 SPOUT 1524 TI O099

/*S-PORT.PRN*/

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: S-PORT.TXT

03D8 DESPLEGA EQU 03D8H 03B8 DESPBUF EQU 03B8H 040F ASIETE EQU 040FH 007E TECLA EQU 07EH 0087 PCON EQU 087H

1500 ORG 1500H

PAGE 1

92

Page 95: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1509 438780 ORL PCON,#OSOH ;ponemos SMOD=1 para K=2 15OC 758DDE MOV TH1 ,#ODEH ; s e ajusta el timer1 para generar los 150F ;2400 bauds

150F D28E SETB TR1 ; s e enciende el timer1 1511 7900 MOV R1 ,#OOH 1513 7B00 MOV R3,#00H 1515 7BFF MOV R3,#OFFH 1517 C290 CLR P1.0 1519 79FF SALTA: MOV R1 ,#OFFH 1518 1B DEC R3 151C EB MOV A,R3 151D 12152F LCALL SPOUT 1520 121528 LCALL PAUSA 1523 BBOOF3 CJNE R3,#OOH,SALTA 1526 D290 SETB P1.0

1528 D9FE PAUSA: DJNZ R1,$ 152A 7AFF MOV R2,#OFFH 152C DAFE DJNZ R2,$ 152E 22 RET

152F A2DO 1531 B3 1532 92 E7 1534 3099FD 1537 C299 1539 12040F 15% F570 153E1203B8 1541 F599 1543 22

SPOUT: MOV C,PSW.O ;se mueve el bit de paridad a la bandera de carry

MOV ACC.7,C ; s e inserta la paridad en el bit8 de datos a transmitir. JNB TI,$ ;salta a $ si el bitTI=O (SCON.l)

CLRTI ;apaga la bandera de intermpcion para transmision. LCALL ASIETE

MOV 70H ,A

MOV SBUF,A ;saca el caracter

CPL c ;se complementa la bandera de carry

LCALL DESPBUF

RET

93

Page 96: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.1 OM

SOURCE FILE NAME: S-PORT.TXT

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: S-PORT.TXT ---- SYMBOL TABLE -

PAGE 2

PAGE 3

ACC OOEO P1 0090 SALTA 1519 SPOUT 152F TI O099 ASIETE 040F PAUSA 1528 SBUF O099 TCON 0088 TllNlT 1503 DESPBUF 0368 PCON 0087 SCON O098 TECLA 007E TMOD 0089 DESPLEGA 03D8 PSW OODO SPlNlT 1500 TH1 008D TRl 008E

/*DELAY1 .PRN"/

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.1 OM

SOURCE FILE NAME: DELYl .PAS

03D8 DESPLEGA EQU 03D8H 03B8 DESPBUF EQU 03B8H 040F ASIETE EQU 040FH 007E TECLA EQU 07EH

1500 ORG 1500H

PAGE 1

1500 7900 MOV R1 ,#OOH 1502 7B00 MOV R3,#00H 1504 7000 MOV R5,#00H 1506 7D03 MOV R5,#003H

94

Page 97: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

1508 7BFF CICLO: MOV R3,#OFFH 150A C290 CLR P1.0 15OC C291 CLR P1.1 150E C292 CLR P1.2 1510 79FF SALTA: MOV R1 ,#OFFH 1512 7AFF MOV R2,#OFFH 1514 1 B DEC R3 1515 121537 LCALL PAUSA 1518 12153A LCALL PAUSAl 151 B BBOOF2 CJNE R3,#OOH,SALTA 151E D290 SETB P1.0 1520 D291 SETB P1.l 1522 D292 SETB P1.2 1524 121537 LCALL PAUSA 1527 121537 LCALL PAUSA 152A 121 53A LCALL PAUSAl 152D 121 53A LCALL PAUSA1 1530 12153A LCALL PAUSAl 1533 1D DEC R5 1534 BDOODl CJNE R5,#00H,CICLO 1537 DSFE PAUSA: DJNZ R1,$ 1539 22 RET 153A DAFE PAUSAl: DJNZ R2,$ 153c 22 RET

O000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DELY1 .PAS ---- SYMBOL TABLE ---

PAGE 2

ASIETE 040F DESPBUF 03B8 P1 0090 PAUSAl 153A TECLA 007E CICLO 1508 DESPLEGA 03D8 PAUSA 1537 SALTA 1510

95

Page 98: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Para terminar lo que corresponde a la programacibn del Kif se presenta algunas de las opciones de pantalla que realiza y presenta el programa de comunicacibn con la PC, el cual como ya se mencionb se realizó en el lenguaje de programacibn Turbo C, este presenta un Menu de pantallas para poder elegir la opción más adecuada de acuerdo a las necesidades de comunicacibn del momento, para una mayor comprensión del mismo es que se presenta dichas ventanas impresas.

96

Page 99: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,
Page 100: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,
Page 101: INGENIERIA ELECTRONICA EN COMPUTACION …148.206.53.84/tesiuami/UAM0946.pdf · Existen básicamente 3 miembros de esta familia: - El 803 1 que no tiene memoria de programa interna,

BIBLIOGRAFIA:

- LENGUAJE ENSAMBLADOR PARA MICROCOMPUTADORAS IBM. J. TERRY GODFREY EDITORIAL PRENTICE HALL, MEXICO.

- MICROPROCESORS PROGRAMING, TROUBLESHOOTING, AND INTERFACING. JAMES W. COFFRON EDITORIAL PRENTICE HALL, U.S.A.

- ELECTRONICA INDUSTRIAL, DISPOSITIVOS Y SISTEMAS. TIMOTHY J MALONEY. EDITORIAL PRENTICE HALL, MEXICO.

- EXPERIMENTOS DE LABORATORIO EN ELECTRONICA, VOLUMENES 1 (LA MICROCOMPUTADORA PRINCIPIOS Y APLICACIONES) Y 2 (LA MICROCOMPUTADORA INTERFACES Y PERIFERICOS) DEGEM SYSTEMS.

- MANUAL LS/S/TTL DATABOOK DE NATIONAL SEMICONDUCTOR.

- MANUAL INTEL DE MCS, 51.

- MASTERING SERIAL COMMUNICATIONS (COPIAS FOTOSTATICA)

- C: GUIA PARA USUARIOS EXPERTOS (COPIAS FOTOSTATICAS)