Vous êtes sur la page 1sur 101

INGENIERIA ELECTRONICAEN COMPUTACION

PROYECTO TERMINAL - CONTROLADOR LOGIC0


PROGRAMABLE (PLC), BASADO EN EL C.I. 8031

CONTROIADOR LOGIC0 PROGRAMABLE


REPORTE FINAL

REAL
Z
IADORES:

CHAVEZ ZEGARRA RICARDOS.


FLOREAN CASTELLANOS JAVIER M.

AsEs.cm:

ING. PEREZ SUAREZ JOAQUIN

UNIVERSIDAD AUTONOMA METROPOLITANA- IZTAPALAPA


Mt5xico D.F., Septiembre de 1993
INDICE

INTRODUCCION......................................................................................................................... 1

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

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

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

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

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

1.5 TIMERS................................................................................................................................ 9

PARTF 7- USO DFI PUFRTOSFRIF ..................................................................................... 10

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

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

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

2.4 PROBLEMAS CON LA COMUNICACION............................................................................. 15


............................................................
2.4.1 Sobreescribiendo el Registro de Recepción 15

2.5 ACCESO A LOS PUERTOS SERIES DE LA PC A TRAVES DE LA BIOS............................ 15


..
2.5.1 lnicializaclondelPuerto .......................................................................................... 16
..
2.5.2 TransmislondeBytes ............................................................................................. 18
2.5.3 Comprobación del estado de un Puerto .................................................................. 18
de 2.5.4 Recepclon
.. un byte............................................................................................. 19
PARTF 3: 0FSCRlPClON DFL PROYFCTQ.............................................................................. 20

3.1 PRIMERA SECCION: C. I. 8031............................................................................................. 21


3.1.1 La Señal ALE ........................................................................................................... 21
3.1.2 RESET..................................................................................................................... 21
3.1.3 Selector de Dispositivos ........................................................................................... 23
3.1.4 Bus de Datosy de Direcciones................................................................................. 23

3.2 SEGUNDA SECCION: LA MEMORIA DEL KIT....................................................................... 24


3.2.1 Memorias Semiconductoras..................................................................................... 24
3.2.2 Memorias de Acceso Aleatorio (Directo) ................................................................... 24
3.2.3 EPROMs.................................................................................................................. 26
3.2.4 Organización de Sistemas de Memoria ..................................................................... 29
3.2.5 Acceso Directo a la Memoria .................................................................................... 31

3.3 TERCERA SECCION: INTERFAZ PROGRAMABLE DE PERIFERICOS (8255A) .................. 32


3.3.1 El 8255A .Descripci6n Funcional............................................................................. 32
3.3.2 El 8255A .Descripci6n Operacional......................................................................... 39
3.3.3 El 8255A .Modos de Operación............................................................................... 40
3.3.4 Combinaciones Especialesde Modos...................................................................... 45
3.3.5 Aplicaciones del 8255A ............................................................................................ 47

3.4 CUARTA SECCION: INTERFAZ DE TECLADO/DISPLAY (8279) .......................................... 47


3.4.1 Inicializacióny Comunicación conel 8279 ............................................................... 50

3.5 ETAPA DE POTENCIA (CONTROLELECTRIC0 EXTERNO. ANALOGICO) ........................ 54

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


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

INTRODUCCION

La necesidad de fomentar y obtener en las Instituciones de Enseñanza Superior por parte de los alumnos
una independenciay autonomía enel diseñoy la creacibn de Tecnología propiauflizando los elementos y material
existente en el mercado nacional, hace que se realice proyectos como el presente, conel Único propbsito de tratar
de solventar las carencias de tecnologia enel ámbito de la Ingeniería Electrdnicaen el pais. Para tal efecto se hace
uso de todos los conocimientos adquiridos durante toda la carrera tanto enel campo delsoflware (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 personainteresada 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 parasu culminación, así como las posibles aplicaciones en otras ramas y usos comunes del
mundo actual, ademásde las pequeñas introducciones te&cias que se realizan conrespecto 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 aprendidopara poder
obtener mejores resultados, así como tambiense tomb muy en cuentael mercado nacional en cuanto al material
electdnico disponible, el cual cabe mencionar es muy amplio, y por lo tanto no se tubo ningun inconvenienteal
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 cuantola a 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 Basadoen 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 muysencillo; hacer girarun motor hacia un lado u
otro o mantenerlo funcionandoun tiempo determinado.

Un Circuito Electrónicode estas caracteristicas (al cual denominaremosloensucesivo M) y conel apoyo


de una computadora aportansu potenciade cálculo y su facilidad ser para
programadoslo que nos permiteobtener
con comodidad la solucih a nuestros problemas de control. Conectar un aparato a una hora determinada y
desconectado aotra 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, cuandouna temperatura supere un determinadovalor), tenemos queusar sensores que
midan las magnitudes que queremos tener controladas y proporcionar esos valores la computadora
a yal kífpara
que el programa realizado los procese. Pero aún con esta mayor complejidad el programa sigue siendode unas
pocas instrucciones.

En general, los programas implicados para estos trabajos


no son complicados parala mayor parte de la
gente con algunos conocimientos de programacidn. El problema suele ser en primer lugar: ¿Cómo conseguir

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

"sacar" las señales tanto dela computadora como del kif que activen o desactiven dispositivos?. Más tarde se
complican con: ¿Cómo pueden "leer" la computadora y elkitdatos del exterior, por ejemplola temperatura enun
punto?. Para obtener las respuestas a estasmás
y preguntas es que se desarrollb dicho proyecto se y espera que
cumpla dicho cometido.

PARTE I : EL MICROCONTROLADOR 8031

1.1 VISION GENERAL:

Elmicrocontrolador8031es uno de los miembrosde la familiaMCS-51 de INTEL, y es toda una


computadora fabricada enuna sola pieza de silicio. Esta familia fue hecha para en usarse
aplicaciones de tiempo
real, control industrial y paraperif&icos de computadora, inteligentes. Existen básicamente 3 miembros de esta
familia:

- El 8031 que no tiene 64 kbytes de memoria de


pero puede dkecuónar
memoria de programa interna,
programa externa, además 64
dekbytes de datos externa.

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

- €1 8751que 4 kbytes dememma de programa Índtidos


tiene esos en una €FROM Íntema.

- 128 bytes de memoria y una pade de se


de datos interna puede direccÍmar por
ella bit bÍt.
- Un área de128bytes de memoria interna asgnada SFRs (Special Functim RegÍsters); aunque
lospara
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.2lheas en totao;sh embargo algunos de ellos se usan para
el manejo de la memma externa.
- 2 timers/contadores de 16bits cada uno.
- 1 Puedo sevial.
- Circuiteria interna para
el oscflador del
rdoi
- 4 bancos de registros (cada banco 8tiene registros), localliados laenm m m a de datos interna.
- 5lineas de Ínferupcidn (dos de fuentes externas y 3 de fuentes Ínemas: doslos detimers O y 1y od-a
del puedo senao con dos niveles de pnóridad.

2
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 puedeserhastade 64 kbyfes.Los primeros 4 kbyfes pueden residir dentro del
microcontrdador (8051 y 8751) o pueden estarlos 64 kbyfes externamente (8031,8051 y 8751).

Dentro de lamemoná dedafosse distinguen dostipos:una es la exfemaque puede crecer hasta64 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 Regkfros0 3 de la direccidn OOH a la OFH (32 bytes). Despuesdel reset el banco que se
por sofiwareotro banco. Cada Banco
usa por defaultes el O; sin embargo se puede seleccionar contiene 8 registros
numerados del O al 7. El Resefinidaliza el sfackpohferen la localidad 07H y hará que el sfackcoincida con el
segundo bancode registros porlo que si se desea usar másde un banco de registrosse debe inicializarel s p a
una localidad superior.

2. Area dkecubnafdepor bifs de la direccidn 20H a la 2FH para un total de 16 byfes. Cada unode los 18
bifsde esta áreapuede ser direccionado directamente (0-7FH). En ensambladorse puede hacer referencia a estos
bits de dos maneras, una mediantesus direcciones directas(O a 7FH) la y otra es con referencia a susbytes (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.0yasí
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 7FHy que puede usarse como área
de datos del usuarioo
cualquier otro uso.

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

ACC (direccidn OEOH); es el registro Acumulador. El mnembnico para ciertasinstucciones es A. Es el


registro más usado en el juego de instrucciones.

B (direccibn OFOH);este registrose usa durantelasoperacionesdemulfplicacidn y divisibn. Para


las otras
instrucciones puede ser usado
como otro registro más.

PSW (program status word; direccih OdOH); este registrocontieneinfomacibndel sfafusdel programa,
ver descripcibnde sus bifs más adelante.

SP (Stack Pointer; direccidn81 H); este es un registrode 8 bifs. Se incrementa antes


de meter datosen
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 enla localidad 08H.

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

DPTR(Data Pointer; DPH DPL; direccih 83H y 82H); este registroeskiformado deun byfealto(DPH)
y un byfebajo (DPL). Su función es guardar una dirección de16 byfes. Esteregistro 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; direccidn8CH,8AH, 8DH,8BH); son los registros de 16 bik de los


timer/contadores O y 1 respectivamente. TH correspondeal 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; direccidn89H); 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 y las interrupciones
hadware, de las interrupciones externas
de los timers cuando llegan aun estado de sobreflujo.

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

A continuaciónse detallan los SFRs que tienen funciones especiales asignadassus


a bífs

PSW Program Status Word (direccionable por bífs)


RS1
FO
AC
CY RSO OV -- P
CY PSW.7Bandera de Acarreo
AC PSW.6Banderaauxiliar de acarreo
FO PSW.5F/agOdisponible al usuariopara uso general
RS1 PSW.4 Bif 1 para seleccionar bancode registros (ver nota)
RSO PSW.3 Bit0 para seleccionar banco de registros (ver nota)
OV PSW.2Bandera de sobreflujo
"_ PSW.l Banderadefiniblepor el usuario
P PSW.0 Bandera de paridad. Se pone aO l por hardware cada ciclo de instrucción para indicar si
/
el número de bifs"1" en el acumulador es impadpar.

4
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 (18H-1
FH)
IE Interrupt Enable (Direccionable porbit)
EA I- EX1
ET1
ES ET0 EX0
IE.7
EA Deshabilita todaslas 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.
"- IE.6 No implementada, reservada para futuros usos.
I IE.5 No implementada.
IE.4
ES Habilita o deshabilita la interrupcihdel puerto serial.
ET1IE.3 Habilita o deshabilita la interrupcibn del timerl.
EX1IE.2 Habilita o deshabilita la intermpcibn externa l.
ET0 IE.l Habilita o deshabilita la interrupcibn del timerO.
EX0IE.0 Habilita o deshabilita la intermpcibn externa O.
Si el bíf esO la interrupcibn correspondientese deshabilita, y si es 1 se habilita.

IP Interrupt Priority (Direccionable por bir)


" I " PT1
PS
PX1 PTO
PXO
--- IP.7 No implementada, reservada parausos futuros.
"- IP.6 No implementada, reservada parausos futuros.
"- IP.5 No implementada.
PS IP.4 Define el nivel de prioridad de la interrupcibn del puerto serial.
PT1IP.3 Define el nivel de prioridad de la intermpcibn del timerl.
PX1IP.2 Define elnivel de prioridad dela interrupcibn externa l.
PTO IP.l Define el nivel de prioridad de la interrupción del timerO.
EX0 IP.0 Define elnivel de prioridad dela interrupcibn externaO.
Si el biles O la interrupcibn correspondiente tiene si el bifes 1 el nivel
un nivel de prioridad bajo,
de priotidad es alto.

TCON Timer/cwnter Control (Direccionable por bit)


TF1
TR1 TFO
TRO I E l IT1 IEO IT0
TF1 TCON.7 Bandera de sobreflujo delflinev l.Se activa por hardware y se desactiva por hardware
tambien, cuando se hace el salto al vector de interrupciim.
TR1 TCON.6 Bif de control delf/inerl.Se pone en 1 para arrancarloy a O para detenerlo.
TFO TCON.5 Bandera de sobreflujo delflinev O. Se activa porhardware y se desactiva por hardware
tambien, cuando se hace el salto al vector de interrupciim.
TRO TCON.4 Bíf de control deli9mevO. Se pone a1 para arrancarloy a O para detenerlo.
I E l TCON.3 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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

IT1 TCON.2 5ífde control para el tipo de interrupcibn l.Se pone por soffware, si es 1 indica que la
interrupcibn se activa por flanco de bajada ysi es O que se activa por nivel bajo.
IEO TCON.? Banderadeflancodelaintempa6n externaO.Seponea 1porharharecuandosedetecta
el flanco dela intmpcidnexterna. Se pone a cero porhardware,cuando seprocesa la
informaah.
IT0 TCON.0 5ífde contrd para el tipo de interrupcibn O. Se pone por soffware, si es 1 indica que la
interrupcidn se activa por flanco de bajada ysi es O que se activa connivel bajo.

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


GATE
C/T
M1 M0 GATE C/T M1 M0
GATE TMOD.7 y TMOD.3 Cuando TRx (en TCON) está puesto a 1 y GATE=l, el amem correrh sdo
mientas el pin INTx este en nivel alto (Control porhadware).Cuando
GATE=O, el timem correrá sdo mientas T k = 1 (Control por soffware).
C/T TMOD.6 yTMOD.2Selectordel timero contador. O indicatimer(entradadel relq del siskw
interno). 1 indica contador (entrada delpin Tx).
M1 TMOD.5 y TMOD.l 5d selectorde modo.
M2TMOD.4yTMOD.0 5ífselectorde modo

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

1.3 EL SOFTWARE:

El juego de instrucciones de estos microcontroladoresse puede dividir en:55% son instrucciones deun
byfe, 36% son de dos byfesy9% son de 3 byfe5 58% de las instrucciones toman1 ps en ejecutarse, 40% tardan
2 ps, y 2%se ejecutan en4 ps (con un relq de 12MHz),las instrucciones que se llevanps,4 son las instrucciones
para realizar multiplicaciones y divisiones.

Para comprender eljuego de instrucciones dela familia del 8031 hay que tener en cuenta que, desde el
punto de vista delas instrucciones, existen trestipos de memoria: 64 Kbyfesde memoria de programa (interna,
externa oambas) quesedireccionan con el registroPC (Program Counter),
64 Kbyfesdememoria dedatos externa
que se direccionan conel registro DPTR (Data Pointer), lay memotia de datos interna que
puede direccionarse de
vanas maneras.Cada instruccih hace referencia a uno de estos tipos así que hay que estardeseguros donde se
va a trabajar parade este modo escoger la instruccihadecuada.

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

Hay una gran diferencia entre


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

1.3.1 Mmmá de Datas Infernas


Las 4 principales formas de direccionamiento lade memoria de datos internason: directa, inmediata, por
regisBo e indirectapor registro. El modo directo usauna dirección dela RAM interna para accesar el dato, el modo
inmediato usa elvalor del dato que siguelaainstrucción; el direccionamientoporregisto usa un numero deregisto
para accesar el dato; elymodo 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 byteente el acumulador yla memoria de datos externa. La dirección
DPTR de 16 bifs, esta dirección puede ser cargada
de la memoria de datos externa está contenida en el registro
al DPTR con una sola instruccidn MOV o bien puede ser incrementada. Desafortunadamente no hay más
instrucciones de 16bifs.

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 datosque pueden
moverlos deo hacia unode los registros del banco de registros activo, existen cuatro bancos de registros.
Stack El
se puede colocar en cualquier lugar delos 128 bfles de la memoria de datos interna. El contenidode cualquier
localidad de la memoria de datos interna se puede meter y luego sacar stack.
del

1.3.3 ManeB& deb-&:


Debido a que la mayoría delas aplicaciones de un controlador requiere el manejo bitsde
deentada/salida,
el 8031 tiene una gran variedad de instrucciones para manipular bifs. Una sola inshcci6n puede poner, limpiar,
complementar o copiar cualquierbifen la memoria de datos interna. Los puertos de entada/salidacaen 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 de o t o puerto vía el acumulador booleano
o t o pin
(el bitde carryj. En total se tiene 21O bits que se pueden direccionar individualmente y cada uno deellos se puede
probar y así tomar decisiones en basesuaestatus (es decir saltos condicionales).

1 -3.4D ~ o s -de0E~ irWaSdi.:


El 8031 no tiene instucciones explícitas de entraddsalida ya que maneja un esquema de "memor-
mapped. Los puertosdel cnl;o están mapeados en el espacio de memoria de datos interna, y se accesanlacon
misma instruccibn MOV que se usa paralas otras transferencias, esto quiere decir que
el contenido de cualquier
registro o en general cualquier localidad dela memoria interna puede ser transferida directamente auno de los
cuatro puertosde entrada/saEda o viceversa. Todoslos perif&ricos externos quese usen tiene que ser mapeados
en la memoria de datosexterna y accesadoscon la instrucción MOW.

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

Se debe hacer incaple en las poderosas capacidades antmeticas que poseeel 8031 (instrucciones de
multiplicacibnydivisi6n riipidas) quepuedenseraprovechadasparaaplicacionesdetiemporealyde
procesamiento de señales, de hacen un microprocesador
estojunto con sus grandescapacidades demanejo bifslo
i d h e o en aplicacionesde contrd.

13.5 punfos D&&S:


El 8031 tiene una arquitectura basada en el acumulador para accesarla memoria de datos externa, por
lo que se tiene que desperdiciar tiempo y &digo
en leer un dato al acumuladorluego
y transferir el acumulador para
conseguir mover un dato de una localidad a otra la enmemoria externa.

La unicainstruccih de salto condicional es: "compara y salta


si no esigual" estohace que se tenga que
desperdiciar cbdigo y tiempo
parahacer saltos condicionales del tipo: "compara siy es
salta
igual", "compara y salta
si es menor", "compara y saltasi es mayor".

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

1-4 INTERRUPCIONES:

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

1.4.1 / n t m m - m st?%&?lna:
Las interrupciones externasINTO e INTI pueden ser activadaspor 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 generauna intermpcih y esta señal llega
a uno de los pines de interrupcibn del 8031se enciende la bandera correspondiente. Si la interrupcibn está
configurada como activapor transici6n la bandera correspondientese limpiarh al saltar al vector interrupcih,
de
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 /osthtys:


Las interrupciones delos fimers O y 1 son generadaspor medio delas banderas TFO y TFI (del registro
TCON) que seactivan cuandose llega al sobreflujo delos contadores correspondientes (salvo en el casofliner
del
O trabajando en el modo 3).Las banderas correspondientes son desactivadas
una vez quese haga el salto al vector
de interrupci6n.

1.4.3 /nfmpcͿhdel- sen;a/l-


La interrupcibn del puerto serial se genera mediantela funcibn OR de las banderasT I y R1 del registro
SCON. Ningunade estas banderasse desactiva al saltaral vector de interrupcibn, de hecho la rutina de atencidn
de interrupcibn tiene que determinar cual de las dos banderas la que generb
es la interrupcibn y despues desactivar
la bandera correspondiente.

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

En general todaslas banderas que generanlas interrupciones pueden ser activadaso desactivadas por
software, con el mismo resultadoque si hubieran sido activadaso desactivadas por hardware. Esto quiere decir
que pueden generarse interrupcioneso bien cancelar interrupciones pendientes por medio software.
de

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 * .ded las idtmpdmes:


Cada una delas interrupciones puedeser individualmente programada a uno de los niveles de prioridad
mediante el bifcorrespondienteen el registroIP. Una interrupcibn de prioridad baja puede su vez
a 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 prioridades la que se atiende; sin embargosi las peticiones son de igual
prioridad una secuencia de" p o d interna es la que determina cual peticibnes la que se atiende.

1.5 TIMERS:

El 8031 tiene dos timers/contadores con un registro de16 bifscada uno: fimer0y flmerl. Cada uno de
ellos puedeser 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 quees un
contador deciclos de máquina. Ya que cada ciclo de máquina consiste12de periodos de oscilador,la velocidad
de conteo es de1/12 dela frecuencia del oscilador del reloj.
En la funcibn de contador el registrose incrementa cada vez que haya una transicih de 1 a O en el pinde
entrada correspondiente(TO o T l ) .
Cada fimertiene unregistro de16 bifs formado por un byfealto (THx) yun byfe bajo (TLx), donde"x" es
O b 1 segljn el fimercorrespondiente.
Además de configurarse comofimerso como contadoreslos fiinerspueden programarse para trabajar en
4 diferentes modos de operacibn. Los modos O, 1 y 2 son iguales paralos dos fimers; pero el modo 3 es diferente
para cada uno:

Mad0 o:
Este modo trabaja con un registro de13 bits, los 8 bifs del THx ylos 5 bifsmenos significativos del TLx.
Los 3 bifs restantes del TLx contienen datos indeterminadosasi que deben ignorarse. Cuando en el conteo este
pasa de todoslos 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 registroTCON.

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

Mado2:
En este modose 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 enel registro TLx el valor del
registro THx el cualse establece por soflware. El valor de THxno se veafectado.

Mad0 3:
Para el fimer1 el modo 3 simplemente hace que mantenga la cuenta. El efecto es el mismo que si se
pusiera el bitTRl =O (del regisko TCON).
Para el timer O el modo 3 configura a TLO y THO como dos contadores independientes. TLO controla
interrupciones delfimer0y THO controla las interrupciones delfimer 1.

PARTE 2: USO DEL PUERTO SERIE

Posiblementeno existe otro dispositivo estándar que másdeproblemas al programador que el puerto serie
asíncrono. Se diferencia del puerto paralelo, que es mucho más simple, en que elpuede puerto
darserie
más tipos
de errorde transmisibn. Para complicarlas cosas, las posibilidades de diálogo del puerto serie, que aseguran una
buena comunicacih, nose pueden tener en cuenta al conectar los hilos que ligan el puerto serie elcon
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 separadospor algo más de medio metro.

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

una vez más son válidos paraun IBM PC, XT, AT


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

10
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 ahoraen adelante, el puerto serie asíncrono se llamará simplemente "puerto serie". A Travks de
un puerto serielos 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íaun byte cada vez. Latransmisidn se denomina aslncronasi el tiempoente
la transmisibn de unbyte de los datos (bit a bit)es indiferente. Sin embargo, tanto tiempo
el de transrnisibn como
el orden delos bits, que componen un bytemás otra infotmacibn, es critico.
Cada byte de datos quese 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 paridadde fin de transmisibn.
4. Unoo dos bits de fin de transmisibn.

Puede transcurrir cualquiertiempo entre la transmisibn deun parde bytes cualquiera. El estado de
la línea
de transmisib cuando no e s a 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 latransmisibn
de 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 dedos bytes. En general, no tiene importancia el usaruno 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 detransmisib. La paridad puede ser par o impar.
Si se elige la paridad par, albit de parada sele da un valor de forma que el byte transmitido más el bit de paridad
de unnúmero par. Si se usa la paridad impar, el byte másla paridad daránun numero impar.

La velocidad ala que se transmiten los bits se mide en baudios (bits


por segundo). La velocidad más baja
que se usa es de300 baudios, quese utiliza fundamentalmente enlos modems más viejos i lentos. (La mayoría
de los modems actuales van a 1.200 b 2.400 baudios.) La familia de microcomputadorasIBM 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 escrí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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

BUS DE CONTROL
1
0
U
s

D
E
6
U C
W S O
N
D T
E R

D
o
L
A
T
O
8

I m-

I I ” I

FIGURA 2.1: Estructura de Intermpcidn de una IBM PC

12
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 cantidadde los puertos serieno emplea todaslas 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-232más
comunes son:

Seiial del Patilla Abreviatura conector

Preparado para enviar RTS 4


Línea de contrd CTS 5
Datos preparados DSR 6
Terminal datos preparados DTR 20
Transmisión de datos TxD 2
Recepcih de datos RxD 3
Tierra GRD 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 seusa con otros dispositivos, muchas de esas señalesno sirven de nada.
Esas señalesse uflizannormalmente para establecer un protocdode hardware entre el modemy la Computadora,
deforma quetista: 1) no leenvíe infmacibn antes de que pueda transmitirla,
o 2) no lea infwmacibn del modem
antes deque 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 elbit inicial, muestra
el registro de entrada una vez cada ciclo del reloj para leerlos 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 dela del que envia, puede machacarse un bit, dando un error de configuracih.
La Figura 2.2 muestraun diagrama lógico dela conexidn de dicha interfaz para el puerto serial.

