Documente Academic
Documente Profesional
Documente Cultură
REAL
Z
IADORES:
AsEs.cm:
INTRODUCCION......................................................................................................................... 1
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
...........................................................
2.1 TRANSMISION ASINCRONA EN SERIE DE DATOS 11
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.
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.
- EL 8057 que tienesus primeros 4 kbytes de memoria de programa incluidos en una ROMÍnterna,
grabada almomento de
la fabricau*&.
2
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
PSW (program status word; direccih OdOH); este registrocontieneinfomacibndel sfafusdel programa,
ver descripcibnde sus bifs más adelante.
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.
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.
4
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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.)
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
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.
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:
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).
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.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.
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.
10
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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
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:
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.
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
14
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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.
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.
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.
16
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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.
union REGS r;
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.)
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.
void epuerto(puetto, c)
int puerto; r* puerto els *I
char c; /* caracter
enviar
a *I
{
union REGS r;
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.
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.
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
19
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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.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.)
1 1 1 I
AD15 AD14 AD13 CHIP SELECCIONADO
O O O NINGUNO
O I NINGUNO
. ~~~ ~ ~
1 O O HABlLlTAClON EPROM
1 O 1 HABlLlTAClON EPROM
1 1 O HABlLlTAClON EPROM
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.
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.
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.)
'TT
I C I
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.
27
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
Dwt
Dwt
/'
DIN
28
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
+-F
Lectura +5 +5 DOULT
+
Reposo +5 +5 Alta
Indistinto
Impedanda(z)
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
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.)
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.
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.
31
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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).
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.
32
1
I
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
I AN I
34
.
.
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
Defina la8 D i W n e s
lnldal y Rnal de la EPROM
I c
35
"
I
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
RESET
ENTRADA DE RESET
RD ENTRADA DE LECTURA
WR ENTRADA DE ESCRITURA
GND O VOLTS
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.
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
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 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)
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
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.
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
41
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
son:
Las definiciones funcionales para este modo
A B GRUPO
I
PUERTO A
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
SALIDA
ENTRADA
ENTRADA
ENTRADA
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
modo 1 son:
Las definiciones funcionales básicas del
43
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
2.
La figura3.11 muestrala palabra de control del Modo
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:
45
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
1 1 1p 1P l
o
I 1 I
46
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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.
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
\ A / A /
Y v \
v v
QRUPOA QRUPO B GRUW A GRUW 6
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.)
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.
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
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.)
6
(4
53
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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
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.)
#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 ;
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;
res-t = -LeeCar(&car);
switch (car)
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;
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()
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.)
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:
70
REPORTE PROYECTOTERMINAL ELECTRONICA (P.L.C.)
71
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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
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
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
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
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
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
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.)
END
ORG 1500H
81
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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
RET
RET
END
82
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
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*/
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
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
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
PNUEVO.PRN*/
03D8
DESPLEGA
EQU
03D8H
O388 DESPBUF
EQU
03B8H
040F
ASIETE
EQU
040FH
007E
TECLA
07EH
EQU
PCON
087H
0087
EQU
1500H
ORG1500
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
152C 22 RET
22 1539 RET
0000 END
87
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
'/DELAY.PRN'/
03D8 DESPLEGA
EQU
03D8H
03 B8 DESPBUF
EQU
03B8H
04OF ASIETE EQU W F H
007E
TECLA EQU
07EH
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
0000 END
PRETARDO.PRN*/
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
0000 END
P SEND.PRN*/
03D8
DESPLEGAEQU
03D8H
03B8
DESPBUF
EQU
03B8H
040F
ASIETE EQU
040FH
TECLA
007E
07EH
EQU
087H
PCON
EQU
0087
1500H
ORG1500
91
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
ET 22 153B
0000 END
/*S-PORT.PRN*/
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
93
REPORTE PROYECTO TERMINAL ELECTRONICA (P.L.C.)
0000 END
/*DELAY1 .PRN"/
-
AVOCET SYSTEMS 8051 CROSS-ASSEMBLER VERSION 1.1OM
03D8
DESPLEGA
EQU
03D8H
03B8 DESPBUF
EQU
03B8H
040F
ASIETE
EQU
040FH
007E TECLA
EQU
07EH
1500H
ORG1500
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
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: