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.
5ó
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