2.3 DIALOGO HARDWARE

La forma adecuada de transmifr datos at r a v b de un puerto seriees controlar el estatus dela señal línea
de contrd del puerto receptor. No debe enviar datos hasta quela señal linea de contrd indique que es seguro
hacerlo. De esta forma, cuando se usa el diálogo hardware,la rutina detransmisih, enpseudocddigo C, tiene el
aspecto:

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

13
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 ED I R E C C I O N E S

FIGURA 3.2: Interface Serial Diagrama Ldgico

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

Si tiene un cablecon 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, un mundo
en mucho menos perfecto,
no siempre es posible hacerlo.

2.4 PROBLEMAS CONLA COMUNICACION

Para permitirla comunicaahvía modem, se usan señales para determinar cuándo los datos están listos
o cuándose puede enviarelprdximobyte.Sinembargo,cuando la comunicacidnsellevaacaboentre
computadoras, es posible (aunqueno necesariamente recomendable) el usar S 6 1 0 las señales GRD, TxD y RxD.
La razdn que hay detrás de estoes 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 delos 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. Estose lleva a cabo puenteandolas
patillas 6 , 8 y 20del conector de 25 patillas. Desafortunadamente, este metodo que
hace
aparezca muy a menudo
un error de sobreescritura. Supongamosque la computadora A es más rápida que la B. Si no se utiliza diálogo
hardware, posiblementela computadora A puede enviar ala B un segundo byte antes deque esta haya leídola
informacidn del registro de entrada sudepuerto serie. Estees el denominado minadoerror sincronizaci6n.
de Este
tipo de error se puede producir incluso siendola computadora B más rápida quela A, si el softwarede la B fuera
demasiado lento.

Este problema aparece debido a quelas 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. poco se vera
Dentro dec&mo se puede vencer
esta dificultad.

2.5 ACCESO A LOS PUERTOS SERIEDE 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 sinpasar por elDOS y la BIOS controlando directamente el hardware. En general, el acceso losapuertos
serie a travesdel DOS no esuna buena idea, ya que elDOS no provee de posibilidad de realimentacidn con el
estatus del puerto, sdo nos brinda lecturaso escrituras ciegas en el puerto. Pornoello
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 at r a v b de las interrupciones dela ROM-BIOS.

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

Cuatro rutinas de la ROMBIOS permiten el acceso alos puertos serie. Estas rutinasse lanzan a través
de la interrupadn 14H. A confnuación lasveremos.

2.5.1 Inicializacich del puerto

Antes de utilizar el puerto serie, probablemente se desean inicializarlosvalorescaracterísticos con valores

1
distintos delos dados por defecto. (Losvalores detrabajo dados parael primer puerto serie son normalmente 1.200
baudios, paridad par,siete bits de datosy un bit final.) La rutina de servicio O de la interrupcibn 14H se utiliza para
inicializar un puerto serie. Como conlas otras interrupciones dela BIOS, se usan el registroAH para suministrar
el número de Enregistro AL se suministran los parámetros de inicialización, que se codifican
la rutina de servicio. el
en unbyte t a l y como se muestra a continuacidn.

numJ

baudios
paridad
fin de trans
bits de datos ~

La velocidadde transmisión se codifica comose muestra enla Tabla 2.1. Los bífs de paridadse codifican
según se ve en la Tabla 2.2. El número de bits de fin detransmisión viene dado en bíf2eldel byte de inicialización
del puerto serie.Si el bíf2 está en1 , se usan dosbítsde fin de transmisión;en otro caso se usarla unsolo 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ífs1 y O contienen el par a1 OB,se usarán sietebits
de datos. Si muestra el par ctl I D , se utilizan ocho bífsde datos.

T a b l a :Codificación dela velocidad en baudios conlos bits 7,6 y 5 del byte de


inicialización del puertosene.

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

Paridad Valores de los bits

no paridad O0 b 1 0
desigual o1
imparcial 11

Jabla 2.2: Codificacibn dela paridad conlos bits 4 y 3 del byte de inicializacih del
puerto serie.

Por ejemplosi se desea configurar el puerto9,600


a 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 es el O, el segundoes el 1,y así sucesivamente.
en el registo DX. El primer puerto serie
La funcih que sigue, denominada inicguerto(), se utiliza parainicializarlosparhetros 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; /* cbdigode inicializauch */
int86(0x14, &r, &r);
1

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

