0% encontró este documento útil (0 votos)
379 vistas216 páginas

T56 PDF

Cargado por

victor zapata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
379 vistas216 páginas

T56 PDF

Cargado por

victor zapata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

XWE USTGKlSriKRIA EXJEOTKICA

SISTEMA DE DESARROLLO DE PROGRAMAS DE CONTROL BASADO

EN EL MICROCONTROLADOR INTEL 8052AH-BASIC "

MARLON HERNÁN GNTANEDA BAVIDIA

TESIS PREVIA A LA OBTENCIÓN DEL TITULO DE INGENIERO

EN LA ESPECIALIZACION ELECTRÓNICA Y CONTROL

QUITO, MARZO DE 1993


Certifico <aue el presente
trabaj o ha sido realizado'
en su totalidad por el Sr.
Marión H. Ontanedi

Ing. Bolívar Ledesma


DIRECTOR DE TESIS
t

AGRADECIMIENTO

Agradezco a CELCO CÍA. LTDA.


y al Ing. Bolívar Ledesma
por su colaboración
INTRODUCCIÓN

En nuestro medio, cada vez es más común encontrar


microcontroladores que realizan algún tipo de control en una
gran variedad de equipos electrónicos de: informática,
telecomunicaciones, sistemas de control de maquinaria
eléctrica, equipo médico, sistemas de control de acceso,
fuentes de poder ininterrumpidas, reguladores, etc., para
aplicaciones que abarcan prácticamente todos los campos:
industrial, comercial, de servicios, e incluso en el hogar.
La tendencia tecnológica actual está orientada hacia la
automatización de procesos utilizando microcontroladores. Pero
aunque ésto facilita el diseño y construcción de la parte
física (hardware), en cambio requiere de un conocimiento
profundo del lenguaje Ensamblador y arquitectura del
microcontrolador utilizado, y de la suficiente experiencia
para elaborar los programas de aplicación (software) en el
menor tiempo posible.
El propósito de este trabajo es presentar a personas
relacionadas con el campo de la ingeniería electrónica
(estudiantes, técnicos o profesionales dedicados al diseño de
circuitos de control con microprocesadores) una alternativa
que facilite y agilice el desarrollo y puesta en marcha de
cualquier proyecto para aplicaciones de control de procesos,
mediciones o instrumentación. Para cumplir con este objetivo,
se ha diseñado y construido una tarjeta que usa el
microcontrolador "8052AH-BASIC" de INTEL, que por disponer de
un intérprete BASIC en su ROM interna, permite la programación
directa del microcontrolador en un lenguaje muy fácil de
entender y utilizar, como es el BASIC.
Se han analizado ventajas y desventajas que presenta el
microcontrolador escogido para varias aplicaciones posibles,
con lo cual se da una idea clara de sus capacidades y
limitaciones.
El intérprete "BASIC-52" tiene muchas características
especiales: posibilidad de programar memorias EPROM o EEPROM,
conjunto completo de funciones y operaciones matemáticas en
punto flotante, posibilidad de hacer programas que se ejecuten
automáticamente luego de un reset, capacidad de manejo de
interrupciones desde Basic o Assembler, etc. y padece de un"
defecto: su baja velocidad de ejecución. Para solucionar este
problema el 8052-BASIC permite enlazar programas BASIC-52 con
rutinas en lenguaje Assembler.
La materia cubierta en este trabajo presupone un
conocimineto de la familia de microcontroladores MCS-51, de
tal manera que no se profundiza en detalles de arquitectura o
lenguaj e assembler.
El tema de esta tesis tiene una aplicación' práctica
directa en nuestro medio y muy importante en la actualidad,
tomando en cuenta que el Ecuador está participando en un
proceso de integración económica dentro de la región andina,
el cual requiere de esfuerzos dirigidos especialmente al
desarrollo industrial, que solo se puede lograr mediante la
modernización y automatización de procesos.
ÍNDICE
INTRODUCCIÓN
CAPITULO 1 .- GENERALIDADES

1.1. Características del microcontrolador 8052AH-BASIC 1


1.1.1. Descripción de pines de funciones especiales 3
1.1.2. Hardwarte del 8052AH utilizado por el BASIC-52 6
1.1.3. Información general del intérprete BASIC-52 7
1.2. Configuración física 10
1.3. Puesta en marcha 12
1.4. Diagrama de bloques 14
1.4.1. Descripción del sistema 16

CAPITULO 2 _ - DISEfíO DE LA PARTE FÍSICA


2.1. Buses de datos, direcciones y control 21
2.2. Organización del espacio de memoria
2.2.1. Mapa de memoria escogido 23
2.2.2. Manejo de dispositivos externos 30
2.3. Manej o de memorias 30
2.4. Circuito de programación de memorias 32
2.5. Diseño de circuitos auxiliares
2.5.1. RESET 36
2.5.2. Comunicación serial .......................... 37
2.5.3. Comunicación Paralela 39
2.6. Diseño de fuentes de poder"
2.6.1. Diseño de las fuentes reguladas . 40
2.6.2. Diseño del transformador 46
2.7. Esquema circuital completo 56

CAPITULO 3 .- CONSTRUCCIÓN
3.1. Consideraciones generales 57
3.2. Diseño del circuito impreso 59
3.3. Documentación de conectores y "jumpers"
3.3.1. Conectores 63
3.3.2. "Jumpers" 65
CAPITULO 4 .- OPERACIÓN Y PRUEBAS
4.1. Uso de terminal 67
4.1.1. Ventad as y desventad as 68
4.2. Pruebas en caso de falla 70
4.3. Programación en BASIC-52 73
EJEMPLO 1. Interrupción Externa 74
EJEMPLO 2. Interrupción de tiempo 77
EJEMPLO 3. Interrupciones de tiempo y externas 79
EJEMPLO 4. Conversión decimal-hexadecimal 82
EJEMPLO 5. Velocidad de ejecución del 8052AH 85
EJEMPLO 6. Valores eficaz y medio 87
4.4. Programación de memorias 92
EJEMPLO 7. Programador de memorias EPROM 96
EJEMPLO 8. Lectura de información de memorias ....... 100
4.5 Graficación de datos provenientes del 8052AH
EJEMPLO 9. Emulador de terminal-graficador en QB4.5 106
EJEMPLO 10. Evaluación de la función seno 112
4.5.1. Filtro digital pasa-bajos 116
EJEMPLO 11. Filtro con generación de entrada 117
EJEMPLO 12. Filtro con lectura de entrada del 8255A 119
4.5.2. Algoritmo de control digital 125
EJEMPLO 13. Acción de control digital PID 126

CAPITULO 5 .- CONCLUSIONES
5.1. Análisis de resultados
5.1.1. Análisis de costos del sistema 131
5.1.2. Análisis técnico y recomendaciones 133
5.1.3. Especificaciones técnicas 140
5.2. Conclusiones 142

ANEXOS
1. Diagrama circuital de la tarjeta 150
2. Planos del circuito impreso 151
3. Esquema de conectores 154
4. Conjunto de instrucciones del BASIC-52 VI.1 ...... 155
5. ROM externa usadas por el BASIC-52 164
6. RAM interna y externa usada por el BASIC-52 166
7. Datos técnicos del 8052AH-BASIC 170
8. Registros de funciones especiales 180
9. Manejo de interrupciones desde Assembler 181
10. Formato de un programa BASIC-52 183
11. Formato de números en punto flotante 185
12. Hojas de datos del PPI 8255A 186
13. Llamada de rutinas BASIC-52 desde Assembler 196
14. Extensión a los Comandos/Sentencias . 202
GENERALIDADES

1.1 CARACTERÍSTICAS DEL MICROCaNTROLADOR B052AH-BASIC

Las características más representativas del

microcontrolador 8052AH-BAS1C son las siguientes* s

i. Intérprete BASIC completa incorporado en su ROM interna.

El 8052AH-BASIC es un micracontrolador 8052 de INTEL que

tiene grabado en los 8 Kbytes de su ROM un intérprete BASIC

íntegro., el BASIC~52? di señad o . especialmente para ser

utilizado en aplicaciones de . control de procesos e

instrumentación., con la ventaja de que facilita la elaboración

de los programas respecto al uso del lenguaje ASSEMBLER,

.2. El BASIC-52 funciona con una mínima cantidad de hardware.

La configuración física básica que se requiere para

aprovechar las principales características del intérprete

consta solamente de un LATCH,, 1 Kbyte de RAM externa y los

manejadores del pórtico serial 5 con lo que se puede

desarrollar múltiples programas de usuario en forma autónoma-

3- Capacidad de programación de memorias EPROM y EEPROM

Incluyendo pocos elementos en el circuito básico,, el


BASIC-52 dispone de dos algoritmos de programación distintos

que generan todos los pulsos necesarios para grabar en


cualquier memoria EPROM o EEPROM estándar., los programas de
aplicación del usuario.

4. Los programas pueden residir en RAM,, EPROM o EEPROM

A diferencia de muchos intérpretes BASIC., el BASIC-52


permite que varios programas cíe usuario distintos residan en

RAM y EPROM/EEPROM con la facilidad de poder ejecutar

cualquiera de ellos separada e independientemente,, aunque por

supuesto., no al mismo tiempo. Además pueden grabarse en

EPROM/EEPROM hasta 255 programas distintos que pueden ser

transferidos a RAM para finas de edición.

5. Conjunto completo de comandos,, sentencias y operadores

El BASIC-52 contiene,, además de los comandos y funciones

BASIC normales,, un gran repertorio de características únicas

que permiten al usuaria realizar tareas que regularmente

requieren de lenguaje Assembler como son los operadores

lógicos de ancho de bit o byte AND., OR y XQR.; también se

dispone de aritmética hexadecimal. En el ANEXO 4 se presenta

un resumen del conjunto de instrucciones del BASIC-52 con una

breve explicación de cada una.

6. Aritmética de punto flotante y BCD

Todas las operaciones y funciones matemáticas que se

ejecutan,, manejan los números en punto flotante y en formato

Binario Codificado a Decimal (BCD).. El ANEXO 11 muestra el

"Formato de números en punto flotante"«

7 B Las rutinas aritméticas y utilitarias pueden llamarse

desde lenguaje Assembler

El BASIC-52 contiene una biblioteca completa de funciones

que pueden ser accedidas fácilmente con lenguaje Assembler,,

usando 2o 3 instrucciones„ Entre el las constan todas las

rutinas de punto flotante., de-? entrada/salida y de conversión

de sistemas de numeración» El ANEXO 13 resume el proceso para

hacer una "Llamada a rutinas BASIC-52 desde Assembler".


8. Las interrupciones pueden manejarse en lenguaje Basic o

Assembler

Dentro de la construcción de un programa en BASIC-52,,

existe la posibilidad de atender interrupciones externas y de

tiempo,, mientras que con rutinas en lenguaje Assembler puede

manejarse toda tipo de interrupciones (ANEXO 9)•

9» Reloj en tiempo real interno de precisión

Existe un reloj en tiempo real residente en el 8052AH—

BÁSICA que tiene una resolución de 5 mseg„ y usa el

TIMER/COUNTER 0 „

12) - Programas au toe je cuta bles

Existe la posibilidad de hacer autaejecutable al primer

programa BASIC de usuario almacenada en EPROM externa., esta

característica hace que dicho programa se ejecute automática-

mente luego de un RESET o un encendida del sistema» Esto

permite correr un programa BASIC sin necesidad de que esté

conectado el enlace serial tarminal-microcontrolador? lo cual

as muchas veces necesario en ambientes de control-

11- Conversión directa entre sistemas de numeración Decimal y

Hexadecimal-

1.1.1 DESCRIPCIÓN DE PINES DE FUNCIONES ESPECIALES

La configuración del microcontrolador 8052AH-BASIC es la


misma que la de un microcontrolador 8052 de la familia MCS 51,,

y la distribución de pines también es la misma., como se


muestra en el ANEXO 7» La única diferencia es que en el
8052AH-BASIC el pórtica 1 es un pórtico de entrada/salida de B
4

bits "quasi-bidireccional" de propósito general,, en el cual

todos sus pines individuales tienen funciones alternativas

especiales que pueden o no ser implementadas por el usuario,

Las'funciones alternativas sons

PÓRTICO 1-0 (T2)

Puede ser usado como la entrada de disparo al TIMER/COUÍMTER 2.

Para que esta función opere debe ponerse el pin Pl.1 en un

nivel lógico alto (1L)B Puesto que esta función también la

dispone el microcontrolador 8052 común., se puede encontrar

detalles de la misma en cualquier Manual de Microntroladores

de la familia MCS-Sl*.

PÓRTICO 1.1 (T2EX)

Puede ser usado como entrada externa al TIMER/COUNTER 2 . Para

que esta función opere debe ponerse el pin Pi.1 en un nivel

lógico alto (1L).

PÓRTICO 1-2 (PWM QUTPUT)

Este pin es usado como pórtico de salida PWM (modulación por

ancho de pulso),, cuando se ejecuta la sentencia PWM del BASIC-

52» Su función primordial es generar trenes de pulsos de ciclo


de tarea y frecuencia variables.

PÓRTICO 1.3 (/ALE DISABLE)

Usado para deshabilitar la señal ALE al latch de direcciones

externo,, cuando se usa la característica de programación de


EFROM-EEPROM.
PÓRTICO 1-4 C/PROSRAMMINB PULSE)
Cuando se usa la. característica de programación? este pin

provee el ancho de pulso de programación adecuado para

programar memorias EPRQM estándar e INTELigentes. El BASIC-52


calcula el ancho del pulso de programación adecuado a partir

del valar de cristal del sistema (XTAL)» La longitud de este

pulso no es crítica cuando se programa memorias EEPRDM. Este

pin está activo en estado lógico bajo (0L)-

PÓRTICO 1.5 (/PROGRAMMINS ENABLE)

Cuando se usa la característica de programación., este pin se

emplea para habilitar el voltaje de programación de EPRQMs5

pero no es usado en caso de memorias EEPRQM que no requieren

de ningún voltaje de programación especial- Este pin se

mantiene activo (estado lógico bajo (0L)) durante todo el

proceso de programación de una EPROM-

PORTICD i.ó (/DMA ACKNOWLEDGE)

Cuando se emplea la característica DMA (acceso directo a

memoria)^3 este pin funciona como una sa1 ida de

reconocimiento del DMA activa en bajo (0L)B

PÓRTICO 1.7 (LINE PRÍNTER OUTPUT)


Este pin funciona como un pórtico de salida serial cuando se
usa el comanda y/o la sentencia LIST4* o PRIWTtf, Esto habilita
al usuaria a realizar una copia "hard copy" de un programa,, o
imprimir resultadas de algún cálculo-
1.1.2 HARDWARE DEL B052AH UTILIZADO POR EL BASIC-52^

Varias características del hardware interno del

microcontrolador 8052AH son utilizadas por el intérprete

BASIC-52 para implementar ciertos comandos y sentencias que se

muestran en la tabla 1 „ .1. Es necesaria que el usuaria del

micro las conozca pues pueden surgir problemas si se ejecutan

simultáneamente rutinas en lenguaje Assembler,, para manejar

interrupciones., que hagan uso de esas mismas características*

COMANDO HARDWARE USADO

PROB "TIMER/CÜUNTER 1": genera pulsos de tiempo para

programación de memorias EPRQM-EEPRÜM

LIST* "TIMER/COUNTER i" modo 16 bits: genera velocidad de

transmisión para la impresora serial

LIST "TIMER/COUNTER 2 I I B genera velocidad de transmisión

del pórtico serial

SENTENCIA HARDWARE USADO

PRINTtt Igual a LIST*

PRINT Igual a LIST

CLQCK1 "TIMER/COUNTER 0" modo 13 bitss implementa el

Reloj en Tiempo Real

PWM "TIMER/COUNTER 1" modo 10 bitss genera trenes

de pulsos de ancho modulado

ONEX1 INTERRUPCIÓN EXTERNA 1

tabla í,í Comandos y sentencias BASIC-52 que usan hardware del 8052AH
7

Luego de un RESET? el BASIC-52 inicializa los registros

de funciones especiales relacionados con los temparizadores

que utilizas TCON - 244 (0F4H);1 TMOD - 16 (10H) y T2CQN = 52

(34H) y asume que dichas valores permanecen constantes, lo

cual garantiza el funcionamiento normal de los comandos y

sentencias indicadas*

En definitiva,, si se ejecuta una de las sentencias-

comandas BASIC de la tabla 1»1? no se puede usar la

característica de hardware asociada Cpines del 8052AH

correspondientes),, de lo contrario puede utilizarse cualquiera

de los temporizadores o la interrupción externa I 9 dentro de

subrutinas en Assembler»

La mayoría del espacio de memoria RAM interna del 8052AH

es usada por el BASIC-525 reservando sólo cuatro bytes para el

usuario- Información detallada sobre el uso de RAM., tanto


interna como externa,, se encuentra en el ANEXO 6.

1.1.: INFORMACIÓN GENERAL DEL INTERPRETE BASIC-52

El BASIC-52 es un intérprete Basic diseñado con el

propósito de facilitar al diseñador de hardware / software

intera_cturar con el S052AH mediante un lenguaje de alto nivel,,


y al mismo tiempo salvar las restricciones que tiene el mismo
en cuanta a velocidad d£5 ejecución., pues permite el uso

coordinado de programas en lenguaje Basic con rutinas en


lenguaje Assembler.

En ©1 desarrollo de este trabajo de tesis se ha utilizada


la versión 1-1 del intérprete BASIC-52,
8

El conjunto de instrucciones del BASIC-52*, mostrado en el

ANEXO 4.1S se divide en tres grupas claramente definidoss

COMANDOS, SENTENCIAS y OPERADORES»

El BASIC-52 opera en dos modosa el modo de "Comandos" o

Directo y el modo de "Carrera" o de Intérprete. Cualquier

comando solamente puede ingresarse en el modo de comandos., y

el BASIC—52 lo ejecutará inmediatamente., mientras que las

sentencias sólo pueden ingresarse en el modo de carrera., a

excepción de algunas que son aceptadas en los dos modos.

Existen tres tipos de sentencias: de Asignación, de Entrada-

Salida y de Control. En el ANEXO 4«2 se señala a que tipo

pertenece cada sentencia,, y si puede o no ser ingresada en el

modo de Comandas,

Un programa Basic es un conjunto de sentencias,, cada una

de las cuales empieza con un número de linea., seguida par el

cuerpo de la sentencia y termina con un "Carriage Return" (cr)

o das puntas (:) en casa de que la línea contenga más de una

sentencia»

El ANEXO 10 muestra el "Formato de un programa BASIC-52".

El BASIC-52 contiene un editar de línea básico., razón por

la que sólo se necesita un terminal tonto como consola. Para

escribir un programa en Basic es conveniente conocer por lo


menos lo siguientes

- El Basic usa números de línea para ordenar las sentencias

secuencia1mente™

- Sólo puede usarse una vez un número de línea,, dentro de un

mismo programa-
9

- Son válidas números de linea entre 0 y 65535 inclusive»

- No es necesario introducir las lineas de programa en orden

numérico ya que el Basic las ordenará automáticamente en forma

ascendente.

- Una linea de programa puede contener hasta 79 caracteres en

la versión 1.1 del BASIC-52 (la que usamos)„

- Al escribir una linea de programa pueden o no incluirse

espacios en blanco entre los elementos de la sentencia., pues

el Basic los ignora e introduce dichos espacios cuando se hace

un listado-

- Pueden ponerse tantas sentencias en una linea como su

dimensión lo permita., pero deben separarse con dos puntos ( s ) -

- Una ves que se ha introducido una linea., no es posible

modificarla a menos que se reescriba-

- Mientras se está introduciendo una linea., es posible barrar

varias caracteres., pero de uno en uno, empezando desde el

último escrito., introduciendo un carácter "rubout" o "delete" s

o presionando la tecla correspondiente»

— Puede borrarse toda la linea presionando la secuencia de

teclas CONTROL-C

- Al presionar la secuencia CONTROL-S9 el BASIC-52 suspende la

comunicación con el terminal 3 impidiendo por lo tanto la


transferencia de información en ambos sentidos-

- Al presionar la secuencia de teclas CONTRQL-Q se reestablece

la comunicación.

- El rango de números que pueden representarse en BASIC-52 esa

± 1E - 127 a ± .99999999E + 127

con una precisión de 8 dígitos significativos»


10
- Los números pueden ser introducidos y mostrados en cuatro

formatosí entero, decimal,, hexadecimal y exponencial-

- El rango de números enteras ess de 0 a 65535 o 0FFFFH-, que

pueden ser introducidos en formato decimal o hexadecimal.

1.2 CONFIGURACIÓN FÍSICA

La configuración física básica que el BASIC-52 requiere

para poder funcionar,, consta den

Por lo menos i Kbyte de RAM EXTERNA., pues reserva las

primeras 511 localidades de ese espacio para su uso

particular,, específicamente para implementar dos "stacks"

(pilas) de softwares la pila de CONTROL y la pila aritmética o

de ARGUMENTO.

La pila de CONTROL ocupa 159 bytes, entre las localidades

60HC96) a 0FEH(254),, para almacenar toda información asociada

con laeos de control (generados con las sentencias BASIC a DO-

WHILE.,, DO-UNTIL y FQR-NEXT) y subrutinas basic (sentencia

SOSUB). La pila se inicial isa a 254 (0FEH) y decrece a medida

que ingresa información en ella.

La pila de ARGUMENTO ocupa 210 bytes, entre las

localidades 301 (12DH) y '510 (1FEH)9 para almacenar todas las


constantes que el BASIC-52 esté usando al momento,, Las
operaciones matemáticas como suma., resta,, multiplicación y

división tiene los operandos y entregan el resultada en esta


memoria. La pila se inicial iza a 510 (1FEH) y decrece a medida

que se ingresen valores en e l l a - Cada número de punto flotante


colocado en la pila cíe ARGUMENTO requiere de 6 bytes. Detalles
11
del formato en punto flotante se muestran en el ANEXO 11.

Las demás necesidades de hardware del S052AH--BASIC son

similares a las de cualquier microcontrolador de la familia

MCS-51:

„ Interfas serial RS--232 que permita la comunicación consola

(terminal) - microcontrolador«

LATCH para generar., a partir del pórtico P2 del micro,, el

byte menos significativo del bus de direcciones y el bus de

datos»

Dependiendo de la configuración física,, el BASIC-52 opera

en dos "modos de memoria11 distintos,, el Modo RAM y el Modo

RAM/EPROM.

En el modo de operación RAM,, sólo se dispone de memoria

de lectura / escritura conectada al microcontrolador»

Constituye la configuración de hardware más simple utilizada

solamente para comprobar el funcionamiento normal del

intérprete BASIC-52 debido a que no permite la utilización de

sus principales características como la programación de EPRGMs

y llamada a rutinas desarrolladas en lenguaje Assembler-

El modo de operación RAM/EF'RQM,, por el contrario,, permite

la implementación del sistema completo del BASIC-52 e incluye

tanto memoria de datos coma de programa para aprovechar todas


las funciones del intérprete- La configuración de este modo es

la siguientes

- RAM direccionada de IMMH a 7FFFH (32 Kbytes). Las

direcciones se usan para decodificar las líneas de selección

de chip (/CS) de las diferentes RAM -se requeriría de 4 chips

de SKbytes o 2 de 16 Kbytes que no se encuentran en el mercado


nacional fácilmente-,, las lineas de /RD y /WR se usan para

habilitar los pine.s /OE y /WE (o /WR) respectivamente-

- EPROM direccionada de 2000H a 7FFFH (24 Kbytes) - ya que la

EPROM interna del 8052 ocupa las localidades 0000H a IFFFH

(8 Kbytes)-. Este espacio de memoria se utiliza sólo para

almacenar rutinas de usuario en lenguaje Assembler3 las

direcciones se usan para decodificar las lineas de selección

de chip (/CS) de los elementos EPROM -se requerirían 3 o

mínimo 2 chips que ocuparían mucho espacia físico en la

tarjeta lo que incrementaría su costo-? y la señal /PSEN se

usa para habilitar el pin /OE de todas las EPROM-

- RAM o EPROM direccionada de 8E3Í30H a 0FFFFH (32 Kbytes)- Para

poder colocar memoria de datos o de programa en este espacio

de direcciones se sugiere hacer una operación lógica "AND"

entre los pines /RD y /PSEN mediante una simple compuerta TTL

como la 7408, lo que permitirá al usuario ejecutar rutinas en

lenguaje Assembler como también programas en BASIC-52 que

estén localizados dentro de este espacia de direcciones.

En la EPROM .que ocupa este espacio de memoria se puede

utilizar la opción de programación del BASIC-52»

1.3 PUESTA EN MARCHA

Para arrancar un sistema que., usando el microcontrolador

8052AH~BAS:CCÍ cumpla con la configuración física mínima

explicada en el numeral 1.2., debe seguirse el proceso que se

detalla a continuación., junto con la forma como reacciona el


intérprete BASIC-52 en cada pasos
13

PASO 1. Aplicar el voltaje de polarización (+5V) al sistema.

El BASIC-52 inicializa el hardware del 8G352AH2

- Limpia la RAM interna del micro

— Inicializa los "Registros de Funciones Especiales -RFE-" y

punteras internos., can las siguientes valórese

TCON 244 (0F4H)

TMOD 16 C 10H)

T2CON 52 ( 34H)

El ANEXO 8 muestra los Registras de Funciones Especiales

del 8052AH-BASIC.

- Prueba., limpia y dimensión a la RAM externa en forma

consecutiva., desde 0000H hasta que se detecte una falla. Esta

operación se realiza simplemente escribiendo un 5AH en una

localidad., se prueba si el valor almacenado es el mismo que se

escribió-, si lo es se escribe un 00H en la misma localidad y

de nuevo se prueba si el valor almacenada es 00M.3 finalmente

se asigna la dirección de la última localidad de memoria que

ha pasado la prueba al "Valor de Control del Sistema ~VCS~"

MTOP -

- Asigna el valor por predefinición del cristal 1ÍU0592 MHz al

VCS XTAL y lo usa para calcular todas las funciones

dependientes del tiempo tales como el temporizador para

programación de EPROMs y el reloj en tiempo real que maneja


interrupciones.

- Busca en la localidad 8000H de ROM externa información sobre

la velocidad de transmisión,, si la encuentra,, inicializa el

"Generador de Velocidad de Transmisión" (RFE T2CQIM),, y se

establece inmediatamente la comunicación terminal~-micron si no


14

la encuentra .< va hacia una rutina de detección automática de

la velocidad de transmisión ^ la cual,, lo único que necesita

para ejecutarse es el ingreso del código de espacia

(presionando la barra espaciadora) desde terminal.

PASO 2« Conectar el cable de comunicación serial RS-232 entre

la computadora y la tarjeta,, Esto puede hacerse incluso

antes de activar la fuente de polarización de la tarjeta., sin

causar daño alguno a ningún circuito de la misma., puesto que

el interfas serial ICL-232 usado., aisla los voltajes prove-

nientes de la PC (niveles RS-232 « ± 10 Vdc).

PASO 3. Presionar la barra espaciadora del terminal.

El BASIC-52 determina la velocidad de transmisión del

terminal., establece la comunicación y envía a su pantalla el

siguiente mensajes

>MCS-51 (tm) BASIC Vi n 1

>READY

indicando al usuaria que puede empezar a trabajar»

La forma como reacciona el BASIC-52 ante un RESET es la

misma que ante un ENCENDIDO., razón por la cual luego de un

reset clebe seguirse el mismo procedimiento indicado para


arrancar el sistema.

1.4 D I A G R A M A DE BLOQUES DEL SISTEMA

La figura 1>4«1 muestra el diagrama de bloques del


circuito implementado»
Hfl

Oi

HGÜRA 1.4.1. DIAGRAMA DE BLOQUES DEL SISTEMA


16

Al escoger la configuraciún mostrada en el diagrama de

bloques de la página anterior,, se ha tenido como objetivo

fundamental el de comprobar y utilizar las principales

características y ventajas que ofrece el microcontrolador

8052AH-BASIC.

1,4-1 DESCRIPCIÓN DEL SISTEMA

La figura 1-4-1 contiene los siguientes bloques principales;;

1. Microcontrolador 8052AH-BASIC

Elemento que va a controlar el funcionamiento de todo el

sistema desde el intérprete BASIC-52 de su ROM interna,,

cumpliendo las siguientes funciones primordialesa

- Comunicación con la consola a través del interfas serie

- Lectura/escritura de RAM externa

- Lectura de memoria EF'ROMl para Assembler

- Lectura/programación de EPROM2 para Basic

- Comunicación con interfas paralelo FPI 8255A

2- MEMORIA EXTERNA

Este bloque está constituido por todos los chips de


memoria externa al microcontrolador ya saa memoria de programa

(ROM) o memoria de datos (RAM) y se lo ha dividido en tres


partes principaless

EPROM1-ASSEMBLER
Es una memoria UVEPROM 2764 de SKbytes donde pueden
17

residir los programas y rutinas de usuario escritas en

lenguaje Assembler que se desee llamar desde un programa en

BASIC-52. La capacidad de almacenamiento de esta memoria se

escogió en base a que exista un "paquete de extensión" del

BASIC-52 que viene en una ROM 2764 y provee al usuario de

muchas opciones adicionales entre las que se destaca un

Assembler completamente residente y un editor de texto para

usarlo con dicho Assembler'*-

- EPROM2-BASIC

Este sub-bloque es el "zócalo de programación" de 28

pines donde pueden insertarse memorias UVEPROM 2764 o 27128 en

las cuales se van a grabar los programas de usuario

desarrollados en BASIC-52» En esta memoria también pueden

colocarse programas en Assembler siempre y cuando empiecen

luego del ultimo programa en Basic«

- RAM

Constituye la memoria de datos externa con capacidad de 4

Kbytes de almacenamiento -suficiente para los propósitos de

asta tesis™ formado por 2 elementos 6116., donde se podrá

editar cualquier programa de? usuario en Basic - Be escogieron


estas memorias de baja capacidad en lugar de una de 4 Kbytes o
más, porque son las únicas que se consiguen con facilidad en
el mercado nacionaln

3. INTERFAZ SERIAL
Este bloque es el media por el cual el microcantrolador
IB

se comunica con el exterior (consola a terminal) en forma

serial, siguiendo la norma internacional E1A RS-232C- Se ha

previsto la posibilidad de usar dos tipos de circuitos

integrados de diferentes casas fabricantes,, el MAX232Ci o el

ICL232*, que realizan la misma funciona a partir de una sola

fuente de alimentación de -i- 5 V (TTL) generan niveles de ± 10

V (RS-232O.I lo que facilita la implementación de la fuente de

alimentación.

4, FUENTE DE POLARIZACIÓN

Se ha diseñado una fuente de alimentación regulada única

de H- 5 V que brindará la tensión de polarización (Vcc o Vdd) a

todos los circuitos integrados de la tarjeta,, desde el

microcontralador hasta el Interfaz Periférico Programable 5

inluyendo el zócalo de programación. La fuente está

constituida por un rectificador tipo puente, un filtro


(condensador) ¡, y un regulador fija de 5 V «

.5- FUENTE PARA PROGRAMACIÓN

Proporciona los voltajes de programación (Vpp= 25., 21 y


12.5 V) necesarios para grabar las distintas clases de

memorias EPROM existentes en el mercado, para lo cual se usa


un rectificador tipo puente,, un filtro capacitiva y un

regulador de voltaje ajustable mediante la colocación de

resistencias en paralelo usando un "clip switch".

6. LÓGICA PARA PROGRAMACIÓN

Este bloque adecúa las señales provenientes del


mi crocori tro laclar que permiten la programación de EPROMs

controlando la aplicación del voltaje de programación., durante

los intervalos de tiempo apropiados de acuerdo al tipo cíe


memoria.

7- Interfaz Periférica Pragramatale PPI B255A

Es un componente de entrada/salida de propósito general.,

que permite comunicación paralela mediante 24 lineas de

entrada/salida que pueden ser programadas individualmente en

dos grupos de * 12 y usadas en tres modos principales de

operación7"- En el MODO-0., cada grupo de 12 pines de E/S puede

ser programado en conjuntos cíe 4 para ser entrada o salida- En

el MODO 1,, cada grupo puede ser programado para tener S lineas

de entrada o salida- De los restantes,, 3 son usados para "hand

shake" y señales de control de interrupciones» El MODO 2 se

tiene un bus de E/S bidireccional«

8- DECODIFICADOR DE DIRECCIONES

Este bloque es un arreglo de decodificadores que permite

obtener las señales de selección de los elementos (chip

select) para las memorias y el PPI S255A-


REFERENCIAS BIBLIOGRÁFICAS:

i- INTEL,, Microcantrol lers HandbooK., 1986

2. INTEL CORPGRATION, MCS BASIC-52 Users Manual, Santa


Clara,, CA ? 1988., p. 101, 129,, 163s 167

3. INTEL CORPORATION., MCS BASIC-52 Users Manual,, Santa


Clara., CA, 1988,, p« 131

4. MICROMINT INC., BASIC-52 extensions Manual ROM A & ROM


A+Bj, Reléase 1.0 ?/. 1-1., Vernon CT5 U-S-A-,, 1986

5. MAXIM., Integrated Products Manual 5 p. 9.1 - 9.9

6- INTERSIL5 Products Manual, p„ 11.36 - 11.41

7. ELCOMP? Microcomputer Hardware Handbook, First edition,,


Holskirchen., Berrnany,, March 1982,, p«829-847
DISEñO DE LA PARTE FÍSICA

2.1. BUSES DE DATOS, DIRECCIONES Y CONTROL

En la figura 2.1.1 se muestra la forma de conexión para

obtener los tres buses principales del sistema que provienen

fundamentalmente del microcontrolador y un latch para el byte


de direcciones menos significativo^ u

- El bus de datos es el pórtico P0 del microcontrolador


8052AH-BASIC (Ul).

— El byte menos significativo del bus de direcciones se

obtiene a las salidas de un latch 74LS373 (U7) cuyas entradas

están conectadas al pórtico PG3 y su señal de habilitación

proviene de la salida de una compuerta AND 74LS08 (US) cuyas

dos entradas están conectadas a los pines ALE y /ALE DIS del
S052AH- También se requieren resistencias de "pulí up" (RSi)
en el pórtico P0 como condiciones para poder programar EPROMsy :

la razón para hacer ésta se explicará detalladamente en el

numeral 2 H 4 H "Circuito para programación de memorias11.; lo


único que vale la pena conocer por ahora es que estas dos

conexiones no afectan el funcionamiento normal el 8052AH.


- El byte más significativo del bus de direcciones se obtiene
directamente del pórtico P2 del microcontrolador.

- El bus de control está constituido por las lineas /WR y /RD


que habilitan las operaciones de lectura/escritura a la
memoria de datos externa,, /PSEN que habilita la memoria de
programa externa.
tfl

INTO
INT1
TO
TI KJ
f-0
T2 TRIC
T2EX T/C
PMM OUT
/ALE DIS
/PROG PUL.
/PROG ENfl f=iLE
XDMA ACKN TXD
LINE PRIN RXD
8OS2AH-BASIC

ESCUELA POLITÉCNICA NACIONAL


FACULTAD DE INGENIERÍA ELÉCTRICA

BUSES DE DATOS, DIRECCIONES Y CONTROL


HEADER 20X2
También pueden considerarse coma líneas de control /PROG

PUL y /PROG ENA que permiten el uso de la opción de

programación de memorias EPROM/EEPROM,, disponible en el BASIC™

52» Los buses de datos,, direcciones y control del sistema

están disponibles en el conector HS de la tarjeta diseñada.

Los pines XI y X2? entrada y salida del inversor mono-

etapa interno del micro se conectan a los terminales de un

oscilador de cristal externo de 12 MHz (Yi) y a dos

condensadores de 22 pF (C.t y C2) cuyos otros extremos van

conectados a tierra para configurar el oscilador del sistema

que maneja al reloj interno del S052AH e influye en todos los

cálculos en función del tiempo que se realicen tanto desde el

BAS1C™52 como fuera de él -rutinas en lenguaje Assembler—„

En caso de que el usuario no desee utilizar el intérprete

BASIC-52 del micro,, debe colocar su pin /EA en un nivel

lógico bajo (0L)., lo cual se logra fácilmente con un jumper en

JPi en la posición INHAB,, con lo que desactiva la memoria

EPROM interna del S052AH que en ese caso trabajará como

S032AH.

Todas las lineas de funciones adicionales proporcionadas

por el pórtico P3 del microcontrolador están disponibles para

el usuaria en el conectar H5 de la tarjeta-

2-2. ORGANIZACIÓN DEL ESPACIO DE MEMORIA

2.2.1. MAPA DE MEMORIA ESCOGIDO

Para organizar el espacio de mamaria de la tarjeta se ha


tomado en cuenta que el programa BASIC-525 residente en los 8

K bytes de ROM disponible en el micracóntrolador B052AH9

requiere que la memoria externa sea "particionada" de una

forma especifica32 para poder utilizar varias de sus

características únicas cornos

- programación de EPRÜMs,

- manejo interrupciones desde lenguaje Assembler.,

- extensión del conjunto de comandos/sentencias.,

- opción de reset en lenguaje Assembler,, y

- realización de algunas pruebas.

A continuación se anotan las principales causas que

determinaron la organización del espacio de memoria escogidas

Para el arranque y funcionamiento del intéprete se

requiere siempre al menos i Kbyte de RAM externa, si no se

cumple esta condición., ni siquiera se puede acceder al mismo 5

además dicha memoria externa deberá estar direccionada. desde

la localidad £3£300H en forma consecutiva e ininterrumpida.,

hasta la localidad (3DFFFH (máximo 56 Kbytes) para que el

intérprete la reconozca y dimensione-

Cualquier EPROM a programarse debe estar direccionada

desde la localidad 8000H en forma consecutiva y continua hasta

la localidad 0FFFFH (máximo 32 K bytes)•


Para escribir rutinas en lenguaje Assembler que realicen

tareas de interrupción,, debe conocerse que todos los vectores

de interrupción en el 8052AH-BASIC se reflejan en ROM externa

desde la localidad 4003H hasta la localidad 402BH. En el ANEXO

5 se detallan las localidades de memoria de código del usuario

ocupadas por el BASIC-52 y sus respectivas funciones.


*7J en

Para utilizar la opción da extensión del conjunto de

comandos/sentencias (ANEXO 14)., el BASIC-52 examina o llama

localidades de RDM externa ubicadas entre las direcciones

2002H y 2078HB

Para que el usuario tenga acceso a las opciones de reset

(ejecución automática de programas BASIC)y el BASIC-52 ocupa

las localidades 2001H y 2090H de ROM externa.

Con el propósito de probar el funcionamiento de rutinas

internas del intérprete como las de entrada/salida e

interrupciones,, el BASIC-52 escribe información relacionada

con dichas rutinas., en cuatro localidades de ROM externa entre

la 2040H y 20SBH; las mismas que pueden ser leidas por el

usuario para verificar si la rutina está operando debidamente.

De los últimos cuatro párrafos se desprende que el

programa BASIC-52 utiliza localidades de memoria de código

externa ubicadas alrededor de la 2000H y otras cerca a la

localidad 4000H5 en el ANEXO 5 se encuentra una lista

detallada de todas ellas y de su función respectiva.

Para poder implementar todas las opciones descritas

anteriormente se ha disenado la siguiente organización del

espacio de memorial:

- Los pines de escritura (write., /WR) # le del S052AH y de

lectura (read 9 /RD) #17 del 8052AH se usan respectivamente

para generar las seríales de habilitación de escritura (write

enable, /Wl~ o /WR) y habilitación de salida (Output Enable.,

/DE) de los dos chips de memoria de DATOS de 2 K bytes cada

uno que totalizan 4 K bytes de RAM direccionada desde 00E30H

hasta 0FFFH-
26
El pin #29 (Program Store Enable., /PSEN) del

microcontrolador se utiliza para habilitar la memoria EPROM de

Assembler de S K bytes9 direccionada normalmente desde 2000H

hasta 3FFFH. Pero hay la posibilidad de superponer dichas

localidades con el espacio de memoria entre 4000H y SFFFH,

colocando un "jumper" en JP6 en la posición QVLAP., cuando se

desee manejar interrupciones mediante rutinas desarrolladas en

lenguaje Assembler.

- Los pines /RD y /PSEN se usan para habilitar el chip de

memoria EPROM de Basic colocado desde la dirección 8000H hasta

la 9FFFH si su capacidad es 8 Kbytes (2764)? o hasta la

localidad 0BFFFH si es 16 Kbytes (27128); en esta EPROM se van

a grabar todos los programas desarrollados en lenguaje BASIC.

- Las direcciones se utilizan para decodificar las lineas

de selección de elementos (Chip Select,, /CS) , tanto para la

memoria de datos corno para la de programas; para el efecto se

usan dos circuitos integrados,, como se ve en la figura 2.2.1:

un 'decodificador de 3 a 8, el 74LS13S (U10) que a partir de

las tres lineas más significativas del bus de direcciones

(A153 A14 Y A13)., divide los 64 Kbytes de memoria externa

total en 8 páginas de 8 Kbytes cada una (usadas para generar

los /CS de las EPROM 2764 o 27128)3 la linea menos

significativa de salida se utiliza a su vez para habilitar la

primera parte del segunda C „ I . _, un decodificador doble de 2 a

4 74LS139 (Ull), que usando las lineas de dirección (A12 Y

All) divide los SKbytes en cuatro páginas de memoria de 2

Kbytes cada una (usadas para generar los /CS de las RAM 6116).,

cuya linea más significativa habilita a su vez al segundo


decodificador del mismo elemento que usando las lineas de

dirección A10 y A9 subdivide los 2 Kbytes en cuatro páginas de

512 bytes cada una- El esquema circuital detallado del

decodificador de direcciones se muestra en la figura 2.2.1,, y

la utilización de cada una de las páginas de memoria se

muestra en la tabla 2-1.

En resumen,, la máxima cantidad de memoria dentro de la

tarjeta pero fuera del microcontrolador es de 28 K conformada

por 4K de RAM (dos chips 6116 de 2K cada uno) y 24K de EPROM

(si se coloca un chip 27.128 en el sócalo de programación

EPROM2-BASIC, más el chip 2764 de EPROMl-ftSSEMBLER).

VCC

U2 EPROMi
ASSEMBLER

U&-8S55

BLOQUES
512BYTE3
U4-RAM1
U5-RRM2
LIBRE:
74LS139 BLOQUES
— 74LSÍ3S 2KEYTES

figura 2-2*1 Circuito de decodificacion de direcciones

Finalmente, debido a que se tiene a la disposición los

bus es de datos-t direcciones y control en el conector HS., es

posible reconfigurar la memoria fuera de la tarjeta,, en caso

de requerirse mucha mayor cantidad de memoria de la que

existe^ pero si sólo se necesita un poco más, puede añadirse


fuera de la tarjeta sin necesidad de reconfigurar la memoria

utilizando las salidas de direcciones decodificadas a las que

se tiene acceso en el conectar H4-,


Más adelante., en el tercer capitulo., numeral 3-3

"Documentación de Conectares" se detalla la distribución de

las señales en los diferentes conectares.,

7aMa 2*í #apa de

LOCAL USO DIRECCIÓN DE LOCALIDAD INICIAL

/CS
INIC. ELEMENTO Y A A A A A A A

FINAL CAPACIDAD 15 14 13 12 11 10 9

0000H U4-RAM1 0 0 0 0 0 0 0 CS0A

07FFH 2K

0S00H U5-RAM2 0 0 0 0 1 0 0 CS1A


0FFFH 2K

1000H DESOCUPADO 0 £3 0 1 0 0 0 CS2A


17FFH 2K

Í800H U6-8255 0 0 0 1 1 0 0 CS0B


19FFH 512 BYTES

1A00H DISPONIBLE 0 0 0
1
1 0 1 CS1B
1BFFH H4™¿> 512

1C00H DISPONIBLE 0 0 0 1 1 1 0 CS2B


1DFFH H4-7 512
»
LOCAL USO DIRECCIÓN DE LOCALIDAD INICIAL
/CS

INIC. ELEMENTO Y A A A A A A A
FINAL CAPACIDAD 15 14 13 12 11 10 9

1E00H DISPONIBLE 0 0 0 1 1 1 1 CS3B

1FFFH H4-8 512

2000H U2-EPROM1 0 0 1 0 0 0 0 CS1

3FFFH 8K

4000H a) U2 0 1 0 0 0 0 0 CSE

5FFFH JPÓ 2con3

b) H4-1 L/SJÍ,

JP6 2conl

Ó000H DISPONIBLE 0 1 1 0 0 0 0 CS3

7FFFH H4-2 2K

8000H U3-EPROM2 1 0 0 0 0 0 0 CS4

9FFFH 8K

AE300H DISPONIBLE 1 0 1 0 0 0 0 CS5

BFFFH H4-3 8K

C000H DISPONIBLE 1 1 0 0 0 0 0 CS6

DFFFH H4-4 SK

E000H DISPONIBLE 1 1 1 0 0 0 0 CS7

FFFFH H4-5 8K
2.2.2 MANEJO DE DISPOSITIVOS EXTERNOS AL MICROCONTROLADOR

En la tarjeta-, el único dispositivo externa al S052AH es

el Interfaz Paralela Pragramable PPI 8255, el mismo que es

manejado como memoria RAM externa. Es decir, pueden realizarse

operaciones de lectura/escritura en él,, con los mismos

comandos o sentencias utilizados para RAM externa,, tanto desde

el BASIC-52 como desde Assembler.

La linea de selección de este chip (CS0B) es la salida

menos significativa del segundo decodificador de 2 a 4 del

74LS139 (figura 2.3.1) de las páginas de memoria de 512 bytes,,

localidades desde la 1800H hasta la 19FFH (tabla 2.11)B Las 3

salidas restantes del decodificador están disponibles en el

conectar H45 para poder manejar otros periféricos fuera de la

tarjeta,, coma conversares A/D o D/A^ sin necesidad de

reconfigurar la memoria.

2.3 MANEJO DE MEMORIAS

La conexión de los chips de memoria dentro del sistema se

muestra en las figuras 2.3.1., para las RAM-, y 2.3.2., para las

EPROM; en general la forma de conexión es sencilla una vez que


se dispone de los buses de datos., direcciones y control y de

las lineas de selección de chips y se desprende directamente


de las hojas de datos de los elementos^-

Las dos memorias RAM son de la misma capacidad,, por lo

que su forma de conexión es idéntica,, la única diferencia es


la linea de selección del chip CS0A para la RAM1 y CS1A para
la RAM2- Por lo demas^ a las dos memorias se conectan las S

líneas del bus de datos-, las 11 líneas menos significativas

del bus de direcciones y las líneas de control /RD y /WR

exactamente en los mismos pinas-

U4-SÍÍ6 U5-SÍÍS
ft0 D0 A0 D0
fti Di Al Di
P)2 D2 A2 D2
A3 D3 A3 D3
Pl4 D4 P4 D4
ftG D5 ft5 D5
ftG DG flG D6
ñ7 D7 A7 D7
ftS ftS
P9
ftÍ0

SE CE
OE
WE WE
RAHI
0000H-07FFH 0S00H-0FFFH

figura 2.5^1. Conexión de memorias RAM

U3-£7£4/128
UE-27G4
00
f» 00 ni 01
fil 01 R2 02
P2 02 ft3 03
A3 03 A4 04
A4 04 ftS 05
ñS 05 A6 06
P6 06 A7 07
ft7 07 ftS
ftS A9
A9 AÍ0
AÍ0 ftJLi
Ali AÍ2
fti2
SE
OE QE
PGM PGM
VPP VPP
EPROM1-6SSEM EPROM2-BASIC
S000H-3FFFH

figura 2-5-2 Conexión de memorias £PRQM


Las 2 memorias EPROM también tienen la misma distribución

de pines,, por lo que a las dos se conectan las 8 lineas del

bus de datos y las 13 lineas menos significativas del bus de

direcciones!} pero como en el zócalo de la EPROM1 sólo puede

colocarse una
memoria 2764 (8K) y no puede ser programada,,
f
mientras que en el sócalo de la EPROM2 puede colocarse un chip

2764 (8K) o 27128 (16K) que si puede ser programado;, los pines

restantes tienen formas de conexión distintas:

En la EPROM1? la entrada de habilitación del chip /CE

está conectada a la linea de selección CSE« La entrada de

habilitación de salida de datos /GE se conecta a la señal PSEN

del micro., y las entradas para programación /PSM y VPP se

conectan a VCC = + 5 V., puesto que en este zócalo no se puede

usar la capacidad de programación del BASIC-52»

En la EPRQM2., la entrada de habilitación del elemento se

conecta a la linea de selección CS4-. Puesta que en este zócalo

se va a utilizar la opción de programación, la forma de

conexión de las otras lineas se detalla en el siguiente

numeral -

2.4 CIRCUITO PARA PROGRAMACIÓN DE MEMORIAS

El BASIC-52 genera todas las señales necesarias para


programar., virtualmente? cualquier memoria EPROM o EEPROM
existente.!; para lo cual requiere de muy poco hardware

adicional y que la memoria a programar esté direccionada


empezando desde la localidad 8000H-
En esta tarjeta se ha implementado la opción de
programación de memorias EPROM 2764 - 27128"- (figura 2.4.1)

para utilizar un solo chip., ahorrando espacio física en la

tarjeta. Antes se necesitaba utilizar una fuente regulada

adicional de 6 Vdc para polarizar las memorias EEPRQM, pero en

la actualidad ya existen chips EEPROM. que pueden ser

polarizados con +5V.

Tres pines del pórtico 1 del microcontrolador S052AH-

BASIC proporcionan las señales críticas para programación:

P1.3 ALE DISABLE (/ALE D1S)

Deshabilita al laten de direcciones durante el proceso de

programación? luego de haber colocado en sus salidas el byte

bajo de la dirección de la localidad donde se va a empezar a

grabar,, lo cual es necesario para poder utilizar el pórtico 0

sólo para envío de datos a programar y el pórtico 2 para sacar

el byte alto de direcciones:; esto se logra efectuando una

operación de producto lógico (AMD) entre las señales ALE y

/ALE DISABLE? ingresando ambas a una compuerta AND de dos

entradas del C « I n 74LS08 y conectando su salida a la entrada

de habilitación del lath 74LS373.

La señal /ALE DISABLE está normalmente en un estado

lógico alto ( 1L } y sólo durante la programación de una


memoria se pone en un estado lógica bajo ( 0L ) que

deshabilita la señal ALE., permitiendo al BASIC-52 tratar a los


pórticos PG) y Pl. como de entrada/salida y no de datos -
direcciones» En este caso la estructura de salida de P0 esta

en configuración "colector abierto", que requiere de


resistencias de "pulí up" ( 2K < RS1 < 10 1<Q)-
34

P1.4 PROSRAM PULSE WIDTH (/PROG PUL)

Proporciona pulsos de programación de ancho de i ms para

memorias INTEL rápidas,, escogiendo el modo de programación

INTELligent -con los comandos FPROG del BASIC-52™.? o 50 ms

para memorias genéricas¡, con el modo normal (éste es nuestro

caso) -con los comandos PROÍS-»

La precisión del pulso de programación está dentro de los

10 ciclos de reloj de la CPU¡, siempre y cuando al Registro de

Función Especial XTAL se le haya asignado el valor real de

frecuencia del oscilador utilizado., pues todos los cálculos se

hacen en base a dicho valor»

La señal /PROG PUL está normalmente en un nivel lógico

alto (1L) y sólo cambia a bajo (0L) durante el proceso de

programación.

P1.5 ENABLE PROSRAM VOLTAGE (/PROS ENA)

Habilita el voltaje de programación Vpp 3 sea cual sea su

valor. La señal /PROG ENA está normalmente en un estado lógico

alta (1L) con la fuente de voltaje Vpp desconectada de la

memoria a programar,, y un momento antes de 'comenzar la

operación de programación baja a £0L) conectando Vpp a la

memoria.
En el circuito,, las seríales /PROG PUL y /PROG ENA san

acondicionadas por buffers/drivers 7407 antes de poder ser

utilizadas. R3 mantiene un voltaje 1L TTL a la entrada /PGM de


la EPROM, mientras no se la está programando,, pero col acá un
voltaje 0L TTL en la misma durante la programación n Ql
funciona como interruptor y normalmente está en corte pues la
35

señal /PROS ENA está en 1L, en ese caso D3 conduce y permite

que se tenga el voltaje 1L TTL necesario en el pin Vpp de la

memoria0 para su funcionamiento normal (operaciones de

lectura o funcionamiento en espera "bypass")? pero durante el

proceso de programación la señal /PROG ENA cambia a OL9 lo

cual hace que Qi se sature e? ingrese el voltaje Vpp al pin del

mismo nombre de la EPROM? en ese caso D3 está polarizado

inversamente»

U9A
^^ 2 IA A .A.2

i0^ |£R
7407 P
li 1J3-2764/Í2E^ 2 S JL0K
/ R3 3/lCi li y^^-,
Í^B / 10K
2N2907
^X 4 £ £7
1/PROG PUL >—3- /PGM
D3
VPP ^•11 2 ^ 1 rAVCC:
7407
20 / 1N4007
/CE )R4
U8B \Í0K SIN JP — >27S4
I/PSEN > _!£ CON JP->27i28
^ S 22 /OE
; yJ 2e • • ri
^_ i
74LS08

EPROM2-BASIC HEñDER £

figura 2,4,1 Circuito para programación de

memoria* EPROM 2704-27128

Las señales /F'SEN y /RD se conectan a la entrada /OL ,de la


EPROM a programar por medio de una compuerta AND de dos
entradas 74LS0S., lo que no es una condición para poder
programar la memoria,, pero permitirá al usuario ejecutar
rutinas en lenguaje Assembler y programas en BASIC-52 que
estén almacenados en la misma memoriaB
DISEñü DE CIRCUITOS AUXILIARES

RESET

Para implementar el reset se utiliza un circuito

supervisor de fuente de poder., el TL7705 (figura 2.5-1)., cuya

principal ventaja sobre el reset con una simple red R-C es que

se logra la señal- de reset apenas el voltaje de polarización

baja a valares menores a 4.6 Vdc- De esta manera., ante un

bajón de voltaje la CPU se mantendrá en el estado anterior al

problema., sin que se pierdan los datos almacenados en su

memoria interna- Por otro lado el C.I. es muy pequeño., tiene S

pines,, y requiere de pocos elementos exterioress

2 condensadores y 3 resistencias, lo que representa poco

espacio ocupado en la tarjeta del circuito impreso9 y su costo

es relativamente bajo.

El esquema de conexión del TL77Í35*2* se muestra en la

figura 2.5,1. En este caso usamos la misma señal para resetear

el PPI 8255,

JP3 ucc vcc


o
3
Ría >
u.
r 3.3K> UiS £
SRÍ3
^ 2 RESIN UA
i VREF /RES
1
3
CT RES
PULSADOR i Gil Ti t
IS2 -
RESET ~ J.00n
£ TL77Q5
V3.3K
-LL cíe fe
E =U
"U 10U>£

figura Circuito de RESET con el chip T17705


37

Se puede escoger entre un reset interno* que se logra al

aplastar el pulsador S2 siempre que estén cortocircuitados los

pines 2 y 3 del conectar JP3¡, o una serial de reset externa

EXRST que ingresa a la tarjeta a través del pin 3 del conector

HB siempre que los pines 1 y 2 del conector JP3 estén

cortocircuitados.

2.5.2 COMUNICACIÓN SERIAL

La comunicación del microcontrolador 8052AH-8ASIC con el

exterior,, mientras su intérprete BAS1C-52 está funcionando., se

realiza a través de un terminal tonto y en forma serial ., para

lo cual se utiliza un circuito de interfaz

transmisión/recepción que cumpla las especificaciones EIA RS-

232C. Este puede ser el MAX232 fabricada por MAXIM a el ICL232

fabricado por INTERSILS pues ambos requieren de una fuente de

poder simple de + 5 V a partir de la cual generan los niveles

de salida RS-232 + 10 V utilizando conversores de voltaje

internos.

La forma de conexión que se ha implementado se muestra en

la figura 2-5.2, y es básicamente la misma que se sugiere en

las hojas de datos de las elementos"7.


Las 4 condensadores C7 a C10P son necesarias tanta para
el ICL232 como para el MAX232-, pero las resistencias RJL5 y RÍA

sólo deben colocarse si se utiliza el 1CL232-


Las lineas de transmisión y recepción del miera can
niveles de voltaje TTL (TXD pin 11 y RXD pin 10) se conectan a
uno de las das elementas del ínter face serial (el =1*1 en la
tarjeta)P con lo que se dispone de las mismas lineas en los

pines 2 y 3 del conectar DB9 pera con niveles de voltaje RS-

R15
3K CONNECTOR DB9

figura 2,5,2 Circuito para comunicación serial

RS-252 - TTL

Para no desperdiciar el otra elementa del interfas se lo

ha conectado al pin de salida a impresora de linea (LINE PRIM)

que proporciona el 8852AM y al pin de entrada externa al

11 timar/counter" 2 (T2EX T/C) para poder utilizar directamente

la impresora serial en caso de necesitarse,, pues se dispone ya

de los niveles de voltaje R8-232 requeridos para el efecto»

Todos los pines de transmisión y recepción son accesibles

al usuario mediante el caneetor H4 tanto en niveles de voltaje

TTL que maneja el microcontroladar ? cama en niveles RS-232C


proporcionadas par el ICL232 a MAX232,.
:.5.3 COMUNICACIÓN PARALELA

Debido a que el 8052AH-BA8IC ocupa todos sus 4 pórticos

paralelos., P0 con P2 para los buses de datos y direcciones., y


Pi y P3 para funciones especiales., se ha incluido en el

sistema el ínterfas Periférica Pragramable INTEL S255A para

disponer de sus 24 pines de entrada/salida y a la vez poder

acceder a todas las funciones alternativas que tiene el micro

en su pórtico paralelo Pl.

UG Hi
DO POS •4 i
Di Pñl 3 C2
D2 Pfi2 2 f 3
D3 Pñ3 401 rA
D4 Pft4 39 ;
D5 PP5 ; 5e
DB PñS 38 ;7
D7 Pfl7 37 c S H2
RD PB0 13
HE 19
PB1 20
AQ PB2
ni PB3 ai
es PBS £3
PB£ 24
PB7 25 H3
PCQ 14 ri
J i
PCI 15
PC2 16 i; 2
3
17
13 c;
PC4 í5
PC5 12 e
11
10 c£
v 3
8255
18CeiH-I9FFH

fsgura 2,5.3 Con&xián del Interfaz Periférico

Programabl.* S255A

La conexión del S255A con el micro,, que se muestra en la

figura 2.5.3., es muy sencilla., puesto que este interfaz está

diseñado específicamente para ser usado con mieroprocesadores

INTEL., como es el S052AH-BASIC¡, y sa puede realizar con sólo


40

conocer la distribución de pines del elemento y su diagrama de

bloques®.
Sólo debe conectarse el bus de datos., las dos lineas

menos significativas del bus de direcciones (para programar el

modo de operación del elemento) y del bus de control las

lineas /RD y /WR? finalmente se utiliza la misma señal de

RESET del micro. Detalles sobre la forma de programar el PF'I

8255A se muestran en las hojas de datos del elemento., que se

presentan en el ANEXO 12.

Las 24 lineas de entrada/salida están disponibles para el

usuario a través de 3 conectares de 8 pines cada unos

HI S H2 y H3.

2.6 DISEñO DE LAS FUENTES DE PGDER

2-6.1 DISEfíO DE LAS FUENTES REGULADAS

a5 Regulador fijo de + 5 V para polarizacións

- Se determina el consumo de corriente de la tarjeta,, para

lo cual extraemos los valores máximos respectivos (Iccm«L,<)3 de

las hojas de datos de los diferentes elementos utilizados., los

mismos que se resumen en la tabla 2-2.


La sumatoria de los consumas individuales es:
S Ic(nw)< = 750 mA

Este valor es demasiado alto, pues nunca van a estar

funcionando todos lo elementos a la vez ¡, ni tampoco todos

el los van a estar consumiendo el máximo valor de corriente de


la fuente., lo cual sugiere que el consumo raal será menor.
ELEMENTO Icm*« CmA] ELEMENTO Icm~* CmA]

3052AH-BASIC 175 T p| ^"r^ 10

RAM 6116 125 74LS139 11

EPROM 2764 180 74LS13S 10

PPI 8255 120 74LS32 9,8

DM7407 41 74LS0S 8SS

74LS373 40 TL7705 10

Máximo consumo de corriente de los elementos

Por otro lado., el consuma de tarjetas similares como la

"BCC52 BASIC11 de la casa fabricante MICROMINT* es menor que

700 mA teniendo más elementos.

Por todo lo expuesto anteriormente y tomando en [Link] un

margen de seguridad,, suponemos un requerimiento des corriente

máximo de 850 mA.

— Se elige el regulador de voltaje adecuado en base a que

debe proporcionar suficiente corriente para el consumo de toda

la tarjeta {determinada en el paso anterior),, y que su voltaje

de salida DC esté dentro de un rango aceptado por todos los


elementos de la tarjeta para asegurar su funcionamiento
correcto (analizando las hojas de datos da dichos elementos se

determinó que en el peor de los casos dicho rango es +5V + 57»)


de esta manera se escogió al 7809s un regulador fijo de

vol taje de + 5 V* cuyos principales datos técnicos^03 se


muestran en la tabla 2-3.
42

Vout (DC) lo (DC) Vin (DC) Pd

[V] ± 5 "/. [A] Max Nin CW]

5 1-0 •2t\3 7 15

Tabla 2-J Datos dei regalador de voltaje 7S05

El esquema circuital de la fuente regulada fija se

muestra en la figura 2-6.1., donde u

el rectificador puente que se usa es el PF05 que puede

proporcionar corrientes de hasta 1 A -

C4 - 5(3(3 pF> calculado usando teoría de filtros para

proporcionar un rizada aceptable a la entrada del regulador..

C3 - 1 \JiF9 valor sugerido en el manual para mejorar la

respuesta transitoria.

JP5

figura 2.6-1 Diagrama circuital de la fuente regulada

fija para polarización

— Calculamos la máxima disipación de potencia del regulador,,

que se tiene con el mayor voltaje de entrada posible al mismo


43

según nuestra diseño (11.77 V cíe la tabla 2»2) ., y suponiendo

el máximo consumo de corriente calculado (750 mA de la tabla

2 7}
ri— R r f

menor a la capacidad de disipación de potencia máxima del

regulador de .15 W (tabla 2.3).

JP5 se usa para conectar la polarización de la tarjeta a

la fuente regulada interna o a una externa disponible en la

tarjeta a través del conectar H7.

b) Regulador ajustable Para programación s

- Para programar una EPROM 2764 no se necesita más de 10

mA-"-5;, sin embarga para tener posibilidad de programar memorias

adicionales fuera d© la tarjeta diseñamos la fuente para

proporcionar 30 mA.

- Se escoge el regulador LM317 de 1.5 A (por no encontrarse

otro de menor corriente en el mercada);! sus principales

características se muestran en la tabla 2.4*

Vout (DO lo (DC) Vin (DO Pd

uva ± 5 % CA3 Max Min ¡:w^

I a *j"¿!. ™ ~y~7
•_,< / 1-5 40 3u7 15

2-4 Z?att?s del regulador de voltaje ÍH3I7

La configuración básica del regulador se muestra en la

figura 2.0,2.
44

Cin no lo utilizamos,, pues sólo se requiere si el regulador

está colocado a una distancia apreciable del filtro de la

fuente de poder.

Co lo utilizamos,, pues aunque no se necesita para

estabilidad, sin embargo,, mejora la respuesta

transitoria»

LM3Í7

Vln . 3 VI ñ VO Ti '
r .Vout
D / Ri
J
\0
iBdJ i
ICin fe JI Co
^ ** J i UF
>

k BK
i
_

figura 2,6-2 Configuración básica del regulador

ajustable LM317

El voltaje regulado de salida se calcula con la siguiente

expresión s

i po \j x R2 # 1.25 x 1 + ^-1
\

Se hace esta aproximación en base a que el término ( ladj # R2)

es despreciable pues ladj < 100 i-iñ

~ Calculamos la máxima disipación de potencia del regulador:

Pdt-i<=ix — ( VÍni"if=,x ™ v OM x M ) ^; 1 0 i-i ,M, x

Pd M «x = C 30.21 - .12., 50 ) # 0.133

Pd M(B ,x = ®-53 W
que es mucho menor que la capacidad de disipación máxima del

regulador 15 W ( tabla 2 - 4 - ) por lo que este regulador no


necesita de disipador»
El diagrama circuital de la fuente regulada ajustable se

muestra en la figura 2-6-3 donde constan todos los elementos

necesarios para obtener los tres voltajes de programación de

memorias indispensables;! 12.5., 21 y 25 V u

JF4

figura 2-ó",5 Diagrama circuíta¿ de la fuente regulada ajustable

para programación

Donde 5

Se usa el mismo rectificador puente PF05 que para la fuente

fija por disponibilidad-, aunque en realidad podíamos haber

puesto sólo un diodo de menor capacidad de corriente»


C5 ~ 470 \.(F se calcula de la misma forma que C4

Có - 1 i-iF para mejorar la respuesta transitoria

A diferencia de la configuración básica,, que usa una

resistencia variable para ajustar si voltaje de salida en

forma continua., en este caso se necesitan sólo 3 valores

predefinidos,, por lo que se usa un dip switch3 de forma que al


46

activar o desactivar sus interruptores,, se van colocando o

quitando resistencias en paralelo respectivamente. La tabla

2„5 muestra un resumen de las posibles combinaciones del dip

switch y el voltaje de salida que se obtiene para cada caso5

con 0 se indica que el interruptor está desactivado,, con 1

activado y con X la condición "no importa".

NUMERO DE INTERRUPTOR DENTRO DEL DIP SWITCW VOLTAJE DE

r> SALIDA Vo
4 3 1

0 X X X 0 V

1 0 0 0 25 V

1 0 0 1 21 V

i 0 1 0 ?; 25 V

1 0 1 1 12 V

1 . i X X 1-25 V

Tabla 2.5 Combinaciones posibles del dip suitch con sus

respectivos voltajes de salida

JP4 se usa para escojer entre la fuente interna o una


externa conectada a la tarjeta a través de H7B

2.6-2 DISECO DEL TRANSFORMADORA

Antes de nada determinamos los parámetros iniciales de


diseño:
El transformador a diseñarse debe tener dos secundarios
47

independientes que alimenten a los dos reguladores,, los mismos

que por tener diferentes requerimientos de voltaje de entrada

obligan a que las relaciones de transformación de los dos

secundarios sean distintas.

A continuación cal cu1amos las relaciones de

transformación de los secundarios para las dos fuentes de

alimentación s

a) Fuente de alimentación regulada fijaausarse para

polarizacián de la tarjeta„

Partimos de un rango de voltaje de entrada al primario

del transformador (95 a 135 Vrms) y conociendo el rango de

voltaj.e DC de entrada que tolera el regulador seleccionado

7805., hacemos un cálculo muy aproximado de los limites de la

relación de transformación en la Tabla 2-6-

V p i— fn IHI [Link] V i c s c s + Vcs Vs p V S r- m «n n

95 7 8,2 9384 6,96 13,, 65

135 35 36 ., 2 43 ., 44 30 j, 72 4 , 40

Tabla 2*6 Cálculo aproximado del rango de Ja relación de

transformscián para el secundario 1

Donde:

Valtaje eficaz del primario

Voltaje de entrada al regulador rectificado y filtrado

Vd Caida de voltaje en los diodos del rectificador

Vd — 1<2 V (semiconductor de silicio)


48

VSp ™ Voltaje pico del secundario,,

Considera un aumento del 20 7» por rifado

Vsp = C Viclc= * v^ ) # l.,2

Vsr-m» - Voltaje eficaz del "secundario


Uc=
V » |~m nú — vl'c:
=» p / / *i P^
j'~

Los datos de la tabla 2.6 salo nos sirven como base para

escoger una relación de transformación adecuada., que debe

estar entre los extremos calculados en la tabla anterior y a

la vez debe producir la menor disipación de potencia del

regulador,, lo cual se logra can una menor diferencia de

voltaje entrada - salida al mismo,, es decir con el menor

voltaje de entrada posible debido a que el voltaje de salida

es constante.

Se escoje la relación cié transformación n = 12 s 1

y se realizan cálculos más precisos para comprobar que los

voltajes a obtenerse a la entrada del regulador estén dentro

del rango admisible y cerca al limite inferior (Tabla 2.7),,

VALORES V P r- m im VSr-miav VSpi Vs p — vct Vicie:

MÍNIMO 95 7H92 11,2(3 10,00 S¡,00

TÍPICO 120 10,80 14,, 14 12,96 10 ,,37

MÁXIMO 135 11,25 15,91 14,71 11?77

7~a¿?Ia 2-7 Cálculo del rango del voltaje de entrada ai regulador fijo

para una relación de transformación 12:1

Dandes
49.

Vp,-m« = Voltaje eficaz del primaria

Vsr-m» ~ Voltaje eficaz del secundario

Vsp = Voltaje pico del secundario

Vd - Caída de voltaje en ios diodos del rectificador

Vd ~ JL.,2 V (semiconductor de silicio)

Vicic= = Voltaje de entrada al regulador rectificado y filtrado

considerando una disminución del 20 "/- por rizado-, t.q-

Vs # 0,8

Analizando la tabla 2.7 concluimos que la relación de

transformación escogida es adecuada para que el 7805 mantenga

un voltaje de salida regulado con voltajes de entrada al

transformador que varíen dentro del rango preestablecido., e

incluso algo más., debido a que se ha considerada un margen de

seguridad .

b) Fuente de alimentación regulada ajustable a usarse para

programación de memorias -

Siguiendo un procedimiento parecida al usado en el

literal (a)., partimos del mismo rango de voltaje del primario

del transformador., en este caso la peor condición se da cuando

para el Vpr-m™ mínimo., necesitamos un voltaje regulado de

salida mayor a 12=5 V. Sabemos que el regulador necesita vol-

tajes de entrada mayores a los de salida en por lo menos 3 V?

obtenemos asi el correspondiente valor de Vicj^; para el Vpr-m»

máxima usamos el Vi«acs máximo aceptada par el regulador pues en

este caso no imparta la disipación de potencia del regulador

debido a que se le va a exigir muy poca corrientes luego


sumamos a estos valores la cálela de voltaje en los diodos del

rectificador (Vd) y añadimos un 20 X debido al rizada del

filtro para obtener Vs^u dividimos por 4"2 para obtener Vs,-mwi y

finalmente hallamos la relación de transformación dividiendo

n = Vp,- m T O / VSr-nnm »

Los resultados se resumen en la siguiente tablas

V P r- f n m VÍ<dc= Vi^+Vc:, Vs p VS r-mn» n

95 15 ? 5 16,7 20304 Í4 3 17 "6., 70

135 40 y® 41 ¡,2 49,44 34 ,, 96 3 .,86

Tabla 2,3 Cálculo aproximado del rango de la. relación

de transformación para el secundario 2

Escogemos una relación cíe transformación cercana al

promedio de los valores calculados en la tabla anterior.,

n « 4,9 í 1

y repetimos los cálculos para asegurarnos que el voltaje de

entrada al regulador (Vi«dc=) sea el adecuados

VALORES Vpr-mtw V £5 r- 1 n iw Vsp Vs p — va Vid cr

MÍNIMO 95 19 ,,39 27 9 42 - ^J A 'P'7


20 ,98

TÍPICO 120 24?49 34 , 63 •«•.i? 4o 26 , 74

MÁXIMO 135 27,55 33 , 96 37 ., 76 30,21

Tabla 2*9 Cálcalo del rango del voltaje de entrada al regulador aju^table

para una relación de transformación 4,9 : í


En resumen s los parámetros iniciales de diseño son E

* Ein « 120 Vrms * Eo*. = 10 Vrms * Ea3¡ - 24?5 Vrms

* f = 60 Hz * loo. - 0:,SS A * lo» = 0,03 A

* Máximo incremento de temperatura = 25 °C

* Eficiencia o Rendimiento del transformador = 95 7.

Constantes adiciona lesa

* Ks - i (debido a que se tiene un rectificador tipo puente

en el secundario del transformador)


* Kp = 1 (debido a que el primario está conectado
directamente a la red pública)

NQTAs Los valores de corrientes loo. - 0,85 A e lo^. = 0^03 A se

obtuvieron durante el diseño de las fuentes reguladas.

1°) Cálculo de la potencia activa del secundario ( Po )

Po = lo * Vsp * Ks - I o i * Vspx # Ks:J, -H I Da * VSp~2 * Ks»

= 0 S 85*14 ,42 * 1 + 0,03* 34?65* 1

Po ~ 13 .,06 W

2°) Cálculo de la potencia activa del primario ( P )

Po x , OS x 1 _ „ „.-
U 0^5 ",747

P = 13,747 W

3°) Cálculo de la potencia activa total ( Pt )

Pt = P + Po = 135 747 + 13,06 - 26,807


Pt a 26 .,8 W

4°) Cálculo de áreas ( Ap )

Ap = Pt x 104

Dondes
Kf ~ 4?44 para onda senoidal

Ku - £3 3 4

Kj = 306 a 25 'C

(ó) = 1,14

Bm ~ 1 valor mínimo dado por fabricante

Remplazando los valares anteriores se obtiene

Ap = 9

5°) Selección de un núcleo con un valor de Ap lo más cercano

pasible al calculado en el paso anterior

Usamos el núcleo EI-160*52., laminado., cuyas principales

características técnicas y dimensiones las resumimos a

continuación s

Dimensiones del hierro (en cm) ; B = 2,,4 5 D = 1s 6 g E = 0.,8

con estos valares calculamos las áreas ( Wa y Ac )

Wa = B * E —> Wa = 1,92 cm22

Ac == D * X —> Ac « 1..6 X cm

Donde X es el grosor del núcleo .(en cm)

Ap ~ Wa * Ac —> Ap = 3,072 X cm

Igualando esta expresión con el valor calculado en el

paso anterior obtenemos el valor de X = 2?93 crn, y escogernos

X = 3 cm.

6°) Cálculo de las pérdidas totales del transformador


£p - p _ pD > ¿¡p .. 0^37 y

7°) Cálculo del número de vueltas del primario usando la ley

de Faraday.

Ep X
N =
Kf X Blü X f X AC.
N = 938 espiras

8°) Cálculo de la densidad de corriente ( J )


j = KJ # ( Ap ) <•* >

Donde: (x) - - 0312

J ™
— j'fQ'I
i C D J L j Íj L~7
/ ¿S // r-/n22
H CfTl

9°) Cálculo de la corriente del primaria ( Ip )

Pt - Po P

Ip = 0,1145 A '

1(3°) Calcula de la dimensión del alambre desnudo para el

primario ( Aw p )

Xj
<7X K

Donde 1 para bobinada simple

Aw p ~ 4.H074 * 10 '• cm^ s # 34 AWG

Como no se disponía de ese alambre se lo sustituyó por dos

hilos # 34 AWG & 2 * (0,2011 * 10 ~™) = 4,022 * 10 —«• cm^

11°) Cálculo del número de espiras del primer secundaria (Nsj_j

Np x .5%

Nsx - 78 espiras

12°) Cálculo del calibre del alambre del primer secundaria

— _Is.
±_
" Jx *
AWdi == 39023 * 10"3 cm^ H~ # 22 AWG
13° ) Cálculo del número de espiras del segundo secundaria
X ES

= 192 espiras

Cálculo del calibre del alambre del segundo secundario

32 JXK

Aw^ - 1 3 0Ó7 * lo—* cm21 s # 37 AWG

15°) Se c a l c u l a si el bobinado alcanza en la ventana

Las dimensiones del m o l d e , para hacer el bobinado se

calculan considerando las del núcleo y el grosor del papel

( 6g = 0., 2 c m ) :

largo = D + úg = 1 f l S cm

ancho = X = úg = 3¡,2 cm

altura = 8 - óg = 2.,2 cm

Se requiere de datos a d i c i o n a l e s que se resumen en la

t a b l a 2.10 para los 3 calibres de a l a m b r e s s

LADO DEL DIMENSIÓN ÁREA DESN- DIÁMETRO ESPIRAS

TRANSFORMADOR AWG [cm2] 10"55 [cm] POR cm

PRIMARIO 34 B.22U 0,0191 52 f 48

SECUNDARIO 1 rj'"?
-¿~.¿_ 3 n 243 0,0701 14925

SECUNDARIO 2 37 0,1026 0?0140 71 ,, 57

Tabla 2,10 Patos de los alamares a utilizar en el transformador


55

Se realizan entonces las siguientes cálculos:

ESPIRAS VUELTAS cm cm = al tuza del moldo


•"""•"' ' X
CAPA CAFA CAPA

No. CAPAS = No. ESPIRAS /


CAPA

ESPACIO OCUPADO = No. CAPAS x DIAMATRO

Los resultados de estos cálculos para todos los lados del

transformador se resumen en la tabla 2.11»

LADO DEL ESPIRAS No- CAPAS ESPACIO

TRANSFORMADOR POR CAPA OCUPADO

PRIMARIO 115 16 0,3056 cm

SECUNDARIO 1 31 7; 0,2103 cm

SECUNDARIO 2 157 i 0..0140 cm

Tabla ?.íí Espacio ocupado por los bobinados del transfonaador

Finalmente calculamos el espacio sobrantes

ESPACIO SOBRANTE = ESPACIO INICIAL - (ESPACIO OCUPADO)

ESPACIO SOBRANTE « 0 5 7 - 0P5299 = 0,1701


ESPACIO SOBRANTE = 0,17 cm
Por lo tanto si alcanzan los bobinadas en la ventana

disponible.

2.7 ESQUEMA CIRCUITAL COMPLETO

El diagrama circuital completo es sencillamente la

reunión de todas las etapas diseñadas en este capítulo 5 y se

muestra en el ANEXO 1.

REFERENCIAS BIBLIOGRÁFICAS:

1„ E.P.N.P Facultad de Ingeniería Eléctrica, apuntes de


Control con Microprocesadores (teoría y laboratorio).,
1992

2- INTEL Corporation., MCS BASIC-52 User's Manual., Santa


Clara,, CA 5 1988

3- ELCOMP? Microcomputer Hardware Handbook, Firs edition p


Holzkirchen, Germany;, March 1982., pag. 200-204., 258

4. LÓPEZ RODRÍGUEZ., Pedro,, MARTÍNEZ RUBIO Juan 5


Muítigrabador de dispositivos programables,, artículo de
REVISTA ESPAÑOLA DE ELECTRÓNICA9 Valencia., sept. 1989

5» INTEL, Memory Componente Handbook, 1987

6. SCHLENBER-KINK-, Thomas,, Der Basic-EMUF., artículo de la


revista "EIMPLATINENCOMPUTER -HARDWARE" f Berlín, Í990?
pag B 14-23

7. MAXIM., Maxim Integrated Products., 1990., pag- 9.1 a 9.9


INTERSIL,, Products Manual., 1990,, pag. Íl-36 a 11-41

8. ELCOMP,, Microcomputer Hardware Handbook., First edition.,


Holzkirchen 5 Germany., March 1982? pag. 829 a 844

9. MICROMINT INC» s BCC52 BASIC COMPUTER/CONTROLER Users


Manual, Rev. 3.05 Vernon CT, U B S.A. ? 1986, pag» 7
10., Philips ECG., ECG Semiconductors Master Replacement Guide 3
Williamsport PA-, U.S.A.., 1985,, pag- 131 ¡, 157

11- McLYMAN., Colonel William|¡ Transf ormers and Inductors


Design Handbook; Marcel Dekker Inc.; New York., U.S.A.9
1978 pag« 3¿9 a 380

12» MAGMETAL,, Hojas de datos técnicos de núcleos disponibles.,


Brasil „ 199Í3
57

CONSTRUCCIÓN

CONSIDERACIONES GENERALES

El primer circuito lo construimos con técnicas de "WIRE

WRAP" con el propósito de hacer en él las pruebas iniciales de

funcionamiento del sistema y luego de ello escoger la mejor

opción para cada una de las siguientes partes de la tarjeta:

# Fuentes de poderB

Se construyó tanta leí fuente de polarización como la de

programación9 la misma que inicialmente utilizaba un

potenciómetro para variar el voltaje al valor requerido de

acuerdo a'l tipo de memoria a programar,, pero para eso se

necesitaba de un voltímetro para lograr una calibración

precisan por lo que finalmente se decidió por reemplazar el

potenciómetro por un "clip switch" con el que sólo se tenga que

cambiar la posición de los interruptores para variar el

voltaje de programación a cualquiera de los tres valores

necesarios2 12-5 S 21 o 25 Vdc-

* Comunicación serial con terminals

Primeramente se construyó el interfaz serial utilizando


las C H I „ estándar 1488 receptor y 1489 transmisor., pero para
su funcionamiento era necesario utilizar dos fuentes de
voltaje adicionales de ±12 v"«:¡ sólo se utilizaba uno de los
cuatro elementos de cada chip y además se preveía que los dos
chips ocuparían mucho espacio físico en la tarjeta de circuito
impreso final« Por todas estas razones? posteriormente se
probó el interfaz con el C.I. MAX232, salvando todas las

dificultades presentadas con la opción anterior y también se

probó el C-I» ICL232? para finalmente decidir que en la

tarjeta final haya la posibilidad de conectar cualquiera de

los dos últimos chips»

* Organizacióndel espacio de memorias

La configuración inicial consistía ens una sola RAM 6116P

una EPROM 2716 para programas en Assembler y otra EPROM 2732

para programas en Basic (zócalo de programación). Sin embargo,,

considerando que habia muy poca memoria en caso de querer

desarrol lar programas más largos,, se incrementó la capacidad a

dos RAM 61163 EPRÜM 2764 para rutinas en Assembler (que

incluye la posibilidad de hacer una superposición de

direcciones para utilizar varias opciones del intérprete) y

zócalo de programación Basic con capacidad para grabar EPROMs

2764 o 27123-

* Circuitode RESETs

Al inicio se utilizó una configuración simple R~C para el

circuito de RESET de la tarjeta., como la que se sugiere en- las

hojas de datos del 8052AH. Sin embargo,, se tenia problemas

pues muchas veces era necesario aplastar 2o 3 veces el

pulsador para lograr resetear al micro,, razón por la que se


decidió utilizar el circuito TL7705 (supervisor de fuente de

poder) para construir el reset¡, con lo que se logró solucionar

el problema anterior-

* Opción de programación s

Como se explicó anteriormente., al inicio se probó el

circuito para programación de memorias EPROM 2732 y luego para


59

2764-27128,, que difiere del ¿Anterior,.

- Conectoress
Durante la etapa de pruebas en el circuito en "wire wrap"

se encontró con varias necesidades cornos

— polarizar a la tarjeta desde fuentes externas,,

- incrementar elementos fuera del sistema, tales como memorias

RAM o EPROM., conversores A/D o D/A,, displays., teclados,, etc..

- reconfigurar el sistema de acuerdo a la aplicación,,

para lograr ésto se decidió utilizar varios conectores a

través de los cuales se pueda extraer de la tarjeta sus buses

de datos,, direcciones y control., asá. como lineas de selección

de chips, seríales de funciones especiales del BA8IC-52 y los

pórticos paralelos del 8255- Una explicación detallada de

todos los conectares se presenta más adelante., en el numeral

3.3 de este capítulo.

Con todas las consideraciones previas se logró finalmente

optimizar el sistema en base a las necesidades,, con lo que se

procedió a diseñar el circuito impresa definitivo»

3.2 DISECO DEL CIRCUITO IMPRESO

Para el diseño del circuito impreso se utilizaron


básicamente dos paquetes de softwares el OrCAD de OrCAD

Systems Corporation ¡, para elaborar el esquema circuital

completa de la tarjeta,, y el TANGO de ACCEL Tecnologies,, para


diseñar el circuito impresa propiamente dicho.

Los utilitarios empleados asi como sus funciones se


señalan en el procesa seguida para diseñar el circuito impresa
62)

que explicamos a continuacións

1. Elaboración del esquema circuital completa de la tarjeta

con el utilitario SDT del OrCAD

2. Creación de elementos no existentes en las bibliotecas

propias del QrCAD con el programa LIBEDIT-

3- Se verifica que ningún elemento del diagrama está

desconectado con el ejecutable ERCHECK del OrCAD.

4. Se comprueba que todas las conexiones entre elementos del

diagrama sean correctas con el ejecutable NETLISTj, usando

los formatos ORCADPCB y TAMBO.

5. Disposición física de los elementos en el espacia de la

tarjeta y creación de aquel los que no consten en las

bibliotecas del TAMBO,, empleando su utilitaria PCB.

ó. Cambios en el esquema circuital del OrCAD para facilitar

las conecciones entre elementos en el circuito impresa y

disminuir el tamaño de la tarjeta,,

7» Mueva verificación y depuración del esquema circuital en

OrCAD con sus utilitarios ERC y METLIST-

8- Diseño mismo de la tarjeta del circuito impresa

utilizando el ejecutable ROUTE del TAMG03 que debe

correrse tantas veces como sea necesario,, hasta obtener

pocos segmentos y vías removidos cuyo resultada se ve


luego del procesa de post-rutea.

9. Las caminas que na se logran trazar en el ROUTE deben

hacerse manualmente en el programa PCB del TAMBO,, tomando

como base el archivo de reporte de salida (-LOG) del

última ruteo* Es conveniente saber manejar el programa

para poder utilizar todas sus opciones desde el menú


61

principal. Resulta de especial utilidad la opción VERXFY

del sub-menú NETS para comprobar si no se ha cometido

errores durante el trazado manual de los caminos

faltantes.

10- Finalmente es conveniente correr de nuevo el ROUTE.,

tomando como archivo de entrada (-PCB) aquel resultante

del paso anterior,, para obtener un archiva de salida

(.LOS) cuyo reparte de errores servirá para-, de ser

necesario,, hacer la última corrección del circuito

impreso en el programa PCB„ Este paso debe repetirse

hasta que en el archivo de reporte no se encuentren

errares.

La tarjeta de circuito impresa diseñada tiene rutas a

doble lado y agujeros metalizados., sus dimensiones son s

10.2 cm X 16.8 cm. Para fines didácticos,, todos los

componentes se colocan en un solo lado,, todas las señales

internas pueden ser accedidas fácilmente a través de los S

conectares instalados para poder hacer las pruebas que se

requieran., igualmente para hacer cambias en la configuración

del sistema se han dispuesta las "jumpers" necesarias»

Para lograr las características señaladas., especialmente

los agujeros metalizados que facilitan la colocación y


soldadura de los elementos., fue necesario enviar a hacer la

tarjeta a Colombia.

Todos los lados de la tarjeta de circuito impresa

diseñada con el proceso explicada anteriormente, se muestran

en el ANEXO 2- Los elementas utilizados en la tarjeta son los


mismos del diagrama esquemática en OrCAD SDT "TARJETA CON EL
62

MICROCONTROLADOR S052AH-BASIC" mostrado en el ANEXO 1; de

donde se extrae un listada de materiales. mediante el

utilitario PARTLIST del GrCAD ? que se muestra en la tabla 3.2.

ítem Cantidad Referencia Parte

i o
ji. C1,C2 •rjOi-i
•^•¿•P
r? 1 C3 lu>5V
~yr •.-."
1 C4 470u>16V
4 1 C5 470u>35V
5 1 C6 lu>35V
6 4 C7 ,08,09,010 10u>10V
7 i Cli 100n>5V
S 1 w j~ ji. 10U
9 '7 01,02 PF05
10 1 03 1N4007
11 7 Hl ., H2 ., H3 3 H4 s H5 P H6? H7 HEADER 8
12 1 H8 HEADER 20X2
13 4 JP1,JP4S JP5,JP6 HEADER 3
14 1 JP2 HEADER 2
15 1 JP3 HEADER3
16 1 Pl CONNECTOR DB9
17 1 Ql 2N2907
18 4 R1.,R25R3,R4 10K
19 1 R6 240
20 1 R7 7-5
o 1
•C..1. 1 RS 22 K
T?
1 R9 1.2K
23 •~- R10¡,R11,1RÍ7 4-7K
24 •«' R12,,R13.lFa4 3.3K
25 o R15..R16 3K
26 1 RS1 9*3. 3K
27 1 SI SW DIP-4
28 1 S2 SW PUSHBUTTQN
29 1 Ul 8052AH-BASIC
30 1 U2 2764
31 1 U3 2764/128
32 i U4..U5 6116
33 1 U6 8255
34 1 U7 74LS373
35 1 US 74LS08
36 i U9 7407
37 1 U10 74L8138
38 1 Ull 74LS139
39 1 LJ12 232
40 1 U13 LI17805
41 1 U14 LM317
42 1 U15 TL7705
43 1 Yl CRYSTAL

7~a£>Ia 5-2 Lista de elementos de /a tarjeta


63

DOCUMENTACIÓN DE CONECTQRES Y JUMPERS

3.3.1 CONECTORES

Todos los conectares can las señales a las que se tiene

acceso en ellos., se muestran gráficamente en el ANEXO 3.

La tabla 3.3.1 presenta una explicación breve de ellos.

Tabíst Señales en ¿os conectores de la tarjeta

No, SERÍALES DESCRIPCIÓN

Hl PA7-PA0 bits de E/S del pórtico A del PPI 8255A

H2 PB7-FB0 S bits de E/S del pórtico B del PPI 8255A

"C7-PC0 S bits de E/S del pórtico C del PPI S255A

H4 5 lineas de selección de chips provenien-

CS5-CS7 tes del decodificador 74LS138 (SKbytes) y

CS1B-CS3B 3 lineas de selección de chips provenien-

tes del decodificador 74LS139 (512 bytes)

P1-7-PÍ 8 bits de E/S del pórtico 1 del S052AH

He) TXD, RXD 2 lineas de comunicación serial (TTL)

TÍO,, R1I 2 lineas de comunicación serial (RS—232)

LINE PRIN Salida a impresora serial a nivel TTL

T20 Salida a impresora serial a nivel RS-232

T2EX Entrada externa al timer/counter 2 (TTL)

T205 R21 Entrada externa al timer/counter 2 (RS232)


64

NO: SERÍALES DESCRIPCIÓN

H7 AGÍ y AC2 Lineas de alimentación AC a la fuente

regulada internas de polarización + 5 V

AC3 y AC4 Lineas de alimentación AC a la fuente

regulada interna de programación ajustable

VSS Tierra del sistema (referncia de voltaje)

EXTVCC Voltaje de polarización externo + 5 Vdc

respecta a tierra VSS

EXTVPP Voltaje cíe programación externo 25P 21 .„ o

Í2«5 Vdc respecto a VSS

H8 AÍ5 - A0 Bus de direcciones del sistema

D7 - DO Bus de datos del sistema

VSS Tierra del sistema (referencia de voltaje)

VCC Voltaje de polarización de la tarjeta +5V

VPP Voltaje de programación de la EPROM2

RD y WR Lineas de control para habilitar RAM

PSEN Linea de control para habilitar EPROM

T0 Entrada externa al timer/counter 0

TI Entrada externa al timer/counter 1

EXTINTO Entrada de interrupción externa 0

EXTINTi Entrada de interrupción externa 1


PE y PP Lineas para programación de EPRQMs
EXRST Señal de reset externo
ALE señal para habilitar laten dedirecciones
"JUMPERS"

Se han colocado en la tarjeta varios jampers con el

propósito de presentar al usuario varias posibilidades de

configurar el sistema,, de acuerdo a sus necesidades-

En la tabla 3.3.2 se detalla la función de todos ellos de

la siguiente formas en la columna izquierda está el número de

jurnper C#]¡, (por ej . JP3) y su nombre de identificación en la

tarjeta [ID] impreso en el lado de siluetas,, (por ej - RESET).

En la columna central consta la posición del mismo (POSIC) que

en caso de tener 3 pinas (caso de JP3)? indica que debe

colocarse el jumper entre el pin central y el extremo marcado

con el nombre anotado en ésta columna (por ej» HÁBIL ó INHAB) 3

y si el jumper es de dos pines (caso de JP2) indica la

presencia (CON) o ausencia (SIN) del mismo- Finalmente en la

columna derecha se da una explicación breve de la variación en

la (CONFIGURASIUN) del sistema al modificar la posición de los

jumpers respectivos-
66

Tabla 5-5-2 Resumen de los "jimpers* de la tarjeta

# ID POSIC CONFIGURACIÓN

JP1 HÁBIL ROM interna del S052AH habilitada, el sistema

ROM (SIN) es controlado por el intérprete BASIC- 52

I NT
INHAB ROM interna del S052AH deshabilitada, el

( CON ) micro funciona como si fuera 8032AH

JP2 SIN A13 de EPROM2 desconectada de bus de di rece-

A13 Zócalo de programación con 2764 de 8K

CON A13 de EPROM2 conectada al bus de direcciones

Zócalo de programación con 27128 de 16K

JP3 I NT RESET INTerno (pulsador S2) habilitado

RESET
EXT RESET EXTerno (entra por H8.3) habilitado

JP4 I NT Voltaje de programación interno

VPP
EXT Voltaje de programación externo (H7«3)

JP5 INT Voltaje de polarización +5V interna

VCC
EXT Voltaje de polarización +5V externo (H7.2)

JP¿> EXT Linea CS2 (4000H-5FFFH) al exterior.,

4000H disponible en H4 u i

OVLAP OVERLAP entre espacio de dirección 4000H-

5FFFH y 2000H-3FFFH
OPERACIÓN Y PRUEBAS

USO DE TERMINAL

Para establecer un enlace serial correcto entre el micro-

controladar 8852AH-BASIC y al aparato de consola., deba

definirse en ambos los mismos parámetros de comunicación.

Puesto que el BASIC-52 [Link] el pórtico serial del micro

para el modo UART de 8 bits,, en la consola deben setearse los

parámetros correspondientes,1! S bits de datos,, 1 bit de

arranque., 1 bit de parada y sin bit de paridad - En cuanto a

la velocidad de transmisión _, en consola se puede elejir

cualquiera-, dentro del rango de 110 BPS hasta 192(30 BPS -ya

que al BASIC-52 tiene una rutina de búsqueda automática del

"baud rate"-3 siempre que la frecuencia del oscilador de

cristal lo permita- En la tarjeta sa ha colocado un cristal de

12 MHz y se ha probado la comunicación con el micro

exitosamente para todas las velocidades de transmisión.

El aparata de consola con el cual podemos comunicarnos

via serial con el microcontrolador 8E352AH-BASIC debe ser un

"terminal tonto"5 habiendo dos opciones principales!


- Utilizar un equipo terminal dedicado,, para lo cual se
deberia disponer de uno en todo lugar donde se vaya a trabajar

con el microcontrolador., que es prácticamente imposible-


- Usar una computadora (PC) ¡, en la cual corramos cualquier
programa emulador de terminal- Esta opción as más conveniente
que la anterior por cuanto al uso da computadoras se ha
68

generalizado y se dispone de? una prácticamente en cualquier

lugar a donde se vaya.

Por otro lado existen muchos programas emuladores de

terminal., por ejemplo aquellos que vienen formando parte de

paquetes de software de comunicación mayores,, para uso de

MODEMs-, como por ejemplo el BITCOM*,, PROCOMN, y otros más

completas y complejos- Sin embargo., para cumplir con el

propósito de este trabajo de tesis., es suficiente un emulador

sencillo., por lo que hemos probado y utilizado los dos ya

señalados.

Una opción adicional es hacer un programa emulador de

terminal propio., utilizando cualquier lenguaje de programación

que permita el manejo del pórtico serial de la computadora.

Esto resulta conveniente sobre todo para incorporar al

terminal la capacidad de graficación de datos»

4.1.1 VENTAJAS Y DESVENTAJAS

El uso de un emulador de terminal en una computadora

tiene ciertas ventajas.* pero también desventajas. Entre las

ventajas podernos citar:

Se dispone de todas las opciones particulares que


presente el menú principal en cuanto se refiere a:

Facilidad de variación de los parámetros de comunicación

Capacidad de almacenar en archivos de texto DOS del

computador cualquier información que se desee durante la

comunicación terminal-mi ero,, ya sea listados de programas.,

resultados de la ejecución de los mismos ¡, e te» para


69

posteriormente poder corregirlos con cualquier editor de texto

que acepte formato DOS (por ej „ NORTON EDITOR., WORD PERFECT.,

WORD STAR., etc.) y de quererlo., imprimir dicha información-

Opción de imprimir directamente todo lo que se muestra en

la pantalla del terminal mientras estamos comunicándonos con

el microcontrolador»

Posibilidad de transferir información almacenada en

archivos de texto DOS desde la computadora hacia el

microcontrolador. Esta característica es especialmente útil

para desarrollar programas en un editor de texto cualquiera

(que permita grabar archivos en formato de texto DOS) con

comandos., sentencias e instrucciones reconocidos por el BASIC-

52., luego transferir dicho programa a la RAM externa de la

tarjeta a través del microcontrolador y una vez alli hacer con

él cualquier cosa que se desee y permita el BASIC-52,, como

correrlo para comprobar su correcta funcionamiento., o de haber

fal las editarlo para correj irlas., e incluso grabar dicha

programa en EPRDM.

Por otro lado., la desventaja de utilizar un programa

emulador de terminal en un computador radica en que por

definición el terminal es "tonto"? es decir que sólo puede

enviar y recibir información., presentándola en pantalla,, pero

no tiene capacidad de procesamiento de dicha información 9 como

por ejemplo realización de? gráficos., razón por la que se ha

incluida en este capitula en el numeral 4*5 la forma en que

podemos comunicarnos desde la computadora con el micro y a la

vez hacer gráficas con la información que ese nos entregue.


4.: PRUEBAS EN CASO DE FALLA

Durante la puesta en marcha del sistema se requiere por

lo menos de un muí timetro y preferentemente de un

osciloscopiOj, para realisar un proceso de pruebas adecuado en

el que se debe comprobar la correcta conexión y funcionamiento

de distintas etapas,, de acuerdo a la falla que se tenga-

En primer lugar., siempre debemos asegurarnos que los

parámetros de comunicación del terminal sean los reconocidos

por el 8Í352AH--BASIC para que se establezca el enlace serial.,

pues si no cumplimos esta condición nunca lograremos

comunicarnos con el mieracontrolador? aunque la tarjeta

funcione correctamente.

A continuación se analiza las principales fallas que se

podría tener en el sistema., y se sugieren las pruebas que

permiten corregirlas.

FALLA 1 s Si luego de energizar o resé tea r el sistema,, éste no

responde al presionar la barra espaciadora en el

terminal ? debe revisarse las siguientes etapas., siendo

aconsejable., por experiencia*., seguir el siguiente ordens

a) Fuente PC de alimentación
Dependiendo de si se trabaja con una fuente externa o
interna,, debe verificarse que el jumper JP13 esté colocado en
la posición adecuada,, que el voltaje de polarización -VCC-

esté dentro del rango que asegura el funcionamiento normal de


todos los elementos del sistema (+ 5V + 5X) y que todos los
elementos estén polarizados correctamente.
71

b) Pin 31 del 8052AH (/EA)

Verificar que la señal de habilitación de la ROM interna

del 8052AH (/EA) tenga un nivel lógica alto (1L)., pues de no

tenerlo? el intérprete BASIC-52 estará deshabilitado y nunca

arrancarán

£) Interfaz serial

Comprobar que los voltajes de los pines de transmisión y

recepción del ICL232 conectados a los pines TXD y RXD del

micro,, estén dentro del rango TTL (0a 5 Vdc)¡, pues de no

estarlo el mierocontrolador se dañará- Comprobar también que

los voltajes de los pines de transmisión y recepción del

ICL232 unidos a través de los pines 2 y 3 del conector DB9 al

terminal., tengan niveles RS--232 (--10,, *i® Vdc)? pues de haber

voltajes menores como los TTL,, nunca se establecerá la

comunicación.

d) Memoria da'datos

Verificar que el sistema está direccionando al menos 1

Kbyte de RAM externa desde la localidad 0000H en adelante.,

pues el BASIC-52 ocupa las primeras 510 localidades de dicha

memoria, y si el micro no las reconoce nunca arrancará. Por

otro lado,, si el direccionamiento está bien,, revisar el buen

estado de la memoria.

El ANEXO 6 muestra en qué usa el BASIC-52 las primeras


510 localidades de memoria de datos externa-

^) Oscilador cíe cristal

Comprobar que el cristal esté oscilando., y si lo está


haciendo., que la frecuencia sea la correcta „
72

FALLA 2.a Si ya se ha logrado establecer comunicación con el

micro., pero los 4 registros de funciones especiales

(RFE) no han sido inicial izados con los valares correctos

durante el arranque - TCON - 244 (0F4H), TMOD = 16 (10H) y

T2CON = 52 (34H) « Esto se puede comprobar tipeando el

siguiente comando desde teminal:

>PRIIMT TCDN., TMOD? T2CON „ XTAL

En este caso debe repetirse los pasos c) ., d) y e)

señalados anteriomente. Además,, si se está usando un oscilador

d© cristal de una frecuencia distinta al valor XTAL predefini-

do,, debe reasignarse este RFE con el valor real., para que no

exista errores en todas las funciones dependientes del tiempo„

FALLA 3s Si todos los registros de funciones especiales

tienen los valores correctos? pero no se logra

ingresar al modo de programación del BñSIC-52,, sino sólo al

modo de comandos» En otras palabras, el BASIC-52 no acepta

lineas de programa., sino solamente comandos independientes., o

a lo mucho varios comandas en una misma línea que formen un

pequeño programa.

El motivo de esta falla es seguramente que no se ha

asignado el Valor de Control del Sistema MTOP., o que el valor

asignado es incorrecto (comúnmente MTOP = 0 ) ; lo cual se debe

normalmente a una falla en el circuito de decodificación de

direcciones del sistema22 o a que una o varias de las líneas

de direcciones hacia la RAM están abiertas o cortocircuitadas„

La solución es entonces verificar el circuito de

decodificación de direcciones., comprobando que exista


continuidad entre los chips de RAM colocados en el sistema,,

y/o asegurarse que todas las líneas de dirección hacia la RAM

están conectadas apropiadamente..

4.3 PROGRAMACIÓN EN BASIC-52

El objetivo de este subcapítulo es desarrollar programas

sencillas que hagan uso de las diferentes características del

8052AH-BASIC orientadas a ambientes de control (sección 1 H 1 ) ?

y que por su simplicidad expliquen por si mismas la manera de

utilizar dichas funciones? sin necesidad-, en la mayaría de los

casos., de aclaraciones adicionales-

Para entender completamente todos los programas es

necesario conocer la función de todas las instrucciones, par

lo que se recomienda tomar como referencia el ANEXO 4.

Los programas han sido clasificadas de acuerda a la

función que desempeñan.

¿°) Manejo de interrupciones desde Basic„

Debido a que virtualmente todos los Registras de

Funciones Especiales en el 8PJ52AH-BAS1C pueden accederse desde


el BASIC~52s es pasible manejar interrupciones de tiempo y

externas dentro de la construcción de un programa Basic- Para

el efecto se dispone de un reloj en tiempo real de precisión

(tiene una resolución de 5 ms „ ) implementado en el BASIC-52¡t

manejado por interrupciones9 y que puede ser habi1 itado (con


\l comando CLOCK1) ,, deshabilitado (con el comando CLQCKGJ) y
74

usada para generar interrupciones de tiempo dentro de un

programa Basic (con el comando ONTI1¥IE) „

Para el maneja de interrupciones externas el BASIC-52

dispone del comanda ONEX1 que utiliza la INTERRUPCIÓN 1 del

8052AH., de tal manera que se puede generar una interrupción

externa colocando el pin $ 13 del micro (denominado INT1) en

un nivel lógico bajo (0L)-

Para resetear interrupciones evocadas por el Basic,, se

puede utilizar el comando CLEARI o también el comando CLEAR

que además borra todas las v¿iriablesB

Para salir de una subrutina de atención a una

interrupción,, se dispone de la sentencia RETÍ

EJEMPLO 1: Interrupción externa

La figura 4.3.1 muestra el diagrama de flujo del programa

que maneja interrupciones externas desde BASIC-52-

# LISTADO documentado del programas

10 PRINT 2 PRINT
20 PRINT "PR06RAMA DE ATENCIÓN A INTERRUPCIONES EXTERNAS
USANDO SENTENCIAS"
30 PRINT TAB (20)3"DEL INTERPRETE MCS BASIC-52"
40 PRINT s PRINT
REM encera y arranca el Reloj en tiempo real (RTR)
50 TIME=0 s CLOCK 1
60 X=0 5 REM inicializa contador de numero de interrup-
70 B=i s REM inicializa variable de salida del programa
REM imprime manera de generar una int» externa
80 PRINT "PARA GENERAR UNA INT- EXT.1 PONGA EL PIN # 13 DEL
MICRO"
90 PRINT "8052AH-BASIC EN 0L Y SE EJECUTARA LA RUTINA DE
ATENCIÓN"
100 PRINT
110 ONEX1 170
120 DO s REM lazo de espera por int.. Sin hacer nada
75

130 WHILE BO0 s REM mientras no se decida salir del programa


140 CLEAR I : REM desactiva int- previamente activadas
REIVI para y encera el RTR
150 CLOCK 0 : TIME=0
160 END : REM fin del programa principal
REM inicio de la subrutina cié atención a la int-ext»!
170 A-TIME u REM salva valor del RTR cuando sucede la int.
180 X = X + i s REM incrementa contador de numero interrupciones
REM muestra mensaje en pantallas
190 PRINT
200 PRINT "[Link]. # s "nX,"OCURRIDA As "9A9"[Link] INICIO
DEL PROBRAMA"
210 PRINT
REM imprime opciones
220 PRINT "PARA ATENDER OTRA INT-EXT»i PRESIONE LAS TECLAS
(l)-XENTER)"
REM ingresa elección hecha en variable (B)
230 INPUT "SI DESEA SALIR DEL PROGRAMA PRESIONE LAS TECLAS
(0)->(ENTER)"PB
240 PRINT
250 IF B=l THEN PRINT "PONGA EL PIN # 13 DEL 8052AH-BASIC
U NT 1) EN 0L"
260 RETÍ s REM regr ss^t de la rutina de interrupción

[Link]ÚN en pantalla al correr el programa

ejecutando el comando RUN:

PROGRAMA DE ATENCION AINTERRUPCIOMES EXTERNAS USANDO


SENTENCIAS DEL INTERPRETE MCS BASIC-52

PARA GENERAR UNA [Link]..1 PONGA EL PIN # 13 DEL MICRO


8052AH-BASIC EN 0L Y SE EJECUTARA LA RUTINA DE ATENCIÓN

INT-EXT 1 OCURRIDA 12.21 SEG - DEL INICIO DEL PROGRAMA

PARA ATENDER OTRA [Link].i PRESIONE LAS TECLAS (1)->(ENTER)


SI DESEA SALIR DEL PROGRAMA PRESIONE LAS TECLAS ( 0 ) ~>( ENTER) i
PONGA EL PIN # 13 DEL S052AH-BASIC (INT1) EN 0L

INT. EXT- #s 2 OCURRIDA As 25.92 SEG „ DEL INICIO DEL PROGRAMA


PARA ATENDER OTRA I NT. EXT -1 PRESIONE LAS TECLAS (1)->(ENTER)
SI DESEA SALIR DEL PROGRAMA PRESIONE LAS TECLAS ( 0 ) ->( ENTER ) 0
76

CORRER EL REDO JEK


TIEMPO REAL < RTR)

miClAUZAR CONTADORAS
NUMERO DB EÍTEKRXJP, ^

INK3ALIZAJI VARIABLE DB
SALBDÁ DEL FROOR. <B-1)

ESPERAR INTERRUPCIGN

DBSACTIVA*. MBRRÜR

PARARYBNCERAIt RTR

B) «nHHtmH

SALVAR TIEMPO EM QUE


SUCEDIÓ INT. BXT. 1 (T)

INCREMENTAR
CONTADOR #

(RETORNAR)
HGURA. 4,3.1. MANBIO DE INTERRÜPCIOKBS EXTERNAS DESDE BASIC-ife
77

EJEMPLO Interrupciones cíe tiempo

La figura 4-3.2 muestra si diagrama de flujo del

programa que maneja interrupciones de tiempo desde BASIC-52,

# Listado del programa documentado 2

10 PRINT s PRINT
20 PRINT "PROGRAMA DE ATENCIÓN A INTERRUPCIONES DE TIEMPO
PERIÓDICAS"
30 PRINT TAB (20),"DESDE EL MCS BASIC-5;
40 PRINT : PRINT
REM encera y activa el Reloj en Tiempo Real (RTR)
50 TIM£=0 5 CLOCK 1
60 X=0 s REM inicializa contador de num. de int-
REM activa int. de tiempo cuando RTR = 5 seg. y salta a
70 ONTIME 5;1140 a REM subrutina de atención (línea 140)
80 DO ¡ REM inicia lazo de espera por int. de tiempo
REM imprime, en la misma linea,, el tiempo transcurrido
mientras espera
90 PRINT "TIEMPO TRANSCURRIDOS",TIME, CR „
100 WHILE TIME<30 : REM fin de espera si RTR 30 seg.
110 CLEAR I s REM desa c t iva interrupciones
REM para y encera el RTR
120 CLOCK 0 s T1ME-0
130 END : REM fin del programa principal
REM inicia subrutina de atención a int- de tiempo
140 A^TIME : REM asigna a variable (A) valor del R,,T.R,
150 X = X-í-i s REM incrementa contador de num. de int,
REM imprime mensaje de interrupción
160 PRINT "INT B DE TIEMPO # s " „ X 3 " OCURRIDA A s ' INT(A)
"SE6."
170 REM reactiva int» cíe tiempo dentro de 5 seg.
180 ONTIME A4-5?140 s REM y salta a subrutina de atención
190 RETÍ s REM fin cié subrutina y retorna a prog
principal
A)FROORAMAFKINaPAL

ENCERAR Y CORRER RELOJ HEMPO REAL (RXR)

INIOALIZAR CONTADOR NUMERO INTEKRUP.

ACITVAR INTERRUPCIÓN DEITEMPO HN 5 SEO.

IMPRIMIR TIEMPO TRANSCURRIDO (T>


MIENTRAS ESPERA INT, DB TIEMPO

DESACTIVAR INTERRUPCIONES

PARAR Y ENCERAR HL 3LTJL

B) SnHRTTTTNA BB ATEKCÜrtM A TTBkfPfi

A-VALORI>[Link]

INCREMENTAR OONTADQR INTS.

IMPRIMIR MENSAJE: TNT. DB TIEMPO


NUH (*) OCURRIDA A (A) SEO.

REACTIVA INT_ DB TDffl^PO EK 5 SEO.

TRETORNAR)

INTERRU7ODNBS DB TCBMPO PERIÓDICAS. DBSDB EL MCS BA&C-52


79

EJEMPLO 3: Prioridad de las interrupciones de., tiempo

sobre las externas

Al manejar dentro de un mismo programa,, interrupciones de

tiempo e interrupciones externas., en forma conjunta., el

BASIC-52 establece una prioridad de atención a las mismas., en

caso de que sucedan al mismo tiempo., debido a que la sentencia

ÜNTIME afecta a la sentencia ONEXi,, pero no al revés. De esta


forma-, si sucede una interrupción de tiempo mientras se está

ejecutando la rutina de atención a una interrupción externa,

el control del programa pasara inmediatamente a la rutina de

atención a la interrupción de tiempo., pero si sucede lo

contrario,, el control del programa no se verá afectado,, se

mantendrá en la rutina de atención a la interrupción de tiempo


hasta que termine de ejecutarse., y sólo después de ello pasará

a la rutina de atención a la interrupción externa»

La figura 4.3,3 muestra el diagrama de flujo del programa

BASIC-52 que demuestra la prioridad de las interrupciones de

tiempo sobre las externas-


80

A) PROGRAMA PRINCIPAL

CORRER EL RELOJ EN TIEMPO RBAL <RTR)

INDOAtlZAH CONTADORES INT. EXTERNA (E)


E INTERRUPCIÓN DB TIEMPO (I)

ACTIVAR LA INTERRUPCIÓN EXTERNA 1

ACTIVAR INTERUPaONDE TIEMPO EN" 50 SBO.

ESPERAR INTERRUPCIÓN EXTERNA O DE TGSMK)

TRANSCURRIDO < 240 SBO

DESACnVAR INTHaHUPClONBÍ!

fARA Y ENCERAR [Link]

BE) SUBHJJnilA. DB ATENEO* A ttCL DE HEMEQ

Q SUgRJUmNA DB ATBNQON A INT. EXTERNA t

A « TIEMPO AL QUE SUCEDIÓ ÍNTER».

INCREMENTAR CONTADOR No. INTS.


A - TIEMPO AL QUE SUCEDIÓ INTERR
TIEMPO (T)

INCRBMHNTAR. CONTADOR NCL INTS.


MENSAJE: INT. TIEMPO * -T- SUCEDIDO TIEMPO (E)
A LOS -A- SBO.

MBNSAJ& INT. EXTERNA. *-T- SUCEDIDA


A LOS -A- SEO.
B - TIEMPO PARA FIN DB BOTINA
INTKRR, MENSAJE TIH^PO PARA FIH
0B RUTINA, DE INT TIEMPO-3-SEO
INTERR, MENSAJE: TIEMPO PARA. PIN
BB RUTINA BB INT. K5CTBRN A -B- SBO

NO

ACTIVAR INT. DE TIEMPO HK 50 SBG.

^RETORNAR)

HCKJKA 4^3. DIAGRAMAS DE FLUJO DEL PROGRAMA, QUE MANETA INTERRUPCIONES DBSDB
RASIO-52 Y DEMUESTRA. LA, PRIORIDAD DE LA INT. DE TIEMPO SOBRE LA INT, EXTERNA, 1
81

Listada del programa documentado;


PRINT s PRINT
PRINT "PROGRAMA QUE DEMUESTRA LA PRIORIDAD DE INT. DE
TIEMPO SOBRE"
PRINT TAB (9)?"INT EXTERNAS MANEJADAS CON MCS
BASIC-52"
40 PRINT 2 PRINT
50 TIME-0 s REM encera Reloj en Tiempo Real (R-T-R.)
60 CLOCK 1 s REM arranca R.T.R.,
REM inicializa contadores de int. de tiempo y externas
70 T=0 s E=0
80 ONEX1 270 s REM activa int,.externa
90 ONTIME 50s160 s REM activa int« de tiempo
100 DO s REM espera por int. de tiempo o externa
REM imprime tiempo transcurrido mientras espera
110 PRINT "TIEMPO QUE ESTA EJECUTÁNDOSE EL PROGRAMA PROGRAMA (en
seg. ) s'^TIME, CR .,
120 WHILE TIME<240 s REM fin de espera en 4 minutos
130 CLEAR I s REM desactiva interrupciones
REM para y encera RTR
140 CLOCK 0 s TIME=0
150 END s REM fin del programa principal
REM inicia subrutina de atención a int- de tiempo
160 A-TIME 2 REM salva valor de R.T-R-
170 T=T-t-l a REM incrementa contador de int. de tiempo
180 PRINT s PRINT : REM imprime mensaje de int. de tiempo
190 PRINT "INTERRUPCIÓN DE TIEMPO #s " ., T P "OCURRIDA A LOSs",
A, "SEG.."
200 DO s REM inicia la^o de int. de tiempo
210 B~20-t-A-TIME s REM calcula tiempo para fin de rutina
REM imprime mensaje
220 PRINT "TIEMPO PARA FINALIZAR RUTINA DE I NT, TIEMPO
(en seg. ) : " ¡, B -, CR 3
230 WHILE B>0 s REM rutina termina en 20 seg.
240 PRINT RINT
250 ONTIME A+50,,160!: REM reactiva int. de tiempo en 50 seg*
260 RETÍ ¡ REM retorna a programa principal
REM inicia subrutina de atención a interrupción externa
270 A^TIME 2 REM salva valor de R,T.R.
280 E-E-z-1 ¡ REM incrementa contador de int« externas
290 PRINT s PRINT s REM imprime mensaje de int. externa
300 PRINT ' INTERRUPCIÓN EXTERNA # s " f E,, "OCURRIDA A LOS s "9 A9
"SEG."
310 DO : REM inicia lazo de int. externa
320 B-20+A-TIME s REM calcula tiempo para fin de rutina
REM imprime mensaje
330 PRINT "TIEMPO PARA FINALIZAR RUTINA DE INT. EXTERNA
(en seg. ) : " ¡, 8? CR 9
340 WHILE B>0 s REM fin de rutina en 20 seg.
350 PRINT : PRINT
360 RETÍ 5 F<EM retorna a programa principal
CÍ jS.

EJEMPLO 4: Conversión entre Sistemas Numéricos.

Decimal y Hexadecimal

La figura 4.3-4 muestra el diagrama de flujo del programa que

realiza conversión de sistemas numéricos decimal-hexadecimal-

(JÑK30~)

PRESENTAR OPCIONES * #1: CQNV. DBC. A HEX.


#fc CX>NV. HEX. A DBC. ; OTRO fc SALIR *

NO

SI
INGRESAR * DBC. DE O a 65535 INGRESAR # HEJC DB O a GFFFB

MOSTRAR EN" PANTALLA EL # MOSTOAR EN PANTALLA BL#


HEXADBOMAL EQUIVALENTE DECIMAL EQUIVALENTE

FIGURA 4.3.4 &IÁQRÁMA DE FLUJO DEL PROGRAMA 'CONVERSIÓN


DE SISTEMAS NUMÉRICOS DECIMAL <-> ífEKADECJMÁL"
* Listado del programa documentados

10 PRINT "CONVERSIÓN DE SISTEMAS NUMÉRICOS DECIMAL <->


HEXADECIMAL"
20 PRINT n PRINT
REM muestra opciones existentes y forma de escojerlas
30 PRINT "CONVERSIÓN DEC- A HEX- -> APLASTE (1) LUEGO
(ENTER)"
40 PRINT "CONVERSIÓN HEX„ A DEC. -> APLASTE (2) LUEGO
(ENTER)"
50 PRINT "SALIR DEL PROGRAMA -> APLASTE (0) LUEGO
(ENTER)"
60 PRINT s PRINT
REM asigna a la variable (A) la opción escojida
70 INPUT "ESCOJA UNA DE LAS TRES OPCIONESs "„A
REM ramificación del control condicionada por opción escojida
80 ON A GOTO 270,90 ¡,180
90 PRINT 2 PRINT
100 PRINT "EL NUMERO DECIMAL A CONVERTIR DEBE SER ENTERO,
DE NO SERLO,"
110 PRINT "SOLO SE TOMARA SU PARTE ENTERA, EJ. 10-9 DEC- ES
0AH HEX."
120 PRINT
REM ingresa un numero decimal y lo asigna a la variable (X)
130 INPUT "INGRESE UN NUMERO DECIMAL DE 0 A 655355 ",X
140 PRINT
150 PRINT "SU EQUIVALENTE HEXADECIMAL ES¡
REM muestra en pantalla el numero ingresado en formato hex-
160 PH0- X
REM regresa al inicia del programa a mostrar opciones
170 GOTO 20
180 PRINT s PRINT
190 PRINT "EL NUMERO HEXADECIMAL A CONVERTIR DEBE EMPEZAR
CON UN DÍGITO,"
200 PRINT "Y TERMINAR CON LA LETRA (H), EJS. VALIDOS* 99H,
9AH, 0AAH "
210 PRINT
REM ingresa un numero hex. Y lo asigna a la variable (Y)
220 INPUT "INGRESE UN NUMERO HEXADECIMAL DE 0 A 0FFFFHs ",Y
230 PRINT
240 PRINT "SU EQUIVALENTE DECIMAL ES 2 "„
REM muestra en pantalla el numero ingresado en formato decimal
250 PRINT Y
REM regresa al inicio del programa a mostrar opciones
260 GOTO 20
270 END
84

Visualisación en la pantalla al ejecutar el programa

>RUN

CONVERSIÓN DE SISTEMAS NUMÉRICOS DECIMAL <-> HEXADECIMAL

CONVERSIÓN DEC- A HEX, -> APLASTE (1) LUEGO (ENTER)


CONVERSIÓN HEX. A DEC -> APLASTE (2) LUEBO (ENTER)
SALIR DEL PROGRAMA -> APLASTE (0) LUEGO (ENTER)

ESCOJA UNA DE LAS TRES OPCIONES;: 1

EL NUMERO DECIMAL A CONVERTIR DEBE SER ENTERO, DE NO SERLO,


SOLO SE TOMARA SU PARTE ENTERA, EJ. 10,,9 DEC / ES 0AH HEX„

INGRESE UN NUMERO DECIMAL DE 0 A 65535a 65000

SU EQUIVALENTE HEXADECIMAL ESs FDE8H

CONVERSIÓN DECB A HEX. APLASTE (1) LUEGO (ENTER)


CONVERSIÓN HEX. A DEC. APLASTE (2) LUEGO (ENTER)
SALIR DEL PROGRAMA APLASTE (0) LUEGO (ENTER)

ESCOJA UNA DE LAS TRES OPCIONES? 2

EL NUMERO HEXADECIMAL A CONVERTIR DEBE EMPEZAR CON UN DÍGITO,


Y TERMINAR CON LA LETRA (H), EJS, VALIDOSs 99H9 9AH9 0AAH

INGRESE UN NUMERO HEXADECIMAL. DE 0 A 0FFFFHs 0ABCDH

SU EQUIVALENTE DECIMAL ESs 43981

CONVERSIÓN DEC* A HEX, -> APLASTE (1) LUEGO (ENTER)


CONVERSIÓN HEX. A DEC, -> APLASTE (2) LUEGO (ENTER)
SALIR DEL PROGRAMA •> APLASTE (0) LUEGO (ENTER)

ESCOJA UNA DE LAS TRES OPCIONES: 0


EJEMPLO 5: Evaluación de la ....velocidad de ejecución del

BASIC-52

Se han utilizando sentencias,, comandos y operadores

disponibles en otros intérpretes BASIC35 como el GW BASIC en

el cual se escribió y corrió el mismo programa para poder

comparar sus velocidades? concluyéndose que el BASIC-52 es

aproximadamente 30 veces más lento que el GW-BASIC lo cual se

debe a que el BASIC-52 corre en el micro 8052 de 8 bits,, con un

oscilador de cristal de 12 MHz? mientras que el GW se corrió

en una computadora PC AT con procesador 80286 de 16 bits., Í2

MHz.

La figura 4-3-5 muestra el diagrama de flujo del programa

que determina la velocidad de ejecución de instrucciones del

intérprete BASIC-52.

* LISTADOS

REM activa y encera el Reloj en Tiempo Real (RTR)


10 CLOCK 1 s TIME=0
20 PRINT a PRINT
REM ingresa número de veces a repetir el cálculo de X
30 INPUT "INGRESE UN # ENTERO >0 (4K=0 PARA SALIR)a",N
40 PRINT
50 IF IM<=0 THEN 160 s REM sale del programa
60 T1=TIME s REM salva valor inicial del R.T.R.
70 X=i
80 FOR !<=! TO M 2 REM lazo de repetición
90 X=EXP(LOG(TANCATN(SQR(X#X))))) : REM expresión evaluada
100 NEXT
110 T2=TIME s REM salva valor final del R.T.R.
REM imprime tiempo de ejecución y resultado de evaluación
120 PRINT "TIEMPO DE EJECUCIÓN -",T2-T19
130 PRINT TAB (35) f "VALOR FINAL X =" :1 X
140 GOTO 20 s REM pide nuevo valor de N
REM desactiva y en cera e1 RTR
150 CLOCK 0 s TIME=0
16(3 END : REM finaliza programa
86

# Resultado de la ejecución del programas

>RUN
INGRESE UN # ENTERO >0 (#<=0 PARA SALIR):!

TIEMPO DE EJECUCIÓN - -335 VALOR FINAL X = «99999949

INGRESE UN # ENTERO >0 (#<=(3 PARA SALIR) a 1(3

TIEMPO DE EJECUCIÓN = 2.72 VALOR FINAL X = -99999936

INGRESE UN # ENTERO >0 (tt<=0 PARA SALIR)SÍ00

TIEMPO DE EJECUCIÓN - 26.425 VALOR FINAL X - .99999936

INGRESE UN tt ENTERO >0 (#<=0 PARA SALIR)20

3NGRRSAR NUMERO I>E VECES A


SHALJZAR LAS OFERAOONES CN)

SALVAR VALOR DEC RTR (T3)

INIOALEAR X - I

N-
(H) VECES

SALVAR VALOR DELRTK. CT2)

. 1
IMPRIMIR: T3-T1, X

FRIURA 4J^í VECjOODADDEBJBCljaOK


87

EJEMPLO 6: Calculo de Vrms Y V^c ^e una señal

La figura 4.3.6 muestra, el diagrama de flujo de un

programa BASIC-52 que toma muestras de una señal digital

ingresada a la tarjeta a través del pórtico A del interfaz

periférica programable PPI 8255A trabajando en el modo 0,, y

calcula el valor eficaz (Vrms) y el valor medio (Vdc) de dicha

señal«

Las hojas de datos del 8255"' se encuentran en el ANEXO 12,

La señal análoga proveniente de un generador de ondas? es

discratizada mediante un conversar análoga/digital (A/D)U Para

este propósito se utilizó el equipa MICRQLAB» del laboratorio

de Control con Microprocesadores de la Facultad de Ingeniería

Eléctrica de la Escuela Politécnica Nacional. El equipo en

mención incluye un conversar A/D que es gobernado par un

microcontrolador 8751. Para la comprobación del programa

desarrollado en BASIC~-52., no interesa conocer el programa en

Assembler utilizado por el 8751 para realizar la conversión,,

lo único que importa es que se obtienen datos en forma

paralela,, actualizados aproximadamente cada 100 jas (velocidad

de conversión del A/D) B

Debido a que la adquisición de datos en BASIC es muy


lenta (se toma una muestra en alrededor de 5 rns) ., y tomando en

cuenta que para hacer un cálculo algo preciso del Vrms y Vdc

de una señal digital 3 se necesita de por la menos unas 100

muestras„ Se concluye que este programa sólo servirá para

señales de frecuencias menores a 2 Hz (periodos mayores a 12.5


seg) -
88

# Listado documentado del programas

10 PRIÍMT "PROGRAMA PARA CALCULAR EL VALOR EFICAZ (Vrms) Y EL


VALOR MEDIO (Vdc)1'
20 PRINT "DE SERALES DIGITALES INGRESADAS A LA TARJETA POR EL
PPI S255A" s PRINT
REM ingresa en consola la frecuencia de la señal de entrada
30 INPUT "FRECUENCIA DE ENTRADA EN HERT2 (MENOR A 2 Hz) s " 9 F
REM cálculo del número de muestras (N) a tomar
40 N=INT(210/F)
REM lazo que toma N muestras del 8255 y las almacena en RAM
50 FOR I-0A01H TO 0A00H+N s X8Y(I)=XBY(6144) s NEXT
REM inicialisa valores de sumatorias
60 S~0: S2=0
REM laso que calcula sumatorias de valores y sus cuadrados
70 FOR I=0A00H TO 0A00H+N
80 S=S+XBY(I)-127.5 s S2=S2+( XBYC I )»127. 5) *#2
90 NEXT
REM cálculo de valores medio (Vdc) y eficaz (Vrms)
100 DD=(S/N)/51 s RMS=SQRCS2/N)/51
REM impresión de resultados
110 PRINT "VOLTAJE MEDIO ( Vele ) " „ SPC (10 ) n "VOLTAJE EFICAZ (Vdc)"
120 PRINT USING (##.##) , TAB(8) 3 DC f TAB(36) „ RMS

ir
INIOO

INORAD DEL VALOR DB FRECUENCIA DE


SBRAL DB ENTltADA DBSDE CONSOA

j CALCULO DHL JTOMERÚ DB MUESTRAS A TOMARA |

LA230 QUE TOMAN MUESTRAS DEL 8255A


Y LOS ALMACENA EN RAM

LAZO QUE CALCULA SUMATORIA DE VALORES


SUS CUADRADOS

I CALCULO DE VALORES MEDIO (V&Q Y BHCAZ

|
i
IMPRESIÓN DB RESULTADOS

PBOURA «.6 DIAGRAMA DB FLUJO DEL PROGRAMA "CALCULO DB


LOS VALORES EFICAZ (Vnos) Y MEDIO (V<fc) DB SEÑALES DIGITALES
DB VDLTAXB INGRESADAS A LA TARJETA. POR. BL FPI 8255A
89

Para salvar la limitación del programa anterior., en

cuanto a velocidad 9 se hizo una rutina de adquisición de datos

en lenguaje Assembler MCS-51*,, que tarda aproximadamente 30

^is en tornar un dato del 82S5A y grabarla en RAM externa- En

este caso la limitación proviene de la velocidad de conversión

del A/D (100 í-is)., por lo que es necesaria incluir un retardo

para no tomar varias veces el mismo dato"5".

El programa fue probada usando el simulador AVSIM51e de

la familia de microcontraladores MCS-51.

Por tratarse de un programa de ejemplo., solamente se

toman 255 muestras, por lo que la frecuencia de entrada puede

estar en el rango de 40 a 100 Hz si se quiere una precisión

aceptable en el cálculo de? los valares media (Vdc) y eficaz

(Vrms) -aproximadamente 3 cifras significativas™.

El programa principal del micro está en BASIC-52^ desde

él se llama a la rutina Assembler can la sentencia CALL,, y

luego de grabadas las datos requeridos en RAM se realizan los

cálculos de Vrms y Vdc ? al igual que en el programa anterior.

De esta forma se logra incrementar el rango de frecuencia

de las señales que se puacie ingresar,, conservando resultados

precisos en el cálculo de sus valares eficaz y medio, hasta a

100 Hz.

Las figuras 4.3.7 y 4.3.8 muestran los diagramas de flujo

de la rutina en Assembler que realiza la adquisición de datos

y los escribe en RAM., y del programa en BASIC-52 que llama la

rutina Assembler,, y evalúa los datos almacenados en RAM para

calcular los valares RMS y DC de la señal de entrada.

A continuación está el listada de la rutina Assembler,


90

que proporciona el programa CYS8051 de Cybernetic luego de

ensamblar el programa original en formato de texto.

The Cybernetic Micro Systems 805.1 Family Assembler


Versión 3-02 Page 1 02-25-9
?PROGRAMA DE ADQUISICIÓN DE DATOS EN ASSEMBLER
¡DATOS A SER MANEJADOS EN BASIC-52-
sDEFINICIÓN DE ETIQUETAS

1800 - DIRPPI EQU 1800H


0A00 = DI RAM EQLJ 0A00H
0000 ORO 0000H

0000 78FF MOV R0,#0FFH


0002 901800 LAZO; MOV DPTR?#DIRPPI
0005 E0 MOVX A?@DPTR
0006 FA MOV R2 3 A
0007 900A00 MOV DPTRS#DIRAM
000A ES MOV A 3 R0
000B 2582 ADD [Link]
000D F5S2 MOV DPL,A
000F EA MOV A 5 R2
0010 F0 MOVX ©DPTRjA
0011 7B2S MOV R3 ., &28H
0013 DBFE DJNZ R3.,*
0015 D8E6 DJNZ R0JLAZO
0017 78FF MOV R0stt0FFH
0019 D9E2 DJNZ RljiLAZO
001B RET
0000 END

A continuación se lista el programa en BASIC-52

10 PRINT "PROGRAMA PARA CALCULAR VALORES MEDIO Y EFICAZ DE


SEDALES"
20 PRINT "DIGITALES, USANDO UNA RUTINA EN ASSEMBLER PARA LA
TOMA DE DATOS"
REM ingreso de la frecuancia de entrada
30 INPUT "FRECUENCIA DE ENTRADA (ENTRE 40 Y 100 HERTZ) "„F
REM cálculo del número de muestras por periodo
40 N=INT(10000/F)
REM llama rutina Assembler de adquisición
50 CALL 9F00H
REM inicial isa valores de sumatorías
60 S=0: S2=0
REM laso que calcula sumatorias de valores y sus cuadradas
70 FOR I=0A00H TO 0A00H+N
80 S=S+XBY(I)-127..5 5 S2=S2+ ( XBY ( I ) -127 „ 5 ) **2
90 NEXT
REM cálculo de valores medio (Vdc) y eficaz (Vrms)
100 DC=(S/N)/51 a RMS=SQR(S2/N)/51
REM impresión de resultados
110 PRINT "VOLTAJE MEDIO < Vcíc ) " , SPC (10 ) „ "VOLTAJE EFICAZ (Vdc)"
120 PRINT USIMG (##.##) 9 TAB(S) , DC , TABC36) - RMS
91

ASIQNAOON DB VALORES A BTIQOBTAS

SALVAR VALOR DH SBÑAL DB


ENTRADA AL PUERTO A DHL ÍK

SUMAR A DIRECCIÓN DB RAM VALOR DHL


CONTADOR DB NUMHftO DEMUESTRAS

ESCRIBIR; HK LOCALIDAD RAM (DIRECCIÓN


CAICTUPA) DATO PE SBfrALDB ENTRADA.

LAZO DE ESPERA HASTA QUE EL CONVERSO*.


A/D TOME NUEVO DATO

DBCRBWENTAR CQNT, DB NUMERO DE MUESTRAS

NO
TOMARON TODAS LAS
MUESTRAS

EIGURA4.3.7. DIAGRAMA DE [Link] DÉLA SUBHTEINA EN LENGUAJE ASSEMBLER QUE


REALIZA. LA ADQUISICICN DE DATOS Y LOS BSOUBEBNRAM

I1AMA& A SUHRUTINA DE TOMA DB DATOS EN" AflSBMBLBR

INGRESAR PRECUENCÍA DB ENTRADA DESPE CONSOLA

CALCULO UEL NUMERO DB MUESTRAS

LAZO QUE CALCULA SUMATORZA DE


VALORES Y SE SUS CUADRADOS

CALCULO DB VALORES KWCAZ Y MBDIO

1MPRBSBON DE RESULTADOS

PICARA 4.3.«. DIAGRAMA DE PLUJO HPÍ BASIC-52 *CAUCULO DB LOS VALORES ERCAZ (Vra»)
Y MEDIO (VA») DB OTRALES DB VOLTAJE DKHTAUBS INnRBSADAS A LA TARJBTAK3RBL Vfl 8255 A'
USANDO UNA RUTINA ASSEMBU3R. PARA LA TOMA DE MUESTRAS
92

4.4 PROGRAMACIÓN DE MEMORIAS

El BASIC-52 genera todas las señales de tiempo necesarias

para programar memorias EPRGM- El proceso de programación

difiere de acuerdo al tipo de información a grabarse., asís

1°) Grabar en EPROM programas BASIC-52

El BASIC-52 puede grabar hasta 255 programas BASIC en

EPROM., siempre y cuando su capacidad lo permita; el usuario

puede llamar y ejecutar cualquiera de ellos desde la misma

EPROM, o transferir cualquiera de esos programas a RAM para

editarlos y/o ejecutarlos desde allí- Cada programa se va


almacenando en forma secuencial., tomando un número del i al

255 de acuerdo al orden en que se grabó. A esta forma de

almacenamiento se la conoce corno "ARCHIVO EPROM",, cuya

generación y uso se logra con los siguientes comandos::

RAM Escoge el programa en curso (aquel que se 1 lama

cuando se ejecuta un comando LIST o RUN) de RAM.

Este programa empieza en la localidad 512HS puede

ser distinto a cualquiera de los almacenados en

EPROM y es el único que puede editarse.

RGM[#3 Escoje el programa en curso número C#3 de EPROM y

allí se lo puede listar (-comando LIST) o ejecutar

(comando RUN) B pero no se lo puede editars pues se

está en el modo denominado "PROM". Si no se

especifica un número se asume # = 1 y en ese caso el

programa empieza en la localidad S010H-

XFER Se útil iaa cuando se está en el modo PROM para transferir

el programa [tt] a RAM y poderlo editarj si en ese momento


93

habia algún otro programa en RAM se barrará.

PROG Graba el programa en curso seleccionada en RAM o EPRQM en

la EPRQM$ en este momento el BASIC-52 le asigna un número

al programa y lo muestra en pantalla.

Existen otros comandos que graban información adicional

en las localidades 80G3C3H a S00FH., como la velocidad de

transmisión 5 con el comando PROG13 y/o presentan opciones

especiales como la ejecución automática del primer programa

almacenado en EPRQM luego de un reset o apagado,, con el

comando PROG2.? una explicación breve de estos y otros comandos

relacionados con la programación de memorias EPROM se

encuentra en el ANEXO 4«2.

Esta forma de programación,, aunque muy sencil la., tiene

varias desventajas,, como por ejemplo., está limitada a ser

usada únicamente en el "modo de comandas"3 na hay control

sobre la dirección de la EPROM donde grabar la información,

pues el BASIC-52 coloca siempre el primer programa grabado

desde la localidad StaiSH en adelante., y cualquier otro

programa a continuación del último que se haya grabado.

2°) Grabar en EPROM cualquier información que se

disponga en RAM externa.


Para lograr ésto,, debe utilizarse la sentencia PGM

disponible en la versión .1.1. del BASIC-52. Esta forma de

programación es especialmente útil para salvar datos., y

requiere que el usuario coloque en determinadas localidades de

RAM interna., normalmente reservadas para el usuario,, la

información que se muestra en la tabla 4» 1.,


94

dóneles
MSBg byte más significativo

LSB: byte menos significativo

LOCALIDADES

LSB CONTENIDO

1BH 19H Dirección inicial de la información

27D 25D "fuente" a ser programada en la EPROM,

1AH 1SH (Dirección ~ i) de la localidad inicial

26D 24D de EPRO!V! donde se va a programar

1FH Número de bytes que el usuario quiere

31D programar„

tabla 4,1 localidades de memoria de datos interna reservadas para el

usuario que deben ser seteadas para utilizar la sentencia PG/f

También debe especificarse el ancho del pulso de

programación (W) de acuerdo al tipo de EPROM que"se dispongas

Normal de 50 ms. e INTELigente de 1 ms-3 colocando en las

localidades 40H (Ó4D) el MSB y 41H (65D) el LSB del "valor de

Recarga" (R) que se calcula de la siguiente forma:


R = 65536 - W * XTAL/12

además el usuaria debe setear o borrar el BIT 26.31-1 (38-3D)

para seleccionar el algoritmo de programación INTELigente o el


NORMAL, respectivamente.

La ventaja de esta forma de programación es que permite


al usuario grabar información en EPROM mientras se está
95

ej cuitando o corriendo un programa Basic., pues la sentencia PBM

puede utilizarse tanta en el modo de carrera como en el de

comandos.

Cuando se ejecuta la sentencia PBM en el modo de carrera.,

no se genera un error en caso de que la programación de la

EPROM falle,! debido al mal estado de una de sus localidades,,

sino que el control se transfiere al usuaria coma si la

programación hubiera sido exitosa» Por esta razón, el mismo

usuario debe hacer la comprobación correspondiente:

si las localidades 1EH y 1FH son cero., entonces la

programación es cor recta., caso contraria,, en las localidades

ÍAH y 18H estará almacenada la dirección de la localidad de

EPROM que falló durante el proceso de programación.

Al ejecutar el comando RUN para correr un programa BASIC-

52y se enceran todas las variables., se barran todas las

interrupciones evocadas por BASIC3 y además se borra toda la

información de • la RAM., que? na sea el programa,, entre la

dirección 512 y MTOP. Por este motiva,, para que la información

grabada en RAM no se borre al correr el programa "programador

de memorias EPROM",, debe reasignarse el Registra de Función

Especial MTOP? a un valor menor al asignado por el intérprete

BASIC-~523 de tal manera que en el espacia de memoria entre el


nuevo valar MTOP y la última localidad física real de RAM 3

dentro de la tarjeta., se puedan colocar los datos a grabar sin

peíigro de que se barren.

Para cambiar el valor de MTOP sólo se debe tipear en

consolas >MTGP--ft

donde # es el nuevo valor»


96

No serla necesario seguir el proceso indicado si se

tuviera espacios de memoria RAM separados., por ejemplo de 0 a

1FFFH,, 8 K reconocidos por el intérprete que podrían ser

usados para editar programas BASIC-52., y de 4000H a 3FFFH S K

de memoria de datos no reconocida por el intérprete (por no

estar continua a los primeros 8I<), por lo que no podría usarse

para programar en BASIC., sino sólo para almacenar datos y/o

resultados de programas o datos a programar en EPROM, que es

lo que nos interesa.

Tampoco es necesaria cambiar el valor de MTOP si se anexa

el listada del "programador de memorias EPROM" al final del

programa usado para generar y escribir en RAM los valores que

se desean grabar en EPROM., pues en ese caso los datos no se

borran -

EJEMPLO 7: PRQGRAMADOR DE MEMORIAS EPROM

En la figura 4*4.. 1 se presenta el diagrama de flujo de un

programa que hace uso de todas las ventajas que tiene la

sentencia PGM para grabar información de memoria RAM en EPROM.

Este programa está adaptado a las capacidades de la tarjeta

desarrollada,, respecto al tipo de memorias a grabar,, pues se


limita a la programación de cualquier memoria EPROM existente
en el mercado,, NORMAL (de 50 rns „ ) o INTELigente (de 1 ms. ) 5
excluyendo las memorias EEPROM,, que también se podrían
programar si se dispusiera del hardware necesaria»
97

PROGRAMA PRINCIPAL

'INICIO,

LLAMAR SUHRUTTNA (1) QUE INGRESA


U>S DATOS PARA PROGRAMACIÓN DBSDB
CONSOLA Y ALMACENA EN LQCAJJDADES
DB RAM INTERNA RBSPECIIVAS

LAZO DE ESFBRA HASTA QUE SE


APLASTE EN CONSOLA LA TECLA ENTBR

EJECUTAR PROGRAMACIÓN

LLAMAR SUBRÜTTNA (2) QOB COMPRUEBA


SI EL PROCESO DE PROGRAMACIÓN FUE
EXITOSO. SI NO, DETERMINA. LOC. DE ROM
QUE FALLO, Y LA MUESTRA EN PANTALLA

LOCALIDADES
RAM INTERNA lEH(3ff» - O
Y iFHffl - O

MOSTRAR EN PANTALLA: MOSXRAR EN CONSOLA


'ERROR DB PROGRÁMAaON* 'PROGRAMACIÓN COMPLETA"

DETERMINAR LOC. EPROM QUE FAUÜO AL


PROGRAMA!^ Y IjOC. RAM CORRESPONDIENTE
Y MOSTRARLAS EN PANTALJLA JUNTO CON
DATOS EXISTENTES EN DICHAS LOCALIDADES

HG. 4A1. DIAGRAMA DB FLUJO PARA * PROORAMADOR DE MEMORIAS BPROM a


98

SOBRI/TOTA

INICIO

T
INGRESAR DESDE CONSOLA EEROM A PROGRAMAR

SELECCIONAS. ALGORITMO DE
PROGRAMACIÓN CQHRESPQNDIBNTC

CALCULAR ANCHO DEL PULSO DE PROGRAMAaON


Y GUARDARLO EN LOCALIDAD DE RAM INTERNA
40H(64) -LSB- Y 41H{65) -MSB-

INORESAR DESDE CONSOLA LQCAIIDADINICIAL DE


RAM EXTERNA DONDB EMPIEZAN LOS DATOS A SHR I
GRABADOS, Y ALMACENAR DICHA DIRECCIÓN EN
LOCS. DH RAM INTERNA 19H<25> -LSB-Y 1BH<27) -MSB-

INGRBSÁR DIRECCIÓN HNAL DE


DATOS PUENTE EN RAM EXTERNA

CALCULAR míMHRO DE BfYIES A GRABAR


Y ALMACENARES'LOCALIDAD DE RAM
INTERNA 1EH(30) -LSB- Y 1FH(33) -MSB-

TNCffiESAR DESDE CONSOLA DIRECCIÓN DE


EPROM DONDE EMPEZAR A GRABAR Y
AIMACENAIt (ESE DATO -1) EN LOCALIDADES DE
RAMIN1ERNA 1&H{24) -LSB- Y !AHí2fi) -MSB-

EIG. 4^1" DIAGRAMA. DE PUOJO'PARA TROGRAMADOR. DE MEMORIAS EEROM'


99

LISTADOS

10 PRINT : PRINT.,TAB(25) , "PR06RAMADOR DE MEMORIAS EPROM"s


PRINT
REM llama a subrutina que ingresa datos para programación
20 GOSUB 80
REM lazo de espera leyendo consala
30 P.s P,"APLASTE CENTER] CUANDO ESTE LISTO PARA PROGRAMAR"
40 X=GET IF XO0DH TREN GOTO 230
REM si se ha presionado [ENTER] empieza la programación
50 PGM
REM 1 lama a subrutina de comprobación de la programación
60 GOSUB 260
70 END s REM fin programa pr incipal
REM Subrutina de ingreso cíe datos- Escoje tipo de memoria
80 PRINT "INTELigente 1 ms.d)., NORMAL 50 ms..(2)"
90 INPUT "ELIJA EL TIPO DE MEMORIA : T PRINTs PRINT
REM selecciona algoritmo cíe programación
100 IF T=i THEN DBY C 20)=DBY(26).OR.8
110 W«.05 s DBY(26)=DBY(26).AMD„0F7H
REM ca1 cu1a valor de recarga (R) y lo escribe en RAM
120 R=65536»(W#XTAL/12)
130 DBY(40H)~INTC R/256) s DBY(41H 5 =R„AND,0FFH
140 INPUT "DIRECCIÓN INICIAL DE DATOS EN RAMs'M 2 PRINT
150 IF [Link].I>0FFFH THEN GOTO 140
REM graba en RAM información de dir. inicial de datos
160 DBY(27)«INT(1/256) s DBY(25)«[Link] u 0FFH
170 INPUT "DIRECCIÓN FINAL DE DATOS EN RAMs",F s PRINT
180 IF F<[Link].F>0FFFH THEN GOTO 170
190 N=F-lH-l s REM calcula número de bytes a programar
REM graba en RAM información de # de bytes
200 DBY(31)=1NT(N/256) s DBY(30)=[Link] . 0FFH
210 INPUT "DIRECCIÓN DE EPROM DONDE EMPEZAR A GRABARs" 5 P
220 IF P<[Link](.P>09FFFH THEN GOTO 210
230 Pl=p-l s REM (dir- EPROM donde empezar a programar - 1)
REM graba en RAM información de loe- EPROM inicia grabado
240 DBY(26) = 1NT(Pl7256) s DBY(24)=[Link] -0FFH
250 RETURN
REM subrutina de verificación de proqramación
260 IF (DBY(30).[Link](31) ) =0 THEN P „ "PROGRAMACIÓN COMPLETA11!
END
270 [Link]."ERROR DURANTE LA PROGRAMACIÓN"2 P.
REM cálculo de loe. EPROM que falló programación y loe. RAM
280 DE=DBY(25)+256*DBY(27)s DE=DE~1s PE=DBY(24)+DBY(26)*256
REM impresión de [Link] que falló, su dato., e igual en RAM
290 PH0."LA RAM TIENEs M ,XBY(DE) „ s PHÍ."EN SU LOC B s" ¡1 DE
300 P."MIENTRAS QUE"
310 PH0 B "EN EPROM HAYs" D CBY(FE) 9 s PH1."EN SU LOC.s",PE
320 RETURN

Como ejemplo^ se programó en EPROM la rutina Assembler de


100
adquisición de datos usada para el programa de cálculo de los

valores eficaz y medio de una señal (EJEMPLO 7)9 siguiendo el

siguiente proceso resumidos

- cambio del valor de MTOP <>MTOP=2000)

— cargar y ejecutar desde el espacia de RAM reservado para uso

del BASIC (512 a 20023)? el programa para escribir en las

localidades de RAM no usadas por el BASIC (2001 a 0FFFH) los

códigos hexadecimales de la rutina Assembler.

- correr desde EPROM2—BASIC o desde RAM (borrando el programa

anterior con el comando NEW) el "programador de memorias

EPROM".

EJEMPLO 8: PROGRAMA PARA LEER INFORMACIÓN DE MEMORIAS

La figura 4.4.2 muestra el diagrama de flujo de un

programa desarrollado para leer la información almacenada en

cualquier localidad de memoria de la tarjeta» El usuario puede

escoger entre memoria de dantos RAM., interna o externa al

micro, o memoria de programa EPROM., también interna o externa-

* LISTADOS

10 PRINT "PROGRAMA PARA LEER INFORMACIÓN DE MEMORIAS" s


PRINT
REM escoje tipo de memoria a leer
20 INPUT "TIPO DE MEMORIAS RAM (1)9 EPROM (OTRO tt) 7 " 3 T
30 IF T=l THEN 180
REM si memoria escogida es EPROM
40 PRINT s PRINT "EN LA TARJETA EXISTE EPROM INTERNA DE
0 a 1FFFH Y"
50 PRINT "EPROM EXTERNA DE 2000H a 3FFFH Y DE 8000H a
9FFFH" 2 PRINT
REM ingresa de consola [Link] EPROM a leer
60 INPUT "DIRECCIÓN INICIAL ENTRE ESOS LIMITES = " 9 DI
70 IF DI>=[Link].DK4000H THEN 90
80 IF DI>-[Link].DK0A000H THEN 390 ELSE 40
101
REM si memoria escogida es EPROM de 0 a 3FFFH
913 L1=16#INT(DI/16)
-REM lazo principal muestra una pantalla de datos por vez
100 FOR 1=0 TO 15
REM calcula dir- inicial de conjunto de 16 bytes e imprime
110 L2=L1+I#16 : PH1. L2P
REM lazo de lectura e impresión de 16 bytes
120 DO s L3=L2+J : PH0. CBY(L3), s J=J+1 s WHILE J<16
130 J=0 a PRINT
FíEM termina lectura e impresión cuando se acaba memoria
140 IF L3>=3FFFH THEN EMD
145 NEXT I
150 INPUT "ESCOJAS CONTINUAR ( i ) ? SALIR (OTRO #5 ? "s S
160 IF 3=1 THEN L1=L3+1 s BOTO 100
170 END
REM Si memoria a leer es RAM se escoje su tipo
180 PRINT : INPUT "RAMs INTERNA (1), EXTERNA (OTRO #) ? ",
190 IF D=l THEN 330
REM si memoria escogida e?s RAM EXTERNA indica cuanta hay
200 PRINT a PH1. "EXISTE RAM EXTERNA DE 0 a "s 0FFFH
210 INPUT "DIRECCIÓN INICIAL DENTRO DE ESE RANBO s " ,DI
220 IF DK0.0R-DI>0FFFH THEN GOTO 200
230 L1=16#INT(DI/16)
REM lazo principal muestra una pantallas de datos cada vez
240 FOR 1=0 TO 15
REM calcula dir. inicial de conjunto de 16 bytes e imprime
250 L2=L1+I*16 s PH1, L2,
REM lazo de lectura e impresión de 16 bytes
260 DO 3 L3=L2+J « PH0 „ XBY(L3)? u J=J-t-l s WHILE J<16
270 J=0 s PRINT
REM termina lectura e impresión cuando se acaba memoria
280 IF L3>-0FFFH THEN END
290 NEXT
300 INPUT. "ESCOJAS CONTINUAR ( 1 ) „ SALIR (OTRO #) ? ",S
310 IF S=l THEN L1=L3+1 s BOTO 240
320 END
REM si memoria escogida es RAM INTERNA
REM muestra todos los datos en una sola pantalla
330 FOR 1=0 TO 15
340 L2=I#16 s PH1- L23
350 DO s PH0. DBY(L2-t-J) „ s J=J + i s WHILE J<16
360 J=0 = PRINT
370 NEXT
380 END
REM si memoria elegida es EPROM EXTERNA de 8000H a 9FFFH
390 L1=16*INT(DI/16)
400 FOR I"0 TO 15
410 L2"L1+I*16 a PH1- L2:,
420 DO s L3=L2H-J s PH0. CBY(L3)? s J=J + 1 s WHILE J<16
430 J=0 s PRINT
REM termina lectura e impresión cuando se acaba memoria
440 IF L3>=9FFFH THEN END
450 NEXT I
460 INPUT "ESCOJAS CONTINUAR ( i ) ;t SALIR (OTRO tt) 7 ",3
470 IF S=l THEN L1=L3+1 s GOTO 100
480 END
102

PROGRAMA PRINCIPAL
-•--v

INICIO

INGRESAR DBSDB CONSOLA UFO DB


MEMORIA A. TKRH- RAM 0>I> O EPRQM (J

INGRESAR DESDE CONSOLA TIFO DE UAMAR SOBRUTINÁ.DB LECTURA DB


RAM: INTERNA. 0>"0 O EXTERNA (Do-l "BEROM"

NO

LLAMA» SUBRUTINA DE LECTURA. LLAMAR SUBKUTÍNA DB LECTURA


DB3UM INTERNA DE RAM EXTERNA.

*RAM EXTERNA*

MOSTRAR EN MNTALIA CANTIDAD DB


RAM EXTERNA EXISTENTE E INORES AR
DIRECCIÓN DE LOCALIDAD INICIAL A IKOT

CALCULAR DIRBCCEON 3ÍEAL DONDE


EMEEZAR A MOSTRAR DATOS (Ll)

REPETIR 16 VECES

CALCULAR DÍIRECION DE RAM INTERNA


DE PRIMERA LOCALIDAD A LEER
EN ESTA PASADA E IMPRIMIRLA (L2)

MOSTRAR 1$ DATOS CONSECÜTiyOíl


D£ RAM EXTERNA DESDH (L2.)

SI

ACTOAIJZARDDUBCCaDN DONDB
EMPEZABA MOSTRAR DAROS (Ll)

FCRGURA 4^2. DJAGRAMA DH EUJJO DHL "KtOORAMATARA tEER3NPORMAaON DB MEMORIAS*


103

MOSTRAR EN PANTALLA CANTIDAD DE KPROM


EXISTENTE Etí TARJETA E ÜNÍOftESAR
DIRECCIÓN DE LOCALIDAD INICIAL A LEER

CALCULAR DÜU3CCBON REAL DONDE


EMPEZAR A MOSTRAR DATOS (Ll)

RHPKl'lft 16 VECES

CALCULAR DDt DE EPROM DE HUMERA


LOCALIDAD A UBER E IMPRIMIRLA (^2)

LEE DATOS DE EPROM DESDE LOCALIDAD


L2 HASTA L3-I^4OFH Y1JOS MUESTRA

ACTUALIZAS. DIRECCIÓN DONDE


EMPEZAR A MOSTRAR DATOS (Ll)

.STTRRT7TTNA

/ REPETIR 16 VECES V

II
CALCULAR Y MOSTRAR DIRECCIÓN' DE Ira
LOCALIDAD DE AAM INTERNA A LEER (L2)

MOSTRAR 1<£ DATOS CONSBCUTIVOS


DBRAM INTERNA DESDE L2

HOURA 4.4^. DIAGRAMA DE HATO DEL *PKOGRAMA PARA LEER INFORMACIÓN DE MEMORIAS"
104

Este programa resulta de gran utilidad para comprender y

comprobar las siguientes etapas del funcionamiento global del

sistemas

1.- Funcionamiento del BASIO52S en cuanto se refiere al uso

que hace de ciertas localidades de memoria de datos tanto

interna como externa,, y memoria de programa externa-

2«~ Forma en que al BASIC-52 almacena un programa en memoria.

3.- Generación y manejo del "archivo EPROM" con los

diferentes comandas disponibles para el efecto.

4.- Operación del "Programador de memorias EPROM"

Aplicación Práctica;

Se puede leer todo el contenida de una memoria EPROM 2764

de SK colocándola en el zócalo "EPROMl-ASSEMBLER"., de una sola

vez9 y guardar la información en un archiva de texto,,

utilizando la opción de emuladores de terminal de grabar todo

lo que se haga durante una sesión de trabajo. Para ésto se

debe modificar un poco el programa desarrollado., eliminando


las lineas 150 y 470,, y modificando las lineas 160 (GOTO 100)
y 480 (GOTO 410)„

Si no se desea laer toda la EPROM., sino sólo un bloque


grande de ella., debe pedirse que se ingrese desde consola la
dirección final ., y modificar de acuerdo a ello el programa-

Para que en el archivo de texto aparezca solamente la


información leida de EPROM (colocada en el zócalo EPROM2-ASS)5
debe usarse la opción de RECEPCIÓN de archivas que dispone un
terminal a emulador; también se debe hacer autoejecutable el
programa de lectura de mamaria (colocándolo en el zócalo de
programación EPROM2-BASIC);1 madif icándolo para que na pida
105

ningún dato de la consola., sino que lea toda la memoria

directamente.

Aplicación Práctica 2s

Es pasible traspasar el contenido de una memoria EPROM

2764 a otra,, siguiendo el siguinte proceso resumido:

- colocar la EPROM 2764 que contiene la información "fuente"

en el sócalo EPROM1-ASS y EPROM 2764 donde queremos copiar el

contenido de la anterior en el zócalo de programación.,

pasar la información de la EPROM "fuente" a RAM, con un

programa pequeño y sencillo colocado en RAM,,

- poner el listado del "Programador de Memorias EPROM" en RAM.,


y ejecutarlo.

En el caso de la tarjeta diseñada, el traspaso de toda la

información (8K) se puede hacer por bloques (por ej. de 2K),

asignando un valor conveniente a MTOP tal que alcancen los

programas basic a correr en ella., pero a la vez que deje el

mayor espacia disponible en RAM para copiar los datos de EPROM

(un valor conveniente es MTOP = 2£2300) ,

NQTA.s Con el uso combinado de los dos programas

presentados en el EJEMPLO 7 Programador Universal de Memorias

EPROM y en el EJEMPLO 8 Programa para leer información de


memorias? y aprovechando la característica de los terminales o

emuladores d© almacenar, en archivos de texto DOS, la

información proveniente de la comunicación ' con el

microcontrolador., la tarjeta se convierte en un verdadero

programador de memorias, totalmente independiente-


106

4.5 6RAFICACIQN DE DATOS PROVENIENTES DEL B052AH

EJEMPLO 9í Programa Emulador de Termina1-Graficador

En este subcapítula se presenta un programa escrito en

OuickBasic 4*5 que salva la limitación que tiene cualquier

terminal o emulador de terminal en cuanto se refiere a

graficación de datos numéricos. El programa está compuesto por

dos bloques principaless (a) Emulador de Terminal simple y (b)

Sraficador de datos provenientes del S052AH? cuyas funciones

son g

a) Emulador de Terminal simple:

Permite la comunicación con el micro, para programarla o

ejecutar programas ya desarrollados? su capacidad de edición

es limitada pues el filtro de caracteres que contiene es muy

sencillo (recodifica o cambia los caracteres "backspace" a

"tecla de cursor izquierda" y remueve o elimina caracteres de

"line feed" alimentación de línea)- La capacidad de memoria

que ocupa este programa en al computador es pequeña., aproxima-

damente 2«2 Kbytes, mucho menor que paquetes de software de

comunicación que incluyen como una opción emuladores de

terminal dedicados como el PROCQMM (220 Kbytes


aproximadamente) o el BITCOM Cal rededor de 430 Kbytes),, y por
la mismo no contiene un sinnúmero de opciones adicionales que

el los presentan ? como por ejemplo la transmisión y recepción


de archivos.

Sin embarga al usar los programas emuladores de terminal


dedicados., siempre se estaba limitado a las características
107

propias de un terminal3 como son exclusivamente recibir y

transmitir caracteres y presentarlos en pantalla? con el

programa desarrollado en QuickBasic 4» 5 se salva esta

limitación pues resulta fácil añadir las características que


se deseen.

Se escogió el lenguaje de programación QuickBASIC 4,5'*

por ser fácil de entender,, utilizar, y por presentar

facilidades para graficacíón y manejo del pórtico serial»

b) Gjraficador de datos provenientes del8Q52AH:

Gráfica los datos numéricos en punto flotante que envíe


el rnicrocantrolador como resultado de la evaluación de

cualquier funciónP sentencia o comando dentro de un programa

en BASIC-52,, sin perder en absoluto la precisión de los

números en punto flotante del micro al transmitirse a través


del pórtico serial al computador.

Esto es muy importante,, sotare todo para fines de evaluación y

comprobación del funcionamiento de los programas desarrollados


en el intérprete BASIC-52 del micro.

El programa ingresa a la subrutina da graficación luego


de que el micro envía el carácter "@" .

La figura 4.5.1 muestra el diagrama de flujo del programa


en QuickBasic 4-5 que realiza las funciones indicadas 3
Emulador de Terminal y Sraficador de datos numéricos-
I
MOSTRAR LINEA DH INFORMACIÓN AL FONDO na LA PANTALLA SQBRB BORMA
DE SALIR DEL PROGRAMA Y SEPARAR ESPACIO SOBRANTE PARA. IMPRESIÓN

ABKIR PÓRTICO DB COMUNICACIÓN SERIAL BIDHtECCÍONAL (ALEATORIO) I


4 BITS 0B DATOS, t HTT DE ARRANQUE, 1 HIT Effi PAftADA. VELOCIDAD YAWABLH

CHEQUEAR TECLADO

TECLAS PRESIONADAS

CERRAR PÓRTICO
DE COMUNICACIONES
ENVIAR CARÁCTER TITEADO AL MZCROCWmtOLADOR

CHBQOBAR 8ft$i (BÜFFER Dfi COMONlCAaON SERIAL)

LEERTOÍXW LOS CARACTHS3BS DEL BÜFFER

IRA SUBHIQGRAMA TELTRO" DE CARACTERES DE CONTROL

Bt A 50BRUTINA tJRAHCACIOir DB DATOS NiaíEiJCOS


ENVIADOS POR EL MICROCONTROLADOR VIA SERIAL

BUSCA CARACTERES REGRESO BSPAOO *BACKSPACB-


Y LOS RBCODIEICA A [Link] CURSORHQUffiRDA

BUSCA CARACTERES AUMENTAClCNDEUNBA


1JNE TBEXy Y LOS RHMUHVB

.1, DIAGRAMA DE FLUJO DEL PROORAMA EN QÜICK BASIC VERSIÓN 4J


"EMULADOR DE TERMINAL - GRAHCADOR"
1&39

srmutmNA

CBRKRAR PÓRTICO DB COMUNICACIONES

ASIta*AR MODO DB PANTALLA. DB GRÁFICOS

DEFINIR TAMAÑO DB fOROON DB PANTALLA


PARA ORAHCOS Y UNA ESCALA APROBADA

ABRIR. PÓRTICO DE CX^MUNICACíQNBS PARA -ENTRADA' DE DATOS


NUMÉRICOS, ARCHIVO SECUHNCIAL, EN EL MODO U ART DB 8 B3TS
Y ALAMISMA VELOCIDAD QUEBL EROÍ31AMA PRINCIPAL

INDHALZZAR CONTADOR DB DESPLAZAMIENTO EN <JQ

CHBQUBAR «052 (BUFPER DB COMUNJKAOONBS)

HAY CARÁCTERBS ESPERANDO

RBCUPBRAR UNHA ASCII DHL BUEPBR


Y BXTJlAHR SU VALOR NUMÉRICO (Y)

i
GRAFICAa PAfi. ORDENADO (X,Y)

IMRRIMIB. PAR ORDENADO NÜMHRICO BT*


rORCTON DE PANTALLA PARA TEXTO

,
1
INCREMENTAR CONTADOR DB DESFLAZAMESOTO X
EN MISMA PROPORCIÓN QUE INCREMENTA EN 8053

FB3VRA 4AL I>IACHLAMA DB EWJTO DEL PRKXHUMA EN QUICE BASK YBSESION 4J


"EMOLADOR DB THRMINAL - GRAHCADOR'
Ü0

# LISTADO del programa en QBasic 4.5 Emulador de Terminal

Graficador de -datos numéricos., para el computador:

DEFINT A-R
DEFDBL S-Z
DECLARE SUB Filtrar (InString*)

20 COLOR 79 i ' Setea el color de pantalla.


CLS

Quit* - CHR$(0) CHR*(16) ' Valor retornado por INKEY*.


' cuando se presiona ALTn-q.

' Muestra linea de información en el fondo de la pantalla y


' activa el cursor
LÓCATE 24, 1, 1
PRINT STRINB*(S0, "_")i
LÓCATE 25„ i
PRINT TABC30); "Presione ALT-t-q para salir";;

VIEW PRINT 1 TO ' Imprime entre las lineas 1 y 23.

' Abre comunicaciones (9600 baudios,, sin bit de paridad,,


' 8-bits de datos-, 1 bit de parada y
' buffer de entrada por falta de 256-~bytes)ü
OPEN "COM2:9600aNíS5lJiCS¡,ds!Irs!1cd11 FOR RANDQM AS #1

DO de comunicaciones principal-

Keylnput* INKEY* Chequea el teclado.

IF Keylnput* Quit* THEN Sale del lazo si el usuario


EXIT DO presiona ALT+q. De lo contra
ELSEIF Keylnput* O "" THEN rio,, si el usuario ha presio
PRINT #15 Keylnput*? nado una tecla., envía el
END IF carácter tipeado al micro.

' Chequea el micro,, si hay caracteres esperando (EQF(l)


' es verdad)? los recibe y los imprime en pantallas
IF NOT EOF(Í) THEN

' LOC(l) da el número de caracteres que están esperando?


Modemlnput* - INPUT*(LOC(1), #1)
Filtrar Modemlnput^ ' Filtra caracteres "line feed"
PRINT Modemlnput*; ' y "backspace"? luego imprime.

' Va a subrutina de qraficacion si el micro envía el


' carácter indicado.
IF Modemlnput* = "@" THEN BOSUB Gráfico
END IF
LOOP

GLOSE Fin de comunicaciones,


END
lil

Gráfico: ' Inicia subrutina de graficación.

GLOSE ' Cierra pórtico de comunicaciones«


SCREEN 3 ' Asigna modo de pantalla de gráficos.

' Dimensiona porción de pan tal la para gráficos


VIEW (Í0? 57)-(7i0, 340)? ¡, JL ' y la encierra entre líneas
CONST PI = 3.141592653589*
WINDOW (0? -1.D-C2 # PI., 1.1) ' Dimensión de ventana para
' graficar onda seno.
Estilo"/. = ?<HFF00 ' Forma de linea segmentada-

' Imprime mensaje fijo en las dos primeras lineas.


LÓCATE 1, 5
PRINT "RUTINA DE GRAFICACIÓN DE DATOS NUMÉRICOS ENVIADOS POR
EL S052AHH3ASIC"
LÓCATE 2, 5
PRINT "0 < X < 2#PI Y - SIN(C#X) DONDE C = # Ciclos"

VIEW PRINT 3 TO 4 .irisas 3 y 4 para imprimir texto,

' Reabre pórtico de comunic. para entrada de datos numéricos.


OREN "COM2S 96005 N .„ 8 , 1 ., es , ds , rs ¡, cd " FOR INPUT AS #1 ' LEN = 256

0 ' Inicializa contador de despla


' zamiento en eje horizontal.

DO ' Laso de graficación


IF NOT EOF(l) THEN
LINE INPUTttij,MCSInput* ' Recupera linea ASCII del
' buffer de comunicaciones
Y =5 VALCMCSInput*) ' y toma el valor
' numérico de dicha linea.
' Gráfica el eje X -
LINE (0-, 0)-C2 * PI , 0) 9 „ 3 Estilo"/.

PSET (X, Y) Dibuja onda senoidal


en pantalla de gráficos.

' Imprime pares ordenados C X 9 Y) en pantalla de


' texto.
PRINT USINS "#.########"51 TAB(10)f¡ X 3 SPC(10)s Y

X X •+• . 01 ' Incrementa cantador de


' desplazamiento en X.
END IF
LOOP

CLOSE ' Cierra pórtico de comunicaciones.


RETURN ' Retorna al programa principal.

DEFINT S-Z

Filtra caracteres en un "string" de entrada


112

SUB Filtrar (InString*) STATIC

' Busca caracteres "backspace" y los recadifica


' a CHR$(29) (la tecla da cursor IZQUIERDA):
DO
BackSpace « INSTRCInString*, CHR$(0))
IF BackSpace THEN
MID*(InString$3 BackSpace) - CHR*(64)
END IF
LOOP WHILE BackSpace

' Busca caracteres "line-feed" y los remueves


DO
LnFd = INSTR (InString*., CHR*(Í0))
II" LnFd THEN
InString$ = LEFT$(InString*3 LnFd - 1) + MID*(InString*,
LnFd 4- l)
END IF
LOOP WHILE LnFd

END SUB

EJEMPLO 10: Evaluación de la función seno en BASIC-52

Para comprobar el correcto funcionamiento del programa de

graficación en QBasic,, se escribió paralelamente un programa

en BASIC-52 . Se escogió como ejemplo la evaluación de una

función senoidal { Y = SIN (C # X) } con número de ciclos (C)

variable. El micro pide que se ingrese este dato desde si

terminal., con lo que se comprueba la parte correspondiente a

la emulación de terminal.. luego da lo cual envía el carácter

"@" establecido para que el programa en QBasic ingrese a la

subrutina de graficación ü y finalmente empieza a evaluar la


función indicada dentro cíe un periodo cíe 0 <~ X <= 2ir 3 y a

intervalos de ¿X = 0-01 para obtener una buena precisión en la


señal graf i cada ¡, y se envía los datos numéricos de la
evaluación de la función seno,, con lo que se comprueba la
parte correspondiente a la graficación. La figura 4.5»2B
muestra el diagrama de flujo de este programa-
INIOALIZAEt VARIABLE DE LAZO DB ESFERA.

INGRESAR NUMERO OB OCIOS A GRAHCAR. (C)

C<-0

ENVIAR A COMPUTADOR CARÁCTER

ENCERAR Y ARRANCAR REUQJ HN TIEMPO REAL RTR

ACnyAR3KmRRÜPCION DB TIEMPO EN UN SEO.

ESFERA POR INTERRUPCIÓN'

DESACTIVAR Y ENCERAR RTR

SUBRUITNA I>B ATHMCÜfH A IHTBRyALQ Pfl

10J)

-Q A 2*M EN FA3OS PBOXil

ENVIAB. A COMPUTADOR DATO {SIN(C*3t))

RETORNAR.)

PIOURA 45^. DIAGRAMA DB FLUJO DEL PROGRAMA BN BASIC-Í2

SENOIDAL Dfi NUMSO DB CíCUJS VARIABLE-


114

# LISTADO del programa en BASIC-52 para el micro-, que

evalúa la función seno y envxa los datos al computador?

(para comprobar el programa de graficación en QB4.5)s

10 PRINT s PRINT
20 PRINT "PROGRAMA EN MCS BASIC-52 QUE DEMUESTRA LA
CAPACIDAD DE GRAFICACIÓN 11
30 PRINT "DE UN PROGRAMA EMULADOR DE TERMINAL DESARROLLADO
EN QuickBasic 4-5"
40 PRINT s PRINT
50 X~0 s REM inicializa variable de lazo de espera
REM ingresa dato ft ciclos
60 INPUT "INGRESE NUMERO DE CICLOS A GRAFICAR (MAYOR QUE
CERO)s" ? C
70 IF C=0 THEN 70 s REM solicita nuevo dato (# ciclos)
REM envia carácter que inicia subrutina de graficación
80 PRINT "<£!"
FcEM encera y arranca el Reloj en Tiempo Real (RTR)
90 TIME=0 : CLOCK 1
100 ONTIME 2^130 s REM activa interrupción de tiempo
110 IDLE : REM espera por int.
REM desactiva y encera RTR antes de terminar el programa
120 CLOCK 0 2 TIME=0 : END
REM micro envia datos de función seno al terminal
130 FOR X=0 TO 2*PI STEP U 0i s PRINT SIN(C*X) s NEXT
140 RETÍ s REM retorna a programa principal

La figura 4.5-3 muestra el resultado gráfico de correr en

el computador el programa emulador de termina1-graficador

hecho en QB4.5, y simultáneamente correr en el microcontrola-

dor 8052AH el programa en BASIC-52 que envia los datos a

graficar. Para la figura (a) se escogió el número de ciclos

C=1.5, y para la figura (b) C-10-

Debida a que el ejemplo anterior es teórico., se


desarrollaron programas prácticos de control en BASIC-52 que
se muestran en el siguiente numeral s y que requieren del
programa en QBasic de graficación de señales para comprobar su
funcionamiento.
115

5 NUMEBICOS ,EHUI
p-^^í = S1M(C*X)
0.00800008

&$f&gste$x>- - -V
*?*&:&?*?•-£': ; \:, .^ . •--• \

Harnero d& ciclos C

OE DATOS NUMÉRICOS ENUI


Y =
^0.08888008
g^g,w
S^í^*-^ - r l "
jSJaESi* -"&£*?:[£ *•- , • ".

•ísáfcf'*^»^3^**^ ?-'•*•- •-•


•:'- '*¿" ^-K*^fif^** '-^^fe^*^1""'^ '•'" '-*J'' • -""'

i'r'.'-y^^'J^-t^":-;, - - * ..:-.' *

".'•" ^'"|^íf^Sv:> '-^^"^V \

Número de ciclos C ~ í®

figara 4.5.3 Resultado gráfico de correr el programa de gradicación

(en Quiete Basic 4,5) de Jos datos enviados por el 8052AH


lió

4.5.1 FILTRO DIGITAL FASA-EAJGS*03

En este numeral se ha realisado la implementación digital

de un filtra pasa-bajos-"1--1- ,< utilizando el BASIC-52-

Se utilizó el filtro pasa-bajos de BUTHERWORTH de 4°

orden - La función de transferencia de este filtro en el

dominio de la frecuencia compleja s ( FT(s) ) 9 para ganancia

de voltaje total nula ( Av = 0 ) esü

Wo

donde a

FT(s)=función de transferencia 5 Y(s)-salida 5 R(s)=entrada

Wo = frecuencia de corte en [rad/seg] (Wo = 2*it#fo)

fo = frecuencia de corte del filtro en [Hz]

Se utilizó el método de discretisación de TUSTIN (método

del trapecio)5 en el que se tienes

T .

donde T = periodo de muestreo de la señal de entrada


Se obtuvo asi la función de transferencia en el dominio de

FT(z] « (z

donde: C « 0-2*it*T A = C-l B = C+l

Finalmente se determinó la ecuación de diferencias a


117

evaluar:

3T{Jc-3) -

donde s D E/A C/A

Para poder comprobar el funcionamiento del filtro,, se

escribió un primer programa que genera internamente tres

distintos tipos de señales de entrada de 0.2 Hz s cuadrada,

triangular y diente de sierra. El segundo programa,, en cambio-,

lee la señal de entrada de uno de los pórticos del Interface

Paralelo Programable PPI S255A, en donde se supone que se

dispone de una señal digital proveniente de un conversor A/D.

a) EJEMPLO 11: Programa en BASIC™52 que realiza la

implementación digital del filtro PASA-BAJOS

(generando señales de entrada,, para fines de comprobación)

* LISTADO:

10 P R I N T s PRIÍMT
20 PRINT "FILTRO DIBITAL PASA-BAJOS CON FRECUENCIA DE CORTE"
30 PRINT TABC20) ? "fc = 0.2 Hz"
40 PRINT
REM ingresa el valor inicial del Periodo de Muestreo
50 INPUT "INGRESE EL PERIODO DE MUESTREO INICIAL a T= ",T
60 PRINT
70 PRINT "SEÑAL DE ENTRADA a CUADRADA (0)„ TRIANGULAR (1}5 "
80 INPUT "DIENTE DE SIERRA (2) > ELECCIÓN: ",S
90 TIME-0 s REM encera el Reloj en Tiempo Real (RTR)
1(30 CLOCK1 s REM activa el RTR
110 PRINT "©"s REM imprime carácter para empezar graficación
REM inicializa valoras de salida y entrada
120 Yl«0 s Y2=0 s Y3-0 : Y4=0
130 Rl=0 s R2=Í3 s R3-0 s R4^EJ
140 ONTIME 2..1S02 REM activa interrupción de tiempo en 2 seg.
150 IDLE : REM espera por interrupción
160 TIME-0 s CLOCK 0 s REM encera y desactiva el RTR
170 END : REM fin del programa principal
REM salto de control según opción escogida
180 ON S 190, 350, 530
REM subrutina de atención a int. para entrada cuadrada
190 POR 1=1 TO 11
200 B-TIMEs REM salva valor del RTR
210 DO
220 A=TIME s P=A~B 2 REM salva valor del RTR
REM calcula coeficientes de ecuación de diferencias
j£.Olí-í L./*"~i 4. fl* I <í • j£> • U"" \™ JL, f / \r .L / n CL"—LJ/ ii l~/ ' JL /

REM genera señal de entrada cuadrada de -2 Hz


240 IP P<2.5 THEN R0=l ELSE R0=0
REM calcula valor de salida
250 F«4#Y1*D+6*Y2*D**2+4#Y3*D**3+Y4*D**4
260 Y=E#*4*(R0+4*RÍ+6*R2+4*R3+R4)-F
270 Y0=3.1*(Y-.5)+.5 s REM corrige ganancia
REM envía al computador los valores de entrada y salida
280 PRINT R0 s PRINT Y0
REM actualiza valores de entrada y salida
"?P(7I
,&. / VJ V£izzY~<
I "T I %-• »
u y^y?
I •—' 1 JU "u Y*?=Y1
I J— 1 uL -ir Y'l
) .)- —Y
—» T

300 R4-R3 s R3=R2 : R2=R1 s R1=R0


310 T-TIME-A : REM actualiza periodo de muestren
320 WHILE P<5
330 NEXT I
340 RETÍ s REM regresa al programa principal
REM subrutina de atención a int- para entrada triangular
350 POR 1=1 TO 11
360 B=TIMEs REM salva valor del RTR
370 DO
380 A=TIME s P=A-B 2 REM salva valor del RTR
REM calcula coeficientes de ecuación de diferencias
390 C=PI*T#.2 s D=(C-i)/(C+l) s E«C/(C+1)
REM genera entrada triangular de .2 Hz
400 IP P<2.5 THEN R0=.4*P ELSE R0=2-,.4#P
410 REM calcula valor de salida
420 F«4*YÍ#D+6*Y2*D**2+4*Y3#D*#3+Y4#D##4
430 Y=E**4*(R0+4#Ri+6#R2+4#R3+R4)-F
440 Y0=4.8*(Y-B48)-HH5s REM corrige salida
450 REM envía al computador los valores de entrada y salida
460 PRINT R0 s PRINT Y0
REM actualiza valores de entrada y salida
470 Y4=Y3 s Y3-Y2 s Y2=Y1 s Y1=Y
480 R4—R3 s R3—R2 s R2—R1 s R1=R0
490 T=TIME-A s REM actualiza periodo de muestreo
500 WHILE P<5
510 NEXT I
520 RETÍ 2 REM regresa al programa principal
REM subrutina de atención a int. para entrada diente de sierra
530 POR 1=1 TO 11
540 B=TIME: REM salva valor del RTR
550 DO
560 A=TIME 2 P=A-B s REM salva valor del RTR
__-,_.
\_' / WJ n~pTiitTJk *? •* ÍJ~'
l_/'~n4.'T'l'PBrfU. n 5 =\f pJ-- -fi ^t /\T
¡ r pXH¡- i í i• -I _ , ~P=P
~ l _ í / \/U iiT ^
P4-1
jL^ ^
580 REM genera entrada diente de sierra de .2 Hz
590 R0«i-.2*P
REM calcula valor de salida
600 FK4*Y1*D+6*Y2*D#*2+4*Y3*D#*3+Y4*D#*4
610 Y=E**4#(R0+4#R1+6*R2H-4#R3+R4)«F
620 Y0-5H5*(Y~).475)-H.5: REM corrige salida
119

REM envía al computador los valores de entrada y salida


630 PRINT R0 s PRINT Y0
REM actualiza valores de entrada y salida
640 Y4=Y3 5 Y3=Y2 : Y2=YÍ s Y1=Y
650 R4=R3 s R3=R2 : R2=Ri : R1-R0
660 T-TIME-A s REM actualiza período de muestren
670 WHILE P<5
680 NEXT I
690 RETÍ ü REM 'regresa al programa principal

b) EJEMPLO 12: Programa BASIO-52 que realiza la implementación

digital del filtro PASA-BAJOS

(leyendo la señal de entrada desde el Interface Paralelo

Programable PPI 8255A).

La figura 4-5.4 muestra el diagrama de flujo del programa

El programa es prácticamente el mismo que el anterior., lo

único que varía es la forma da obtener la serial de entrada.,

pues en este caso se va a leer del pórtico paralelo (PA) del

8255A? en cuyas 8 líneas PA7-PA0 deben colocarse los datos

digitales de entrada,, provenientes de un conversor A/D.

Para fines de comprobación,, se utilizó la tarjeta

MCPD51DA disponible en el Laboratorio de Control con

Mieroprocesadores de la Facultad de Ingeniería Eléctrica de la


Escuela Politécnica Nacional.

Listado documentado del programas


* LISTADOS
10 PRINT s PRINT
20 PRINT "FILTRO DIGITAL PASA-BAJOS CON FRECUENCIA DE CORTE"
30 PRINT TABC20),"fe = 0.2 Hz"
40 PRINT
50 T-.14 s REM asigna el Período de Muestren inicial
REM encera y activa el Reloj en Tiempo Real (RTR)
60 TIME=0 s CLOCK1
70 PRINT "@"g REM imprime carácter para empezar graficación
REM inicializa valares salida y entrada
80 Yl=0 s Y2=0 a Y3=0 5 Y4~0
90 Rl«0 s R2=0 s R3=0 i- R4=*0
REM activa interrupción de tiempo en 2 seg-
100 ONTIME 2,130
110 IDLE : REM espera por interrupción
120 END s REM fin del programa principal
REM inicia subrutina de atención a int.
130 FOR 1=1 TO 65000
140 A=TIME s REM salva valor del R.T-R.
REM calcula coeficientes de la ecuación de diferencias
150 OPI*T*.2 s D«(C-Í)/<01) s E=C/(C+1)
160 R0=XBY(6144)/255 s REM lee valor de entrada del 8255A
REM calcula valor de salida
170 F=4*YÍ#D+6#Y2#D*#2+4#Y3#D*#3+Y4#D#*4
180 Y=E#*4#(R0+4*R1+6#R2+4*R3+R4)-F
190 Y0=3.1#(Y-.5)+.5 : REM corrige la ganancia del filtro
REM envia ai computador los valores de entrada y salida
200 PRINT R0 : PRINT Y0
REM actualiza valares de entrada y salida
210 Y4=Y3 s Y3=Y2 s Y2=Y1 s Y1=Y
220 R4=R3 s R3=R2 : R2«R1 s Ri=R0
REM actualiza período de muestren
230 T=TIME-A
240 NEXT I
REM encera y desactiva el R . T » R H
250 TIME-0 s CLOCK 0
260 RETÍ s REM regresa al programa principal

En este caso la señal de entrada puede ser cuadrada,,

triangular,, diente de sierra,, o de cualquier otra forma.

c) Programa en QuickBasic 4,. 5 qua gráfica las señales de

entrada y salida del filtro•

* LISTADO:
El programa principal que realiza la función de emulador

de terminal y el subprograma de filtro son los mismas que se


transcribieron al inicio del numeral 4.5? sólo cambia una
parte de la subrutina de graficacion., cuyo diagrama de flujo
se muestra en la figura 4.5.5-
PROGRAMA PRINCIPAL

^- -*.
INICIO

ASICKAR PERÍODO OH MUBSTRBO INICIAL

ENCERAR Y ACTIVAR RHLOJBtf TIEMPO REAL RTR

ENVIAR AL COMPUTADOR. CARÁCTER 9 PARA


EMPEZAR ORAFICACION

INKIAUZAR VALORES BE SALIDA Y ENTRADA.

1
ACTIVAR im-EKRIIPCION I» TIEMPO HN W SEO,

LAZO DB ESPERA POR INTERRUPCIÓN

DBSACnVAR Y ENCERAR BL RTR

SIJHRIITTNA DE ATENCttW

RHEPETIR 65000 VECB9 )


Jl
SALVAR VALOR DEL RTR

CALCULAR OOBEHCENraS DB LA
ECUACIÓN DB DIFERENCIAS A EVALUAR

LEER EL VALOR DE LA SEÑAL DB ENTRADA


Etf BL PÓRTICO A DEL Pfü 8235A

CALCULAR BL VALOR OH SALIDA EVALUANDO


IA ECUACIÓN DB DIFERENCIAS 0SL FILTRO

ENVIAR AL COMDPUTADOR LOS VALORES


DB ENTRADA Y SAUDA

ACTUALIZAR VALORES DB ENTRADA,


Y SALIDA V PERIODO DE MUESTRBO

HOÜRA 4J.4. DIAGRAMA DE M5Ó íiEL f^OORAMA 1EtTRfi &3STAL ?A5A-&AJQ5


CON FRECUENCIA DE CORTE fc
CERRRAE. PORTEO DB COMUNICACIONES

ASIGNAR MODO DB PANTALLA DE GRAHCOS

DEFINIR TAMAÑO DB PdtOON DB PANTALLA


PARA GRÁFICOS Y UNA ESCALA APROPIADA

IMPRIMIR MENSAJE P00 EN DOS HUMERAS UHEAS Y DBPIWR TAMAÑO DE


PORODKDBTANTALLAPAIIA TEXTO DONDE MDSTftARDATOS NUMÉRICOS

ABRtt PORTE» RE COMUMCAOONES PARA -ENTRADA* PE DATOS


NUMHUCX^ ARCHIVO SBCÜBNC3AL, EN EL MODO UARTDB»B1TS
Y A LA MISMA VBLOCmVD QJÜE EL RPOGRAMA PRINCIPAL

INIOAUZARCONT. DB DBSPLAZAM. BN QO

i
INIC3AUZAR VARlABaJB DB SHLBCClOH DE ENTRADA O SAUDA
AL VAUJR DB EWTRADA:flaNTRADAA-l, SALIDA A--3)

GRAHCAR LINEA DB EIB (K) HOR3ZGNTAL

CHBÍ[Link] 8052 (BUFPBR DB COMKNIC.)

RECXJPBRARIJHBA ASCH DEL BUPEER


Y EXTRAER SU" VALOR. NUMBIUOO (Y)

I
GRAHCAR PAR ORDENADO (3^0 COMO
^^-^ A - l

UNA LINEA DESOQB_ (X^-) HASTA (X,Y)


•^ \R PAR ORDENADO C
COMO UN PUNTO

IMPRIMIR PAR ORDENADO NUMÉRICO EN IMPRIMIR PAR ORDENADO NUMÉRICO EN


PUESTO CORRESPONDIENTE A SAUDA PUESTO CORRESPONDIENTE A ENTRADA

CAMBOAR VALOR DE VAMAPLB flS [A-A*<-1)3

INCREMENTAR CONTADOR DB DESPLAZAMIENTO EN X

W CASO Dfi LLENARSE LA ^AÍrtALtA WS GRAHÉOoS,


BORRARLA Y EMPEZAR A ORARCARDBSDB INK30

. [Link] FLUJO DH LA SUBRUTINA DH GRAHCACIDK DEL PROGRAMA HK OB45


"EMULADOR DB TERMINAL - GRAHCADOR*,, MODIFICADA PARA GRAHCAR DOS SERAUBS
123

El listado de la subrutina de graficación del programa en

QuickBasic 4-5 queda asís

Srafico K ' Inicia subrutina de graficación.

CLOSE ' Cierra pórtico de comunicaciones.


SCREEN 3 ' Asigna modo de pantalla de gráficos,

' Dimensiona porción de pantalla para gráficos y la


VIEW (10, 57)-(710;, 3405 ? , 1 ' encierra etre lineas

' Escala la ventana para graficar las ondas del filtro


WINDOW (0-, ~Hl)-(20e}? i.1) ' de entrada y salida»

Estilo% &HFF00 ' Forma de línea segmentada,

' Imprime mensaje fijo en las dos primeras líneas.


LOCATE 1, 5
PRINT "GRAFICACION DE ENTRADA Y SALIDA DEL FILTRO PASA BAJO 1
LÓCATE 2? 5
PRINT " ENTRADA (R0) SALIDA (Y0)"

VIEW PRINT 3 TO 4 ' Líneas 3 y 4 para imprimir texto.

' Reabre pórtico de comunicaciones para entrada de datos


' numéricos.
OPEN "COM2S 9A00!,N?Bsl9cs:,ds!,rs!,ccr FQR INPUT AS #1

' Inicializa contador de desplazamiento en eje horizontal.


X = 0
¿S ""• 1

DO ' Lazo de graficación

IF NOT EOFCi) THEN


LINE INPUT ttlj MCSInput* ' Recupera línea ASCII del
' buffer de comunicaciones,
Y = VAL(MCSInput$) ' y toma su valor numérico,

LINE (0, -5)»(200ji .5) ;1 „ Estilo"/, ' Gráfica el eje X.


IF a < 1 THEN BOTO Salida ' Escoje la forma de graficar
' e imprimir los datos de
' Entrada o Sal ida-

' Srafica e imprima el dato de Entrada en las pantal las


' correspondientes
IF Y « 0 THEN PSET (X., l)s PRINT TAB(19)^ 1 ELSE
PSET C X , 0): PRINT TABC19); 0
GOTO Lazo
Salidas LINE (X P -5)™(X 5 Y) ' Gráfica la señal de salida»
' Imprime pares ordenados (X., Y0) en pantalla de texto.
124

PRINT USINB "tt.########"5 TAB(37)í¡ Y

Lazai
X + 1 ' Incrementa contador de
' desplazamiento en X.

' Desenrollamiento horizontal de la pantalla de gráficos.


IF X = 200 THEN X = ÍSs CLS

END IF
LOOP

GLOSE ' Cierra pórtico de comunicaciones,


RETURN ' Retorna al programa principal.

La figura 4.5.6« muestra la forma como se observa en la

pantalla del computador las señales de entrada y salida del

filtro., para dos formas de onda diferentes de la señal de

entrada.

figura 4-5,6 (a) Respuesta del filtro ante una entrada triangular
125

figura 4.5~¿ (b) Respuesta, del filtro pasada/os ante una entrada

diente de sierra

4.5.: ALGORITMOS DE CONTROL/

Se realizó la implementación digital de algoritmos de

control tomando como ejemplo una acción de control PID«

Partiendo de la función de transferencia en el dominio de

la frecuencia compleja s ( FT(s) )s

v-í \ + .ü + Kd s\ I
(
dondes Kp ~ constante proporcional
Ki = constante integral

Kd = constante derivativa
126

Para la discretisación de la parte integral se utilizó el

método de TUSTIN0 Cdel trapecio),, en el cual:


donde s T = periodo de muestren

y para la discretización de la parte derivativa se usó el

método del rectángulo hacia atrás., en el cuals

s= l
Se obtuvo asi la función de transferencia digital FT(z)s
. ' donde s A « Ki(T/2) * Kd/2 •*• 1
FT(z] = Kp Az2 + Bz ~J B « KiCT/2) - Kd(2/T) » 1

C - Kd/2

Finalmente se determinó la ecuación de diferencias que se va a

evaluar en forma recursiva en el programa BASIC-52s

Y(k) = Y(k-l) + Kp % [A E(k) + B E(k-l) + C E(k-2)]

a) EJEMPLO 13: Programa en BASIC-52 que realiza laimple-

mentación digital de la acción de control PID

La figura 4-5-7 muestra el diagrama de flujo del programa

en BASIC-52 que realiza la acción de control "digital" PID-

El valor del periodo de muestren se actualiza


automáticamente cada vez que se torna un dato del PPI S255A-
127

PROGRAMA PRINCIPAL

INGRESAR CONSTANTES: PROPORCIONAL


INTEGRAL (KI> Y DERIVATIVA. <£I»

ENVIAR A CONSOLA CARÁCTER *®*


PARA IR A RUTINA DB QRAHCACiaN

INJOAUZAR VALORES DE ENTRADA Y SALIDA


, i
ARRANCAR Y ENCERAR BL RELOJ (RTR)

ACTIVAR INTEMLUPODNDE TIEMPO EN UN SEO.

LAZO DE ESPERA POR INTERRUPCIÓN

DBSACTIVAR Y ENCERAR EL RTR

SQHRimNA ATENCIÓN INTERRUPCIÓN

INICIO
ir
-(REPETIR gsooo VECES)
11
SALVAR VALOR. DEL KTR

CALCÜLÁK COEHOENTBS DB ECUACIÓN DE


DIFERENCIAS QUE EVALÚA PTO

LEHR. ENTRADA DEL PORTEO A DHL PPI 8255A

CALCULAR SAUDA EVALUANDO BC. DE DIFERENCIAS


JL
ENVIAR A CONSOLA VALORES DB ENTRADA Y SALIDA

ACTUALIZAR VALORES DB ENTRADA Y SALIDA


AL PD) Y TIEMPO DE MUESTRBO

FIGURA 4,3.7. DIAGRAMA DE FUI3O DEL PROGRAMA 'ACOOH DE CONTROL D3OETAL PH)*
128

* LISTADOS

10 PRINT "CONTROL PID" s PRINT


REM ingresa constantes proporcional9 integral y derivativa
20 INPUT "INSRESE CONSTANTES a KP ? KÍ ? KD " s KP,KI„KD
3® T= H 15 s REM asigna periodo de maestrea inicial
40 PRINT "<§" s REM envía carácter para iniciar graficación
REM inicializa valores de salida y entrada
50 Y2=0 : Yl~0 : E2=0 5 Ei=0
REM encera y activa el Reloj en Tiempo Real (RTR)
60 TIME=0 s CLOCK i
REM activa interrupción da tiempo en 1 seg.
70 ONTIME 1,100
80 IDLE s REM espera por interrupción
REM desactiva y encera el RTR y termina el programa
90 CLOCK 0 : TIME=0 5 END
REM inicia subrutina de atención a int» tiempo
100 POR 1=1 TO 1000
110 Ti=TIME s REM salva valor del RTR
REM calcula coeficientes de ecuación de diferencias
120 A=KP*(H-T#KI/2+KD/T)
130 B=KP#(-l+T*KI/2-2#KD/T)
140 C=KP*KD/T
150 E0=XBY(6144)/255 [Link] lee valor de entrada del 8255A
160 Y0=Yl-i-A#E0-HEt*El+C#E2 " R£¡v| calcula valor de salida
REM envia al computador valores de entrada y salida
170 PRINT E0 s PRINT Y0
REM actualiza valores de entrada y salida
180 . Y2=Y1 : Y1=Y0 : E2=E1 s EÍ=E0
200 T=TIME-T1 2 REM actualiza período de maestreo
210 NEXT
220 RETÍ : REM regresa al programa principal

El programa se probó con el mismo equipo adicional que el

filtro digital. Los resultados obtenidos son muy buenos pues

se demuestra claramente la influencia de las constantes

proporcional ( Kp) ., integral («i ) y derivativa (Kd) en la señal


de salida., al variarlas independientemente o en forma
conjunta-

La figura 4-5-8 muestra el resultado gráfico en pantalla

de la ejecución del programa,, allí se distinguen la señal de


entrada en la parte inferior de la figura y la salida en la
parte superior.
129

GBAFICACION DE ENTRADA Y S A L I D A BEL FILTRO PASA BAJO


ENTBñDñ <B6) S A L I D A (Y0)
6.02638728

ÍÍ1Í1ÍTÍÍÍ

figura 4,5*8 Resultado gráfico de 2a ejecución del programa

que realiza /a acción de control PID DIGITAL

b) Programa en QBasic 4-5 que g r á f i c a las señales de entrada

y salida al PID d i g i t a l „

Básicamente es el mismo que se u t i l i z ó para g r a f i c a r las

señales de e n t r a d a y s a l i d a al f i l t r o pasa-bajos d i g i t a l en el

n u m e r a l anterior 4.5.1, sólo deben hacerse modificaciones de

la ventana de g r á f i c a s para poder apreciar la señal de salida

con c l a r i d a d .
130

REFERENCIAS BIBLIOGRÁFICAS:

1. BIT Software, Inc., BITCOM User's Manual., 1989

2- INTEL Corporation,, MCS BASIC-52 User's Manual Santa


Clara CA 3 1988,, pag - 19.1

3. E . P » N « 9 Facultad de Ingeniería Eléctrica,, Laboratorio de


Computadores Personales,, Hojas guias, 1991

4- ELCOMP, Microcomputer Hardware Handbook 3 First Edition 5


Holskirchen, Bermany, March 1982,, pag - 829-846

5„ LEDESMA» Bolívar ? TARJETA MCPD51DA.- Características


técnicas y Guia de uso,, E-P.N- ., Facultad de Ingeniería
Eléctrica,,Quito,, 1992

6. INTEL Corporation., Microcontrol lers Handbook, 1986

7» E.P.N.j, Facultad de Ingeniería Eléctrica,, Apuntes de


Control con Microprocesadaress 1992

8- AVOCET SYSTEMS, INC- S AVSIM51 8(351 Family User's Manual,


ver. 1-3., Rockportji Maine, U.S.A. , 1988

9- MICROSOFT CORPORATION, MICROSOFT QuickBASIC, LEARNINB TO


USE MICROSOFT QuickBASIC Versión 4-5, U.S-A», 1988
MICROSOFT CORPORATION, MICROSOFT QuickBASIC\G
IN BASIC, Versión 4.5., U.S-A. S 1988

10. E.P-N-., Facultad de ingeniería Eléctrica., Control con


Microprocesadores., Hojas guías de Laboratorio y apuntes
de teoría, Quito,, 1992

11. E.P.N., Facultad de Ingeniería Eléctrica., Apuntes de


Control Discreto» 1991
5 CONCLUSIONES

5.1 ANÁLISIS DE RESULTADOS

5.1.1 ANÁLISIS DE COSTOS DEL SISTEMA

RUBRO PRECIO

TARJETA DE CIRCUITO IMPRESO 95-(300


TRANSFORMADOR PARA FUENTES DE PODER 20«000
CABLE Y ENCHUFE PARA TRANSFORMADOR 3- 500
CABLE PARA CONECCION PC-TARJETA 11.000
ALAMBRE PARA CONECTORES 2-000

SUBTOTAL

LISTA DE COMPONENTES DE LA TARJETA CON SU COSTO

CANT. DESCRIPCIÓN ESPECIFICACIÓN PRECIO


UNITARIO PARCIAL

o
Jl. CONDENSADORES 22p>5V 350 700
1 lu>5V 350 350
1 470u>16V 700 700
1 470u>35V 700 700
1 lu>35V 350 350
4 10u 25V 400 1.600
1 100ri >5V 350 350
1 10u>5V 400 400
2 RECTIFICADOR PF05 1.000 2-000
1 DIODO 1N4007 300 300
5 JUMPERS 550 3,850
7 CONECTORES 8 PINES I» 000 SB000
1 CONECTOR 20X2 PINES 2 ,000 2.000
1 CONECTOR DB9 3-500 3 „ 500
1 TRANSISTOR 2N2907 1.000 1-000
4 RESISTENCIAS £1/8UJ) 10K 50 200
4 3 « 3 K! 50 200
1 240 50 50
1 7,5 50 50
1 22 K 50 50
1 1 H 2K 50 50
/í 4.7K 50 150
2 3K 50 100
1 RES- INTEGRADA 9*3. 3K 1-000 1.000
1 DIP SWITCH 4 SW 2.200 2.200
1 PULSADOR 2-500 2-500
1 MICROCONTROLADOR S052AH-BASIC 00.000 60.000*
132

CAIMT. DESCRIPCIÓN VALOR PRECIO


UNITARIO PARCIAL

i UVEPROM 2764 20 «0013 20.000


1 UVEPROM 2764-27128 20 «000 20-000
*~\. RAM ESTÁTICA 6116 10-000 20» 000
1 PPI 8235 15-000 15H 000
1 8-LATCH 74LS373 3-700 3B700
i 4-AND-2 ENTRADAS 74LS08 1,400 i . 400
1 6-BUFFER/DRIVER 7407 1,900 1.900
1 1 DE 8 DECOD/DEMUX 74LS138 2 «500 2»500
1 2 DE 4 DECOD/DEMUX 74LS139 2« 500 2-500
1 2-INTERFAZ RS-232 ICL232 12-000 12.000*
i REBULADOR FIJO +5V LM7B05 2-000 2-000
1 REG- AJUST.1-5-35V LM317 2-000 2-000
1 SUPERVISOR FUENTE TL7705 4-800 4.800*
1 OSCILADOR CRYSTAL 12 MH2 4.500 4 ,.500
r? ZÓCALOS PARA C.I . 40 PIN 1.400 2-800
*">
j^. 28 PIN 700 1.400
•^
.£_ 24 PIN 700 1.400
1 20 PIN 550 550
"T? 14 PIN 550 1-100
T
16 PIN 550 1-650
*-\
8 PIN 350 700
1 REGLETA DOBLE PARA CONECTOR 20X2 3 „ 000 3 . 000
1 REGLETA SIMPLE PARA JUMPEERS 2-500 2.500
1 DISIPADOR PARA REG. -i-5V 2H000 2 «000
SUBTOTAL

TOTAL 353-350

La mayoría de elementos de la tarjeta se adquierieron

dentro del país,, por lo que su valor en sucres (S/ „ )

corresponde al precio a febrero de 1993- Pocos elementas

fueron importadas de Estados Unidos, su valor en sucres

(marcado con un asterisco (%) en la tabla) se calculó en base


al precio en dólares señalado en el catálogo de componentes
electrónicos de JAMECO rdK1 de 1993., añadiéndole un 30X por

impuestos y castos adicionales de importación.

La cotización del dólar a febrero de 1993 es de 1900 sucres.


133

5.1-2 ANÁLISIS TÉCNICO Y RECOMENDACIONES

En el Ecuador no se comercializan tarjetas similares a la

desarrollada,, por lo que no se puede establecer una compara-

ción a nivel nacional (en sucres). Sin embargo,, se conoce que

existen varias empresas en el exterior que ofrecen tarjetas

parecidas., especialmente en Estados Unidos,, aunque es muy

difícil conseguir información técnica de ellas.

Por ejemplo, en la revista CQMPUTERCRAFT* de Enero de

1993., se promociona la tarjeta BASCOM1 construida por la

empresa "Prologic Designs" con el microcontrolador 80C52-BASIC

que incluye 32 K de RAM¡, 16K de EPROM, programador de EPRQMs.,

Ínter faz RS—232 y conecto res de expansión,, totalmente

ensamblada y probada,, en aproximadamente US $ 125» Si añadimos

un 30"/ por impuestos y demás gastos de importación,, dicha

tarjeta costaría aquí en el Ecuador aproximadamente US $ 162.

En la misma ravista COMPUTERCRAFT de Febrero de 1993^ se

hace un resumen de las tarjetas que usan micracontroladores de

la familia MCS-51» La tarjeta cuyas características son más

parecidas a la que se ha desarrollado en éste trabaja es la

BCC52 de MICROMINT., que cuesta US* 190 en Estados Unidos, más

costos de importación (30"/.), costaría aproximadamente US$ 247


en el Ecuador. La tarjeta E¡BC52 contiene un chip S0C52.,
programación de EPRGMs, y un Interfaz Periférico Programable

8255 que añade 24 bits de Entrada/Salida- Sin embargo dicha

tarjeta requiere de fuentes de + 12V para el interfaz serial,,


fuentes de +12» 5 o -i-2i V para la programación de EPRQMs,
además de la fuente principal de +5•V para polarización.
134

El precia de la tarjeta desarrollada en esta tesis pasado

a dólares al cambio a febrero da 1993 es aproximadamente

(US $ 186) ., que aparen temen te es al to? pero se debe

especialmente a que se construyó sólo un prototipo,, lo cual

encarece mucho los costos^ un ejemplo de ésto es la tarjeta de

circuito impreso que tuvo que enviarse a fabricar en Colombia.,

y es el rubro que más influye en el costo total.

De hacer varias tarjetas., por ejemplo un mínimo de 10., se

prevee que el costo se reduciría por lo menos en un 40 "/i.


Por otro lado el valor de la tarjeta que se ha desarro-

llado incluye las fuentes cíe poder con el transformador,,

cables de conección tarjeta--PC, que no incluye ni la tarjeta

de Prologic, ni la de Microínint, pero en cambio dichas tarjeta

tiene mayor capacidad de memoria RAM»

Por lo anotado se concluye que resulta conveniente

construir la tarjeta en el Ecuador., debido a que se puede

adaptar el diseño a las necesidades y añadir cualquier

característica que se desee-

- Las fuentes de poder diseñadas,, tanta para polarización

de la tarjeta (fijas + 5 V) , como para programación de

memorias EPROM (ajustables 12.5, 21 y 25 V) han funcionado


correctamente para sus propósitos particulares, debido a que
se las ha dimensionado con un margen de seguridad en cuanto a
consumo de corriente. La fuente de polarización ha sido
probada en funcionamiento continuo durante 48 horas en forma
exitosa, sin que se pierda la información almacenada en RAM de
la tarjeta»
- Aunque teóricamente se calculó que la tarjeta consumirla

aproximadamente 750 mA., midiendo en la práctica dicho consumo

no supera los 50Í3 m A 3 en funcionamiento normal? aunque este

valar varía en función de los elementas de la tarjeta que se

usen en cada programa de aplicación particular. El

sobredimensionamiento servirá para polarizar elementos

externas a la tarjeta»

- En los diferentes conectares de la tarjeta se disponen

todas las señales necesarias para colocar elementos externos

adicionales como memorias de datos o de programa., conversares

A/D o D/A etc.,, e incluso cambiar el mapa de memoria,, en caso

de requerirse- Están disponibles los buses de datos,,

direcciones y control., así como también los pines de funciones

especiales del 8052-BAS1C y los 3 pórticos paralelas del

PPI8255A.

- Con las "jumpers" colocadas en la tarjeta se puede


modificar la configuración do la misma„

- La posibilidad de hacer una superposición "overlap" de

las localidades 2000H-3FFFH con 4000H-5FFFH¡, a través del


"jumper" JP14., permite al usuaria de la tarjeta aprovechar
todas las opciones que presenta el BASIC-52 y que requieren de
información almacenada en las primeras localidades de dichos
espacios de EPROM 3 como el manejo de interrupciones desde
rutinas en lenguaje Assembler y la implementación de la opción
de extensión de comandos-sentencias BAS1C-52-, entre otras-
136

- El circuito de RESET implementado en la tarjeta con el

supervisor de fuente de poder TL7705., permite una señal de

RESET precisa, al menor contacto del pulsador colocado para el

efecto,, lo cual es una ventaja respecto al reset estándar

usando una red R-C»

— El interfaz serial construido en la tarjeta con el C-I-

ICL232., facilitó, el diseño de la fuente de polarización,, pues

dicho chip requiere una fuente única de 4-5V para generar los

voltajes de ±10 V necesarios para la comunicación bajo la

norma RS-232C.

- El interfaz paralelo programable PPI-8255A incluido en la

tarjeta, permite transmitir/recibir datos hacia/desde el

exterior en forma paralela,, a través de sus 3 pórticos de 8

bits., configurables en varios modos y al mismo tiempo utilizar

todas las funciones especiales del pórtico Pl del 8052--BASIC.

- Siempre resulta muy conveniente construir el primer

circuito de cualquier proyecto,, similar al desarrollado en

esta tesis., usando técnicas de "WIRE WRAP" para hacer las

primeras pruebas de hardware y software» Pues los cambios que


se requieran hacer a la marcha, pueden lograrse en forma

rápida., fácil y segura- Incluso el transporte de la tarjeta de

un lugar a otro es mucho mas segura que si se hiciera el mismo

circuito en "PROTD BOARD",, pues es menos probable que se

suelten las conexiones.


137

- Para el diseño de? tarjetas de circuito impreso en caso de

diagramas circuitales relativamente complejos como el de este

circuito., resulta muy conveniente utilizar paquetes de

software que incluyen _una opción de creación automática de las

rutas "autoruteo"9 pues solo es necesario conocer levemente el

programa y el tiempo de diseña se reduce significativamente,,

haciéndose más sencillo el cambio del PCB en caso de

requerirlo-

- El uso que se puede dar a la memoria externa del 8052™

BASIC, dentro de la tarjeta., es el siguientes

RAM ü

0-511 bytes s Espacio reservado por el intérprete BASIC-52

512bytes-MTOPa Espacio reservado para el usuario para editar

cualquier programa BASIC-52

(MTOP+i )~última localidad de? RAM externas

Espacio para almacenar datos que no se borran al ejecutar

comandos BASIC LIST¡, RUN; para este propósito no es necesario

que este espacio de memoria esté continuo desde MTOP+i en

adelante., solo seria necesario si se quiere que el intérprete

lo reconozca para poder escribir en él programas BASIC.

EPROM1-ASSEMBLER s

2000H-3PPFHs Este espacia de memoria está reservado para

rutinas escritas en lenguaje Assembler que

pueden ser 11amadas desde un programa BASIC y a su vez pueden

1 lámar cualquiera rutina que implementa un comando, sentencia


u operador BASIC* Sin embargo, en este espacio también pueden

haber programas BASIC-529 en caso de que este cnip se lo haya

sacado del zócalo de programación (EPROM2-BASIC)? pero dichos

programas no pueden ser llamadas y ejecutados con los comandos

BASIC disponibles para el efecto., pues no están localizados en

el espacio que corresponde al "archivo EPRÜM"z 8000H en

adelante. Esto acarrearía la desventaja de no poder utilizar

las opciones del BASIC-52 que requieren de determinada

información en las localidades de EPRGM1-ASSEMBLER cercanas a

2000H y 4000Ha atención a interrupciones desde Assembler.,

implementación de la opción de ampliación de comandos/

sentencias BASIC., entre otras»

EPROM2-BASICB

S000H-9FFFHs En este espacio de memoria se puede utilizar la

capacidad de programación del BASIC-52,, es

decir que pueden haber programas BASIC en todo el espacio o en

las primeras localidades, y en las siguientes rutinas

Assembler„

— Una solución para utilizar los programas BASIC-52 que

podrían estar grabados en la EPRQMl-ASSEMBLER, consistiría en


desarrollar un programa BASIC que lea la EPROM1 y si encuentra

en ella un programa BASIC, lo pase a RAM; es decir hacer un


programa que cumpla la misma función que el comanda RDMx del

BASIC 52. El procesa a seguir sería sencillo:

„ ingresar desde consola el número de programa BASIC a leer en


139

Za EPROM1, que correspondería a (x) del comando BASIC ROMx s

» leer la localidad 20I0H de la EPROM1 , si en ella encuentra

el valor 55H? en la siguiente localidad empieza el primer

programa BASIC5

„ si x-l-t desde esa localidad de EPROM debe empezar a pasarse

la información almacenada allí a RAM., desde la localidad 512.,

hasta que se encuentre el valor 0DH en una localidad,, que

indica que al li termina una I ínea BASIC,, ésto se logra muy

fácilmente ( XBY(512)«CBY(2010H) 5 ,

„ si el valor de la localidad siguiente es distinto a 01H3 que

indica fin del programa,, se continúa la transferencia de

información a RAM., pero si dicho valor es 01H? ese será el

último dato transferido.,

si x>l entonces se ingresa a un proceso de búsqueda del

inicio del programa (x)? que consiste en buscar el valor 55H

SCL una localidad., luego de una secuencia de valores 0DH¡, 01H,,

que indica el final del programa anterior.

- Como una opción muy interesante., puede correrse el

intérprete BASIC-52 desda ROM externa; para ésto., debe

seguirse el siguiente procedimientos

a) Transferir el intérprete BASIC-52 completo desde la ROM


interna del micro hacia RAM externa., para luego yrabarla en

EPROM externa,

b) Deshabilitar la ROM interna del micro y direccionar la

EPROM donde se ha grabado *=»! intérprete desde 0000H a 1FFFH-

Con la tarjeta desarrollada se puede grabar de RAM a

EPROM y deshabilitar la ROM interna colocando el pin /EA en


140

0L3 mediante el "jumper" JP.l.

Pero se necesita:

„ copiar el intérprete a RAM por bloques (por ejemplo de 2 K)

a añadir RAM externa ya que salo se dispone de 4 K y el

intérprete ocupa SK (seria aconsejable colocar una RAM de 8K

fuera de la tarjeta).

redireccionar la EPROM1-ASSEMBLER de 2000H-3FFFH a 0000H-

1FFFH.

Esta opción resulta conveniente cuando^ usando la tarjeta

diseñada, se ha concluido el desarrollo de un programa de

aplicación para un proyecto particular. Pues en el diseño del

circuito impreso de dicho proyecto se puede sustituir el

micracontrolador S052-BAS1C cara (US$ 255 por un 8032 barato

(US$ 3) y aunque se añade el precio de la EPRQM de 8 K (US$

4) ., de todas maneras se reducirá el costo total del proyecto

notablemente.

5.1.3 ESPECIFICACIONES TÉCNICAS DE LA TARJETA

PROCESADOR* INTEL 8052AH-EASIC

MEMORIAS 4 sócalos en la tarjeta permiten disponer de 4 Kbytes


de RAM (can 2 chips 0116 o 5116) y 16 Kbytes de EPROM (can dos
chips 2764) o máximo los 4!< de RAM más 24 Kbytes de EPROM (con

un chip 2764 y uno 27128). Las EPROM pueden ser de cualquier


voltaje de programación„ La memoria puede ampliarse fuera de
la tarjeta hasta a 64 K de RAM y 56 K de EPRQM., puesta que el
141

BASIC-52 ocupa los primeras 8 K de EPROM interna del micro.

ENTRADA/SALIDAS

PÓRTICO SERIALs 2 puertos seriales con niveles de voltaje TTL

y RS-232C-, uno de ellos para la comunicación serial terminal-

micro., inicializado en el modo UART de 8 bitss 8 bits de

datos, 1 bit de arranque,, 1 bit de parada., y sin paridad- El

otro puerto serial sirve para utilizar una impresora serial.

La velocidad de transmisión puede ser cualquiera de 110 a

19.200 BPS.

E/S PARALELAS 3 puertos paralelos de 8 bits proporcionados por

el PPI 8255A configurabas por el usuario.

E/S EXTERNAS bus de direcciones de 16 bits y bus de datos

bidireccional de 8 bits,, disponibles para el usuario a través


del conector H8.

FUENTES DE PODER £

Fuente fija de n-5V para polarización de todos los componentes

de la tarjeta y de elementos adicionales fuera de ella.

Fuente variable 12.. 5, 21 y 25 V, para programación de memorias


EPROM dentro de la tarjeta.

DIMENSIONES Y CDNECTQRES: La tarjeta mide 16-Scm X 10.2cm. Se

dispone de distintas señales en los diferentes conectores s


los buses de direcciones., datos y control 5 asi como las
funciones especiales del pórtico 1 del micro en el conector
H8« Los pórticos paralelas están disponibles en los conectares

HÍ P H2 y H3* Conectar DB9 para comunicación serial RS-232C-

Señales de fuentes de poder en voltajes AC o DC en el conectar

JP11. Todas las funciones especiales del pórtico 3 del micro

están en el conector JP9- Señales de comunicación serial para

los 2 pórticos, tanto en niveles de voltaje TTL como RS-232»

Líneas de selección de chip para elementos externos a la

tarjeta (periféricos),

CONDICIONES DE OPERACIÓN 8 Temperatura 0 - 50 "C

Humedad relativas 10 - 90 "/. no condensada

5-2 CONCLUSIONES

— Las principales ventajas del 8052-BASIC, comprobadas con


la realización de programas sons

„ Matemática en punto flotante BCD (Binaria Codificado a

Decimal)9
* Capacidad de programación cié EPROMs y EEPROMs,,
« Desarrollo de software autónoma,,

. Posibilidad de llamar todas las rutinas aritméticas y de


entrada/salida, desde lenguaje Assembler,

. Manejo de interrupciones en lenguaje BASIC-52 o Assembler.,


- Reloj en Tiempo Real de precisión,,
„ Los programas Basic puedan residir en RAM a EPRQM.,

„ Conversión directa entre sistemas de numeración decimal-

hexadecimal,

Ejecución automática de programas Basic luego de un RESET o

encendida _,

„ Señal de salida PWM.

- El BASIC-52 no solo permite grabar programas BASIC en

memorias EPROM ejecutando un simple cornado,, sino también

permite grabar cualquier dato existente en RAM en una EPROM,,

usando la sentencia PBM - Esta característica., utilizada junto

con un programa para leer memorias, y la posibilidad que

tienen los terminales de almacenar información en un archivo

de texto,, convierten a la tarjeta desarrollada en un verdadero

equipo programador de memorias EPROM., que puede utilizarse,,

con pocas modificaciones,, incluso para programar micropracesa-

dores de la familia MCS-51,,

- El desarrollo de programas en el microcontroladar 8052AH--

BASIC utilizando su intérprete interna MCS BASIC-52 resulta

conveniente respecto al desarrollo de los mismos en micro-

contraladores de la familia MCS-51 en lenguaje Assembler, para


aplicaciones de control de procesos,, mediciones e

instrumentación-, por las siguientes causass

, La programación en un lenguaje de alto nivel (como es el

BASIC-52) siempre es más sencilla que en uno de bajo nivel

(como es el Assembler MCS-5Í) „ Por otro lado,, entre los

lenguajes de alto nivel, el BASIC es de los más fáciles de


144

aprender,, pues la mayoría de comandos y sentencias describen

por si solos la función que ejecutan,! razón por la que desde"

su creación hasta la actualidad,, no ha perdido popularidad.

El tiempo que tarda el desarrollo y puesta en marcha de

cualquier proyecto se reduce notablemente al utilizar el chip

8052-BASIC,, pues para escribir un programa en BASIC-52 no se

requiere gran experiencia en programación ni conocimiento

profundo de la arquitectural del microcontrolador? lo cual si

es necesario para programación en Assembler»

Un sistema básico de desarrollo de proyectos con el 8052-

BASIC requiere únicamente de un computador«, interface serial,,

una RAM estática., un LATCH y pocos elementos adicionales


fáciles de conseguir,, inclusa en el mercado nacional.

- Una gran desventaja del EíASIC-52 es su baja velocidad de

ejecución., pues al correr un programa el intérprete tiene que

leer cada línea de código Basic y traducirla a lenguaje

Assemb 1 er para e j e cu tar 1 a en e 1 82)52 - Esta desván ta j a se

acentúa en ciertas operaciones como (a) cambiar un bit de un


pórtico,, y (b) leer o escribir en una localidad de RAM5 que

realizadas en lenguaje Assembler toman un tiempo que está en


el orden de los microsegundos., mientras que hacerlo en Basic-
52 está en el orden de los mi 1isegundos. Por lo tanto aquel las
aplicaciones que requieran de estas operaciones,, es preferible
hacerlas en lenguaje Assembler antes que en BASIC-52- Sin
embargo para solucionar este problema,, el 8052BASIC permite
enlazar programas en BASIC-52 con rutinas en Assembler.
145

- Para aplicaciones de control que requieran de gran

velocidad como la toma de muestras., no es aconsejable utilizar

BASIC debida a su lentitud„ Es preferible hacer rutinas

sencillas de adquisición en Assembler que graben los datos en

memoria RAM; dichas rutinas pueden ser llamadas desde un

programa 8ASIC-52 con la sentencia CALL,, Una ves que se tienen

todos los datos almacenados,, puede realizarse el procesamiento

matemático de los mismos en lenguaje de alto nivel.

- Debido a que el BASIC-52 es un intérprete., tiene la

ventaja de permitir al usuario desarrollar un programa

iterativamente., sin la-tediosa y repetitiva tarea de editarlo.,

ensamblarlo (o compilarlo) , cargarlo y correrlo., lo que se

requiere en el caso de ensambladores y compiladores» Pero

tiene la desventaja de qu«¿ no se puede ejecutar un programa

BASIC™ 52 y ni siquiera editarlo., si no se dispone del

intérprete completa (8 Kbytes), la cual no es necesario en el

caso de ensambladores o compi1 adores.

- Se ha realizado un cálculo aproximado del tiempo de

ejecución de varias intrucciones BASIC-52., el mismo que

demuestra la lentitud del micro para ciertas operaciones como


la adquisición de datos „ Para establecer una operación,, el

intérprete BASIC-52 incorporado en el microcontrolador 8052-

BASIC„ operando con un cristal de 12 MHz, ejecuta

instrucciones a una velocidad 30 veces menor que la del

intérprete GW BASIC corriendo en un computador PC AT., con un

procesador S0286 de 12 MHz.


146

- La única manera de generar una serial PWM para onda

senoidal,, de una frecuencia determinada,, desde el BASIC-52.[es

u til izan do la sentencia PWM., pero existen muchas limitaciones

en su usos mientras el micro está generando la señal requerida

y sacándola por el pin respectivo., no se puede realizar

ninguna otra operación,, como calcular el ancho del pulso para

poder modularlo- El mínimo ancho de cada pulso es de 25 ps?

por lo que no se puede hacer un control completo del ancho del

pu1so y solo se pued en 1og ra r seña1es modu1adas a baja

frecuencia-

- La principal aplicación del comando PWM está en la

generación de trenes de pulsos de ancho variable muy precisos

en su forma y de frecuencias de hasta 25 KHz.

- Normalmente en cualquier microcontrolador corno los de la

familia MCS-51 resulta muy difícil efectuar operaciones en

punto flotante, y deben desarro 1larse rutinas largas solo para

efectuar una multiplicación o división. En cambio., el 8052™

BASIC dispone de todas las operaciones matemáticas en punto

flotante,, operaciones lógicas de ancho de 1 byte, funciones

trigonométricas., ex pon en cía las,, logarítmicas, etc. Esto hace


que el 8052-BASIC sea el microcontrolador ideal para

implementar en él filtros digitales (pasa bajos o pasabanda) o

acciones de control (PI , PD, PID) o cualquier aplicación en la

cual se requiera evaluar ecuaciones recurrentes, que antes era

posible realizar solo en un computador y utilizando un

lenguaje de alto nivel (como el QuickBasick'4-5).


147

- El BASIC-52 inicializa el pórtico serial para el modo

UART de S bits., por lo que en cualquiera de los casos

anteriores deben astearse los parámetros de comunicación

correspondientes a dicho modos S bits de datos., I bit de

arranque., 1 bit de parada y sin bit de paridad- Ya que el

BASIC-S2 tiene una rutina de búsqueda automática de la

velocidad de transmisión5 ésta puede ser cualquiera desde 110

BPS hasta 19200 BPS? siempre que la frecuencia del oscilador

de cristal lo permita. En la tarjeta se ha colocado un cristal

de 12 MHz y se ha probada la comunicación con el micro

exitosamente para todas las velocidades de transmisión.

- Los equipos terminales y los programas emuladores de

terminal tienen características muy útiles» A continuación se

describen algunas de ellas y la aplicación que se prevé:

- Posibilidad de grabar en un archivo de texto todo lo que se

haga en una sesión de trabajo. Útil para la depuración de

programas.

Posibilidad de enviar archivos de texto DOS desde el

terminal hacia el microcontrolador. Útil para desarollar

programas BASIC-52 en cualquier editor de texto.


- Posibi1idad de guardar en un archivo de texto DOS toda la

información que envié el micracontraladar 8052 al ejecutar un

programa. Esto permite salvar resultados de la ejecución de

programas para revisarlas posteriormente.

Posibilidad de incluir un editor de texto dentro de las

funciones de terminal« Útil para corregir programas BASIC-52


148

salvados en formato de texto sin necesidad de salir del

emulador.

Por otro lada ? un terminal o emulador de él., por

definición no tiene capacidad de graficación 3 requerida para

la comprobación y depuración de algunos programas 8ASIC-52- En

ese caso conviene hacer un programa emulador de terminal en un

lenguaje que facilite el uso del pórtico serial del computador

y la generación de gráficos,-

Aunque el mi [Link] laclar 8052-BASIC de INTEL es

relativamente antiguo, hablando en términos del rápido

desarrollo de la electrónica,, pues fue lanzado al mercado a

mediados de la década de los 80? su gran versatilidad lo ha

hecho muy popular para diseño de infinidad de proyectos dentro

del área de control-

En la actualidad existe una verdadera industria dedicada

al desarro 1 lo de productos relacionados con el 8052-BASIC¡, en

la cual participan varias empresas,, las mismas que presentan

muchas opciones para usuarios del BASIC-52:

una versión CMOS del 8052AH-BASIC de bajo consumo de

potencia (aproximadamente la sexta parte del original) e igual


costo,, el 80C52-BASIC de MICROMINT.,

- BASICs ampliados en EPRÜMs externas,,

compiladores compatibles con el BASIC-52 y software de

desarrollo adicional s

una EPROM BASIC-31 que se? ejecuta con microcontroladores


8031 de bajo costo,
149

EPRQMs "A" y "A-f-B" que contienen un ensamblador y un editor

de texto para usarla con dicha ensamblador.,

- También se puede conor.:er el código fuente del BASIC-52.,

para lo que se debe utilizar' un desensamblador como el BBS d-e

INTEL. El código fuente es de dominio público-, y puede ser

usado libremente o adaptado según el requerimiento de

proyectos propios^ para modificar el código fuente del BASIC-

52 se necesita de un ensamblador como el CYS8051 o compatible.

REFERENCIAS BIBLIOGRÁFICAS;

COMPUTERCRAFT, Volumen 2, Hicksville., NY, Enero 1993.

COMPUTERCRAFT., Special Report (articulo de la revista)


Hicksville, NY, February 1993., pag „ 51-53
150

A N E X O S

ANEXO 1.- DIAGRAMA CIRCÜITAL DE LA TARJETA


151

ANEXO 2_- PLANOS DEL CIRCUITO IMPRESO


Todos los lados del circuito impreso están a escala 1:1

2.1 SILUETAS

,K ,,r—


_3 i: S»L
^- H.ÍT-.
rm s
rm
E2S5
nn
tó.,
£51,
EOU
m
JP4 nsi

sLJ^te) 27iM
[ ' x 27isa i
t
51 15- a
e
oo i-Lvw»neiBB vnMWcvia i u OXIHV

cinsve-HYesQB
y i oí AT*B ^I-OIKYI^C NOTIÍYM í
J. rs i Hoaj-aai» BQ oj.M»«Y-L
I»ÍJ.3»TB T I W a i H B S H l BO

nyno I o-rw yo i HOBJ. i TOO YI»ÍIO»B

•i a a f- r 2 1-
152

2.2 LADO DE SOLDADURAS

ooaooopo oaaaoaoej

« Q o t o o o o o a e a a e í o o o qo'iao
"• -- *T_-~~* """* j/°t °/£~*

-s 0 0 0 0 0 0 0 0 0 0 0 0 tt O O p'-O O !»t»
i!

«~o i» o n o olpo^o^^oQo o y^ gro'irop o o o o o.o o


.•^^..r\......:_^

X.\o n o cu o p o q A o a o—>
ooooo o . Ooo
•>—« O B XTy~ """v
—T\

-e o o. o'o o o o o o o « o o—* jr~&tt o o o a o o a o o"


153

2.3 LADO DE COMPONENTES


154

ANEXO 3.- ESQUEMA DE COLECTORES

H 1 H 2 H 3

1 PA0 1 PB0 1 PC0


2 PA1 2 PEÍ 2 PCI
3 PA2 3 PB2 3 PC2
4 PA3 4 PB3 4 PC3
5 PA4 5 PB4 5 PC4
6 PA5 6 PB5 6 PC5
7 PA6 7 PB6 7 PC6
8 PA7 8 PB7 8 PC7

H 4 H5 H6
1 CS2 1 T2TRIG 1 T10UT
2 CS3 2 T2EX T/C 2 R1IN
3 CS5 3 PWM OUT 3 R2IN
4 CS6 4 /ALE DIS 4 T20UT
5 CS7 5 /PROG PUL 5 T2IN
6 CS1B 6 /PROG ENA 6 R20UT
7 CS2B 7 /DMA ACKN 7 R10UT
8 CS3B 8 LINE PRIN 8 T1IN

H7 H8

1 VSS VCC (—40 VCC


2 EXTVCC VPP -39 EXINT0
3 EXTVPP EXTRST -38 EXINT1
4 LIBRE T0 -37 TI
5 AC4 WR —36 RD
6 AC3 D0 —35 DI
7 AC2 D0 —34 D3
8 AC1 D4 —33 D5
D6 —32 D7
ALE 10 —31 PSEN
A15 11 —30 A14
A13 12 —29 A12
All 13 —28 A10
A9 14 —27 AS
A6 15 -26 A7
A4 16 [—25 A5
A2 17 -24 A3
A0 18 -23 Al
PE 19 1—22 PP
VSS 20 (—21 VSS
155
ANEXO 4.- CONJUNTO DE INSTRUCCIONES DEL BASIC-52 VI. 1

4.1 CONJUNTO DE INSTRUCCIONES .- RESUMEN

COMANDOS SENTENCIAS OPERADORES

RUN BAUD (+) SUMA


CONT CALL (-) RESTA
LIST CLEAR (#5 MULTIPLICAS,
CLEAR(S«eI ) (/) DIVISIÓN
LIST© CLOCKU&0) (**)EXPONEIMCIAC.
NEW DATA ( -NQT B ) NEGACIÓN
NULL READ ( «AND- ) Y LÓGICA
RAM RESTORE ( - OR ,. ) 0 LÓGICA
ROM DIM (n X O R B ) 0 EXCLUS
XFER DO-WHILE ABS( )
PROS DO-UNTIL IMT()
PROG1 END SIGNC )
PROG2 FOR-TO-STEP SQR ( )
PROG3 NEXT RND
PROG4 GOSUB LOGO
PROG5 RETURN EXPC)
PROG6 GOTO SIM( )
FPROG1 OM-GOTO case )
FPROG2 ON-GOSUB TAN ( )
FPROG3 IF-THEN-ELSE ATN( )
FPROG4 INPUT
FPROG5 LET ASC( )
FPROGÓ ONERR CHR C 5
ONEX1 CBY( )
ONTIME DBY( )
PRINT XBY( )
PRINTtt GET
PRINT© IE
PH0- IP
PH0. # POT1
PH0. @ PCON
PHl, RCAP2
PH1.# T2CON
PH1.@ TCON
PGM TMOD
PUSH TIME
POP TIMERO
PWM TIMER1
REM TIMER2
RETÍ XTAL
STOP MTOP
STRIMG LE.N
UI(1&0) FREE
PI
LD@
ST©
IDLE
RROM
156

ANEXO 4 CONJUNTO DE INSTRUCCIONES,-


GUIA DE REFERENCIA RÁPIDA

4.2.1 COMANDOS:

COMANDO FUNCIÓN EJEMPLQ(S)

RUN Ej ecu ta un pragrama RUN

CONT Continúa después de un STOP o CONT


Contral-C

LIST Lista un programa en pantalla de LIST


consola (terminal) LIST 10-50

LIST& Lista un programa en la impresora LIST&


serial LISTtt 50
LIST© Lista un programa en el "driver" LIST@
del usuaria LIST© 90

NEW Borra el programa almacenado en RAM NEW

NULL Determina el número de caracteres NULL


NULL (0H) que el BASIC-52 sacará NULL 0FFH
luego de un "[Link] return"

RAM Evoca el "modo RAM";, programa en RAM


curso en memoria lectura/escritura

ROM Evoca el "modo ROM",, programa en ROM


curso en memoria ROM/EPRQM ROM 255
XFER Transfiere un programa de ROM/EPROM XFER
a RAM e ingresa al modo RAM

PROG Salva él programa en curso en EPROM PROG

PROG1 Salva dato de velocidad de transmi- PROG1


sión C baud rate) en EPROM

PROG2 Salva [Link]. en EPROM y ejecu- PROG2


ta su ler programa luego de RESET
PROG 3 Salva datos [Link]» .y MTQP PROG3
(última loe. de RAM) en EPROM
PROG4 Salva vel-trans. y MTOP en EPROM y PROG4
ejecuta ler programa luego de RESET

PROG5 Igua1 a PROG4 excepto que 1a RAM PROG5


externa no es borrada luego de un
RESET o encendida n si su localidad
5EH contiene un 0A5H y existe
respalda de batería
157

COMANDO FUNCIÓN EJEMPLO(S)

PROG6 Igual a PROG5 excepto que la PROG6


localidad de código externo 4039H
es llamada luego de un RESET

FPROG Salva el programa en curso en EPROM FPROG


usando el algoritmo de programación
"INTELigente"

FPROG1 Salva data de [Link]- en EPROM FPROGi


usando el algoritmo INTELigente

FPROG2 Igual a PROG2 excepto que se usa el FPROG2


algoritmo INTELigente

FPROG3 Igual a PROG3 excepto que se usa el FPROG3


algoritmo INTELigente

FPROG4 Igual a PROG4 excepto que se usa el FPROG4


algoritmo INTELigente

FPROG5 Igual a PROS5 excepto que se usa el FPROB5


algoritmo INTELigente

FPROG6 Igual a PROG6 excepto que se usa el FPROG6


algoritmo INTELigente

4.2.2 SENTENCIAS

En la siguiente tabla se muestra información detallada de

todas las sentencias,,

$ en la primera columnas

- el nombre de la SENTENCIA,,

- su modo de operación 2 modo de carrera (rj "run" o de comanda


(c) "camand" y carrera a la ves (c/r) ¡, y

-el TIPO de función que real izas Control (C) ¡, Adquisición (A)

o Entrada/Salida (I/O) "Input/Output"


- en la segunda columna la FUNCIÓN propia de la sentencia,, y

% en la tercera columna EJEMPLO(5) del uso de cada


sentencia.
158

SENTENCIA FUNCIÓN EJEMPLO(S)


modo-TIPO

BAUD Define la velocidad de transmisión BAUD 1200


c/r-C del pórtico de impresora de linea

CALL Llama programas en lenguaje CALL 9000H


c/r-C Assembler grabados en EPRDIVI externa CALL 2

CLEAR Limpia variables ¡, interrupciones CLEAR


c/ r C / evocadas por Basic y pilas (stacks)

CLEARI Limpia toda interrupción evocada CLEARI


c/r-C por Básica OIMTIME y /o ONEX1

CLEARS Limpia toda pila (stacks) Basics de CLEARS


c/r-C CONTROL y de ARGUMENTOS

CLOCK1 Habilita RELOJ EN TIEMPO REAL (Real CLOCKi


c/r~C Time dock RTC)

CLOCK0 Deshabilita RELOJ EN TIEMPO REAL CLOCK0


c/r»C

DATA Especifica DATOS o expresiones a DATA SIN(PI)


r -A ser leidos por la sentencia READ DATA I .,5/3

READ Lee DATOS de la sentencia DATA y READ A


r ~ñ los asigna a variables READ X5Y,,Z
RESTORE Inicializa puntero de READ para que RESTORE
r »A los DATOS puedan leerse de nuevo

DIM Asigna RAM externa para arreglos de DIM A(100)„


c/r-A variables (columnas de 0-254 elem.) B(5)
DO-UNTIL Lazo de control se repite HASTA que DOs PRINT A
r -C la condición probada sea verdadera UNTIL A=10

DO-WHILE Laza de control se repite MIENTRAS DOs PRINT A


r -C la condición probada sea verdadera WHILE A<10

END Termina la ejecución de un programa END


r -C

FOR-TO- Inicia lazo de repetición que FOR I»l TO 5


ÍSTEP} termina en NEXT a pasos definidos STEP .01
c/r-C
NEXT prueba la condición del lazo FOR-TO NEXT I

GOSUB Ejecuta una SUBRUTINA GOSUB 2000


v~
r __r*
w
RETURN RETORNA de una SUBRUTINA RETURN
159

SENTENCIA FUNCIÓN EJEMPLO(S)


modo-TIPO

GOTO Transfiere el control del programa GOTO 20


c/r~C al número de linea señalado

ON-GOTO GOTO condicional : si variable-0 el ON A GOTO 5,


r -C control va a ira linea de lista,, si 100
var~l'a 2da y así. sucesivamente

0N-GOSUB GOSUB condicional ON J GOSUB


r -C 200., 1000
1F-THEN- Prueba condicional IF I<0 THEN
•CELSE} T = AT T
J. *Tllí'?
Ji-

r -C

INPUT Ingresa una variable numérica o INPUT X


r -I/O literal (string)

LET Asigna un valor a una variable nu- LET A=10


c/r-A mérica o literal CLET es opcional) o A=10
ONERR Transfiere el control a linea indi- ONERR 100
r -C cada en caso de ocurrir un ERROR

ONTIME Genera interrupción de tiempo cuan- ONTIME 1,10


r -C do TIIVIE>= ier argumento y control
va a linea indicada por 2da argum.

ONEX1 Igual a GOSUB en caso de que el pin ONEX1 200


r -C INT1 se haya puesto en bajo (0L)

PRINT Imprime en pantalla de termináis PRINT A,B,C


c/r-I/0 variables,, strings o literales P."hola"
P« y 7 son abreviaciones de PRINT 7 XBY(512)
PRINT* PRINT a pórtico de imresora serial PRINT* A/2 5 B
PRINT® 'PRINT a__._"driver" de usuario PRINT® A

PH0. Imprime en pantalla de terminal en PH0. A


c/r-I/0 modo HEXadecimal con supresión de 0 [Link](5)
PH0 - # PH0. a impresora serial PH0-* A
PH0» a "driver" del usuario PH0.@ A
PH1- Imprime en pantalla de terminal en PH1. A
c/r-I/0 modo HEXadecimal sin supresión de 0 PH1.1000
PH1.& PH1* a impresara serial PH1.# A
PH1 H @ PH1- a "driver" del usuario PHI.@ A
160

SENTENCIA FUNCIÓN EJEMPLO(S)


mado-TIPO

PGM Programa una EPROM o EEPROM., PGM


c/r-I/0 requiere que el usuario inicialice
ciertas localidades de RAM interna

PUSH Almacena resultados de expresiones PUSH A-.20..B


c/r-A en la pila de argumentos tipo FILO

POP Recupera valores almacenados en la POP A.B1,C


c/r-A pila de argumento en variables

PWM MODULACIÓN POR ANCHO DE PULSO gene- PWM A+5,B,10


c/r~I/0 ra secuencia de pulsos en pin P1.2

REM No hace nada,, pero permite al usua- REM salva A


c/r~-C rio poner NOTAS D comentarios

RETÍ RETorno de Interrupciones manejadas RETÍ


r -C por BASIC-52s ONTIME u ONEX1

STOP Suspende la ejecución de un progra- STOP


r -C ma en un punto determinado

STRING Asigna memoria para STRINGs STRING 5,,10


c/r-C

UI1 Llama la rutina de usuario de U11


c/r-C entrada desde consola al 8052

UI0 Llama la rutina BASIC de entrada UI0


C/R-c desde consola al 8052 AH-BASIC

U01 Llama la rutina de Usuario de U01


c/r-C salida a consola,, desde el 8052

UQ0 Llama la rutina BASIC de salida a U00


c/r-C consola- dsde el ü.¿.AH™ BASIC

ST@ Cdir] Suarda un 4* en tope de PILA en 6 ST@ 1000H


c/r-I/Q localidades definidas por el ST@ A
usuario desde Cdir] hasta Cdir]-5

LD@ Cdir] Carga tope de PILA con # guardada LD@ Í000H


C/P—I/O con ST@ en localidades definidas LD@ A
por el usua r i o desd e [d i r]

IDLE Para ejecución del prog- y espera IDLE


r -C interrupción Basles ONTIME u OiMEXl

RRQM C#] Corre e1 programa Basic número C#] RROM 10


c/r~C almacenado en EPROM
161

4.2.3 OPERADORES - OPERANDO DOBLE

OPERADOR FUNCIÓN EJEMPLO(S)

SUMA A-fl

RESTA A-l

MULTIPLICACIÓN A#10

DIVISIÓN A/10

EXPONENCIACIOM A«2

AND PRODUCTO LÓGICO A-AND.10

OR - SUMA LÓGICA [Link].10

OR EXCLUSIVO LÓGICO [Link].10

OPERADORES - OPERANDO SIMPLE

ABS( ) VALOR ABSOLUTO ABS(-3)

NOT ( 5 COMPLEMENTO DE UNO NOT(0)

INTO TOMA PARTE ENTERA DE UN NUMERO INTÍ10/3)

SGN( ) TOMA EL SIGNO DE UN NUMERO SSNC-5)

SQRO RAÍZ CUADRADA SQRC1-3)

RND MUMERO ALEATORIO "RANDOM" RND

LOG LOGARITMO NATURAL LOG(100)

EXP( ) "e" (2-7182818) A LA X EXP(IO)

SIN( ) SENO DEL ARGUMENTO SINC1.5)


COSÍ ) COSENO DEL ARGUMENTO COS(0)

TAN( ) TANGENTE DEL ARGUMENTO TAN(-707)

ATN( ) ARCO-TANGENTE DEL. ARGUMENTO ATN(l)

OPERADORES PARA STRINBS

ASC( ) VALOR "ASCII" DE UN CARÁCTER ASC(A)

CHR( ) CONVIERTE EXPRESIÓN NUMÉRICA EN SU CHR£65)


RESPECTIVO CARÁCTER "ASCII"
162

OPERADORES -FUNCIONES ESPECIALES:

OPERADOR FUNCIÓN EJEMPLO (S)

CBYC ) LEE MEMORIA DE PROBRAMA INTERNA Y P.CBYC1000H)


EXTERNA A=CBY(3000H)

DBY( } LEE MEMORIA DE DATOS INTERNA Y [Link](0F0H)


ESCRIBE DATOS EN ELLA

XBY( ) LEE MEMORIA DE DATOS EXTERNA Y A=XBY(4000)


ESCRIBE DATOS EN ELLA XBY(0FFFH)=9

GET LEE CONSOLA P - GET

IE LEE REGISTRO (IE) HABILITACIÓN DE


INTERRUPCIONES, Y LE ASIGNA VALOR IE=82H

IP LEE REGISTRO (IP) PRIORIDAD DE P«IP


INTERRUPCIONES, Y LE ASIGNA VALOR IP=[Link].10H

PORT1 LEE/ASIGNA PÓRTICO 1 DE E/S (Pl) PORT1=0FFH

PCON LEE/ASIGNA REGISTRO PCON P - PCON

RCAP2 LEE/ASIGNA RCAP2 (RCAP2HsRCAP2L) RCAP2=100

T2CON LEE/ASIGNA REGISTRO T2CON P.T2CON

TCON LEE/ASIGNA REGISTRO TCON TCON=10H

TMOD LEE/ASIGNA REGISTRO TMOD A-TMQD

TIME LEE/ASIGNA RELOJ EN TIEMPO REAL TMOD«0

TIMER0 LEE/ASIGNA TIMER0 (TH05TL0) TIMER0=0

TIMER1 LEE/ASIGNA TIMER1 (TH1:TL1) P.TIMER1

TIMER2 LEE/ASIGNA TIEMR1 (TH2:TL2). TIMER2=0FFH

XTAL ASIGNA LA FRECUENCIA DE OPERACIÓN XTAL=9000000


DEL SISTEMA

VALORES DE CONTROL DEL SISTEMA

MTOP LEE/ASIGNA ULTIMA DIRECCIÓN DE RAM P„MTOP


EXTERNA VALIDA PARA EL MCS BASIC-52 MTOP=2000
LEN LEE NUMERO DE BYTES QUE OCUPA EL [Link]
PROGRAMA BASIC EN CURSO
FREE LEE No. DE BYTES DISPONIBLES PARA A=FREE
EL USUARIOS FREE - MTOP - LEN - 511
163

OPERADORES - EXPRESIONES RELACIÓNALES

OPERADOR DENOMINACIÓN EJEMPLO

IGUAL H™*H

<> DIFERENTE AOB

> MAYOR QUE A>B

>= MAYOR O IGUAL QUE A>=B

< MENOR B<A


<= NEMOR O IGUAL QUE B<=A

CONSTANTE ALMACENADA:

PI PI = 3.1415926 P-PI
164

ANEXO 5.- LOCALIDADES DE MEMORIA DE CODISO (ROM) EXTERNA


UTILIZADAS POR EL BASIC-52

El intérprete Basic-52 utiliza varias localidades de


memoria de programa externa alrededor de 2000H y 4000H para
diferentes propósitos- A continuación se indica cada LQCalidad
usada y la FUNCIÓN que desempeña s

LOC, FUNCIÓN

2001H DURANTE UN RESET? EL BASIC-52 BUSCA EN ESTA LOC- UN


0AAH.H SI LO ENCUENTRA,, LLAMA A LA LOC. 2090

2002H SI EL BASIC-52 ENCUENTRA 05AH EN ESTA LOC..., EVOCA LA


OPCIÓN DE EXTENSIÓN DE COMANDOS/SENTENCIAS

2048H EL BASIC-52 LLAMA ESTA LOC B SI EL USUARIO QUIERE IMPLE-


MENTAR LA OPCIÓN DE EXTENCION DE COMANDOS/ SENTENCIAS.
EL USUARIO SETEARA EL BIT 45 Y LUESO REGRASARA

2070H EL BASIC-52 LLAMA ESTA LOCALIDAD PARA OBTENER LA


DIRECCIÓN DE LA TABLA DE VECTORES (COLOCADA EN EL DPTR
POR EL USUARIO)., CUANDO SE HA EVOCADO LA OPCIÓN DE
EXTENSIÓN DE COMANDOS/SENTENCIAS

207SH EL BASIC-52 LLAMA ESTA LOCALIDAD PARA OBTENER LA


DIRECCIÓN DE LA TABLA DE "LOOKUP" (COLOCADA EN EL DPTR
POR EL USUARIO), CUANDO SE HA EVOCADO LA OPCIÓN DE
EXTENSIÓN DE COMANDOS/SENTENCIAS

2090H EL BASIC-52 LLAMA ESTA LOC. CUANDO EL USUARIO EVOCA LA


OPCIÓN DE RESETEN LENGUAJE ASSEMBLER

4003H INTERRUPCIÓN EXTERNA 0

400BH INTERRUPCIÓN DE TIMER 0

40Í3H INTERRUPCIÓN EXTERNA 1

401BH INTERRUPCIÓN DE TIMER 1

4023H INTERRUPCIÓN DE PÓRTICO SERIAL

402BH INTERRUPCIÓN DE TIMER 2


4030H RUTINA DE USUARIOS SALIDA A CONSOLA (U01)

4033H RUTINA DE USUARIOS ENTRADA DE CONSOLA (UI1)

4036H RUTINA DE USUARIOS ESTADO DE CONSOLA


403CH RUTINA DE USUARIOü PRINT© o LIST@
4100H- FORMA DE LLAMAR RUTINAS ASSEMBLER DE USUARIO DE 0 A 7FH
41FFH
.165

Hay otras localidades de código externas de menor

importancia usadas solamente para hacer pruebas2

LüC. FUNCIÓN

2040H LOO, DE TRAMPA PARA INT. EXTERNA 0 SI SE HA SETEADO


ELBIT 26H DE RAM INTERNA Y SE HA EVOCADO LA OPCIÓN DMA.
EL PSW NO ES SALVADO EN LA PILA» PUEDEN HABILITARSE
INTERRUPCIONES. ESTA LOC., SERA LLAMADA PARA SALIDA DE
CONSOLA SI EL BIT 2CH DE RAM INTERNA ESTA SETEADO

2050H LOCALIDAD DE TRAMPA PARA INT. DE PÓRTICO SERIAL SI EL


BIT 1PH DE RAM INTERNA ESTA SETEADO,, EL PSW ES SALVADO
EN LA PILA (STACK)

2060H LOC- LLAMADA PARA ENTRADA DE CONSOLA SI EL BIT 32H DE


RAM INTERNA ESTA SETEADO (BIT 32H = I)

206SH LOC. LLAMADA PARA CHEQUEAR ESTADO DE CONSOLA SI EL BIT


32H DE RAM INTERNA HA SIDO SETEADO

2088H TRAMPA DE LA INTERRUPCIÓN DE T1MER i SI EL BIT 1AH DE


RAM INTERNA ES i. EL PSW ES SALVADO EN LA PILA (STACK)

La forma en que se han escogido las localidades permite

que las direcciones 2000H y 4000H puedan ser superpuestas sin

crear conflictos,, Las direcciones solapadas serán s 2001H,,

2002H, 4003H, 400BH, 4013H,, 401BH., 4023H,, 402BH, 4030H9 4033H „

4036H, 4039H, 2040H 3 204SH, 2050H, 2060H, 2068H3 2070H ¡, 2078H,

20S8H,, 2090H? y de 4100H a 41FFH.

Usando superposición de direcciones., se pueden


implementar todas las opciones de expansión que permite el
BASIC-52 para el usuario,, con pocas centenas de bytes de EPROM
166

6 _ - RAM INTERNA Y EXTERNA USADA PQJR EL BASIC-52

'51 BASIC-52

1.1 MEMORY USAGE (VERSIÓN 1.1)

The following list speciíies wliat locations ¡n huemul and extcrnal memory locaíions ¡iré useü bv Versión
1.1 of MCS BASIC-52. Any diíTerenccs bctwccn V I . O muí V-l.'l are in bold i'uce íype.

¡NTERNAL MEiViORY [Link] (VERSIÓNJ^JjL:™—•" — " "

LOCAT10N(S)'lN HEX MCS 3ASIC-52 USAGE _. ,-- - . '

- OOHTHRU 07H "VVORKING REGISTER BANK" "• ' - .•'."


08H BASIC TEXT POINTER — LOVV BN/TE
•09H" ARGUMENT STACK POINTER .- ' *- '
*• - OAH BASiC TEXT POIMTER •— HíGH BYTE '
- OBH THRU OFH ' TEiViPORARY BASIC STORAGE (Avaüabfü to luser in BASIC
CALLS to ASiVl routines)
ÍOH • ... READ TEXT POINTER — LOW BYTE
_. 11H CONTROL STÁCK POINTER
12H READ TEXT POINTER — HIGH BYTE
- 13H ' - START ÁDDHESS OF BASIC PHOGRAM — HIGH BYTE
14H START ADDRESS OF SASIC PROGRAM — LOW BYTE
'- 15H - NULL COUNT
1GH . PRÍNT MEAD POSITIOM FOR OUTPUT
Í7H FLOATING POINT OUTPUT FORMAT TYPE
18MTHRU21H MOT ÜSE'D — RESERVED FOR USER

- 22H BITS USED SPECIFICALLY AS FOLLOVVS

BIT 22.0H . SET VVHEM "OMTIME" STATEMEMT IS EXECUTED


BIT 22.1 H SET VVHEN BASIC INTERRUPT IM PROGRESS
, . Í3IT22.2H SET VVHEN "ONEX1" STATEMENT IS EXECUTEÜ ' .
BIT 22.3H SET VVHEN "ONERR" STATEMENT IS EXECUTED
$ BIT 22.4H SET VVHEN "ONTIME" INTERRUPT-1S IN PROGRESS .-
BIT22.5H SET VVHEN A UNE 13 EDITED " -
-. QIT [Link] ' . - SET VVHEN EXTERNAL IMTERRUPT IS PENDING
BIT.22.7H* . . WHEN S£T, CONT COMMAMD VV1LL WORK

23H'- BITS USED SPECIFICALLY AS FOLLOVVS

BIT23.0H ^"~ . USED AS FLAG FOR "GEET" OPERATOR '


HIT 23.1 H, SET V/.HEN PRiNTC«) OR LISTf«) !S EVOKED
E3¡T 23^ íí RESHRVED, TRAPS TIMER 1 IHTERRUPT
CONSOLÉ OUTPUT CONTROL, ! «UNE PRIMTER
BIT23.4H CONSOLA OUTPUT CONTROL, 1 -USER DEFIMED
BIT 23.5H BASIC ARRAY INITIALIZATION BIT
Bit 23. 6 H CONSOLÉ INPUT CONTROL, 1 -USER DEFINED
OiT 23.7H RESERVEO, USEO TO TRAP SERIAL POHT INTERRUPT/

&
167

MCS» BASiC-52

INTERNAL MEMORS' ALLOCATION (VERSIÓN 1.1)

LOCATipN(S) IN KEX " .feíCS BASíC-52 USAGE

.24H ' ' ' B!TS USED SPECIFÍCALLY AS FOLLOWS'

"B1T24.ÓH STOP STATEMENT OR CONTROL-C ENCOUNTERED


BIT 24.1 H USER IDL£ BREAK BIT .
B.1T 24.2H SET DURING AW INPUT INSTRUCTION .
[Link].24.3H PiESERVED ' ..... ~ ..... ."
'BIT 24.4H SET WHEN ARGUMENT STACK HAS" A VALUÉ
B1T24.5H RETÍ INSTRUCTION EXECUTED '
BÍT24.6H RESERVED, TRAPS EXTERNAL INTERRUPT O -
BIT 24.7H SET BY [Link] SIGNIFY THAT A VALID .LIST@ OR
DRfVER |S PRESENT " ',•

•BITS USED SPECI3CALLY AS FOLLOVVS

[Link] RESERVED, SOFTWARE TRAP TEST' ' .


'BIT 25.1H FINO THE END OF PROGRAIyí, IF SET '
BJT.25..2H SET DURING A DIM 3TATEMENT
BTT 25.3H INTERRUPT STATUS-SAVE BIT ' ' "
"E3T25.4H" .RESERVED, ÍNPUT TRAP
SETTO SíGNÍFY EXPANSIÓN IS PRESENT
. BIT 25:6H SET WHEN CLOCK1 EXECUTED, ELSE CLEARED
B.ÍT:25.7H- SET WHEN BASIC IS IN THE COiViiVtAND MODE

-2GH B'ÍTS USED SPECIFÍCALLY AS FOLLOWS

BÍT.26:OH SETTO DISABLE CONTROL-C


BTT.2G.1H SET TO ENABLE "FAKE" DMA
BIT 26,2K .RESERVED, OUTPUT TRAP* ' ' .
BÍT26.3H SETTO EVOKE "INTELLIGENT" PROM PROGRAMMING
BÍT2S.4H SET TO PRINT TEXT STRING FROM ROM '
BJT [Link] SET WJ-ÍEU CONTROL-S ENCOUNTERED '
• ' [Link]-2B.6H SETTO SUPPRESS ZEROS IN HEX MODE PRINT
BIT26.7H SET EVOKE HEX MODE PRINT
MCS® BASiC-52

INTERNAL MEMORY ALLOCATION (VERSIÓN 1.1)

LOCATION(S) 1N HEX MCS BASIC-52 USAGE

27 H "BIT" ADDRESSABLE BYTE COUNTER


28HTHRU3DH BIT AND BYTE FLOATING POINT V/ORKING SPACE
3EH . INTERNAL STACK POINTER HOLDING REGISTER
3FH LENGTH OF USER DEFíNED STRIMG — S
40H YIMER 1 RELOAD LOCATION — HIGH BYTE . "
41H — "• -TIMER 1 RELOAD LOCATION ~ LOW BYTE :- "

42H BASIC TEXT POINTER SAVE LOCATION — HIGH BYTE


-43H BASIC TEXT POINTER SAVE LOCATION — LOW BYTE
44H RESERVED ' '
45H TRANCENDENTAL FUNCTION TEMP STOflAGE
46H JRANCEIMDENTAL FUNCTION TE¡\iP STORAGE
47H MILLI-SECOND COUNTER FOR REAL T1MI1 CLOCK
4'8'H ' SECOND COUNTER FOR REAL TME CLOCK ~ HIGH
8YTE
49H - SECOND COUNTER FOR REAL TIME CLOCK — LOW*
BYTE -
'4AH TIMER O RELOAD FOR REAL TIME CLOCK
4B-H USHR ARGUMENT FOH OMTiñ/ic -- HIGM SYTE
4CH - USER ARGUiViíHNT FOH ONTíM?- -- LOW :.: ,'T£ •'
-4DH THRU O'FFH 8052AH STACK SPACE AND USER WORKING SPACE
169

13ASIC-S2

EXTERNAL MEMORY ALLOCATÍOW (VERSIÓN 1.1)

LOCATION(S) IN HEX MCS BAStC-52 USAGE

OOH THRU 03H NOT USED, RESERVED


04H LENGTH OF THE CÜRRENT EDITED UNE'
.05H AND OGH LN NUM IN BINARY OF CURRENT'EDITED UNE (K-L)
07HTHRU 55'H BASIC IMPUT BUFFER
5SHTHRU 5DH BiNARY TO H4TEGER TÉMP ' ' •":
5EH USED FOR RUN TRAP MODE (= 34H) . •'•
5FH USED FOR POWF.R-UP TRAP (= OÁ5H)
60H THRU OFEH CONTROL STACK • ' ' '
OBFH CONTROL STACK OVERFLOW
100H LOCATION TO SAVE'"GET" CHARACTER ''
1Q1H LOCATION TO SAVE ERROR CHARACTER CODE
102H AND 103H LOCATION TO GÜ T0 ON USER "[Link].1: (H-L)..
104KAND 105H TOP OF VARIABLE STORAGE (H-L) •• :
"TOBH'AND 107H-" FP STORAGE ALLOCATÍON (H-L)"
íOSH AND 109H MEMORY ALLOCATED FOR MATRiCíES (H-L)
10AH AND 103H TOP OF MEMORY-A8SIGÍ/ED TO BASIC. (H-L)
10CH AND 1GDH RANDOM NUMBER SEED (H-L)
10EHTHRU 113H CRYSTAL VALUÉ
114HTHRU 11FH FLOATÍNG POINTTEí'/iPS
120H AND 121H LOCATION TO GO TO ON ONEX1 [Link] (H-L)
122H AND 123H NUMBER OF BYTES ALLOCATED FOR STRINGS (H-L)
124K AND 125H SOFTWARE GEPHAL PORT ÜAUD RATE (H-L)
. 126H AND 127H LINE NUiVíRER FOR ONTif-iE INTERRUPT (H-L)
128H AND 129H "NORMAL" PROM PROGRAMMER TIME OUT (H-L)
12AH AND 12BH "INTELLIGENT" PROM PROGRAMMER TIME OUT (H-L)
12CH RESERVED . .
1 2 D H T H R U 1FEH ; ARGUMENT-STACK " ' •' - '

NOTE: (H-L) still mcans IIIGH BYTE — LOW BYTE, in externa'! mcinory al] 16 bit binao1 numbcrs
are stofcd wilh ihc I I I G M BYTE in thc firüt (lowcr oí'dcr) íiddress and (he LOW BYTE in ihc ncxt scqucnrial
address. • .'
170

ANEXO 7. DATOS TÉCNICOS^DEL 8052AH-BASIC


\

8052AH-BAS1C

Ful! BASÍC Interprete*- In ROM on a a Interrupts Can Be Handled By BASIC or


Single Chip . — Assembly Language ',
[Link]ílng Point Math a Buílt-ln Accuraie REAL TIME CLOCK !
Generates All Timíng Necessary to
« Múltiple User Prograrns í
Progrsm EPROMS and E2PROMS
[Link] Interpreten a Prograrns May Reside in RA?d,
/'Stand Alone" Software Development
All Arithmetic and Utility Routines Can" s.'Built In Radix'Conversion — Hex to
Be Called From Assembíy Language Decimal and Decimal to Hex

'O52AH-BASÍC te an 8052AH microcontroller v/ith a complete full-íeatured BASIC iníerpreter, MCS* BASfC-
52, rosídent ¡n íhe 8K of avaiiable ROM. This Sortv/sre-On-Srücon product is specincaiiy dssigned lo acd-?^-
the needs of process control, measuremení, and'instrumentsiion app¡icaiions..MCS BASIC-52 ailows 805¿V"
isers to wriie piograms in the popular BASIC language.'which is much simpler to wriíe and easior to undersíaaf
han assembly language. ' - ¡

In addition to the standard BASIC commands and funcfíons, such as ÍJoatíng poiní arithmeíícand transe e ndsr.'¿'
operaíions, MCS BASIC-52 contains many unique feaiures that aüow th.e user lo perform tasks that usuav
•equíre assembly language. Bil-wJse lógica!-o'perators*, such as AND, OR, and EXCLUSIVE-OR are suppoít¿;
gs well as hexadecimai ariíhmeíic. •" . . . . —:— . . . . . . ' !

A minímurn amount of hardv/are is required to support NOS BASIC-52. Smali sysíems can be constructed W7 !
only a latch, 1K bytes oí extemal memory, and the apcropriaie serial port tírlvers. VVith the addition o¡s
'transistor, a gaís, and a couple of passive componenís, MCS BASIC-52 can program EPROM or E^RC'J
devices v/ith íhe users application program. Both the standard and íhe ¡nteligent Programmingl" algori¡hrr.i;
are supported. •

. MCS BASIC-52 is an íníerpreted language. This ailows the user to develop a program iníeracíively without tr^
.cumbersome and repetiíive process of editing, assembünc, loadino, and running which is roquued by assemoic-^.
and compüers. MCS BASIC-52 was designed to permit the programmer to develop resident high level languso:
software using the high performance 8052AH devíce. ,. . !,

System Block Dlagram


171

8052AH-BASIC

PE ATURES AUTOSTART - .

SET Afler the user programs-an EPROM or E;2pPiOí.í wth


Lhe desired BASIC program. The PROG2 or FPRGG2
BASIC-52 conlains all standard BASIC commands may be used to enable trie [Link]
s, staíemenís, and oparators. Figure 1 líst [Link] ieature cf MCS BASIC-52. [Link]
software feature set of MCS BASIC-52. AUTOS-TASTis eaabled, MCS BASIC-52 vviü exscuie
_the User program afler RESET or a power-up
condition. Jhis permiís the user to RUN a procrsrri
0ATA FORMA7 _wiíhout connecítng the- MCS BASIC-52 device :o a
c o n s o l é " — a p o w e r f u ! íeature for coníroí
Tho range oí numbersJhat can be represented fn
environmenís.
BASIC-52 is:

= lE-127to :±.99999999E + 127 USER ACCÉSSA8LE FUNCT1QN LiBRARY

CONTROL ORIENTED FEATUHES Another unique íeature oí MCS BASIC-52 is thai H


contains a complete library oí functions íhat can be
BASIC-52 contains many unique features to accessed with assembly language. Alt íloating panx
perform taskühat usually reauire assembly langüege radix conversión, and I/O rouíines con:a¡aed m MCS
programming. The XBY and DBY operators can read BASIC-52 can be accessed witn assembiy lancuage-
and/or write e x t e r n a l ano ínternal memory CALL instrjctions. These compiex amnmetic rouLnes
iftr-pecuveiy. The CBY operator is useó to read can be used by íhe programmer in applicaóons
program memory. Additionally, virtually ail of the rocjüiring íhe spssci cí Gcsombiy lancuage, b'jí =¡so
:apeda! functun registers on the S052A.H can be Lha compiex arithmetics ofíered by BASIC.
eccessed with MCS BASlC-52. Th¡s allows the user
lo set the timer or interrupí modes withln the
constructs oí é-BAS!C proaram. An accuraíe intérruot
tíríven REAL "IME CLOCk that ñas a 5 miltiseconq 6052AH-BASIC PiN DESCRIPTION
rosolution is also ¡mplerrtented in MCS BASlC-52. (FIGURE 2)
TTt's clcck can be enabieo, disaoied, ana ussd to
gonürate inteirupls. FinfV, a CALL s!a:ement that 8052AH-BAS1C ¡s an 8052AH device, hov/ever, MCS
eltows the programmer tó.iALL assembly !a_nguage B A S I C - 5 2 assumes a particular h a r d w a r e
"toutines is avsila'ole in MCS BASiC-52. Farameters coníiguraíion., The following pin descripíion outlines
can be passed in a number of difíerent ways. the pin íunctions deíined by MCS BASIC-52.

EPROM/E2pROM RLE vss -


Basic interpreters a' -v only one program to be Circuit ground potential.
rosident Ín memory, a;- many require that the
program reside in RAK; -MCS BASIC-52. allows
pfograms to reside in' Mh RAM and EPROM/ VCC ' .
E^PROM. Additionally, up to 255 programs may
reside in EPROM/E2PROM. Programs may also be Circuit supply voltage. 5 volts ~ 10% rdative to VSS.
•transfered (XFER) (rom EPROM/E2PROM to RAM
[Link] purposes,
ADO-AD7
EPROM/E2RROM PROGRAMMING ' • . The multiplexed low-Order áddress and dala bus used
during accesses to external mamory. Exlernal pullup
A poweríul íeature of MCS BASlC-52 ís that it devices (— 10K fl) are required on (hese pins tí tha
9enerates all oí the timtng necessary to program any MCS BASlC-52 EPROM/£2pROM programming
EPROM or E2PROM device with the users' feature ¡s used.
(PROG/FPROG). Additionally, very Hule,
oxternal hardware is isquired to implement this
tature. Saving programs in EPROM. E2PROM is A8-A15
mij ch more attractive and reliable than other
*ttomatives, such as cassette tape, especially Ín The hlgh order address bus used during accesses to
and/or other noisy environments. external memory.
172

in 8052AH-BASIC

Commands Statements Opsrators T2/P1.0 C 1 ^-^ 40 3 vcc


RUN BAUD ADD( +) ; T2EX/ Pl.l C 2 39 13 ADQ
PWM OUTPUT/P1.2 C 3 38 Ü3 AD1
LIST' . CALL DIVIDE (0
LIST* CLEAR EXPON ENTIATION (") •• ALE DiSABLE/ P1.3 C 4 37 P AD!

NEW CLEARS MULTIPLY (*) PROGRAXl PULSE / P1.4 C 5 38 p AD3


NULL CLEARI SUBTRACT(-) . PROGRAH EHASÍ.S/P1.5 C 6 35 Lj f.£H
LOGICAL AND (.AND.) DUA ACKÍÍOWLEDGE/ P1.6 C 7
RAM CLOCKO CC52AH- "^ D AD5
CLOCK1 LOGICAL OR (.OR.) UHE PRINTER QUTPUT/ P1.7 C 8
ROM CASIC ^ D AD6
XFER DATA LOGICAL X-OR (,XOR;) " " - . RESET C 9 32 U AD7
PROG READ LOGICAL NOT 'CONSOLÉ SERIAL IHPUT C 10 31 Z) T-S>

PROG1 . RESTORE AES ( ) CONSOLÉ SERIAL OUTPUT C 11 30 D Ate


PROG2 DIM INT { ) ÍNTO / OUA 'RCQUESf C 12 23 n PS£
FPROG DO-WHILE SGN { ) - - '- ÍWT1 C 13 2B I]' AIS
FPROG 1 DOUNTIL SOR ( ) . ._ TO C 14 27. ID A14
FPROG2 EN'D - RND . '- _H c 15 26 13 A13
• FOR-TO-STEP LOG ( ) WR Lt 15 25 D A12
NEXT EXP ( ) ' RD c17 24 D A11

GOSUB SIN ( ) ' . - XTAL2 C 1B 23 D A1E3


- XTAL1 Q 13 D A9
- RETJJRN COS ( ) . - 22
- GOTO TAN ( ) •.— vss c: 20 21 Z] A8

Figure 2. Ccnfigura'tlon

the T2 tri'gger function are [Link] in t.kí


M'crocontroiiers [Link]. Ordsr N'umber 210915
002.

Pi3RT1.1-(T2EX) • - ;

Can be üsed as the externa! input to TIME&


COUNTER 2. A one (1) musí be wntten lo tn,s pe.*
pin output iatch in order for thls funciion ¡o opeis'.í .
Deíaüs oí the T2 trigger íunction are covered in tf •
MícroconlroÜer Users Manual.

PORT 1.2 (PWM OUTPUT)

This pin is used as the PWM output port v/hen i*t


PWM statément is executed. PWM stands for Pu'*.
Width Modulation and ¡s used lo genérate pulses y
varying duty cycle and írequuncy.

PORT 1.3 (ALE DISAELE)

This pin is used to disable the ALE signal le r-t


Figure 1. MCSK BASlC-52 Software Feature Set external address iatch v/hen the EPROM''E2PFiOy
programming feature is used. In a system, íhis ptf s
PORT1 logically anded wiih ALE.

A general purpose quasi-bidirectional 8-bit input/ PORT 1.4 (PROGRAMMING PULSE)


oujput port. The individual [Link] on PORT 1 al! have
-^altérnate functions v/hich may pr may not be When the EPROM'E2PROM programming feature a •
:¡mplemented by the user. The afternate funcíions are used, this pin provides th" propcr programmmq ou«
as follows; • width to program EPROM ana iNTELhgent EPRC'-!'
devices.- MCS BASIC-52 aclually calcúlales r*
PORT 1.0 (T2) proper programming pulso v/idth from'íhe syst?"
crystal valué (XTA'L) to assure the jaropor timm; ^
Can be uso'd as the trigner ¡npu' toTIMER/COUNTER this pulse, When used to program E2PROM deviCvS
.2. A onq (1) must be writion lo this port pin outpul the iengíh [Link] pulse is not critical. This pin is scr-*
latch in order for this íunction to .opérate. Details oí in the logical-zero (0) state.
8052AH-BASIC

1.5 (PROGRAMMING ENABLE) RD

the' EPROM/E2PROM programming feature A control signal that is usod to enable READ
Implemented, this pin is used to enable the tions to exlema! data memory. This pin ¡s acíivs IDW
EPROM programming voltage. Thís pin remains- (0).
octíve (logicaily lov> (0)) during the entire EPROM
programming process. On E2PROM dsvices that do WR _ . . _ . , _ _ . • . -
noi require any special programming voltage, this pin •
is not used. . A control signal thaí ¡s used to enable VVRfTE coer-
atbns to external data memory. This pin is SCDVS ow
pORT 1.6 (DMA ACKNOWLEDGE)

When the DMA féáture'ís implemented as described T1


tt the MCS* BASIC-52 users manual, this pin íunc-
•íons as an active low DMA ACKNOWLEDGE output. This pin can be programmed ío be an extemaj ÍTCHJÍ
to TIMEa-'COUNTER 1.-
pORT 1.7 (LINE PRINTER OUTPUT)
TO
.This pin functíons as a serial ouíput port when the
LIST,# or PRINT# command and.'or staternent is This pin can be programmed to be an exlema! trout
usod. This enables the user to make a "hard copy" to TIMER/COUNTER 0.
oí a prcgram or to print ouí results of a calculation.
INT1
fiESET
This pin is the exiernal íñterrupM pin. II is sclive tow
and ínterrupís on íhis pin may be handletí ¡n, eirí^er
A high (2.5 /olts) on this pin for tv/o machine cycles
BA5IC or in assembíy language.
whlle-the óscillator is running resets the device. An .
external pul'dpwn resistor (-8.2K) from RESET ío
VSS permití power-on reseí when a capacitor (—10 'INTO/DMA REQUEST
uf) is connected írom thl^ pin Eo VCC.
This is the external interrupl O pin. It is active low snd
ALE "a% may be optionally programmed !o function as a C-KÍÁ
request ¡nput pin. The DMA REOUEST pin is Lsed.
ALE (address latch enable) is an ouíput pin that ¡s by £2pROM devices during programming.
used to laten íhe low arder address oyte during Read,
Write. or progra'm íetch operations to external CONSOLÉ SERIAL OUTPUT
memory. '^. '
This ¡s the serial output pin to the consoíe devce.
Standard ASCII codes are used as welí-as a stancard
•asynchronous írame.
This pin (Program Store' Nable) is a control signal CONSOLÉ SERIAL-iNPUT
thal is used to enable e%; mal program memory. In
MCS" BASIC-52, thís pir ./ill always remaín inactivo This is the serial input pin that receives data frcr— tfie
(bgícálly high (1)) unless'íhe user is running an as-
consolé "devíc'e. Standard ASCII codes are assuneo
sembly language program in external memory. to be the input and the data is assumed to oe trans-
mutad using a standard asynchronous frarne.
XTAL1

Input 10 the inverting amplifier that' forms. the NOTES


oscillator.
If pin 31 is grounded the 8052AH-8ASIC v
XTAL2 as a standard 8032AH. The loicrances on th:s r;in
are described under DC characterístics. -
Output of the inverting ampiifier that íorms the oscil-
latpr, and ¡nput to the infernal clock generator. Re- For detailed Information concerning ihís procjct
ceives the extornafoscillator signal when an external please reíer to the .MCS BASIC-52 Users Ma-waI
°sd!lator is used. (Order Number 210918-002).
174

8052AH-BASIC

.iBSOLUTE MÁXIMUM RAT1NGS* . • 'NOTICE: Stresses above those Usted ur,


"Absoluta Máximum Ratings" may cai^Y
-Ajnbient Temperature Under Bias . . , 0°C to 70°.C permanent damage to íhe device. This is a sí.-¡W
rating only and tunctional operation oí the devic.s «•
Itbrage Temperature '. -65eC to + 150°C these or any other condilions above those indtcyf-
in tfíe operationaí sections oí íhis specifioation is t*i-.
Voltage on Any Pin Wíth
¡mplied. £xposure to absoluta máximum ffi;~v
, Respect lo Ground (Vgs) • • • • -0.5V to +7V
conditions ior extended períods may atfect det-cj-
Dower Dissipation •. . , 2 Watts relíabillty.

'CiURACTERISTlCS = 0°C to 70=C, = 4.5V to 5.5V. = ov)

'Symbol Para meter Mln Max Unit . Test Condltlons


VIL Input Low Voltage -0.5 0,8 V
VIH Input Migh Voltage ' — 2.0 V - i
VCG+ 0-5
(Except RST and XTAL2)
VlHT 'Input High Voltage to 2.5 VGC -í- -0.5 y XTAL1 to V SS '
RST for Reseí, XTAL2 !•

VOL Outpul Low Voltage Porí i, A3-15, 0.^5 V IOL = 1.6mA i-


Control Funcíions *!

VOL1 Outpuí Low Voltage ALE, PSEN 0.45 V IOL = 3.2mA i-


(Note 1 ) " M
VOH Outpui High Voltage Port 1, AS-15, 2.4 V ¡OH = -80MA . ;•
Control Functions
VOH1 Output High Voiíage ADO-7, ALE, PSEN 2.4 • v !OH = -400/jA
UL - Lbgical 0 Input Current Port 1, A8-15 -800 fiA Vin = 0.45V !
Control Functions
•IILJ2 Logical 0 Input Curreni XTAL2 -2.5 mA XTALl-atV S S l >
Vin = 0.45V í
IL1 Input Leakage Curreni To ADO-7 EA ±10 /lA 0.45V<V¡n<Vcc !
'I1H1 Input High Current to RST/VPD For 500 ' •M Vin =-V c c - 1.5V :
Reset
'ICC ' Power Supply Current 175 mA All outputs disconnedo:
CIO Capacitance oí i/O Buffer • iQ PF f c = 1 MHz, TA = 25'í^

¡Noto 1: Vol is degraded when the 8032AH/8052AH rapidly dischargos exiernal capacitance. This AC noise Is most pronounc*
•during emissíon of address data. When using extemal memory, lócate the 'lalch or bufíer as cióse lo (he 8032AH/8052AH c .
Ipossible. ¡
175

8052AH-BASIC

VOL
Emltllng Degraded (poak)
Datum Porta . I/O Lines - (rnax)
Address A8-15, ADO-7 P1 , Conlrol 0.8V
Functipns
Write Data ADO-7 _. , . P1, Control 0.8v
Functions, ALE

EXTERNAL CLOCK ORIVE CHARACTERISTICS (XTAL2)1


i
Variable dock'
f s 3.5 MHz to 12 MHz
.Symbol . Parameter M!n Max Unlt
TCLCL Oscillator Perictí 83.3 " 286 ns
TCHCX High Time 20 ns
TCLCX Low Time 20 ns
TCLCH Rise Time 20 ns
TCHCL Faü Time 20 ns
176

Ínter 8052AH-BASIC

;A.C: CHARACTERISTICS: (TA = O °C to 4-70 °C. VCC = 5V ±10%. VSS = OV.


¡~: • Load Capacitance íor Port O, ALE, and PSEN = 100 pF,
! - - . . . ' Load Capacitance for All Other Outputs - 80 pF) ^

12MHz Ose Variable Oscillalor


.Symbol Parameter - Win Max Min Max Unte
I/TCLCL Oscülator Frequency 3.5 12. MHz
TLHLL ALE Pulse Widlh 127 2TCLCL-40 ns
TAVLL ' Address Valid to ALE Low - . 43 'TCLCL-40 ns i
"TLLAX Address Hold After ALE Low 4S TCLCL-35 • nsl
—í
' -TLLIV ALE'Lov/ ío Valid Instr In - 233 -.-.- 4TCLCL-100 ns i
TLLPL ALE Low to PSEN Low 58 TCLCL-25 ns !
. TPLPH PSEN Pulse Width 215 3TCLCL-35 ns_j

TPLIV . PSEN Low ío Valid Instr !n 125 3TCLCL-125 ns i
. "0 - r-
• • y
-TPXIX Inpuí Instr Hold After PSEN .- 0 ns *

-TPXIZ ¡npuí ínsír Float After PSEN 63 . " TCL1^1 -°G "ó 'i
TPXAV PSEN to Address Valid •75 TCLCL-8 115 *
TAVIV Address to Valid Instr In " 302 5TCLCL-1 1 5 ns •

TPLÁZ PSEN Low to-Address Float 20 - 20 ns -1


TRLRH RD Pulse Widíh 400 .6TCLCL-100 -ns 'í

; TWLWH WR Pulse Width 400 6TCLCL-100 ns '

TRLDV RD Low to Valid Data In 252 5TCLCL-1 65 ns i

• TRHDX Data Hold After RD 0 0 os í-

TRHDZ Data Float After RD 97 2TCLCL-70 ns ;,


TLLDV ALE 'Low to Valid Data In 517 8TCLCU-150 ns -'
TAVDV' Address to Valid Data !n 585 • 9TCLCL-1 65 ns :
TLLWL ALE Low to RD or WR Low 200 300' 3TCLCL-50 3TCLCL-Í-50 ns .
TAVWL Address to RD or WR Low 203 4TCLCL-130 ns ;;
TQVWX Data Valid to WR Transition 23 TCLCL-60 nS ;»

ns '»

TQVWH Data Valid to WR High 433 7TCLCL-150 ns


TWHQX Data Hsld Afíer WR 33 TCLGL-50 ns '•

TRLAZ RD Low to Address Float 20 20 ns

TWHLH RD or WR High to ALE High 43 123 TCLCL-40 TCLCL-f 40 ns ;


177

8052AH-BASIC

TIMING D1AGRAMS

EXTERMAL PROGRAU UEUORY READ CYCLE

EXTERNAL DATA MEUOHY READ CYCLE

EXTERMAL DATA MEMOHY WRÍTE CYCLE

ÍzSl=
ADDRESS A8-A1S OH SFR-P2

*.

AC TESTING INPUT/OUTPUT, FLOAT WAVEFOFÍMS

KPUT/Íni/rpirr FUUT ¡'


i* —
\- 2.0 2.0 -V / ' -V 2.0 ' 1-° Ti

/ Jy- o.a Í3 -/- \ --J- o.a o.* --1 C o_*a


0.43
-

i *C Inquts during lesting aro driven al 2.4V íor a logic "1" and 0.45V (or a logic "O". Timing mensuremenls are made 2: 2.0V
' ** a logic "ij" and 0.8V íor a logic "O". For timíng purposes, the [loat state is defined as Ihe point at which an ADO-7 pn 51.1X3
. '• <rriA or sources 400^iA at the voltage test levéis.
178

- 8052AH-BASIC

CLOCK WAVEFORMS

INTERKAL STATE 4 STATE 5 STA TE 5 STATE 1 " STATE 2 STATE 3 I STATE 4 STATE 5
• I ! I I
CLOCK Pl I P2 P1 ! P2 P1 F2 Pl I P2 Pl 1 P7 Pl I P2 I Pl I P2 P\ P2

. XTAL2 J L . i t — I LJ í — I LJ u~ijTjTjTjnjnjTj™Lr
ii P ' 1 1 l -l • i
• - - "^\ THESE SIGNÁIS ARE HOT
.•-• -:' • •"\ ACTTVATED OUFíiNG THE
EXTERHAL PROGRAM MEMORY FETCH ^-^^T 6XECUTION OF A UOVX IH57RUCT1ON ' -

pt-PJ-j j I - ! L_

Ann 7 |D ATA 1 ] FCL OUT [ IDATA[ ppcLou-Tl ÍDATA! PCL OUT 1


SAM?LEÓ_i ' T s AMBLEO, i T SAMPLED . -

- - ¿ e -,*• - - ! ¡HDICATES ADDRESS TRANSIOHS 1

READ CYCLE

1 • ' í T(IF PROGRAM
OOH 15 EMtTTEO _UEyQF
ÍY IS EXTERHAL)
I / DURIHGTHISPER10D

• nA-7 OPLOHRi l / ID ATA] \_


. QUT 1 £ |• SAMPLED
| -*-•*• 1J f-LÜAT •* ,^-
'¿0 1C

WRfTE CYCLE

WR i PCL OUT (EVEN IF PHOGHAU


MEMORY IS INTEHNAL)

¿rvv-7 ' DPL- OR R' I1 /' '


OUT i 7 T
PCL OUT (1F PROGfUU ¡
MEMQRY IS EXTEFUUU

•• .
PORTOPERAT10N

MOV PORT, SRC OLD DATA NEW DATA

'
MOV DEST, P1 ' -
(IHCLUDES !KTO, IfJTl, T O , Ti) r l
f^q
PIN SAMPLED PL
SERIAL PORT SHIFT CLOCK , ' P1>
PIN SAMPl EO \
-TXD t*T^ •

(JJOOEO) VRXD SAMPLED RXD SAMPLED ' \

rangas Irom 25 to 125 ns. This propagation delay is depenüeni on variables such as temperatufe anu pin toadmg Pfcpa"Jt*r
•aJso varíes (rom oulput 10 oulpul and componen! lo componen!. Typicaliy though. {T/^ - 25 C. fuüy loadeO) R0 a^ **
propagation delays ara approximately 50 ns. Thc other signáis are typically 85 ns. Propagation deiays are mcorparatod &Sr
AC specificauons.
179 • -
DIAGRAMA DE BLOQUES 'DEL MICROCONTROLADOR 8052AH-BASIC
180
8.- REGISTROS DE FÜNCIONTES ESPECIAIJES

f!í!CS« SASÍC-52

1.11 8Ü52AH SPECIAL FUNCTÍOW REGIÜTERS '

Thc follpwing ilelaijs th'e operación of thc spccial funclion regí i tere on ¡he S052AH:

SYMBOL
•ÑAME' NAMfc. .- ADDRESS i -MCS BAGÍC-52
• ACC Accumu'ator •"* ' "DtÜn ! NOT ADDRESSABLE

B B Regisler _ OFOH _. t NOT ADORESSA8LE

PSW Program Status Word •- ' ' ' ÓDOH NOT ADDRESSABLE

SP. Stack Poinler 81H NOT ADDRESSABLE

DPTR Data Pointor 2 Bytes:


DPH Lov; Byte 1 ' 82H NOT ADDRESSABLc
DPL High Bytc B3H NOT ADDRESSAbLE

- PO Porl 0 80H NOT XvODRESSAüLE

P1. Port 1 ' 90H PORT1


•P2 Porí 2 QAOH NQT ADDRUGSA5L-E
P3 Port 5 OBOH NOT ADDRESSABLE •
ÍP Interrupt Prioiity Coníro! OBSH IP ".* "
1
!E Inlerrupí Enable Control OA8H IE : '
,J TMOD Timer/Countsr Mocíe. Control 89 H TMOD
TCON Timer/Counler Conúol 08H TCON. -
T2CON Tímor/Countor 2 Control OC8H T2CON '
THO . Timcr/Counter 0 H?: '• Bytc . 8CH

'•.;
/ i
} TIMERO
:
TLO Tímor/Couníer 0 Lo' - Byíe GAH
• . • ' m

.THV Timer/CountGr 1 High Byte - 8DH •:


-- } TJMER1
TL1 Tímor/Counlor 1 Lov/ Bytc 8BH

TH2 Timar/Counlcr 2 High Syte OCDH

/ } TIMER2
TL2 Tirncr/Counlor 2 Low Byto . OCCH • •,
RCAP2H T/C 2 Capturo Ron. High Syío .- •
OCEH
- } RCAP2

RCAP2L T/C 2 Capturo ííotj. Lov/ El/te OCAH


SCON Suri^I Control ÜÜH * . NOT [Link].f-:
SBUF Serial Data Bulfcr " 90H NOT ADDREGSABLG
PCON Posvpr Control . . . .- fiVH NOT ADDRCÜ.SALILE
.181

ANEXO 9.-'MANEJO DE INTERRUPCIONES DESDE ASSEMBKER

MCS*' BASIC-52

9.7 ÍNTERRUPTS. " " . : :


Interrupts can be handlcd by MCS BASIC-52 in two distinct wnys. The first, whlch has airead y beca
discusscd, aílou's statcmems'in an MCS BASIC-52 program lo perl'orní ihc rccjiíired i n t e n u p i romine. The
ONT1ME and ONEXl siatemenis enable this particular'interrupí mode. Addmonally, seuimz HIT 26. I H -
pcrmits EXTERNAL 1NTERRUPT O lo act as a "fakc" DMA input and ihc clciails oí" this-icauíre are in
the-BELLS; WB1STLES, and ANOMALIES scction of this manual. The sccnnd' nicthod of hnndiing
interrupts in MCS [Link] the proaramnier to vvritc assembly laaiiiúigc routincs to pciform the
intcrrupt task. This method yicíds a much i'astcr intcrrupt [Link] time, but, íhe p'rogrammcr must cxercisc
so me caution. """ ." • >-. t

All interrupt vcctors on the MCS BASIC-52 device are "mirrorcd" lo externa! PROGRAM MEMORY
.LOCATIONS 4003H through 402BH inclusive. The only MCS BASlC-52 STATEMÍiNTS tliac enable the
interrupts on thc 8052AH are the CLOCKl and ¡he ONEXl STATEMENTS. If inteniipís are NOT enablcd
by these STATEMENTS, BASIC assumes ihat thc USER is providing the'íntemipt róutine in assemblv
languagc. The vcctors for thc various inteirup'ts are as íbllows: •

'LOCAT10N—INTERRUPT - '""".""" """ *"~IZ^

- 4003H EXTERNAL INTERRUPT O ' . - . ' • - . ' . . * '

400BH TIMER O OVERFLOW . - . . * " . ' - •

4013IÍ EXTERNAL INTERRUPT 1 ' " V . . '

401BH TIMER 1 OVERFLOW • •

t . 4023H SERIAL PORT ' • '

\R [Link]/EXTERNAL INTERRUPT 2 ' '

• Thcprogrammcr can enable imerrupts in MCS I3ASJC-52 by nsing thc str.témeni 1E'~ Jjí.[Link]. \vhcre
XX cnabics the appropriate interrupts. Thc bits in the ialerrupt rcgisicr (!EJ on the'S052AU are dcfineü
as foliows: ' .. •;

. BIT 7 6 ' 5 4 3 2 . 1- *• 0

EA X ET2 ES ' íiTl ' BX1 ETO • : EXÜ

ENABLE UNDE- TJMI-R 2 SERIAL TIMER 1 EXT 1 TIMER 0 EXT 0


. ALL FíNED PORT
182

-MCS*'BASlC-5:

9.7 1WT ;RRUPTS


InterrupLs are enabled whcn the approprkue BITS in the 1E register are set to a one. Dei?íl< of ihe S052AI-Í
interrupt stnicture are availablc in thc MICROCONTROLLER USl-RS MANUAL availuble [rom IiNTEL.

. ' . líviPÜRTANT rJOTEM - ]

Beforc MCS BASIC-52 vcctors to thc USER interrupt iocations just describid, thc PROCESSOR STATUS
ÁVORD (PSW) is PUSHED onto the STACK. So, thc USER "tibes" nót have to síive the PSW in ihe assembly
Ja'nguagc interrupt romineí!! HOWEVER, THE USER MUST POP THE PSW QEFORE RETURNING
->FROM THE INTERRUPT. ' ' ' • : '•

VERY UvíPOHTAMT WOTEÜl

.Jf .thc uscr i.s ninning somc íntcrnipt driveri l 'backgroun¿r'Toutine whjje.MCS_,BAS_lC-52_]s running a
program, thc uscr MUST NOT CALL aiiy uf the asscmbly lunguagc routines availuble in the MGS-BAS1C-52
"dcvicc. thc only way thc routines in the-MCS BÁSIC-52 dcvícc cun be acccsséd is whcn. the CAIlL
staicmcn't in MCS BASIC-52 is used co transfcrcontrol lo thc uscrs asscmb'ly languagc program. The
reason for this is that the MCS BASIC-52 intcrpreter must be l,i a "known" statc be/ore the uscr cun cali
itheTOULincs availabíc ín thc MCS BASIC-52 device and-a "randóm" interrupt does-not guarantee that the
;[Link] is in this known state. The user shoüld use REGIS"ER BANK 3 to hancllc ¡níenoipt routines
"in asscmbly language. ' ' - .
ANEXO 10. FORMATO DÉ--ÜN PEOGRAMA BASIC-52

MCS*-BASIC-52

1.3 FpRMAT C F A N MCS BASlC-52 PROGRAM . " . . . . .


This sección ansv/ers the qucstion "How doe.s MCS BAStC-52 store a program?'.' . •'
• *•

UNE FORMA! ' . }

Each Une of MCS BASIC-52 tcxt consists of íokens and ASCII charactcrs, plus'4 byics of overhead. Thre e
of ihese four bytcs are stored at thc bcginning oí" every Une. -The first bvte contains the length o raime in
binary and the second two byíes are the line number in binary. The íburrh byte is stored at thc cnd of-t'he
Une and ibis byte is ahvays a ODH or a carriage return in ASCÜ. An cxample of a typicni line is show'n
below, assume that this is thc firsí une of a [Link]ñ in RAM. - . ": :
' * .
10 . FOR I = 1 TO 10 : PRINT 1 : NEXT i

LOCATION BYTE DESCHiPTiO'N' • ".' • ':

512 11H THE LENGTH OF THE LINE IN BJNAfiY (17H BYTES)


513 . 'OOH HIGH BVTE OF THE LIME NUMBER -"" ' " " ~" • • . ' ••
5l4( OAH LOW BviTE Or THE UNE NUMBER t • • - 'i
515 OAOH THE TGKEN POR "FOR" . • . •• ;
516 49H THE ASCII CHARACTER "I" ' . .' '•
517 • OEAH THETOKEN FOR " = " ' -'. •
518 " 31 H THE ASCII FOR"1" •
519 ' . OA6H THE TOKEN FOR "TO" - - . . •'" >
520 ' ' 31 H THE ASCil FOR "1" . - ' ', •
521 , -30H THE ASCII FOR "O1; . . ;'
522- • 3AH THE ASCII FOR ":" ' - - --•':
523 89hl THE TOKEN FOR "-PRINT" . . - ' • ,' •'
524 49H THE ASCII FOR"!" ' . - ''•'.".'
525' 3AH THE ASCÜ FOR ":" ' - : ••
526 97H THETOKEN FOR "NEXT" "- ' ' ;.' '*
527 49H THE ASCII FOR"!"
523 ODH END OF LIME (CARRIAGE RETURN) . .. •;'

TO FINO THE LOCATiON OF THE NEXT LINE, THE LENGTH OF THE LINE IS AÜÜED TO THE
LOCATiON VVHERÉ THE LENGTH OF THE LINE ¡S STORED. IN THIS EXAMPLE, ' -:
512 -f- 17D - 528, WHiCH IS VVHERÉ THE NEXT UNE IS STORED. '- ; :'

JThjt-END of a program is'designaícd by the valué 01 H. So, in' the previous exiimplc if linc 10 wa's tli¿
only linc in thc prograhí, location 529 woulU eoiuain the valué Üí H. A oro;.'r:un siinply consisí'í OÍ'T nunibt-i"
of lines packcd together í.n one-continuous block with ihe last Une cnJing in á ÜDH, Uil.í Miquetice.
184
^

. int MCS® BASIC-52

1.0 FORMAT OF AN MCS BASÍC-52 PROGRAM -


EPROM FILE FORMAT . ' . * ,

The EPROM FILE fonnat consists of thc same Une and program formal, prcviously dcscribed except that
each program in thc EPROM file bcgins with thc valué 55H. Thc valué 55H is only use'd by MCS BASIC-
52 to determine if a vaíid program is-present. if the .uscr [Link]. ROM 6, MCS 13ASIC-52 actually goes
•through thc p first program storcd in HPROM Une by'lihc un til the EK'lTóT PROGRAM (OIH) is found,
then it examines the nex.1 location to see if a 55H is siored in that location. i E thcn gocs through that
program linc by liiie. This process is repcated 6 times. .[Link]._charactcr.5-5 H i s not found aficr Ihe end of
a program, MCS [Link]-52j*vili return with thc PROM MODE error messagc. Thls would mean that less
than six programs wcre storcd in that EPROM. ' •

The first program stored in EPROM (ROM 1) ahvays bcgins at location SOIOH and ibis location will ulways
conlain a 55H. Thc actuaí uscr program will bcgfn at location 801111. • :

•EPROM Ipcaíions SOOOH through SOOFH are reserved by MCS BASIC-52, Thcsc locations contain ini-
tialization información when thc PRÜGX options are used. Versión 1.0 of MCS BASIC-52 only uscd the
first three byíes of this rcsen'ed EPROM área, The'information srorcd in thcse bytes is as follows:

LOCATÍON' DE-7CR-1FT1ON

SOOOH COhlTAINED A 31H IF PROG-1 VVAS USED, CONTAINED A 32H ÍF PROG 2


WAfí USED I

- 8001H BAUD RATE {FJCAP2H)-

8002H BAUD RATE (RCAP2L) . - . ''

Versión 1.1 of MCS BAS1C-5. uses thc samé locations'as Versión 1.0, buL addilionally localions 8003H
and 8004H (high bytc, low byr ,are uscd to store thc MTOP information for the PROG 3, 4,-5, 6 opiions.

IMPORTAN" NOTE— 'f '• . . ' . ,' ',


' \ - •
Tlie PROG X options símply sl'ó'rc ASCU charactcr foHowing thc PROG command in loction SOOOH. That
"is why PROG 1 stores a 31H in location SOOOH, PROG 2 a^321i, PROG 3 (Versión U l oníy) a 3311 etc.
If tlie uscr empioys thc uscr deñned reset option dcfined in Chaptcr 11 of this manual, it would be possiblc
for the uscr to créate uniquc PROG options. For examplc, PROG A would store a 41H in location SOOOH
and upon RESET thc user could examine th'is location with an asscmbly lartguage routine and genérate a
unique PROG A rcset routine for that particular appÜcation. . '
185

>£NEXO 11.
\O DE NÚMEROS EN PUNTO FLOTANTE
'MCS® BAS1C-52

1.6 FLOAT1NG PO1NT FGHMAT • —


MCS BASíC-52 stores aíl Qoating poínt mimbers in u normalized páeked BCD íbrmác'with an offset binary
exponcnt. The-simples! way ío demónstrate ihc íloating point íbrmat is to use en cxample. Jf thc mimb'er
PI (3.1415926) was storcd m locación X, thc ibllowing wouíd appoar in memory. n

LOCAT10W VALUÉ DH3CR1PTION

X 81H EXPONENT —01H = lO^l^OP.H - 1Q"2 r - ^ • ;'


80H = I-O'-G, 7FTT «•1<r*-l"etc.
THE NUMBER ZERO 13 REPRESENTED VVÍTH A
ZERO EXPONENT . - , •

X-J OOH SIGN.B1T — COH = POS1T1VE, OÍH = NEGAT1VE OTHER BITS ARE'
USED AS TEMPS ONLY DURiNG A CALCULATION ,
•. *
X-2 26H LEASTSIGNiFlCANTTVVO DiGITS . ' . " • -t

- - X-3.- 59H NEXT LEAST SIGiNIFICANT TVVO DiGITS . ". . ^'. :

X-4. NEXT MOST SIGNIF1CANT TV/O D1GITS ' : "

x-s 31 H' Mosfr SIGNIFÍCANT'TWO DIGITS - -• ''*


i - : '
Becausc MCS BASiC-52 nbrnializes all numbers, the most significant di_git ís never a "¿ero utiless tiie
numbcr is^cro. ^> . . ! ;* .
186

ANEXO 12.- HOJAS DE DATOS DEL PPI 8255A

\ -

8255A/8255A-5
P R O G R A M M A B L E PERIPHERAL INTERFACE

• MCS-85™ Compatible 8255A-5 • Direct Bit Seí/Reset Capabí'Iity Easing


Control Applícajion Interface
• 24 Programmable I/O Pins
• C o r n p l e t e l y TTL C o m p a t i b l e B 40-Pin Dual ln-Line Package
a FuIIy Compatible with Intel- Micro-
• Reduces [Link] Package Count
processor Famiíies.
• Improved Timíng Characterisiics B Improve'd DC Driving Capabílity

The Inte!1 8255A ís a general purpose programmable I/O device designcd (or use-wilh Intel1 microprocessors. It has
24 I/O pins whtch may bs ¡ndividually programmed in 2 groups oí 12" and usea ir¡3 maior modes oí operalion. In the íirsi.
mode (MODE 0). each group oí 12 I/O pins may be programmed in sets of 4 to te moul proutput. In MODE 1. Ihe second
-mode, each group may be programmed'to nave 8 unes of input or outout. Oí ín= remaming ¿ pins. 3 are usetí lor nano- '
shaking and ¡nterrupl control signáis. Tne third mode of operation (MODE 2J >s a bidtrecuona! bus mees wnich uses 8
Unes for a bitíirectional bus, and 5 lines, borrowing one from íhe olher grouo, íor hanoshakmg. - —

PIN CONFIGURATION • 6255A BLOCK DI'AGRAM

" .'


8255A •"
-
'
"

.'

"

PIN ÑAMES

D t*°l oü »Lrn»toi"icrií. ni
HCW1 - * f I I IS'UT
(3 • CHI SUtCI
A& «lAOl'.'ut
ífc **1 i IVf^I
AJ <LI K>" .OD«ÍSI
f Ai í Ai 13- "- *HI
'•)f*0 K3f< • 'lili

«:JÍ-CD fC' C'nn


Vcc -* voiri
OHO 1 VQl II

829
187

8255A/8255A-5

8255A FUNCTIONAL DESCRIPTION (RD) . , - .


Read. A "low" i this inpul pin enables the S255A lo
General send the dala status informalion to the CPU on the
The B255A is a programmable penpheral interfacejPPI) data bus. ín es ice, it allows the CPU lo "read (rom
device designed for use ín Inte!' microcomputer the B255A. . " .
systems. Its lunction is that oí a general purpose I/Ó
componen! lo ¡nterface peripheral equioment to the •(WR) • -•
microcomputer system bus. The íunctional configura- Wrlte. A "low" on ihís ¡nput pin enables the CPU to wri.l
tion oí íhe 6255A is programmed by the system software data or control words into the 8255A.
so that normally no externa! logic is necessary to inter-
facé penpneral devic'es or structures. (A0 and At) .'
Port Seiect O and Por1 Selact 1. Tnese input signáis,.i
Data Bus Buffer con¡unction with íhe RD ar.d WR inputs, control th
This 3-stale bidirectional S-bil buííer is used to interlace selection of'one p_f the three ports or the control wor
the 8255A to the system data bus. Data is transmitted or registers. They are normal!^ connected to the leas
received by íhe buffer upon execution of Input or output signiíic'ant_bit5 of the adaress bus (A0 and A,}.
Instructions by the GPU. Control words and status inlor-
malion are also transíerred through the data bus bulter.
8255A BASIC OP-ERATION "
AI AO I RD " WR i es ; INPUT OPERATION (R EAD)

Read/Wrlto and Control Logic. 0 0 ! 0 1 Í o ! PORT A - DATA BUS


0 1 1 0 1 i 0 ! POHT B - DATA BUS
The íunction bf this block ís to manage all of the ¡nternal i o 1 ' O ' 1 , 0 PÜKTC- DATA BUS
and external transfers of both Data and Control or Status
words. !t accepts inputs from the CPU Address and Con-
trol busses and ir. turn, issues ccmmsnds to boíh of :hc 0 0
1
i 1 .0
i

i 0
¡
i
OUTPUT OPERATION-
(WRITE)
DATA BUS- PORTA
0 .1 1 •i ¡ o 0 • DATA BUS- P O R T B
Control Groups. i 0 1 0 0 ! DATA BUS- PORT C
1 1 1 0 - D i DATA BUS - CONTROL
| DISABLE FUNCTIOH
•<cs) . f • X X X X 1 ! DATA BUS- 3-STATE

Chlp Seiect. A "low" on Ihis input pin enables the com-


i 1 0 1 1 0 , ILLcGALCONDITION

municlion between the B255A and the CPU. X X . 1 i 1 0 | DATA BUS - 3-STATE '

Figuro 1. 8255A Block Diagram Showing Data Bus Buífer and Read/Write Control Logic Functlons

830 - . 007¿
8255A/8255A-5

(RESET) Ports A, B, and C


Recaí. A "hlgh on thís ínput clears íhe control reglster The 8255A contains three 8-bit porls (A, B. and C). All
and all ports (A, C, C) are set lo the ¡nput mode. can be configurad in a wide variety of tunciional charac-
teristícs by tne system software but oach has its own
speclal leatures or "personality" to further enhance the
Group A and Group 8 Controls
power and flexibilily of the 8255A.
The functional coníiguratton of each port is program-
med by the systems software. In essence. tne CPU "out-
puts" a control word lo the 3255A. The control word con- Port A. One 8-bít data output latch/buffer and one 8-bit
• tains ¡nlormalion such as "mode", "bit sel", "bit reset", data input latch.
etc., that initializes the lunctlonal condguration of the Port B. One 8-bil data input/output lalch/buffer antí one
8255. 8-bit data Ínput buffer.
Each of the Control blocks (Group A and Group B) accepts Port C. One 8-bit data oulout latch/buffer and one 8-bií
"commands" from the Resd/V/rite Control Logic, receives data input buffer (no latch for input). This port can be
"control words" from the internal data bus and íssues the dívided ¡nto two <J-bit pons under tne mode control.
proper commands to its associated parís, Each'4-bít port contains a 4-oit laten ana it can De used
Control Group A - Pon A and Pon C unper (C7-C4) for the control signal outputs and status sipnal inputs in
Control Group B — Pon B and Pon C lower (C3-CO) • conjunction with pcris A and S.
The Control Word Regtsier can O ni y be "wnnen into. No
Resd operation of the Control" Word Register is allowed.

PIN CONFIGURATIGN

PIN ÑAMES

"r ", O A I f Btrt leí Dl«ECTIO**.l.l


PfSI 1 " E S f T l"'Ut '
Ci [Link] iUfCI
f-.O «C*D1'.'UI
ti «Bill I'"UI
*0. '.1 «3«I «ODHf SS
f *í rAO fowt * 'fliri ,
rtl >-po í-Oni 1 'MU -
re» fCO "J"I C .Bilt
v(t ••, vnili
c«o • voill

Figuro 2. 8225A Block Diñaran. Showlng Group A and


Qroup B Control Funcllons
I-
• .H' '• •' i .

831
189

8'255A;8255A-5

8255A OPERATIONAL DESCRIPTiON


• Mode Selection
There are three basic modes of operaiion that can be seleci-
ed by the system software:
Mode O - Basic Input/Oulput
Mode 1 — Strobed Input/Output
Mode 2 — Bí-Directiona! Bus
When the reset inpul ^goes "high" a!l porls wl!I be set lo
the inpul mode (i.e., all 24 Imes will be in the high irn-
peoance state). Afier íhe reset is removed Ihe 8255A can
rernain in the mput mode with no aaciíional mitialízation
requiretí. During the execution cf the sysíem program
sny cf the oiher modes may be seiected usíng a single
output inslrucí[Link] allows a single 8255A to uarvice
a variety of peripheral devices wiíh a simple software
maimenance routine.

The modés for Port A and Port B can be sebarateíy caííned,


while Port C ís divided jnto two [Link] as required by the
Pon A and Port B definitions. All of the output regisurs, in-
cluding ihe sisius t'lip-fiops, will be reset wheneVdr the
mode is [Link]. Modes may be co^biñed 10 that íhefr
funclional deíinition csn be Vtailored" to atmost any I/O
structure. For ínstance; Group B can be programmed ¡n'
Mode O to mo'nitor simóle switnh rin^ior.c Cr d¡;p|ay compu- '
tational results, Group A could be programmed ¡n Mode 1
10 monitor a keyboard or tape reader on an interrupt-dríven
basís. " •

\ AODRESSBUS
|
( COMHOL BUS
1 1 i
\S /

Ji
1 ¿ÍÜ.
• íí 4i - Figure 4. Mode Delinltlon Formal

MODE D --\

The mode definitions and possible mode combinations


may seem confusing ai íirst bul after a cursory review of
the complete [Link] a simple, lógica! I/O ap-
proacn will surlace. The üesign oí the S255A has taken
MODE 1 —-T B •* r into accoun! [hings such as efíicient PC board layout,
control sicjnal deímmon vs PC layoul and completa
lunclional (lexibiliti' 10 supporf almosl any peripheral
devíce with no externar logic. Such design represents
íhe máximum use oí íhe avgilabla pins.

Single Bit Sel/Resel Fealuro


Any of the eight bits of Port C can be. Sel or .Reset usíng a
single OUTput _ instruction. This íeature reduces software
. Figura 3. Basic Modo DoMniUoni «nd Bus Intertac* requnemcnt's in Control-based applicdtions.

832 007<-*A
190

8255A;8255A-5

When Port C Ís beíng used as star-s. ro


CWJTflOLWOHD these bits can be set or reset by u? -: re H'i SK. Heset op-
eraíion just as ¡f they were data ot.^i_z :errs.

Interrupt Control Functlons


When the S255A Ís programmec \= rc*-s:s -" ~«Ie 1 or
mode 2, control signáis are pro esc '-"3: ^-~ -* use° as
mterrupt request inputs to ine ¿7- ~"¿ "arrjpt re-
quest signáis, generated [rom poi C. ;¿~ -•= "'•'Oited or
enabled oy setting or resetting !,-.= £5=-" -a'.?- -^TE íiip- '
flcp, using the bit seUresel tune::" " '~--i C.
This functícn allows the Programa*- -2 cs^'-r-* or aüow a
specific' I/O device to ¡nterrupt the Cí-j w:fc-_"i affet^ing.
any otherdevice in the ¡nterrupt [Link].-rs,
INTE ílíp-flop definiíion:
(BIT-SET) - INTE is [Link]
• (B1T-RESET) -INTE if RESET - ¡niemiptdc=b!=
Note: AII MasJe [Link] are autorr-iticalty reset during
Figure 5. Bit SeUReset Formal mode'selectíon and device Reset.

Operating Modos. Mode O Basic Functíonal Deíinitions:


• Two 8-bít ports and two 4-bh ports.
• Any pon can be input or output.
MODE O (Basic InpuUOutpul), Thls lunctlonal configura- • Outputs are íaiched.
tion provides simple input and output operations íor » ^ Inputs are not laiched: '
each oí Ihe three ports. No "handshakíng" is rsquired, • 16 differeni Input/Output confíguratíons are possible
.dala Is simply written to or read írom a speclfled pon. in thís Mode'.

MODE O Port OeílnIUon

A B GROUP A 1 GROUP B
PORTC • PORTC
°< D3- DI DO PORT A
(UPPERJ
O PORT B

0 0 0 0 OUTPUT OUTPUT" 0 OUTPUT OUTPUT. '


0 0 0 1 OUTPUT OUTPUT 1 f OUTPUT IHPUT
0 0 1 0 OUTPUT OUTPUT 2 INPUT OUTPUT
0 o .1 i 1 | OUTPUT OUTPUT 3 [ INPUT 1HPUT
0 . 1 0 0 j OUTPUT INPUT •i OUTPUT OUTPUT
0 1 0 1 1 OUTPUT Ifí[Link] 5 OUTPUT 1NPUT
o 1 I 1 - | 0 ¡ OUTPUT INPUT 6. INPUT OUTPUT
0 1 1 1 OUTPUT IN'PUT ' 7 | INPUT INPUT
1 0 . 0 0 INPUT 1 OUTPUT 8 | OUTPUT OUTPUT
1 • o í o 1 1 INPUT OUTPUT 9 OUTPUT INPUT
1 0 1 0 '[NPUT OUTPUT 10 | INPUT OUTPUT
1 0 I ! 1 INPUT OUTPUT 11 | INPUT INPUT '
1 1 I 0 0 | INPUT INPUT ' 12 DUTPUT OUTPUT
V 1 0 1 INPUT INPUT 13 OUTPUT INPUT
1 1 1 0 INPUT INPUT | 14 INPUT OUTPUT
1 1 1 .1 INPUT INPUT j 15 INPUT INPUT
191

OperaHng Modes Mode 1 Basic Functíonal Deftnhions:


• Two Groups (Group A and Group B)
MODE 1 (Slrobed Input/Output). This lunclional con- • Each group contains one 8-bit data pon and on
Hguralion provides a means íor uanslerring I/O data to control/data port.
or (rom a speciíied port in conjunction with slrobes or • The 8-bít data pon can be either input or o
"handshaking" signáis. In mode 1. port A and Porí B use Boíh inputs and ouiputs aré latched.
.the lines on porl C to genérate or accept (hese "hand- • The 4-bit port is used for control and status
sjiaklng" signáis. B-bít data port. :,

Input Control Slgnal Deflnltlon. "i '•'


MOOE 1 ITORT Al
STB {Strobfl Input}. A "low" on this input ¡oads data ¡nto
Ihe input latch,
D, D, O, Dj Dj D> D, Oj
IBF (Input Bullen Full F/F)
A'"h¡gn" on this output indícates that the data has been
I ^..»-
loaded Into the-input latch;Ín essence, an acknowledgement "— 1 - IN»UT
IBF ís set by STB input being low and ¡s reset by the rising
edge of the RD input.

INTR (Interrupt Request)


A "high" on this output can be used to ¡nterrupt the CPU
when an input device is requesting service. INTR is set by WOO£ 1 trORT 8)
the STB is a "ons", IBF Ís a "one" and INTE is a "one".
U íi reiet by the fallíng edge of RD. This procedure allows
i'n ínput device to request service from the CPU by simply
itrobírvg iti data into the port.

INTE A
Controlled by bit set/reset of PC^.
INTE 8
Controlled by bit set/reseí of PC.2.

Flgur* 6. MODE 1 Input


192

8255AJ8255A-5

Output Control Slgnal Deflnltlon


MOOE 1 IPQRT AJ

OBF (Outoüt Buüer Full F/F). The OBF output wíll go


"low" to indícate that Ihe CPU has wrilten data out to
COWTROU rrono

, D, Ds O, D, Dj D, D0
"- I \

Ihe specíliéd port. The OBF F/F will be sel by the rising PC, (SST
edge oí the WR input and reset by ACK Input being low. 1 ! 0 1 1 0 ¡11D[XÍX'X]
l INTE 1
re. , 1* A I '
ACK {Acknowíodge Input). A "low" on thís input informs o - ouinn
Ihe 3255A that me dala (rom pon A or porl B has been ac-
ceptec. In essence, a response frorn the peripheral i—I1_^
V "-3 INI

oovíce mdicating that it has received the data output by m~~ •


the CPU. -,,

"OOE 1 IfORI B]
INTR {Intorrupt Roques!}, A "high" on thls ou;put can be
useo" to interrupt the CPU when an output de -ice has ac- COWTROLtrOflD
cepted data transmitted by Ihe CPU. 1NTR ¡s sel when
ACK is a-"one", OBF Is a "one" and INTE is a "one". It is
reset by the failing edge of WR.

' INTE A

— Controlled by bit set/reset of PCg,

I'ÍJTE B

' Controlled by bit set/reset of PC2.

Flgurff.B. MUDE 1 Üutput

Comblnatlons of MODE 1 _ '•


Port A and Port B can be indivjduallY defined as input or
output in Mode 1 to support a wide varitity of strobed I/O
applicatíons.

RD -C
<*_•
COMTHOL«ORD CONTROL WORD
D, 0, Ot 0, D, 0, D, D9 D, D, D, 0, Dj O, O, D,
I ' s^*
l ' - i 0 ! 1 MH'.MXl- I 0 J 0 I/o! ] 1\

^-*- i • innrt
e - ouir-ur

K:, oor.

K> nA-|nnOBEO IM'UTl


KMU • - IIIROBEO OUInJTI

Figure 10. Comblnctlons of MODE 1


193

Operallng Modes Output Oporallons

MODE 2 (Strobod BIdIrecIlonal Bus I/O). This functional O3F /Output Buffer Ful). The OBF output will go "low"
configuration provides a rneans for ccmmumcating with to mdica'te tnat the CFU ñas wntten oala out to pon A.
. a peripneral osvice or struclure on a [Link] 8-bil bus for
botn iransmitlmg ana recemng data ibicirectional DUS
!/O) "Handshakmg" signáis are proviaea lo mamtain AC'K (Acknowledgo). A "low" on this input enaoles Ihe
•propef bus (low discionne m a similar manner to MODE tn-stale output buffer of port A lo send oul the data.
1, Interrupl generaíion and enable/aisaDle (unctions a're O\ner\vise, tne output buffer _will be in the hlgh irn-
also available. pedance state.

MODE 2 Basic Functional Definitions: INTE 1 (Tho INTE Fllp-FIop Associated wlth OBF). Con:
• Used ¡n Group A only. irolled by biE set/reset oí PC6.
• One B-bit, bi-directíonal bus Port ¡Pon A} and a 5-bit Input Operations
control Port (Pon Cí."
• Both ¡nputs and .outputs are latched. STB (Strobe Input)
• The 5-bit control pon (Pon C) is used for control
ST8 (Siroba Input). A "low" on this. ¡nput loads dala ínto
and status for the 8-b¡i, bi-dírectional .bus pon (Pon the ínpul latch.
A).
IBF. (Inpul Buller Futí F/F). A "high" on this output in-
Bldlrecílonai Bus I/O Control SIgnal Oeflnlllon dícales trtat dala has t>een loadea into the inpul laten.

IHTR (Intorrupt Requasl). A high on tn¡3 output ca'n be


9 used to inlerrupt the CPU /or botn input or output opera- INTE 2 (The INTE FHp-Flop A8«oclal»d wlth IBF). Con-
líons. trolfeíí by bit set/reseí oí PC(.

8255A/8255A-5

CONTftC ORO

O, D, Dj D, , D7 D, D0

- PORT 6
1 • IHPUT
O - OUTPUT

Figura 11. !.'.CD£ Control Word Figura 12. MODE 2


194

8255Ay8255A-5

MODE 2 AND MODE O (INPtíT) - MODE 2 AND MODE O (OUTPUT)

'V'-S,

• oaF,

CONTROL r,O1D CONTRDLITOnD - ACK,

'O, D, Dj D, O¡ Dj D, D; D, D, Dí D, Dj D} D, O3

MODE 2 AND MODE 1 (OUTPUT) MODE 2 ANO MODE 1 (INPUT)

«i

«7

co-anoirrono COfiTROLnOWD

D, D, Dj DJ Oj O, D, D0 , Dj D, D, D, D,

- sra^

- 16F. •

- oaf,

- *c7.

Flgur» 14. M O D E 2 Combln*tlon«

' 841 007/4A


195

8255A/8255A-5

Mode DefirilÜon Summary

MODE 0 MODE 1
IN OUT IN I OUT GROUP A O N L Y
PAQ IN OUT 'IN OUT
PA! IN OUT ' IN .OUT

PA2 IN OUT 1N - OUT


PA3 IN OUT IN - OUT
PA-5 IN OUT IN OUT
PA5 IN OUT IN OUT
PAe IN OUT IN OUT
PA7 IN OUT IN - OUT

' PB0 IN ' OUT IN OUT


PBí IN OUT IN OUT
PB2 IN OUT IN OUT
PB3 . IN OUT IN OUT MODE O
PB4 IN OUT IN OUT - OR MODE 1
-PB5 IN OUT IN OUT ONI.Y
- PB6 IN OUT- IN . OUT
PB7 IN OUT IN OUT

• PCO 1N 1 OUT INTRg INTR5 . . i/O .


PC! IN OUT iBí= a OBF 3 I/O
PC2 IN OUT STBg • ACKB i/.o
PC3 ' IN OUT JNTR A INTRA INTRA
PC< IN OUT STB A I/O STBA
PCs IN OUT ' IBFA* i/o- "BF A
FCg. IN OUT I/O ACK A ACK A
PC7 IN OUT 1/0 OB^A OBF A

Special Mode Combination Considorations ñllows the programmer to test or verify the "status" of
There are several combinations of modes vvhen noi all of the perípheral device and change the program flo'.v &ccard
bits In Port C are used for control or status. The remaíníng There is no specía! instrjction to rcsd the status info
bits can be used as_follows: tion from Port C. A normal read operation of Port
.. If Pro£-a~:ned as Inputs — executed to perform this function.
All ínput Unes can be accessed during a normal Port C
. read. INfUT CbfJflCURAITÓN

If Programmed as Outputs —
Bits in C upper .(PCy-PC.^ must be ¡ndividually accessed I/O 1 I/O | 1BF, INTíJlSTp. jl"l(.

' usíng the bit set/reset function.


GKOÍlf A GROlJ^ H
; Bits in C lov/er (PC3-PC0) can be accessed using the bit
OUT^UT CONFICURATION
set/reset function or accessed as a threesome by writíng D, D, Dj O, Dj D, D, D0
into Port C.
CBÍjtlME,! fO i I/C Í I N l H ^ j INTt B 6a?, INTR,
Source Current Capability on Port B and Port C
Any set oí eight output bufíers, selected randomíy from
Ports B and C can source ImA at 1.5 volts. Thís ieature Figure 15. MODE 1 Stoius Word Formal
allows the 8255 to directly drive Darlmgton type driyers
Dnd high-voliage displays that require such source curren!.
Reading Port C Status
In Mode O, Port C transferí data to or from the peripheraf - CROUf1

device. When the 8255 is programmed to function m Modes 1 S£LCCT»ON|


1 or 2, Pon C generales or accepts "hand-shakíng" signáis
w™th the perípheral device. Reading the contents of Port C Figure 16. MODE 2 Status Word Formal

842,
196

ANEXO 13 LLAMADA DE RUTINAS BASIC-52 DESDE LENGUAJE


ASSEMBLER

El BASIC-52 contiene una biblioteca completa de rutinas


que pueden ser accedidas fácilmente con instrucciones CALL del
lenguaje Assembler. La ventaja de usar lenguaje Assembler es
que incrementa significativamente la velocidad de ejecución
respecto al BASIC interpretado.

Para hacer un enlace exitosa entre lenguajes Basic-


Assembler,, el diseñador de software debe tener un conocimiento
apropiado del intérprete BASIC-52 (conjunto de instrucciones)
y de la arquitectura y lenguaje Assembler de la familia de
microcontroladores MCS-51«

Es muy importante conocer lo siguientes

1. El BASIC-52 usa los BANCOS DE REGISTROS 0? 1 y 2 (RB03 RB1


y RB2) . El banco de registros 3 (RB3) nunca se usa,, excepto
durante la ejecución de la sentencia PGM (para programación de
memorias)., razón par la que se lo designa como el "Banco de
Registros del Usuario".
Las LOCALIDADES DE MEMORIA INTERNA 32 (20H) Y 33C21H)
tampoco son usadas por el BASIC-52. Estas dos localidades son
accesibles por bits o bytes y están reservadas específicamente
para lenguaje Assembler.

2. El BASIC-52 usa el BANCO DE REGISTROS 0 (RB0) como el


"Archiva de Registros de Trabaja" que debe ser seleccionado
siempre que se use lenguaje Assembler para acceder a rutinas
BASIC-52. Cuando se llama a un programa en lenguaje Assembler
con la instrucción CALL de BASIC-52S RB0 es seleccionado
automáticamente. Así., a menos que el usuario seleccione el
registro RB3 en Assembler ¡ no es necesario cambiar el banco de
registras designada-

3. Siempre se asume que el BASIC-52 destruye el contenido del


"Archiva de Registras de Trabajo" RBC3 y del puntero de datos
DPTR ? a menos que se especifique lo contraria.
ÍV"
4. Ciertas rutinas BASIC-52 requieren que algunos REGISTROS
sean inicial izadas antes que el usuario llame una rutina
específica. Esos registros siempre están en el archiva de
registros de trabajo RB0,
5. Ciertas rutinas en BASIC-52 entregan el resultado de una
operación en un registro o registras. Los registras de
resultado siempre están en RB0.
6. El BASIC-52 carga el PUNTERO DE PILA INTERNA "Stack
PoÍnter" (Registro de Función Especial SP) con el valor que
está en la localidad de RAM interna 62 C3EH) que luego de un
RESET siempre es 77 (4DH). El BASIC-52 no usa la memoria más
allá de 77 (4DH) excepta el espacio para la PILA.,
Para aumentar el espacio de memoria RAM interna para el
usuario,, se debe incrementar el contenido de la localidad 62
197

(3EH) a un valor mayor a 77 (4DH)3 pero esto decrementa el


espacio para PILA INTERNA,, trayendo como consecuencia que el
BASIC puede evaluar una menor cantidad de paréntesis anidadas
dentro de una expresión matemática.

7- Para enlace Basic~52 - Assembler se usa un PAR DE REGISTROS


DE 16 BITS., designado como R X s R Y donde RX es el byte más
significativo (MSB).y RY es el byte menos significativo (LSB).

El proceso para acceder a rutinas Basic desde lenguaje


Assembler es muy sencillos

a) Asegurarse que ha sido seleccionado el Archivo de Registras


de Trabaja RB0-

b) Cargar en el acumulador (ACC) el código de la operación a


ralizar en Basic-52,, denominado "ÜPBYTE".

c) Llamar la localidad 48 (30H).

La forma generalizada para acceder a rutinas Basic-52 es


la siguientes

ANL [Link]íSeUllB ' asegura que se ha seleccionado RB0


MOV A s ¿OPBYTE 'carga la instrucción
CALL 30H 'ejecuta la instrucción

A continuación se muestra un resumen de las códigos de


instrucciones Basic-52 que pueden llamarse desde Assembler
(QPBYTE) y su FUNCIÓN respectiva„

Rutinas de propósitogeneral:

OPBYTE FUNCIÓN

0 (E30H) Regresa al modo de comandas.

1 (01H) Toma un valor de la PILA DE ARGUMENTOS y la


pone en R3sRl

2 (02H) Colaca en la pila de argumentos el número en


punto flotante direccionado por el par de
registras R2ü R0

3 £031-1) Toma un numera en punta flotante de la PILA DE


ARGUMENTOS y lo salva en la localidad
direccionada par el par de registras R3sRl

4 (04H) Programa una PROM usando R3sRl coma el "puntera


de dirección fuente (RAM)"., R2:R0 cama el
"puntera de dirección destina (PROM)" y R7sR6
coma el numera de bytes a programar„

5 (05H) Ingresa un "string" de caracteres y lo almacena


en el "buffer" de entrada BASIC.
198

OPBYTE FUNCIÓN

6 (06H) Saca a consola el "string" de caracteres


apuntado por el par de registros R3sRl H

7 Í07H) Saca a consola una secuencia "GARRÍASE RETURN—


LINE PEED" (retorno de carro ~ alimentación de
línea).

128 (S0H) Saca a consola el carácter en R5 (RB0).

144 (90H) Saca a consola el número en el tope de la PILA


DE ARGUMENTOS„

154 (9AH) Coloca en la PILA DE ARGUMENTOS el número de 16


bits representado por el par de registros R3sR0

OPERADORES SIMPLES:

Las siguientes instrucciones realizan una operación sobre


el número que está en el tope de la PILA DE ARGUMENTOS,, y lo
reemplazan por el resultado de la operación- Si se representa
al tope de la pila de argumentos como [TOP]3 entonces las
intrucciones tienen la siguiente forma generáis
[TOP] <— OP [TOP]
Donde OP es uno de los siguientes operadores (OPBYTE):

OPBYTE FUNCIÓN

24 (18H) Toma el VALOR ABSOLUTO de un número

25 (19H) Toma la parte ENTERA de un número

26 (1AH) Toma el SIBNO cíe un número

27 (1BH) COMPLEMENTO DE 1

28 (1CH) COSENO

29 (1DH) TANGENTE

30 (1EH) SENO

31 (1FH) RAÍZ CUADRADA


32 (20H) Operador CBY

33 (21H) e •"";<

34 (22H) ARCO TANGENTE

35 (23H) LOGARITMO NATURAL


36 (24H) Operador DBY

37 (25H) Operador XBY


199

OPERADORES ESPECIALESs

El siguiente grupo de instrucciones coloca un valor en la


PILA DE ARGUMENTOS» El valor colocado corresponde a uno de los
operadores especiales del BASIC-52, definido por su "OPBYTE"
respectivos

OPBYTE FUNCIÓN

38 (26H) PI Valor numérico (TK)

39 (27H) RND Entrega un valor aleatorio "random"


40 (28H) GET

41 (29H) FREE

42 (2AH) LEN
43 (2BH) XTAL

44 (2CH) MTOP

45 (2DH) TIME

46 (2EH) IE

47 C2FH) IP

48 (30H) TIMER0

49 (31H) TIMER1

50 (32H) TIMER2

51 (33H) T2CON

52 (34H) TCON

53 (35H) TMOD
54 (3¿H) RCAP2

55 (37H) PORT1
56 (3SH) PCON
OPERADORES DE DOBLE OPERANDO:

El siguiente grupo de instrucciones asume que hay dos


valores en la PILA DE ARGUMENTOS» Si se representa al número
que está en el tope de la pila de argumentos como [TPA]? y al
número siguiente como CSTPA] :i y se representa al puntero de la
pila como [PPA]., entonces las instrucciones tomarán la
siguiente forma generáis

[TPA] <— CSTPA] OP [TPA]


[PPA] <— [PPA] -i- 6

Donde OP es uno de los siguientes aperadores (ÜPBYTE):

OPBYTE FUNCIÓN

9 (09H) EXPONENCIACION

10 (0AH) MULTIPLICACIÓN (Basic maneja el error)

136 (S8H) MULTIPLICACIÓN (Usuario maneja el error)

11 (0BH) SUMA (Basic maneja el error)

130 (S2H) SUMA (Usuario maneja el error)

12 (0CH) DIVISIÓN (Basic maneja el error)

138 (8AH) DIVISIÓN (Usuario maneja el error)


13 (0DH) RESTA (Basic maneja el error)

132 (84H) RESTA (Usuario maneja el error)

14 (0EH) OR EXCLUSIVO

15 (OFH) AND

16 (10H) OR

18 (1BH) PRUEBA =
19 (1CH) PRUEBA >
20 (1DH) PRUEBA <.

21 (1EH) PRUEBA O
22 (1FH) PRUEBA <
23 Í17H) PRUEBA >
201

RUTINAS PE ENLACE APICCIQNALES en laversión 1,1 del BASIC-52s

La mayoría de estas rutinas accesibles desde Assembler


fueron diseñadas para ser usadas conjuntamente con la opción
de EXTENSIÓN DE COMANDOS/SENTENCIAS (descrita en el ANEXO 14).

OPBYTE FUNCIÓN

57 (39H) Evalúa una expresión BASIC (que contiene


con s tan tess va r i a b1©s y o parad o res) y co1o ca el
resultado en la PILA DE ARGUMENTO..

58 (3AH) Realiza cálculos dependientes del tiempo con el


valor que está en la PILA DE ARGUMENTOS»

63 (3FH) Saca un carácter del "string" de texto BASIC

64 (40H) Toma un carácter e incrementa el puntero de


texto.

65 (41H) Ingresaun carácter desde el aparato de consola.,


lo pone en el acumulador y retorna.

66 (42H) Ingresa al MODO DE CARRERA-

129 (81H) Ingresa un número en punto flotante ASCII y lo


coloca en la PILA DE ARGUMENTOS. El DPTR apunta
a la localidad de RAM externa donde está
almacenado el "string" de texto ASCI I„

152 (98H) Saca por el manejador de salida de consola el


contenido de R3:R1 en hexadecimal„

EJEMPLOS Para entender la forma como utilizar esta


característica del BASIC-52, a continuación se
presenta un ejemplo simple en el cual se llama desde Assembler
la rutina Basic que evalúa til logaritmo natural de un número»
a) PROGRAMA BACIC-57

REM ingrez;?. el $ cuyo logaritmo natural se desea conocer


10 INPUT "NUMERO MAYOR QUE CERO s "..N
20 PUSH N 5 REM coloca el número en la pila de argumentos
30" CALL 3000H a REM llama a subrutina Assembler
40 POP L : recupera logaritmo de pila
50 PRINT "El log» nat. de",N,"ess",L
60 END

b) PR08RAMA ASSEMBLER

ORG 32J00H ' origen de la rutina


MOV A,#35 'carga código de operando LOGARITMO NAT.
CALL 30H 'ejecuta instrucción Basic
RET 'regresa control al BASIC-52
ANEXO 14 EXTENSIÓN A LOS COMANDOS/SENTENCIAS

El BASIC-52 (versión 1.1) incluye una forma simple pero


efectiva para que el usuario añada COMANDOS y/o SENTENCIAS a
aquellas ya proveídas en el chip,, Todo lo que el usuario tiene
que hacer es escribir programas simples en Assembler que
residirán en memoria de código externa (ROM)„ El procedimiento
paso a paso es el siguientes
1 n El usuario tiene que informar al 8í252ftH~BASIC que va a usar
la opción de expansión,, ésto se hace poniendo el carácter 5AH
en la localidad de memoria de CODISO externa 2002H¡¡ al
hacerlo, el BASIC-52 llamará a la localidad 204SH (ROM
externa)- Entbnces se tiene que escribir una pequeña rutina
para setear el BIT 45 (2DH5 (bit 5 de la localidad de memoria
interna 37) y colocar esta rutina en lax localidad de ROM
204SH» Todo lo explicado se logra con el siguiente programas

ORB 20S2H
DB 5AH

ORS 2048H
SET8 45
RET

2 B Con el bit 45 seteado., el BASIC-52 1lamará la localidad de


ROM externa 2078H cada vez q ue in ten te cod i f i car una 1inea de
programa BASIC-52 en sus "tok ens" correspondientes (un "token"
es un número hexadecimal asi gnado como identificador de cada
instrucción BASIC~52H
En la localidad 2078H se tie ne que cargar el puntero de datos
(DPTR) con la dirección de 1 a tabla de búsqueda (lookup table)
suministrada por el usuari o 3 completada con las señales
(tokens)„

Se requiere la siguiente información para generar una tabla


de señales (tok le) del usuarios

a) Las señales del usuario son los números desde 10H hasta
1FH (16 tokens disponibles) a
b) La tabla de señales del usuario comienza con la señal,,
seguida por el texto ASCII que va ha ser representado por
esa señal s seguido por un cero (0E3H) indicando el fin del
texto ASCI 1 5 seguido por la próxima señal.
c) La tabla termina con el carácter G3FFH.
EJEMPLO i

ORG 2C378H
f
MOV DPTR,#USER_TABLE
RET

ORS 2200H ¡! puede usarse otra localidad


203

USER TABLE:
DB 10H 5 primera señal (token)
DB ' DISPLAY' 5 palabra clave del usuario
DB 00H i! palabra clave terminal
n
DB I1H ; segunda señal (token)
DB 'TRAIMSF' g segunda palabra clave del usuario
DB 00H Apalabra clave terminal

8 así hasta la 16ta señal (token)

Se usa la misma tabla de usuario cuando el BASIC-52


decodifica los tokens o "deseñaliza" una linea durante la
ejecución de un comando LIST-

4. El paso 3 señaliza la palabra clave (keyword) del usuario.,


ésto significa que el BASIC-52 traduce la palabra clave del
usuario en la señal ( t o k e n ) cíe usuario. Asi? en el ejemplo
anterior., la palabra clave TRANSF sería reemplazada por la
señal (token) 11H. Cuando el BASÍC-52 intenta ejecutar la
señal del usuario., primero e asegura que está seteado el bit
de expansión " 455 entonces llama la localidad ~'
2070H" para
obtener la dirección de la tabla de vectores (vector table)
del usuario- Esta dirección está colocada en el DPTR» La tabla
de vectores del usuario está formada por una serie de
"palabras de datos" (Data Words) que definen la dirección de
las rutinas de usuario en lenguaje ensamblador.

EJEMPLOü

ORS 2070H 5 localidad llamada por el BASIC para


a obtener la dir» de tabla de vectores

MOV DPTR?ttVECTOFLJABLE
RET

VECTOR_JABLE¡;

DW RUNJDISPLAY ¡¡dirección de la rutina DISPLAY.,


ü token 10H
DW RUNJTRANSF ¡¡dirección de la rutina TRANSA
"¡¡token 1ÍH
y
ORB 2 ¡¡estas rutinas pueden estar
l¡ colocadas en cualquier lugar.

RUNJDISPLAYs
3
3aquí va el código ASM del usuario para DISPLAY
y
RUN_TRANSFs
ü
5aquí va el código ASM del usuaria para TRANSF
Note que la posición ordinal, de las PALABRAS DE DATOS en
la TABLA DE VECTORES de usuario tiene que corresponder a la
señal (token)* así la sentencia de usuaria con la señal JL0H
tiene que estar en la primera entrada DW en la tabla de
vectores., 11H la segunda., y asi sucesivamente. Pero el orden
de los "tokens" en la TABLA DE USUARIO no es importante,.

EJEMPLOS

USER TABLE

DB 12H 5 los "tokens11 no tienen que estar en


DB ' TRAIMSF' ¡¡orden en la tabla de búsqueda del
DB 0Í3H 5usuario (user lookup table).
§
DB 10H
DB 'DISPLAY'
DB 00H

La opción de extensión cié comandos/sentencias se puede


usar también para [Link] la sintaxis del BASIC-52» Esto se
logra simplemente colocando una sintaxis propia en la tabla de
usuario., y poniendo la señal "token" BASIC apropiada al frente
de su palabra clave redef iriida. Una 1 ista completa de todas
las señales (TOKEIM) y palabras claves (KEYWORD) BASIC-52 se
presen ta en la próxima página ,.

El BASIC-52 siempre saca listados de programas de usuario


usando la sintaxis definida por el mismo,, pero todavía
aceptará la palabra clave estándar como una instrucción
válida- Por ejemplo., supongamos que el usuario quiere
sustituir la palabra clave PH1 „ por HEXOUT,, entonces se
debería generar la siguiente entrada en la tabla de usuarios

USERJTABLE;

DB SFH 'señal para PH1,


DB 'HEXOUT' 'va a entrar en la tabla
DB 00H 'de búsqueda del usuario

DB 1Í3H
DB 'DISPLAY'
Db 00H
el resto de la tabla del usuario (USER__TABLE}
DB 0PFH 'fin de la tabla

Ahora el BAS1C-52 aceptará la palabra clave HEXOUT y


funcionará de una manera idéntica que PHi. Además PH1. todavía
funcionará correctamente,, sin embargo HEXOUT será mostrada
cuando el usuario liste un programa (ejecutando el comando
LIST)„
• *

BAS1C-52

'CÓMMAND/STATEMENT EXTENSIGNS (VERSIÓN :1.1 ONLY)

TOKEN KEYVÍORD TOKEN KEYWORD TDK EN KEYWORl)

GOhi LET OBOH ADS . OECH <-


81H CL¿AR ' OQ1H 3 NT ' OEDH O
82H PUSH OB2H SON OEEH <
03H , ' GOTO 033H NOT- OEFH >
04H PWh OS4H cos OFOH RUN
85H PHO. OflSM TAN • OF1H LIST
BÓH UI OB¿H SIN GF2J-Í".' NULL
87H uo OS7H SQR , OF3H NEW
68H POP • OS BU CBY ÓF4H CDNT
89H PHINT OB9H' EXP OFSH PKÍÜG
S9H . P. OBAH . ATM OF6H ' XFER
.89H ? (VI. 1 ONLY) OBQH LOO OF7H RAM
"OAH CALL OBCH DOY OFSH . ROM
SBH ÜIM OBDH XBY OF9H FPROG
8CH STRING OEEH PI OFAH-OFFH 'NOT L'SED
8DH" BAUD oaFH RND
8EH CLOCK OCOH GET
8FH PK1. OC1H FRcE
9OH STOP OC2F! LEN
X91H QNTIME OC3H XTAL
<92H Di-ÍEX'l OC4H MTOP
-93H RETÍ OC5H TIME
DH OC6H IE
.95H RliSTGRE • i. OC7H IP
Ri£M ' OC8H TlhERO
97H NEXT * - ' OC9H ' TIMERI
98H . ONERR . - [Link]'H TIMER2
99H CTN <"• OCBH T2CGN
9AH INPUT OCCH TCON
9BH READ OCDH TMOD
9CM DATA ' OCEH RCAP2
9DH RETURN •' - OCFH PORT1
9EH IF •' '- ODOH P C ON
'9rH .GOSUB ' ^ OÜ1H ASC C
OAOH 'FOR ' ; OD2H USINGÍ
OAIH I-IHILE f '• OD2H U. (
OA2H UNTJL OÜ3H CHRÍ
OA3H END ' . OD4H--ODFH NOT USED
OA4H TAD '.•' OEOH
O ASM • THEN •OE1H
OA6H TO. • OE2H
OA7H EÍTEP OE3H
OA8H ' ELSE OE4H
OA<7H SPC OE5H
OAAH CR OE6H , XOR.
OABH I OLE OE7H . AND. . .
OACH BTG CV1. 1 ONLY) OEHH , Ofí.
OADH L13G (VI, i ÜHLY) OE9H - (NEGATE)
OAEH PCM í V l . 1 ONLY} OE-:AH
OAFH nROMÍVl. 1 ONLY) OEDH >=>
BIBLIOGRAFÍA

ANÓNIMO,, Special Report "8051 Boards",, Articulo de la revista


"COMPUTERCRAFT"., HICKSVILLE, NY,, February 1993

AVDCET SYSTEMS INC., AVSIM51 8051 Family User's Manual,, ver.


1.3, Rockport, Maine, U.S. A - , 1988

AXELSON Jan,, BASIC-52 Options for 8051 Microcontrollers„


Articulo de la revista "COMPUTERCRAFT"9 HICKSVILLE, NY,
January 1993

BIT Software Inc., BITCOM User's Manual., 1989

ELCOMP? Microcomputer Hardware Handbook, First Edition.,


Holzkirchen., Germany, March 1982

E.P.N.j Facultad de Ingeniería Eléctrica^ apuntes de Control


con Microprocesadores (teoría y laboratorio),, 1992

E.P-N.,, Facultad de Ingenieria Eléctrica., Apuntes de Control


Discreto,, 1991

E.P.N.., Facultad de Ingenieria Eléctrica,, Apuntes de


Computadores Personales (teoría y laboratorio)., 1991

INTEL Corporation,, MCS BASIC-52 Users Manual., Santa Clara, CA ¡,


1988

IWTEL Corporation,, Memory Components Handbook., 1987

INTEL Corporation, Microcontroliers Handbook, 1986

IIMTERSIL, Products Manual


LEDESMA, Bolívar,, TARJETA MCPD51DA-- Características técnicas
y Guía de uso, E.P.N.? Facultad de Ingeniería Eléctrica,Quito,,
1992

LÓPEZ RODRÍGUEZ, Pedro, MARTÍNEZ RUBIO, Juan., Muítigrabador de


dispositivos programables? artículo de REVISTA ESPAÑOLA DE
ELECTRÓNICA, Valencia, sept. 1989
MAXIM,, Integrated Products Manual
McLYMAN, Caloñe! William,, Transformers and Inductors Design
Handbook, Marcel Dekker Inc., New York 3 U-S-A.., 1978
MICROMINT INC.,, BCC52 BASIC COMPUTER/CONTROLER Users Manual-,
Rev. 3.0, Vernon CT, U.S n A - , 1986
MICROMINT INC., BASIC-52 Extensions Manual ROM A & ROM A+B,
Reléase 1-0 & i „ 1 5 Vernon CT, U.S.A.., 1986

MICROSOFT CORPORATION,, LEARNINS TO USE MICROSOFT QuickBASIC


Versión 4.5S U.S.A-, 19S8
MICROSOFT CORPORATION, MICROSOFT QuickBASIC, PROGRAMMING IN
BASIC., Versión 4-5, U.S.A.S .1988
Philips ECS., ECG Semiconductora Master Replacement Guide,,
Williamsport PA 5 U.S.A-,, 1987

SCHLENGER-KINB, Thomas3 Der Basic-EMUF9 articulo de la revista


"EINPLATINENCOMPUTER -HARDWARE"., Berlín., 1990
THOMPSON., Petar M. , Ph.D. and SYSTEM TECNOLDGY, INC. ?
Program CC User's Guide3 versión 3.0,, 1985

También podría gustarte