Esta funcidnse basaen la funcibn int860, que existe en muchos compiladores, entre ellos el Turbo C y
el MicroSoftC, aunque lafunci6n puede recibir algun otro nombre si utiliza otro compilador distinto.Tambih puede
ocurrir que exista (Por ejemplo, la funcidn bioscom() del Turbo
unafuncidn especifica que inicialiceel puerto serie.
C permite la inicializacidn delos 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 enAL. El estatus de la transmisibn se devuelve en el
regisbo AH. La funcih epuerto() que sigue enviaun byte a través del puerto serie especificado.

Si el bit7 de AH es devuelto porla interrupcibn a1, ha habido un error enla comunicacidn. Para determinar
la causa del error, debe mirar el estatus del puerto; aunque ewerto()
ahora se limita a salir ante
un error, se podría
describir unarutina 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
enviar
a *I
{
union REGS r;

r.x.dx = puerto; r* puertoserie *I


r.h.al = c; /* caracteraenviar *I
r.h.ah = 1; /* funcidnqueenví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 14Hde la BIOS sirve para cornprobarel estatus deun puerto. El
puerto a comprobar se especifica en el registro DX. A la vuelta dela interrupcidn, AH y AL contendrán el estatus
del puerto codificadocomo se muestra enla Tabla 3.

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

Como puedeverse, la mayoríadelosvalores queforman el estatus se refieren alos modems, y son menos
importantes cuandose utiliza el puerto serie para mmunicacionescon otros dispositivos.
Sin embargo, hayun valor
de estatusque sí es muy importante {{Datos preparados>>. Comprobando este se valor,
puede determinarsi se ha
recibido un bytede datos deun puerto ysi estd listo para leerlo. La funcibn
Ipuerto(), usada para leer datos deun
puerto, muestrael uso del valor de estatus {{datospreparados, como vera enel prbximo apartado.

2.5.4 Recepci6n de un byte

La rutina deservicio 2 de la interrupción 14H seufliza para leerun byte en un puerto serie. Una vezmás
se especifica enDX. A la vuelta dela intermpcibn, el cardcterleído se encuentaen AL. Y
el puerto serie a usar
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 funcibnIpuerto(), que sigue,lee un byte en un puerto dado.

/I Estado de la linea (AH)


Valor de 1 Bit

Datos preparados O
Error de sobreescritura 1
Error de paridad 2
Error de tramas 3
Error en la detección dela portadora 4
Buffer detransmisih vacío 5
Registro de desplazamiento vacío 6
Error de temporizacidn 7

Estado del M6dem (AL)


Valor para 1 Bit

Preparado para el envío. Secundario O


Datos preparados. Secundario 1
Detección secundaria de llamada 2
Detección de portadora secundaria 3
Preparado para el envío 4
Datos preparados 5
Indicador de llamada 6
Deteccih de portadora 7

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

19
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 abortaencasodepulsar una tecla */
{
getch0;
exit;
1
r.x.dx = puerto; P puertoserie "I
r.h.ah = 2; /" funcibn de lecturade un caracter " I
int86(0x14, &r, &r);
if(r.h.ah 8 128)
printl("detectad0 eror de lectura en el puerto serie");
return r.h.al;
1
La interrupcidnde lectura deun puerto espera hasta quese harecibido un byfe en el puerto serie antes
de retomar.Sin embargo, ciertotipos de errores, comoun cable mal conectado, pueden bloquear la computadora.
Para evitar este problema,l p u e r t o ( ) lee el estatus del puerto especificado, comprobandoel 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.) le permite
Esto abortar
si no se recibiera ningun dato. Tan pronto como se recibe un dato, se llama a la rutina de servicio 2 de la
l e el byfe. Una vez m&, se comprueba elbit7 de AH para versi la operacih fue exitosa.
interrupcibn 14H y se e
Finalmente la funcihdevuelve el byfeleído.

PARTE 3: DESCRIPCION DEL PROYECTO

El Proyecto, comose explicd a grandes rasgos enla introduccibn, corresponde aun Controlador Lbgico
Programable (CLP), basado enel Circuito Integrado 8031 de Intel. Básicamenteel Proyecto se divide en cuatro
secciones para mayor simplicidad en el manejo y desctipcibn del mismo: La primera seccih corresponde al
contrdador 8031en si; donde se encuentan además elfesefy el circuito i6gicode 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 momentoal Proyecto se le denominará por la palabra Kit, refirihdose de esta manera

20

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

a todoel circuito en general), donde se describe tanto ala ROM como a la RAM; la tercera seccibn corresponde
al contrd delos puertos realizado porel Circuito Integrado8255, 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 enla cual se describe al controlador del teclado y
display del Kíf.

Cada una de estas cuatro seccionesse describirán detalladamente, desdesu diagrama Ibgico hasta las
operaciones que realizan dentro
detodo el conjuntodelKit, se presentarán ademáslosdiagramascorrespondientes
a cadauna de las secciones respectivamente.No sdose pretende describir detalladamente el Proyecto ensí, sino
que además se trata demostrary explicarsu r e l a a h con el medio exteriory su utilizacih en interrelacih con otros
medios electrhicodigitales como pueden ser otros circuitos digitales, computadoras, dispositivos industrialesetc.

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 dondese van a direccionarlas memorias, ylos 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 correspondienteal Microcontroladoryase hizoen la Parte 1,del reporte, quedandounicamente explicar
como es que funciona estaparte del proyecto.

3.1 .I LA SEAAL ALE


Como se muestraen el diagramacorrespondienteaestasecibn, el circuitoprincipal 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 generanuna señal de
oscilacih que enka por las terrninalesX1 y X2 que corresponden los a pínes19y 18respectivamente, esta señal
permite que el Microcontroladorde la señal de ALE, la cual es la habilitacihdel latch de direcciones; esta señal
habilita el regisko de lasseñales AO-A7, esta señal salepor 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 Microcontrolador8031 está denominadopor la señal de Reset, este pin está conectado a un
pequeño circuito discreto comose puede apreciar enel diagrama de dicha seccih; dicho circutio está diseñado
de tal manera que cuando se presione elpush buffomle llegará adichopí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ñalno sdo llega al pín9 del Microcontrolador sino quetambih llega alospínes
correspondiente de reset de los CircuitosIntegrados 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,tantola RAM borrandosecompletamente toda lainformacibn y datosquecontenga,comola EPROM
comenzando nuevamente con el Programa Básico (Programa Monitor) el cual lo tiene grabado y contiene las
direcciones de inicializacibny coloca a todoel Kíten condiciones de comenzar las operaciones quese le indiquen
por medio de programas instaladoso cargados en la memoria RAM.

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

3.1.3 SELECTOR DE DISPOSITIVOS


El Selector de Dispositivoso tambikn comunmente llamado en el ambiente de la electrdnica cb@ se/&,
como se muestra en el diagrama constaunde circuito simple comprendido por doscompuertas TTL 74LSO8 y un
C.I. l T L 74LS138 el cual es unmultiplexor de 3 8 a líneas. La Palabra de Control o Señal de Seleccih lellega
por medio de tres líneas que
provienen del bus de diredones directamente del Microcontrolador, estaslíneas son
AD13, AD14 y AD15 correspondiendo al o s pines 2 6 , 2 7 y 28 respectivamente, la combinacihde estas señales
generar& alasalida del Mulfplexorunaseñal de habilitaah para los Circuitos Integrados8255A 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 serel de Escriturao el de
Lectura. La combinacih de estas tres líneas sus y respectivos resultados de seleccidnse muestran en la Tabla
3.1.1.

1 1 1 I
AD15 AD14 AD13 CHIP SELECCIONADO

O O O NINGUNO

O I NINGUNO
. ~~~ ~ ~

O 1 O HABlLlTAClON DE RAM Y EPROM

O 1 1 HABlLlTAClON DEL8 2 S A Y EPROM

1 O O HABlLlTAClON EPROM

1 O 1 HABlLlTAClON EPROM

1 1 O HABlLlTAClON EPROM

1 1 1 HABlLlTAClON 8279 Y EPROM

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 de8 bifsde datos, conocidopor byfededatos,
que permitelatransferenciade informaci6n entre el microcontroladory la memoria o dispositivos de entrada/salida.
Los datos que aparecen en el bus de datos pertenecen a algunos siguientes tipos:
losde
- Un byfede datos queingresa procedente deun dispositivo de entrada.
- Un byfe de instruccih procedente de la memoria.
- Un byfe de datos procedenteo enviado ala memoria.
- Bifs de control de sfafusempleados en derivar algunas de las señales delbus de control.
- Un byfe de instruccih enviado por un dispositivo de entradalsalida durante una interrupcidn.

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

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

El Bus de Direcciones se utiliza para identificar ubicaciones de memoriao 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 soportarla coneccibn de una interfaz los a dispositivos de entrada/salida.
EL microcontrdadw seencuentra informado siempresi el busde direcciones estA siendo usado para identificar
dispositivos de entraddsalidao si se trata de acceder laa memoria. Esta proveelas 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 comprendetambib inicialmente de8 líneas (AD8- AD15).

3.2 SEGUNDA SECCION: LA MEMORIA DEL KIT

Antes de comenzar conla dexripcibnparticular dela parte correspondiente ala memoria delKit, se dará
una breve desuipcih de lo que es la memoria en un circuito Lbgico-Digital. Para comenzar diremos que los
avances producidosen los úlfmosaños enla industria delos semiconductores, han dado por resultado un cambio
en eltipo de tecnologíade las memorias empleadas enlos sistemas digitales. Las memorias semiconductoras son
usadas hoy en díapor su bajo costo, su alta densidad, velocidadlosen
tiempos de ciclo y acceso, mejor fidelidad,
ymaywmodularidadquelascorrespondientesmemoriasmagn~ticas. Lossistemasbasadosenmicroprocesadores
empleanmemoriassemiconductoras,como es nuestrocasoen la realizacibn de nuestro proyecto, ya que
úricamente se emplearon este tipo de memorias.

3.2.1 MEMORIAS SEMICONDUCTORAS


Las memorias semiconductwasse dividen entres categorías principales,tal como se muestra enla Figura
3.1. Con tres excepciones, cadauna de estas categorías puede ser implementadauna con 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 conlas categoría MOS.

3.2.2 MEMORIAS DE ACCESO ALEATORIO (DIRECTO)


Ninguna dase dememoriasemiconductoraha avanzadotan rapidamente como las RAMs (Random Acces
Memory, Memoria de Acceso Aleatorio(Directo). Entre las principalesRAMs se encuentras lasde tecnología MOS.
Una delas mayores razones dela gran aceptacibn de estas memorias es la gran densidadde integracih de los
dispositivos MOS. Las R A M s estáticas, que no requieren circuitos especiales para refrescar la memoria, son
usadas conla misma facilidad que las compuertas TTL.
La familiade lasRAMS estáticas es ideal paraser usada en las aplicaciones de los microprocesadores.
Las funcionesde control y tiempos son efectuadas por el mismo microprocesador, por lo que no se requiere deun
funcionamiento especialporparte de la memoria. En el circuito desarrollado para este proyecto
se usa una de estas
R A M s la cual esla RAM 6416 de INTEL. La Figura3.2muestra un diagrama delas formas de onda de una RAM
en los ciclos de lectura y escritura.

24
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 memoriasEPROMs. El Kif utiliza una de estas
bíts cada una. La Figura
memorias la cual es la 2732 de INTEL, que consiste enbits organizados en palabras de
3.3muestra el correspondiente diagrama en bloques.

Deberá notarseque todas las entradas paralos cinco modosson referidas en niveles l T L . Las fuentes de
alimentacibn requeridas sonV, = +5 Volts y Vpp.La fuente de alimentacibnV,, debera estar en25 Volts durante
los tres modos deprogramacibn y será 5 Volts para los otros dos modos, los cuales son los que se van a usar
regularmente en el desarrollo del Proyecto.

L
E
1
FIGURA 3.2: Familia de Memorias Semiconductoras

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

La 2732poseedosfuncionesde 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 Enableo Habilitaci6n dela 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 delas direcciones ( k c ) es igualal retardo entreCE y la salida
(fCE).LOS datos se encuentran disponibles en las salidas luego de haber transcurrido 120 ns (fOE) despues del
flanco descendientede OE, asumiendo queCE se encuentra en"O" y que las direcciones se hallaban estabilizadas
-
por lo menos el tiempot ~ c c toE.

'TT

I C I

FIGURA 3.3: Diagrama en Bloques de una EPROM 2732

La 2732 poseeun modo de reposo que reducela potencia de disipacih en un 75%, de 525 mW a 132
mW. La 2732es llevada al modo de reposo cuando se aplicauna señal denivel 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 facilitarsu uso en sistemas grandes de memoria,


INTEL ha provisto a la 2732 dedos líneas decontrd
que permiten:

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

Dwt

Dwt
/'

DIN

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

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

a) obtener la menor potencia de disipaci6ny


b) asegurar queno se producirá contención del bus de salida.

TERMINALES VPP v, SALIDAS


MODO (21) (24) (9-11.13-17)

+-F
Lectura +5 +5 DOULT

+
Reposo +5 +5 Alta
Indistinto
Impedanda(z)

Prograrnacih Pulso V, a V,,

Verificacidn de la
Programadim

lnhlbid6n de la
Prograrnadbn
~ ~~ ~ ~~ ~
+25 I +5 I Alta
Impedancia(2)

-
JAB1 A 3.2: LA EPROM 2732 SELECCION DE MODOS

Para obtener eluso más eficiente de estas dos líneas de control


se aconseja seleccionarla memoria con
CE (terminal 18),mientras queOE (terminal 20)podrá conectarse a todos los dispositivos en conjunto conla señal
de lectura (READ) procedente del bus de control. Esto asegura que todos los dispositivos de memoria no
seleccionados est& en y que los terminales de salida est& activos solamente
el modo de reposo de baja potencia,
cuando se requieran datos de algun dispositivo de memoria en particular. La Figura3.4 muestra el diagrama de
las formas de Ondade unaEPROM 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 unatarea ardua.

Los medios de almacenamiento incorporan una serie de registros idénticos, cada


de loscuales
uno deberá
ser seleccionado parasu lectura y/o escritura.

La Figura3.5nosmuestra un esquema generalizado del modo en que se relacionan los elementos bhsicos
de unsubsistema de memoria, con una microcomputadora.
El bus de direcciones necesitará
bmers si las condiciones de carga dinámica y estática delas memorias
lo requieren. De todas formas,el diseñador deberá considerarno &lola Suma de las corrientes en el estado lógico
"O", sino tambih lacapacitancia de cada entrada de la línea de direccidn.

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

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

Paracircuitosintegradosdememoriaconectadasen paralelo,estacapacitanciapuedeinfluiradversamente
en los tiempos de acceso de los subsistemasdememoria.Esteefectodecarga dinwica determina el
requerimiento o no de buffixs,mhs aun quela carga esthtica.

Por o t o lado, si una microcomputadora poseeun Único dispositivo de memoria contenido en


un circuito
integrado, probablementeno serhn requeridos buffersen laslíneas de direccioneso datos.

En los diseños de memorias para microcornputadoras,la velocidad no esgeneralmente 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 amBxirna 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: tiempode acceso y tiempo de ciclo.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

FIGURA 3.5: Arquitectura de Almacenamiento

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

Tiempo deciclo es el menor tiempo comprendido entre dos accesos sucesivos la misma
a direccih. Los
dispositivos estdticos,tales como las memorias ROM, tienen sdo tiempo de acceso a ser considerado; las RAMs
estAticas presentanuna diferencia tan pequeña entresus tiempos de accesoy del cido, que por lo general podrá
ser ignorada. Las RAMs dindmicas, contrariamente a las estdticas, insumen grandes cantidades de tiempo de
acceso disponible, Serdel tipo de aplicacibn el que en definitiva resuelva tipo
el 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
menudo
a dispositivos,
distintos
del
microprocesador, que puedan acceder en forma directa la
a memoria.

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

Ciertas unidades enlas que el tiempo


es unvalor 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 accesolaamemoria se deberá emplear cierta interfaz que resuelva entrelos pedidos de
DMA
acceso por partedel microprocesador y aquellos generados por el dispositivo solicitante del(Direct Memory
Access).

Cuando el microprocesador recibeun pedido deDMA, éste responderá desconectando susbuses de la


memoria. Las llneas HOLD y HOLDA proveen estas funciones enla 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 deflujo de una rutina de escritura para una memoria RAM y la Figura 3.7 muestra tambien un diagram
de flujo pero de unarutina de examen deuna 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. Cuandoun diseñador de sistemas se enfrenta conla necesidad de seleccionarun microprocesador en
un diseño, no podrá tener como unica considerauh las aptitudes del microprocesador. El microprocesador tendrá
queser unelemento deuna 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 sustentaruna 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 parala implementación de tales interfaces. En el
Proyecto desarrolladose emplea dicho componente para la salida de datos hacialos periféricos delKit, llevando
además las señales decontrd y de programa, para el correcto funcionamiento de dichos perifhcos.

3.3.1 EL 825% - DESCRIPCION FUNCIONAL


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

32
1

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

I AN I

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

34
.
.
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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

RESET
ENTRADA DE RESET

RD ENTRADA DE LECTURA

WR ENTRADA DE ESCRITURA

AD, Al DIRECCON DEL PUERTO

PA7 - PA0 PUERTO A(BIT)

PB7 - PBO PUERTO B (BIT)

1 PC7- PC0 I PUERTO


C (BIT) I
vcc +5 VOLTS

GND O VOLTS

TAB1 A 3.3: EL 8255 - Nombre de los Terminales

El 8255A posee 24 terminales de entrada/salida que pueden ser individualmente programados 2 grupos
en
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ñalescontrdadorasde sfafusy de interrupciones. El tercer
modo de operacih (MOD02) constituye un bus bidireccional que usa8 líneas para ello y otras 5 para controlar
el sfatus, tomándolas deotro grupo.

A) BUFFER DEL BUS DE DATOS


Este bMerbidireccionalde 8 bits y con estado de impedancia alta, se usa para conectar el8255A con el
sistema de busde datos. Los datos son transmitidos o recibidos porel 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 bloquees controlar todaslas transferencias externas de y control
las palabras de datos
o status. Este acepta las entradas de los buses de control y direcciones provenientes del
CPU y en respuesta,
envía los comandos alos grupos de control.

C) cs
Es la entrada de Ch@Sdecfoseleccidn del dispositivo. Un"O" en estaentada habilitará la comunicación
ente el CPU y el 8255A.

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

D) RD
Es la entrada Reado de lectura. Un "O" en esta entrada habilita al8255A para enviar la informacihde
datos o sfafus alCPU, atraves del bus de datos. Esencialmente posibilita alCPU leer el 8255A.

E) WR
CPU escribir palabras de datoso de
Es la entrada Wnfe o de escritura. Un "O" en esta entrada habilita al
control en el 8255A.

F)A0 y A l
A0 es laseleccidn del PuertoO y A I lee del puerto1. Estas señales de entrada, conjuntamente conRD y
WR, controlan la seleccidn de uno delos tres puertos o los registros de palabras de Control.
Estahn conectados
normalmente alos bifsmenos significativos delbus de datos(A0 y Al).

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

H) CONTROLES DEL GRUPO A Y GRUPOB


La programación define El CPU escribe una palabra de control
la configuraabn funcional de cada puerto.
en el 8255A, que contiene la información de "modo", "examen de bit, "resef del bit, etc. Esta palabraes la que
fija la configuracihfuncional del componente.

Cada bloquedeControl(Grupo A y Grupo B) aceptael"comando"de la LdgicadeControlde


businterno de datosy emite los comandos apropiados a sus
Lectura/Escritura, recibelas "palabras de control" del
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)

podh ser escrito unicarnente.La operación de lectura


El Registro de Palabras de Control no esposible con este
registro.

I) PUERTOS A, B Y C
El 8255A contiene tres puertos de8 bib cada uno(A, B y C). Ellos podránser definidos segununa gran
variedad de configuraciones por medio de la programación, pero cada puerto posee una serie de funciones
especificas que lo distingue delos demás.

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

Puerto B: Posee un fafch/bMi de 8 bifs de datos de entrada/salida


y un b m k r d e 8 bifs de datos de
entada.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

Puerto C: Posee un lafch&ufferde bits de datos de salida yun buflerde8 bits de datos deentrada (sin lafch
de entrada). Este puerto puede ser dividido en dos puertos de 4bíts mediante el controlde modo.
Cada puerto de 4bíts contiene un hfcb de 4 bítsy puede ser usado para lassalidas de señales
de control y entradas de señales de sfafus, conjuntamente con los puertos A y B. La Tabla3.3
muestra las operaciones bhsicas del8255A.

Al I I I I I
A0 RD WR CS OPERACIONDEENTRADA
(LECTURA)

O O 0 1 O PUERTO A-BUS DE DATOS


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

OPERACON DESALIDA
(ESCRITURA)

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

FUNCION DE INHABLITACION

x
1
x
í
x
o
x
1
í
O
-
BUS DE DATOS 3-STATE
CONDICDN ILEGAL
x x 1 1 o 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 delos 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 dereset, 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 mediode una simple rutina de mantenimiento de programación,

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

Los modos delos puertos A y B podrán definirse separadamente, mientas que el puertoC se encuentra
dividido en dosporciones, 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.modos Los podrán combinarse de tal
modo que se adapten a casi todas las estructuras deentradakalida.Por ejemplo, el Grupo B podrh ser programado
en el Modo O para controlar la apertura de conmutadores simpleso los resultados deun cSlculo en unindicador
luminoso y el Grupo A podrá ser programado en Modo el 1, para controlarun teclado o una lectora de cinta segun
un sistema de interrupciones. La Figura 3.9 da el formato dela 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, estasmostrahn su simplicidad que está de acuerdo conun concepto
ldgico de entada/salida. En el diseño del 8255A se hatomado en consideracitxlla simplificacibn del diseñodel
circuito impreso.

6) FACILIDAD DE BIT UNICO DE SETlRESET


La instrucciónOUT podrá ser usada para determinar el estado 16gico de cualquiera delos bífs del puerto
los requerimientos dela programacibn enlas aplicaciones decontrd de sistemas. Cuando
C. Esta facilidad reduce
se usa el puertoC como sfafuso control de los puertos A y B, se podrá determinar el estado ldgico de susbí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 el8255A para ser operado en el modo1 ó 2, son provistas señales decontrd para
ser usadas como entadas de pedidos de interrupción delCPU. Estas señales son generadas en el puerto C,
pudiendo ser inhibidas del fip 1790 INTE, mediante la función de set/resefde
o habilitadas fijando el estado I6gico
bifdel 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 bifde Sefaplicado a INTE habilita la interrupcidn.
- El bifde Reseiaplicado a INTE inhabilita la interrupción.
NOTA; La sdecúdn de modo o la apkcacidr,de Resef, canda fodaslas mdscaras de los flp llops en forma
aufomAfli=a.

3.3.3 EL 8255A - MODOS DE OPERACION


A) MODO O (ENTRADNSALIDA BASICA)
entada y salida para cada uno delos tres
Esta configuracibn funcional provee operaciones simples de
puertos. Los datosse escriben y leen directamente del puerto especificado. La 7Tabla
muestra la definición delos
puertos para elModo O.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

D 7 W W M W W D l W
I L I
L
IL ' I 4

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

FIGURA 3.9: Formato de la Definicih de Modo

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

son:
Las definiciones funcionales para este modo

- Dos puertos de8 bib y dos puertos de4 bits.


- Cualquier puertopodrd ser de entradao de salida.
- Las salidas son almacenadas en /atches.
- Existen 16 configuraciones posibles deenlradahalida.
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 dichasseñales.

A B GRUPO
I
PUERTO A

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

SALIDA

ENTRADA

ENTRADA

ENTRADA

ENTRADA SALIDA 11 ENTRADA ENTRADA


I 1

ENTRADA ENTRADA 12 SALIDA SALIDA

ENTRADA ENTRADA 13 SALIDA ENTRADA

ENTRADA ENTRADA 14 ENTRADA SALIDA


I

ENTRADA ENTRADA 15 ENTRADA ENTRADA

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

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

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

T
L I-

-x x
Sh
x

sianiticgdo

FIGURA 3.1Q:Formato de Set/Reset de Bit

modo 1 son:
Las definiciones funcionales básicas del

- Existen dos grupos (GrupoA y Grupo B).


- Cada grupo contieneun puerto de8 bífsde datosy un puerto de4 bífsde controly datos.
- El puerto de 8 bífsde datos podrá ser la salida o entrada. Tanto las salidas como las entradas son
almacenadas en lafcbes.
- El puerto de4 bífsse usa para el controly la información desfafusdel puerto de8 bífsde 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 almacenalos datos en el latch de entrada.

IBF (Input Buffer Full F/F o buffer de entrada completo)


Un estado lbgico "I"en esta salida posibilitasu uso para indicar queel 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 dela entrada RD.

43
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 generarun pedido de interrupcibn, simplemente escribiendo
los datos
en el puerto.

INTE A: Se contrda mediante unaoperacih de seVresef de bif con PC4.


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

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 unaoperacih de escritura ha sido llevada a cabo con un
la entrada WR la llevaráa "1"y vdverá a "O" cuando la entrada ACK
puerto determinado. El flanco ascendiente de
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 delCPU.

INTR (Interrupt Requesto pedido de interrupcibn)


ElCPUpodráserinterrumpidollevandoestasalidaa"l",luegodehabersidoaceptadoslosdatosporparte
del dispositivo de salida. INTR tendrá el estado Idgico"1"cuando ACK, OBFe INTE sean "1" simultáneamente.
El flanco descendientede WR llevará aINTR al estado lbgico"O".
INTE A: Se controla mediante una operacih de seVresef de bífcon PC6.
INTE B: Se contrda mediante unaoperacih de seuresefde bif con PC2.

C) COMBINACIONES DEL MODO 1


Los puertos Ay B podrán ser definidos individualmente como entradas
o salidas enel modo 1 que permite
su empleo enuna gran variedadde aplicaciones deentraddsalida.

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 quecontolan este modoson las mismas que las explicadas
para el modo l. Tambien se dispone de funciones de habilitación einhabilitaah de interrupciones.

Las definiciones funcionalesbásicas del modo2 son:

- Se usa tinicarnente en el grupo A.


- El puerto A es un bus bidireccional de 8 bífsy el puerto Ces el de control y posee 5 bifs.
- Tanto las entradas comolas salidas se almacenan en/afches.
- El puerto de control (C) se usa para controlare indicar el sfafusdel puerto debus bidireccional (A).
44
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

La señalde control se define dela siguiente forma:

INTR (Interrupt Requesto 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 ha sido llevadaa cabopor el CPU,
una operacidn de escritura
con el puertoA.

ACK (entrada de reconocimiento)


Un estadoIdgico "O" enestaentradahabilitará la salidadeimpedanciaalta del b f l e r dedatos
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 porla operacihde sevresef debif con PC6.

Las operaciones de entradason:

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 ellatch de entrada.

INTE 2 (Elflip flop INTE asociado a la señal IBF)


El nl;o #cp será contrdado porla operaahde sevresef debíf con PC4.

2.
La figura3.11 muestrala palabra de control del Modo

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 restantesbifspodrán ser usados dela siguiente
manera:

- Si se podrá tener acceso a todaslas líneas enuna operacih normal de


son programados como entradas,
lectura del puertoC.

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

1 1 1p 1P l
o
I 1 I

FIGURA 3.12: Modo 2 - Palabra de Control


- Si son programados como salidas,los bífssuperiores del puertoC (PC7 - PC4) podránser seleccionados
individualmente usandola funcibn desevresef de bít. Los bíts inferiores del puertoC (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 m e x i b n directa enlre el 8255A y dispositivos Darlington para contolar indicadwesluminosos de alto
voltaje que requieran tal fuente de corriente.

6) LECTURA DE STATUS DEL PUERTO C


En elmodo O el puertoC transfiere datos alo del dispositivo perif6rico. Cuandoel 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 elflujo de programa de acuerdo con
tales valores. Parala lectura del stafusno se requerirá deuna inskuccibn especial;la lectura del puertoC ejecuta
esta funcibn. La Figura3.12 muestra el formato de las palabras de status para los modos 1 y 2.

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

3.3.5 APLICACIONES DEL 8 2 5 M

El 8255A es undispositivo apto para ser usado como interfaz con una gran variedaddeperif&icos, sin que
se necesite agregarle Idgica externa.
Cada disposifvoperiferico enun sistema de microcornputadoras poseerá una “rutina de servicio” asociada
a el. Esta rutina maneja elflujo de informacidn entreel CPU y el perif&rico. Ladefinicih 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)

8279 provee la interfaz entreel 8031 y eltecladoy display delKJ. El 8279 “refresca”
El circuito integrado
el display medianteuna 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 ocho
a lineas, que se usan para codificar las líneas de rastreo del8279. Se tiene entonces que
el 8279 es uncircuito integrado periferico que se selecciona usando el mapa de memorias.

Las lineas de segmentodel buspara l o s displayseestan conectadas las a salidas del8279 A3-AOy 83-60
a travesde dosbm7a-sde tres estados 74LS240, estos buflersayudan en la modalidad enla que se lesinicialize
teniendo en el nivel bajo (tierra) la salida 0 4 , las salidas del 8279 continuan el conteo en secuencia desde0000
hasta 11 11; esto causa un nivel bajo paso a paso seguido de unasalida a otradel 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 unicamentese encienda y /eda la vez de cadadíq~/’y.

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

47
E

I
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 IWA I N T E A I N T R A WTEB IBFB INTRB A- WlE1 IRFA INTE2 I N T R A

\ 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" la a vez, colocando este"O" en un renglon del teclado laavez. Las
líneas correspondientes alas columnas del teclado están conectadas lineas a las RLO-RL7 del 8279 (pines38-08).
Tan pronto comoes colocado un "O" en cada rengl6n por el rastreo delinea y el 74LS138, el 8279 checa y revisa
el retorno de estas lineas una a la vez para verificarsi alguna de ellasse encuentra en "O".En la Figura 3.13 del
diagrama de tiempo paralasformas de onda se muestra en la linea inferior cuando dichaslienas son revisadas.
Si el 8279 encuentra cualquiera de estas lineas de retorno en un nivel bajo, esto indica que
se hapresionado una
tecla del teclado, este espera un tienpo determinado cano de 10.3 ms y revisa de nuevo; sila tecla presionada
sigue presente,el 8279 genera un código de bitsel8 cual representa la a tecla presionada,la Figura 3.14 muestra
el formato del codigo generado. Tres bifsde este &digo representanel numero deel renglón en donde se encon.trÓ
la tecla presionada, y los otros tres representan el numero dela columna de la tedapresionada.

Despues el8279 produce unc6digode 8-bitsparala tecla presionada cargando la palabra en una memoria
interna FIFORAM de g-bfle,esto significa que cuando se comienza a leer el código ladeFIFO (First In First Out),
el primer código quese lea corresponderá al de la primera tecla que se presionó. La FIFO puede establecer el
código paralas primeras ocho teclas presionadas antesde entrar en unsobreflujo.

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

FIGURA 3.13: Diagrama de Refresco de Tiempoy


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 seincremente un contador dela
FIFO en un registro interno de stabs. Se puede conectarla salida IRQ a una entrada de interrupcih y detectar
cuando la FIFO tieneun caracter para ser enviado en una base de interrupcibn,o simplemente se puede checar
el contador en lapalabra de sfatuspara determinar cuandola FIFO tieneun 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 basede direcciones
para la unidad. El 8279tiene solamente dos direccionamientos internos, los cuales son seleccionados por el nivel
Ibgico dela salida AO, ph21. Si dicha salida tiene un nivel Ibgico
bajo cuando el8279 esseleccionado, es entonces
que el 8279 es habilitado parala lectura de datoso para le escritura delos mismos. AI estar esta salidaA0 en el
y status. El siguientepaso esserciorarse del formato
nivel lbgico alto se selecciona los registros internos de control
correcto parala(s) palabra(s) decontrd que se tienen que enviar para mantener la unidad operando enel modo
que uno desea.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

BIT MAS SlQNlRCATlVO BIT MENOS SlGNlFlCATNO

CNTL SHIFT SCAN RITURN

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 preguntaque regularmente surge cuandose tiene o mira el formatode laspalabras 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 es que todaslas palabras de controlson enviadas al mismo registro de
Bsto
contrd de direcciones.Los tres bibrnes altos de cada palabra de control le indican al8279 que palabra decontrd
este siendo enviada. Una señal O10deen los tres bibmás altos dela palabra decontrd, porejemplo, identificando
la palabra de contrd como una "Read FIFO/Sensor RAM". La primera palabra de control que se envia para
inicializar el 8279 es ladel Modo de Palabra de lnicializacion Tec/ado/Dísp/ay,esta palabray otras semuestran
en la Figura 3.15. Elbitdenominado como DD en la palabra de contrd especifica primero sise tiene para todo8
dfgitos o 16 digitos para el refresco. Si se tiene ocho o menos dsphys, tiene que asegurarsede inicializar para8
dlgitos, de esta manera el 8279 no desperdicia tiempo refrescando d@ys que no existen. Los bifs DD en la
palabra decontrol tambiknespesifican el orden en el cuallos caracteres enla 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 internaRAM serian enviados al digito más de a la izquierda deldispay,por ejemplo sise desea desplegar
las letras abCden los cuatro digitos demes a la izquierda deun dispayde 8 dlgitos, entoncesse debe ponerlos
cMigos de siete segmentos para esas letras en las primeras cuatro posiciones dela RAM como se muestra en

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

la Figura 3.16.a. Los c&digos colocados en lasdirecciones m& altas dela 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 enla RAM, este será colocado enla segunda p o s i u h de la RAM como se muestra
en la Figura 3.16.b. Enel disp/ay, el nuevo caracter será desplegado en el digito másdea la derecha, y el caracter
anterior será colocado sobre la segunda posicih desde la derecha. Estaes 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 ~
"V-
"VW Y UI
l * * U A A A A b b b D D I I K K

~nmmmurro*r
A D A l "
1 1 X W W L L b b t r c l r r

FIGURA 3.15: Formato de las Palabras de Control


para la inicializaci6n del 8279

Otra palabrade control que se necesita enviar 8279


al es la Palabra de Programa-Relog. 8279El requiere
una frecuencia interna de relog de alrededor de 100 kHz. Un divisor programable en el8279 le permite aplicar
algunas frecuencias viables como las de una señal de 2.45 MHz PCLK a su relog de entraday 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 relogpor 24, se enviará una palabra de control con O01 en los tres bits más altos y
11O00 en los 5 bits más bajos.

La úlfma palabra de control que se necesita parauna inicialización basees 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 deun digito a otro, añadiendo a esto diciendoelque 8279 usa un caracter en
blanco parael refresco, esta palabra de controlse puede usar para limpiarla meoria RAM de despliegue and/or
y la FIFO en cualquier momento. Hasta el momento solo nos hemos refen'do cuales su principal funcicin.Los dos
bítsmás bajos denominados Cp en la palabra de control mostrada la enFigura 3.15especifica el cddigo en blanco
requerido para esto.El c&iigo requerido depende delas conecciones debadware en sistema particular.

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

Lastres palabras decontrol descritaslfneasarriba mantienenla iniaalizacih básica. De cualquier manera,


antes de que seenvie c6digo a la memoria internaRAM de despliegue,se tiene que enviaral 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
el apuntador donde se quiere se quiere escribir el datoen la RAM. Si se desea
palabra de control para inicializar
escribir un dato enla primera posicibn enla 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 p o s i u h en la RAM despues de que cada datohaya sido escrito. Para
comenzar la busqueda y carga de los caracteresen la primeraposici6n en la RAM y seleccionandoel
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
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 circuitose cuenta con una etapa de potenciala cual va a convertir
la señal
Ibgica, en este caso un Vdtaje de +5 Volts aun voltaje mayor enAC para poder controlaren este caso un circuito
de luces,el cual no sdo es contrdadode ese modo por esta etapa de potencia, sino que además un control
posee
porprograma, esta etapa depotenciaesta compuestapor 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 suoperacib.

Para entender un poco mejor como es que esta etapa trabaja, comanzaremos diciendo que los Triacs
l o s dispositivos semiconductoreslos cuales
de tiristores.El termino tiristor incluye todos
forman parte de lafamilia
presentan un funcionamiento inherentecomodispositivo deCORTE y CONDUCCION, en oposicibn a aquellos
quepresentan un cambiogradualen la conducibn.Todos los tiristoressondispositivosdeconmutacibn
regenerativos, yno pueden operaren 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 tiristoresno pueden llevarse al estado deCONDUCCION, pero pasan a este estado cuando el
vdtaje aplicado alcanzaun cierto valor de ruptura. Ejemplos detipo de tiristorson los diodos de cuatrocapas
este
y los diacs. Los tiristores pequeños, los cuales no conmutan la cm'ente principal, generalmente se denominan
u7q10sifivosdedíqaro. Estos dispositivosson muy ufles en los circuitos de disparo de puerta los detiristores que
conmutan grandes cargas,tales como los triacs; siendo este nuestro caso el y uso que sele dará a este tipo de
tiristores. Más concretamente podriamos dear que un fdaces un dispositivo de tres terminales utilizado para
controlar el valor promediode la cm'enteque fluye auna carga. Un triac es diferente de un SCR en que puede
conducir corrienteen unacualquiera delas dos direcciones cuando es llevado a
CONDUCCION. Cuando un triac
es BLOQUEADO, no puedefluir corriente entre sus terminales principales independiente dela 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 dela 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 M T
,la
l 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 delos 3Wporciclo. Entonces proporciona control de potencia de onda completaen lugar
del control de potencia de media onda posible con un SCR. Los triacs tienenlas mismas ventajas que tienen los
SCR ylos transistores sobrelos interruptores mecánicos.No tienen el rebote de contacto, no se produce arcoen
contactos parcialmenteabiertos, y pueden operarse más muchorápido quelos interruptores mecdnicos,por lotanto
permiten un control de comente más preciso.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

I Im

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 unprograma 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 pormedio delos &why,comprobación de
las memorias, asi como permitir sacar señales especiales el por
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 esmuy compleja,
sdomuestralaoperacihcorrectadeelmicroprocesadorydetodossusdispositivosloscualesenconjuntorealizan
la operacibn de contrd y operauh del Conkoladw L6gico Programabley sus periftkicos externos. A continuacicin
se muestra el listado de esteprograma:
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

El segundoprogamacwrespondeal de comunicaabn del Kítcon unacomputadora PC, esta comunicación


es por medio del puerto serie, lo que nos dice que
la mmunicacibn conla PC es enserie, por medio de un conector
SR-322, la explicacih a todolo que corresponde ala comunicacih serial se explicó enla Segunda Parte de este
reporte,para mayw detallereferirsea esta parte,a continuaah se presenta el listadodelprograma
Turbo C:
correspondiente, el cualse realizó en el lenguaje de programacibn

P PROGRAMA QUE PERMITE LA COMUNICACIdN BlDlRECClONAL ENTRE EL CIRCUITO*/


/* PLC Y UNACOMPUTADORAPCPORMEDIODELPUERTOSERIE DE LAMISMA */
/*****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 = '13, atrib ='O;

VC-Iniciaventanas();
crea);
VC-Abrir(&vent[l]);
mew;
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],
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

"INICIA-FTO.
TRANSMICION
RECEPCIONDIRECTORIOS SAL1R");
VC~AtributoLinea(&ven~l],vc~ForNegro~vc~BakGris,1,1,79);
VC_AtributoLinea(&ve~l],vc_ForBlancolvc-BakNegro,l ,posics[O][l 1 1 3
Po~cs[ll[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*/
,posics[O][ll],
VC~AtributoLinea(&vennt[l],vc~ForNegro~vc~BakGris,l
Po~cs[ll[lll);
VC-Atributolinea(&ven~l],vc_ForBlanco~vc_BakNegro,l,posi~[O][l2],
Posics[ll[l21);
I 1 = 12;
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
REPORTE PROYECTOTERMINAL 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,
3, 17,4,11 , 2, O, "TIPO");
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, "");
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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

rec-arch();
delay( 1000);
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( 1000);
VC-Bwrar(&vent[S]);VC-Cerrar(&venq5]);
I

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

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

59
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,lO);
do
{
do
{
res-t = -LeeCar(&car);
switch (car)
{
case ARRIBA : if (res-t == O)
if (“13 > O ) “(Y4);
else ‘I4 = 1;
break;
case ABAJO : if (res-t == O )
if (“13e 1) ++(“M);
else ‘14 = O ;
break;
)PSWCHIT/
VC~Atributotinea(&vennt[2],vc~ForNegro(vc~BakGris,~l3+1,
posicl[0][*13],posicl[l]~l3]);
VC~AtributoLinea(&v~nt[2],vc~ForBlanco~vc~BakNegro,~M+l,posic1[0]~14],
posicl[l][*M]);
‘13 = ‘M;
) PSECOND DO ‘/
while (((car != ESC) ( 1 (res-t != 1))
&& ((car != ENTER) 1) (res-t != 1))
&& (car != IZQ) ¿?& (car != DER));
if (car == ENTER)
(

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

switch ('14)
(
case O:subrutZ(); break;
case 1:suhtO(); break;
1 P case o SWCHIT "1
VC~Atributotinea(&ven~2],vc~ForBlanco~vc~BakNegro,*14+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)


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

61
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) 11 (res-t != 1))
&& ((car != ENTER) 11 (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, '
1 4;
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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

do
{
do
(
res-t = -LeeCar(&car);
switch (car)
I
case ARRIBA : if (res-t == O)
if (73> O) "(74);
else *I4 = 1;
break;
case ABAJO : if (res-t == O )
if (*I3 e 1) ++(*PI);
else *I4 = O;
break;
)PSWCHlT/
VC-AtributoUnea(&venf[4],vc_ForNegroIvc_BakGris,*l3+l1
p0sic1[0][*13],posic1[1]~l3]);
VC_AtributoLinea(&ven~4J,vc_ForBlanco~vc_BakNegro,*I4+1,
p0sic1[0][*14],p0sic1[1]~14]);
*I3 = "14;
) PSECOND DO */
while (((car != ESC) 1 1 (res-t != 1))
&& ((car != ENTER) 11 (res-t != 1))
&& (car != IZQ) && (car != DER));
if (car == ENTER)
I
switch ("14)
I
case O:subrut3(); break;
case 1:subrut!jo; break;
I /* case o SWCHIT */
VC~AtributoLinea(&ve~4],vc~ForBlanco~vc~BakNegro,*I4+1,
posicl[o]~14],posicl[l]~l4]);
) r si*/
else salir= 1;
Irprimer DO "/
while (!salir);
VC-Bwrar(&ven~4]);VC_Cerrar(&vent[4]);free(caden);
I

63
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)
1
case O:
dirguerto = Ox3F8;
break;
case 1:
dirguerto = Ox2F8;
break;
case 2:
dirguerto = 0x3E8;
break;
case 3:
dirguerto = Ox2E8;
break;
default:
printf("Errw!");
fflush(stdin);
1
I
while( !(O e= puerto && puerto e= 3) );

do
{
Printf('7n Velocidad?(110,150,300,600,1200,2400,4800,9600 Baud):y;
scanf("%d", &bps);
switch(bps)
{
case 11O:
data I= 0x00;
break;
case 150:
data I= 0x20;
break;

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

case 300:
data I= 0x40;
break;
case 600:
data I= 0x60;
break;
case 1200:
data I= 0x80;
break;
case 2400:
data I= OxAO;
break;
case 4800:
data I= OxCO;
break;
case 9600:
data I= OxEO;
break;
default:
printf("Error!");
fflush(stdin);
I
I
while( bps!=ll O && bps!=l50 88 bps!=300 88 bps!=600 && bps!=l200
&& bps!=2400 && bps!=4800 && bps!=9600 );
do
(
printf( '7n Tamaño palabra?(7 o 8 bits): ");
scanf("%d", &palabra);
switch(pa1abra)
(
case 7:
data I= 0x02;
break;
case 8:
data I= 0x03;
break;
default:
printf("Error!");
fflush(stdin);
I
I

65
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;
case 1:
data )= 0x18;
break;
case 2:
data I= 0x08;
break;
default:
printf("Errw!");
fflush(stdin);
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;
case 2:
data I= 0x04;
break;
default:
printf("Error!");
fflush(stdin);
1
I
while(bits!=l && bits!=2);
bioscom(O,data,puerto);
return(dirguert0);

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

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;
charfilename[80];
printf('7nNombre del Archivo que transmite:");
scanf("%s",filenarne);
if ( (infile = fopen(filename, "r")) == NULL)
{
perror("fal1a de apertura de archivo");
return(-1);
1
printf("Desea Eco? (1-ON, 0-OFF): ");
scanf("%d", &eco);
while ((c = getc(infile)) I= EOF)
{
enviacar(dir-puerto, c);
if (eco)
1
putchar(c);
I
I
I

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

rec-arch()
{
FILE *outfile;
int c,eco=O;
charfilename[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)
{
if (eco)
{
putchar(c);
I
putc(c, outfile);
1
1

teclado()
{
int c, salida=O;
printf(" Transmitiendo del teclado... (Teclee '$' para salir)\n ");
while(!salida)
{
if (bioskey( 1))
{
c = bioskey(0) & Oxff;
if (c ==
I$')

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

68
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;
charfilename[80];
printf(lnNombre del Archivo quelista: ");
scanf("%s",filename);
if ( (infile = fopen(filename, Y ) ) == NULL)
{
perror("fa1la de apertura de archivo");
return(-1);
I
while ((c = getc(infi1e)) != EOF)
putchar(c);
I

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

lee-dir()

system("D1R");
I

69
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 pormedio
del teclado y díspkys,así tambiense presentan los listados de los programas de inicialización delpuerto serie, de
retardos y de envio de datos porel puerto serie:

r* PROGRA31 .TXT, ESTE ES EL LISTADO DEL PROGRAMA MONITOR CORRESPONDIENTE */


r* A LA INlClALlZAClON DEL 8031Y TODOS SUS DISPOSITIVOS, INCLUYENDO LAS*/
r* MEMORIAS DE USO DEL KIT*/

TECLA?EQU07EH ;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 delprograma


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 pedirel primer dato

MOV DPTR,#LETREROl ;se mueve LETRERO1 al DPTR


LCALLDESPLEGA ;se muestra en los displaysLETRERO1
,
;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 Aen 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 que10
LCALL SIETESEG ;cambio del digito a siete segmentos
MOV 70H,A ;se mueve al numero a la direccion del primer display

70
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

LCALL DESPBUF ;se muestra en el display al numero

CICLO3: MOV A,TECLAI ;se pide otro numero


MOV R1,A ;seguardaen 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
DIV AB
CJNE A,#OOH,CICLW
MOV 72H,71H
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


CICLON: MOV A,TECLAI ;pido lo quehayentecla
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
DIV AB
CJNE A,#OOH,CICLON ;si es letra salta a pedir otra vez
AJMPCICLO2 ;si no fue letravuelveameterdatos

71
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 ;pongo lo que hay en tecla enA
MOV R5,A
MOV B,#OAH
DIV AB
CJNE A,#OOH,ClCL07
LCALL SIETESEG
MOV 70H ,A
LCALL DESPBUF

CICLO8: MOV A,TECLAl


MOV R4,A
MOV B,#OAH
DIV 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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

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

;ahora a convertirde decimal a hexadecimalel primer dato


;dejanddos en2 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 partebaja
CLR A
ADDC A,B
MOV R1,A ;aqui ya tengo la partealta
,
;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 partebaja
CLR A
ADDC A, B
MOV R4,A;aqui ya tengo la parte atta
,

73
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

; s e l e d o n de menu

MOV DPTR,#LETRER03
LCALLDESPLEGA
MOV TECLA1,#OFFH
CICLOX: MOVA,TECLAI
MOV R7,A
MOV B,#OAH
CLR C
SUBB 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: MOVTECLA1 ,#092H
LCALL SIETESEG
MOV 072H,A
MOV TECLA1 ,#OE3H
LCALL SIETESEG
MOV 071H,A
MOV TECLAl,#OA8H
LCALL SIETESEG
MOV 070H,A
LCALL DESPBUF

74
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

AJMP PAUSA
AJMP SUMA
I

PARADA2:
MOVTECLA? ,#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 ,A
H
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 ,#OAlH


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

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

PAUSA:
MOV
A,TECLAI
CJNE A,#OEH,PAUSA
RET
,
;ahora haremosla 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 haremosla 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 haremosla multiplicancia de R1,RO R4,R3 = R1,RO


y

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

76
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
MOV A, R5
MOV RO,A
MOV A,R6
MOV R1,A
AJMP HEXDEC

;ahora haremosla division de R1 ,RO / R4,R3 = R1,RO


I

DIVISION:
MOVA,R3
MOV R2,A ; aqui se verifica si B es cero
MOV A, R4
MOV R3,A ; y si esto sucede, significa que habra
MOVA,R3 ; un error.
ADD A,R2 ; por ello se manda a la etiqueta
JZERROR ; deERROR
MOV R6,#00H
MOV R7,#00H
RES: LCALL
RESTDIV ; va a la rutina TESTDIV
JCCAMBIA ; va acambiar el resultadoa R l ,RO
CLR C
MOV A,R6
ADD A,#01 H
MOV R6,A

77
REPORTE PROYECTOTERMINAL 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
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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

DIVI1OC: RET
RESTA10:
MOV B,#OAH
MOV A,R2
CLR C
SUBB A,B
MOV B,#OOH
JNC CICLOS1
MOV B,#OlH
CICLOS1:
CLRC
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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

LETRERO1: DB OAlH,OFBH,09OH,OF9H;este codigopone 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 codigopone el letrero


DB OFFH,OFFH,OFFH,OFFH;oPEr

LETRER04: DB 087H,OA3H,087H,OFFH ;estecodigo pone el letrero


DB OFFH,OFFH,OFFH,OFFH ;tot
I

LETREROS: DB 086H,OAFH,OAFH,OA3H ;estecodigo 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


DESPBUFEQU03B8H
ASIETE EQU040FH
TECLA EQU 07EH
PCON
EQU
087H

ORG 1500H

SPlNlT : MOV SCON,#0101001OB ;inicialhacion del PUERTO SERIE


TllNlT : MOV TCON,#11010010B ;inicializacion parala TRANSMISION
MOV THl,#ODEH;ponemosTIMER1en modo l.
SETBIE.4

MOV TECLA?,#OFFH ;inidalizacion de registro tecla1

CICLO2: MOV A,TECLAl ;sepide 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 ;sehace la division de AIB
CJNE A,#OOH,ClCL02 ;se verifica que el primer digito sea menor que10

81
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 T R I ;se
enciende
timer1
el
MOV R3,#00H
MOV R3,#OFFH
SALTA:DECR3
LCALL SPIN
LCALL ASIETE
MOV 70H,A
LCALL DESPBUF
CJNE R3,#OOH,SALTA

SPOUT: MOV C,P;semueveel bit deparidada la banderadecarry


CPL c ;se complementa la bandera de
carry
MOV ACC.7,C;seinserta la paridadenelbit8dedatosatransmitir.
JNBTI,$;saltaa $ si el bit TI=O (SCON.l)
CLR TI ;apaga la bandera deinterrupcionparatransmision.
MOV
SBUF,A ;saca
caracter
el

RET

SPIN: JNB RI,$ ;espera la recepcidn


de un bit
CLR RI
MOVA,SBUF;mueve
el
caracter
al
acumulador
MOV C,P
CPL c
ANL A,#07FH

RET

END

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

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

DESPLEGA EQU 03D8H


DESPBUFEQU03B8H
ASIETEEQU040FH
TECLAEQU07EH

ORG 1000H

MOV A,#OFFH
MOV RO,A

PON:DEC RO
FIN:DECA
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


DESPBUFEQU03B8H
ASIETEEQU040FH
TECLAEQU07EH

ORG 1500H

MOV DPTR,#MENSAJE
LCALL DESPLEGA

83
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 DELKIT */

DESPLEGA EQU 03D8H


DESPBUFEQU03B8H
ASIETEEQU040FH
TECLAEQU07EH

ORG 1500H

MOV R1,#OOH
MOV R3,#00H
MOV R5,#00H
MOV R5,#003H
CICLO:
MOVR3,#OFFH
CLR P1.0
CLR P1.l
CLR P1.2
SALTA: MOV RI,#OFFH
MOVR2,#OFFH
DEC
R3
LCALL PAUSA
LCALL PAUSA1
CJNE R3,#OOH,SALTA
SETBP1.0
SETB P1.l
SETBP1.2
MOV R4,#00H
MOV R4,#OFFH
MOVR6,#00H
MOV R6,#OFFH
MOV R7,#00H
MOV R7,#OFFH
PAUSA2:DECR4
CJNE R4,#00H,PAUSA2
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

PAUSA3:DEC R6
CJNE RG,#OOH,PAUSAS
PAUSA4:DEC R7
CJNE R7,#00H,PAUSA4
LCALL PAUSAl
LCALL PAUSA1
LCALL PAUSAl
DEC R5
CJNE R5,#00H,CICLO
PAUSA: DJNZ R l ,$
RET
PAUSAl: DJNZR2,$
RET

END

PDELAYl .PAS. PROGRAMA DE UNA RUTINADE DISPLAYS */

DESPLEGA EQU 03D8H


DESPBUFEQU03B8H
ASIETE EQU040FH
TECLA EQU07EH

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
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

SETB P1.l
SETBP1.2
LCALL PAUSA
LCALL PAUSA
LCALL PAUSA1
LCALL PAUSA1
LCALL PAUSAl
DEC R5
CJNER5,#00H,CICLO
PAUSA:DJNZR1,$
RET
PAUSAI: DJNZ R2,$
RET

END

Los programas que siguenmntinuacih


a son l o s que correspondenal 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.1OM


SOURCE FILE NAME: NUEVO.TXT PAGE 1

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

1500H
ORG1500

1500 759852 SPlNlT : MOV SCON,#0101001OB ;inicializacion del PUERTO SERIE


1503 7588D2 TllNlT : MOVTCON,#ll01001OB ;inicializacion para la TRANSMISION
1506
758DDEMOV TH1,#ODEH
;ponemos
TIMER1 en modo l.
D2AC
SETB
1509 IE.4

86
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

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

1520 A2DO SPOUT: MOV C,P;semueveel bit deparidada la banderadecarry


1522 B3 CPL c complementa
;se la bandera
carry
de
152392 E7 MOVACC.7,C ;se inserta la paridadenel bit8 dedatosa transrnifr.
1525
3099FD JNB TI,$ a $ el
;salta si bit TI=0 (SCON.l)
1528 C299 CLR TI ;apaga la bandera de
interrupcionpara
transmision.
152A
F599 MOV
SBUF,A ; s a caracter
c a el

152C 22 RET

152D 3098FD SPIN:


JNB
RI,$ ;espera la recepci”n de un bit
1530 C298 CLR RI
1532 E599 MOV A,SBUF ;mueve el caracter al acumulador
1534 A2DO MOV C,P
1536 83 CPL c
1537 547F ANL A,#O7FH

22 1539 RET

0000 END

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VER!SlON 1.1OM


SOURCE FILE NAME: NUEVO.TXT PAGE2
-- SYMBOL TABLE---
ACC OOEO IE OOA8 1511
SALTA SPlNlT 1500 TH1 008D
AS I ETE 040
P F OODO SBUF SPOUT
O099 1520 TI O099
DESPBUF
SCON
PCON
0087
03B8 O098 TCON
0088 TllNlT 1503
DESPLEGA
03D8 RI O098 TECLA
007E
152D
SPIN TRI 008E

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

'/DELAY.PRN'/

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M


SOURCE FILE NAME: DELAY.TXT PAGE 1

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 R5,#00H
MOV
1506 7003 MOV R5,#003H
1508 7BFF
CICLO: MOV R3,#OFFH
P1.0
CLR
C290
150A
15OCCLR
C291 P1.l
150E
P1.2
CLR
C292
1510 79FFSALTA: MOV R1,#OFFH
1512 7AFF MOV R2,#OFFH
1514 1B R3
DEC
1515 121549
LCALL PAUSA
1518 12154C
LCALL
PAUSA1
1516 BBOOF2 CJNE
R3,#00H,SALTA
SETB
D290
151E
P1.0
1520 0291 SETB P1.l
1522 O292 SETB
P1.2
1524 7COO MOV R4,#00H
1526 7CFF R4,#OFFH
MOV
1528 7E00 R6,#00H
MOV
7EFF
MOV
152A RG,#OFFH
152C 7FOO R7,#00H
MOV
152ER7,#OFFH
MOV
7FFF
1530 1C PAUSA2:
DEC R4
1531 BCOOFC CJNE R4,#OOH,PAUSA2
1534 1E PAUSA3:DEC R6
1535 BEOOFC CJNE RG,#OOH,PAUSA3
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)

1538 1FPAUSA4:
DECR7
1539 BFOOFC CJNE R7,#OOH,PAUSA4
1 5 X 12154C
LCALL PAUSAl
153F
12154C
LCALL
PAUSA1
1542 12154c LCALL PAUSAl
1545 I D R5
DEC
1546 BDOOBF CJNE
R5,#00H,CICLO
1549D9FEPAUSA:
DJNZ RI,$
ET 22 154B
154CDAFE PAUSAl: DJNZR2,$
ET 22 154E

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DEIAY.TXT PAGE 2

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DELAY.TXT PAGE 3


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

PRETARDO.PRN*/

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.1OM


SOURCE FILE NAME: RETARDO.TXT PAGE 1

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

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

1500H
ORG1500

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

1513 D9FE PAUSA:DJNZR1,$


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 PAGE2


---- SYMBOL TABLE---
ASIETE
DESPLEGA
040F PAUSA
03D8
TECLA
1513
007E
DESPBUF
03B8 PI 0090 SALTA
1508
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)

P SEND.PRN*/

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: SEND-A.TXT PAGE1

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

1500H
ORG1500

1500 759852 SPlNlT : MOV SCON,#0101001OB ;inicializacion del PUERTO SERIE


1503 7588D2 TllNlT : MOV TCON,#11O1 001OB ;inicializacion para la TRANSMISION
1506 758910
MOV TMOD,#Ol OH ;ponemosTIMER1 en
modo 1.
1509 438780 ORL PCON,#080H;ponemos SMOD=l para K=2
15OC 758DDEMOV
THl,#ODEH ;se ajusta
el timerl para generar los
150F ;2400 bauds

150F D28E SETB TR1 ;se


enciende
el timerl
1511 7900 MOV R1 ,#00H
1513 7B00 MOV R3,#00H
1515 7BFF MOV RS,#OFFH
1517 C290 CLRP1.0
1519 79FF SALTA:
MOV Rl,#OFFH
151B 16 DECR3
151C 7441 MOV A,#041H
151E 121524 LCALL SPOUT
1521 BBOOF5 CJNER3,#00H,SALTA

1524 85DOD7 SPOUT:MOVPSW.7,PSW.0;semueveelbitdeparidada la banderadecarry


1527 B2D7 CPL PSW.7 ;se complementa la bandera carry
de
152985D7E7MOV ACC.7,PSW.7;se inserta la paridadenel bit8 dedatosatransmitir.
152C
3099FD JNB
TI,$
;salta
a $ si el bit TI=O (SCON.l)
152F C299 CLR TI ;apaga la banderainterrupcion
de para
transmision.
1531
F599
MOV
SBUF,A
caracter
;saca
el
1533
12040F
LCALL
ASIETE

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

1536 F570 MOV 70H ,A


1538 1203B8 LCALL DESPBUF

ET 22 153B

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION1.1OM


SOURCE FILE NAME: SEND-A.TXT PAGE 2
--- SYMBOL TABLE--
ACC OOEO PI 0090 SBUF O099 TCON O088 TllNlT 1503
TECLA
007E
SCON
0098
ASIETE
PCON
0087
040F TMOD 0089
DESPBUF 0368 PSW OODO SPlNlT 1500 008D
TH1 TRI 008E
DESPLEGA
SPOUT
SALTA
03D8
1519
1524 TI O099

/*S-PORT.PRN*/

AVOCET SYSTEMS 8051 CROSSASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: S-PORT.TXT PAGE 1

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

1500 1500H
ORG

92
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 timer1para
generar los
150F

150F D28E SETB TR1 ; s e enciende el timer1


1511 7900
MOV R1,#OOH
1513 7B00 R3,#00H
MOV
MOV
7BFF
1515 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:DJNZR1,$


152A 7AFF MOV R2,#OFFH
152C DAFE DJNZ R2,$
152E 22 RET

152F A2DO SPOUT:MOV C,PSW.O ;semueve el bit deparidada la banderadecarry


1531 B3 CPL c ;se complementa la bandera de
carry
1532 92 E7 MOVACC.7,C ; s e inserta la paridaden el bit8 dedatosa transmitir.
1534 3099FD JNB TI,$ ;saltaa $ si elbitTI=O (SCON.l)
1537 C299 CLRTI ;apaga la bandera de
intermpcion
para
transmision.
1539 12040F LCALL ASIETE
15% F570 MOV 70H,A
153E1203B8 LCALL DESPBUF
1541 F599 MOV SBUF,A;saca el caracter
1543 22 RET

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

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER- VERSION 1.1OM

SOURCE FILE NAME: S-PORT.TXT PAGE2

0000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: S-PORT.TXT PAGE3


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

/*DELAY1 .PRN"/

-
AVOCET SYSTEMS 8051 CROSS-ASSEMBLER VERSION 1.1OM

SOURCE FILE NAME: DELYl .PAS PAGE 1

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

1500H
ORG1500

1500 7900 MOV R1,#OOH


1502 7B00 MOV R3,#00H
1504 7000 MOV R5,#00H
1506 7D03 MOV
R5,#003H

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

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

O000 END

AVOCET SYSTEMS 8051 CROSS-ASSEMBLER - VERSION 1.10M

SOURCE FILE NAME: DELY1 .PAS PAGE2


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

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

Para terminarlo que corresponde ala programacibn del Kif se presenta algunas de las opciones de
pantalla que realiza y presenta el programa de comunicacibn la PC,
conel cual como se ya mencionb se realizó
en el lenguaje de programacibn Turbo C, este presentaun Menu depantallas para poder elegirla 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
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) 2Y (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)