Vous êtes sur la page 1sur 226

PROYECTO TERMINAL

/MANUAL DE PRACTICAS DE SISTEMAS DIGITALES

PROFESOR DE PROYECTO: Ing VictorTellez Arrieta.

1’
Alumno: Gerard0 Márquez

Matricula: 88324556.

/Carrera: Ing Electrónica

Area de concentración: Computación


México 1996/
Con inmenso cariño
y agradecimiento

A mi madre y a mi padre
Por su ayuda y compresión para lograrmi carrera

A m i s . hermanos:

JOEL
LEONARD0
Al mi profesor de proyecto.

r3: Jratirud ami Maestro,


I n g l í c t o r Tellez Arrieta
cuyoz valiosos consejos
guiarc:. rr.i trabajo.
Con a f e c t o a mis Maestros.
I
Prefacio

El objetivo de la realización de este proyecto es el tener una


base para el laboratorio de las materias de Sistemas digitales
I,I1 y
111.
Este manual se divide en tres partes

1.- Manejo del microprocesador Z80 Zilog.


2.- Manejo del microcontrolador8031 Intel.
3.- Manejo del microprocesador68HCll Motorola

Cada una de las secciones contlene cuatro practicas, solamente


la tercera parte contiene dos practicas

Enestemanualsehainscrtadoelmaterialdeinformación
necesario para su realización de cada una de las practicas, sin
embargo es bueno que se consulte la bibliografia para ampliar y
profundizar sus conocimientos.

Gerard0 Márquez López.


INDICB

1 .. INTRODUCCION..................................... 3

CAPI2wLO I

2 .. CARACTERISTICAS DBL 280 . . . . . . . . . . . . . . . . . . . . . . . . . . . 4


3 . RBGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
4 ..U . ............................................... 6
5 .- HARDWARE DEL PROCBSADOR . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6 .- TIPO DE INSTRUCCIONES DEL280 . . . . . . . . . . . . . . . . . . . . . 11
7 .- ARQUITECTURA BASICADE LAS HICROCOMPUTADORAS . . . . . . 14
8 .- SISTEMA MINIM0 DEL 280 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
9 .- CEBCA RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 4
10.- MODO O . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
12.- SOLUCIOH PRACTICA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
13.- SOLUCION PRACTICA2 ............................... 32
14.- SOLUCION PRACTICA3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

CAPITULO 11

16.- CARACPERISTICAS DEL 8031 .......................... 42


17.- HARDWARE DEL PROCESADOR ........................... 43
18.- DESCRIPCION DE ESPACIOS EN MEMORIA . . . . . . . . . . . . . . . . 47
19.- REGISTRO DE PUrOCIONES ESPECIALES . . . . . . . . . . . . . . . . . . 52
20.- REGISTRO DE CONTROL DE POTENCIA . . . . . . . . . . . . . . . . . . . 5 4
21.- REGISTROS DE INTERRUPCIONES. . . . . . . . . . . . . . . . . . . . . . . 55
22.- REGISTRO DE CONTROL DBL PUERTO SERIE SCON . . . . . . . . . 63
23.- TRANSMISIOR DE DATOS EM SERIE ..................... 65
24.- MANEJO DE ADC ..................................... 67
25.- CONTROL DE POTENCIA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 2
26.- RELOJ DE TIEMPO REAL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
27.- SOLUCION PXACTICA1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 9
28.- SOLUCION PRACTICA2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
29.- SOLUCION PRACTICA 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
30.- SOLUCION PRACTICA4 ............................... 110
CAPITULO I11

31.- CARACTERISTICAS DEL 68HCll........................ 146


32.- FAMILIA DEL 68HCll ................................ 148
33.- t3oDOS DE OPERACION ................................ 150
3 4 . - RBGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .151
35.- MODOS DB DIRECCIONAMIEITO ......................... 152
3 6 . - MANEJO DE REGISTROS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
37.- SISTEMA M I N I M 0 DEL 68HCll . . . . . . . . . . . . . . . . . . . . . . . . . 156
3 8 . - TRANSMISION SERIAL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
39.- SOLUCION DE LA PRACTICA 1 . . . . . . . . . . . . . . . . . . . . . . . . . 160
4 0 . - SOLUCI0)J DELA PRACTICA 2 . . . . . . . . . . . . . . . . . . . . . . . . . 191
El avance tecnológico en el campo de la electrónica ha
dado
lugar
la
creciente
a aparición
de
instrumentos
controlados por microprocesadores. Dentro de estos equipos se
incluyer. aquellos cuyas ireas de aplicación son la medicina,
la telefonía, la seguridad en cualqier empresa; por esta
razónes muy loableestudiarlos y elaborarsistemasque
utilicer, estos dispositivos.

Las principales caracteristicas de un equipo basado en un


m.icroprocesadorson EU alto grado de automatizacion y su
capacidaE de realizar flinciones especificas. Dentro de estas
Ul'I ,,mas podemosmencionar las decomputacióx", er. quees
necesario llevar a cabo ur,a serie de operaciones matemáticas,
las de seguimiento y control y , en algunos casos, las de
simulacibn.

Pocos equipos han sido desarrollados para el diseño de


instrumentos
satisfagan
que estas
características
particulares, a un costo accesible.

Hay muchos microprocesadores diferentes en el mercado y


aunque la nomenclatura de las instrucciones es algo distinta
para caaa uno, los procesos básicos de cómputo lógico son
semejantes en todos los dispositivos. Mas no podemos aseverar
que son completa-nente idénticos estos dispositivos, pero son
numerosas las similitu6es.

3
CAPITULO I
MANUAL DE PRACTICAS
CARACTER~STICAS DEL z 8 0 .

El Z80 es un microprocesador orientado hacia los registros.


Dieciocho registros de 8 bits y cuatro de 16 bits dentro del
procesador central son accesibles al programadory funcionan con
memoria programabie estática. Estos registros se dividen en dos
conjuntos,principal y alternativo,cadauncde los cuales
contiene seis registros de 8 bits de uso general, que pueden
ut.illzarse bie;: sea inüividualmente o bien sea como tres paresde
registros de 16 bits. También
incluyen
dos
cozjuntos de
acumuladores y de registros de estado.En la figxra 1 se ilustra
la arqitectura interna del prcesador central 2 8 0 . En la figura 2
se muestra q u e dentro del ZFCO hay acumuladores y registros de
estado, junto con registros generales y de uso especia;.

BIICIIIIM )E BLOQUES DE Bus datos


8 bits
CPI 286

I u Bus direcciones
16 bits
Figura 1.-Diagrama deblccAr-de la arquitectura interna del
procesador central280.

ii continuaciór se da una descripción de la funcion y de la


estructura de los componentes principales del procesadorcentral.

4
MANUAL DE PRACTICAS

1.REGISTROS.
A Acumuladores y registros de estado
El procesador central contiene dos pares independientes de
acumulador y registro de estado, uno en el conjunto de
registros principalesy el otro en el conjunto de registros
alternatidos. El acumulador recibe los resultados de todas
las operaciones lógicas y aritméticas de 8 bits, mientras
que el registrode estado indica la ocurrencia de condiciones
especificas lógicaso aritméticas en el procesador tales como
paridad,cero, signo, acarreo y desbordamiento.Una instrucción
cie intercambio simple permite al programador seleccir-lar uno
c o t r o par de acumuiadoreso registros de estado.

R Registro de uso general.


Hay dos conjuntos similares de registros de uso general. Ei
conjunto de registros principales contiene seis rngistros de
8 bits llamados B,C,D,E,Hy L; el conjunto de registros
alternativos contiene también seis registros 8debits que se
denominan B ' , C ' , D ' , E ' ,yH '
L '. Para operacionesde 16 bits,
estos registros pueden agruparse en pares 16 de bits
(BC,DE,HLo BC',DE',HL'). Una instrucción de intercambio
Único permite alprogramador elegir alternativamente entre
los conjuntos de pares de registros.
Registros de uso especial.
1 PC (contador del programa) .
El contador de programa contiene una dirección de 15 bits en
memoria a partir de la cual se buscara irlstrllcci5n
la en
curso. Pespués de la ejecuciór, ,5e la instrGcción, el
ccTnLacior X se incrementa, si ei programa ha de proseguiz-
al siguiente bl-te en memoria o el contenido actual delPC se
sustituye por un nuevo valor, si ha de ejecutarse sun c?lto o
una instrucción de llamada.
2 SP (puntero de pila)

El Z10 permite varios niveles de jerarquización su1 derutinas


mediante el uso de una pila y de un puntero de pila;cuar,do
.ci. ejecutan algunas instrucciozeso cuando se hacen 1: a-,adas
a subrutinas,el contador PC y otros datos pueden almacenar
temporalmente en una pila. Una pila es una zona

5
MANUAL DE PRACTICAS

reservada de varias posiciones de memoria, cuya parte


superior se indica por el contenido del puntero de pila. Es
decir, el puntero de pila indica la dirección de la entrada
hecha más recientemente, porque las posiciones de memoria
están organizadas como un fichero, el ultimo entrar, es el
primero en salir. Al examinar las entradas particulares en la
pila, el procesador central retorna a un programa principal
haciendo casD omiso de la profundidad de las subrutinas
jerarquizadas teóricamente, la pila podría tener una
longitud
de 64 kbytes, sin
embarqo, el espaciode
programa no debe recubrirse rn escritura mediante una
pila en expansión.
D Registro índice IX y IY.
Estos registros facilitan la manipulación de datos de
tablas.son dos registros independientes de 16 bits, que
retienen las direcciones de base utilizadas en modos de
direccionamienco indexado y apuntan a posiciones en
memoria, cuando han de almacenarse o recuperarse datos
pertinentes. Incorporando en las instrucciones indexadas
hay un entero con signo en complemento a 2, que
espesifica el desplazamiento desde esta dirección de base.
E Registro de direcciones de página de interrupción (I)
Este es un registro 8de bits que pueden cargarsecon una
dirección de página de una rutina de servicio de
interrupción. Durante un programa de interrupción modo 2,
el control vectorizars esta dirección de página.
F Xegistrn ie rczsneraci6n (refresco) de merr,oria (R.)
Para .,-alijar :.emor: as diLlámicas para el
289, -a registro de
generación de rnemorias de 7 bits se incrementa
automáticamenEe después de cada búsgueda de instrucción.
I1 UNIDAD LóGICA Y ARITMETICA
Las manipulaclones aritméticas y las operaciones lógicas se
tratan como I bitssimultj1t ; enlaALU (unidad aritmética
lógica! del 2 8 0 . La ALU secomuni-a internamente con los registros
del procesador cer-rral y no e:, directamente accesible por el
programador. La ALL realiza la ope-clciones siguientes:
SUMA, RESTA, k V D , OR, OR EXCLUSIVA, COMPARCION, INCREMENTO,
DECREMENT0,DESPLAZAMIENTO A IZQUIERDA O A DERECHA, PUESTA A
UNO DE BIT, PUESTA A CERO DE BIT, PRUEBA DE BITS.

6
MANUAL DE PRACTICAS

i
Figura 2.
280.
-Configuración de registros de procesador centra:

111 kegistro de instrucciones y control de procesadorcentral.


El registro de instrucciones retienen el contenido de la
posición de memoria direccionada por PCel (contador de
programa) y se carga durante el ciclo de búsquedacada de
instrucción. La unidad de control del procesador central
ejecuta las funciones definidas por la instrucción en el
registro de instruccionesy genera todas las señalesde
control necesarias para transmitir los resultados a los
registros adecuados.
IV H A R D W A R E DEL PROCESADOR CENTRAL
A Ec la figure. 3 se detalla la disposición de las sa1.idas
(diagrama de r2nexiones) delas terminales del Z 8 C .
Sesuministraenunencapsuladonormalizado 3IL de 40
termina1es.Acontlnuación se daunalista y laexplicación
corr.-.spondiente delas funciones de las terminales.

.:O-;i15 bus 3e Salida triestado, activa a ni\.elalt 3 ,


1-5 dirección AO-Al5 constituye un bus de direcciones

30-40 de 16 bits. Estas señales proporcionanla


dirección correspondiente a intercambios

7
MANUAL DE PRACTICAS

de datos de memoria (hasta 64 kbytes) y


a los intercambios de datos del disposivo
de E/S. En el direccionamiento de E/S se
utilizan 10: ocho bits de dirección
es para permitir al usuarios seleccionar
directamente hasta 256 puertos de entrada
o 256 puertos de salida. AC es el bit de
dirección menos significativo. Durance el
tiempo de regeneración, l o s siete bits
infericr contienen una direcciór,de
refrescaciór valida.

6-
- a0
m A l
-MRE
a2
I ORQ A3
CONTROL DEL 9 a4
SISTEMA WD A5
A6
R X H A 7
HFILT a8 BU'S D E
DIRECCIONES
WCIIT A 9
A l 9
A l l
C O N T R O L DEL I NT A 12
CPU a13
NHI A l 4
ais
RES E T
D9
CONTROL DEL B U S RQ Dl
B U S CPU BUSAK D2
D3
BUS D E
D A T OS

nes) para

bus de Entrada,Salida triestado,activa a niT,-el


datos alto DO-D7 constituye un bus de dc.tos
bidireccional de 8 bits, que se utiliza
para ir+.ercambiosde datos con memoria y
disy: , s , , I v o s de E/S.
,iclo de
C Salida, 2ctiva a nivel bajo. MI indica
maquina 1 que el ci lo de búsqueda del código de
(N: negada) operación de una ejecución de instruccio
nes. Ha de tenerse presente que durante

8
MANUAL DE PRACTICAS
la ejecución de códigosde operación de
2 bytes, MI es generada cuando se busca
cada byte de código de operación. Estos
códicros de operación de2 bytes
comienza siempre conCBH,DDH,EDH o FDH.
MI se presenta también con IORQ(negado)
para indicar un ciclo de acuse de
recibo de interrupción.

MREQ peticiór. de Salida triestado, activa a nivel bajo. La


19 memoriaseñal de petición de memoriaindica que
(MREQ negada)el bG3 de direcciones retiene una
dirección válida para una operaciónde
lectura de memoriao de escritura de
memoria.

IORQ peticiór. de Salida triestado, activa a nivel bajo. La


20 e/s señal indica que la mitad inferior del
IORQ negada bus de direcciones retiene una dirección
de E / S válida para una operación de
lectura o escritura de E / S . Una señal
IORQ se genera también como una señal MI,
cuando se acusa de recibo de una
interrupción, para indicar que un vector
de respuesta de interrupción puede
colocarse enel bus de datos. Operaciones
de acuse de recibo de interrupción pueden
producirse durante el tiempode MI,
aurlque esta prohibidas lasoperaciones de
E 'S.

RD lectura 6e Salida triestado, activa a nivel bajo, RD


21 memoria indica que el procesador central desea la
(negadai lectura de memoria o de un dispositivode
E/S. La memoria, o dispositivo de E/S
d;r. cionado, debe utilizar esta señal
para :ontrolar los datos en el bus de
datos del procesador central.

WR escritura
de Salida triestado, activa a nivelbajo. WR
22 memoria indica que el bus
de datos del procesador
(WR negada) central retiene datos validos a almacen

9
MANUAL DE PRACTICAS
arce en la memoriao dispositivo de E / S
objeto de direccionamiento.
RFSE regeneración Salida, activa a nivel bajo RFSH indica
28 (RFSHnegada) que los siete bits inferiores del bus de
direcciones de regeneración para
memorias dinámicas y la señal MREQ en
curso debe emplearse para realizar una
lectura de regeneración para todas las
memorias dinámicas.

:%X: estado de Salida, acriva a nivel bajo K Z T indica


18 parada que el proc' sadorcentral ha ejecutado
-3-k;T instruccióE 'IALTnegada y está esperando
una interrupciónno enmascarable o
enmascarable antesde que pueda
reanudarse la operación.Mientrasse está
en esta condición, el procesador central
la ejecuta

NOPs (sin 0peración)para mantener la actividadde


regeneración de memoria.
WAITesperaEntrada,activaanivelbajoWAITindica
24 WAIT negada al procesador central 280 que los
dispositivos de E / S o memoria, objetode
direccionamiento, no están preparados
para una transferenciade datos. El
procesador central continúa
introducic1do estadosde espera mientras
q-.e WAIT se activa; esta señal permite
q ~ la
e memaria de dispositivcs de E C: se
sixcronice con el procesador central.

INT interrupción Entrada, activa a nivel bajo. La señal de


a -

-tr INT negada perición de interrupción se genera por


dispositivoc de E / S . Una petición se
aceptars. 3, Linal de la instrucción en
curso si es:; activado el flip flop de
validación dt interrupción bajo control
de software ir _ern0 y si no se activa la
señal BUSRQ. Cuando el procesador central
acepta la interrupción, una señalde

10
MANUAL DE PRACTICAS

acuse de recibo (IORQ durante el tiempo


MI) se envía al principio del siguiente
ciclo de interrupción en l o s tres modos
diferentes.
NMI interrupción Encrada, disparada por flanco negativo. La
i7 no enmascarzble línea de petición de interrupción
NMI nega& no enmascarable tiene una prioridad más
alta que INT y siempre se identifica al
final de la instrucción encurso,
prescindiendo del estado del flip-flop de
validación de interrupción. NMI obliga al
procesador central 280 a reiniciarse enla
posición 0066. El contador de programa se
conserva automáticamente en la pila
externa, de modo que el usuario pueda
volver al programa que fue interrumpido.
Ha de tenerse en cuenta quelos ciclos de
espera (WAIT) continuos pueden impedir que
finalice la instruccidn en curso y que una
señal BUSRQ anulará una señal NMI

V TIPOS DE INSTRUCCIONES DEL 2 8 0


El 280 puede ejecutar 158 instrucciones independientes
incluyendo las 78 instrucciones del 8 0 8 O a
Puede agruparse como sigue:
A CARSA E INTE3CAMBIO
Las instruccizy-es de carga desplazan datos entre registros
o entre regist:-ns 1' memoria. La fuente y el destino de
estds datos se sspecifican dentro de la instrucciones.
Las instrucciTxes de intercambio permiten el contenido de
dos regisrros.
B ARITMÉTICAS -: LÓGICAS
;:,stas icszrucciones actúan sobrelos datos en el
ac:.muladcr, un registro o una posición de memoria
dc:;igna&. Los resultados se colocan en el acumuladory
lo^ Indic3dores de estado se establecen
consecuerzemente.
Las operaciones aritméticas incluyen la adición y resta de
16 bits entre Fares de registros.

11
MANUAL DE PRACTICAS

C BúSQUEDA Y TRANSFERENCIA DE BLOQUES


El 2 8 0 utiliza una sola instrucción para transferir
cualquier bloque de memoria a cualquier otro grupo de
posiciones de memoria contigua. La búsqueda de bloques
utiliza una sola orden para examinar un bloque de memoria
para un carácter de 8 bits particular.

3 ROTACI~NY DESPLAZAMIENTO
Los datos pueden ser objeto de rotacióny
desplazamiento
en el acumulador, un registro del procesador centralo
memoria. Estas instrucciones tiznen también mediosde
rrataxiento del código decimal coditicado en binarlo
!. BCD 1 .

z WIPULACI~N DE BIT
La manipulación de bits incluye las funciones de
posicionamiento de inicialización y de prueba. Los bits
indixTiduales pueden modificarseo probarse en el
acumulador, unprocesador central o memoria. Los
resultados de la operaciones de prueba se indican en el
registro de estado.

F SALTO, LLAElADA Y RETORNO


'Jn salto es una bifurcacióna una posición de programa
especificada por el contenido del contador de programa.
El contenido de este último puede proceder de tres modos
de direccionamiento inmediato, extendido o indirecto por
:-egisrro. Una llamada es na TornLa especial de salro en
.%ride la direccion, que sigue a la instrucción de
llamadas, se introduce en l a pill antes de que se realice
el salto. Un retorno esla inversa de la llamada. En esta
categoría se incluyen las instrucciones especiales de
reinició.
G ENTRADA Y SALIDA
Estas instrucciones transfie--1 datos ent-re registro y
memoria a dispositivos de E/S exterrjs. Se dispone de 256
bits de entraday de salida. Instruc :iones especiales
proporcionan desplazamiento debloque.: de 256 bytes a , o
ciesde, los bytes de E/S y memoria.

12
MANUAL DE PRACTICAS

H CONTROL CPU
Estas instrucciones incluyen la parada funcional eldeCPU
o la de hacer quese ejecute una NOP (sin operación). La
capacidad para desinhibiro inhibir entradas de
interrupción es un mediode control suplementario.

VI Formato de datos e instrucciones.


La memoria para el 2 8 0 está organizada en cantidades de
8 bitsdenominadabyte (ver figura 4). Cadabytede
progrma está almacenado en una posición de memoria
singular y os objeto de referencia por medio de una
dirección ;Linaria de16 bits.

MSB
LSB
(Bit mas significativo) (Bit menos significativo)

figura 4 Organización de un byte


de datos en el280.
La capacidad de direccionamiento directo total es de 65536
bytes (64K) de memoria, que puede ser cualquier combinación de ROM
(memoria de s ó l o lectura) EPROM (memoria desólo lectura borrable
programable) o memoria programable.
1711 Indicadores de estado del 280
.:1 registro de estado (F y F ' ) suministra informar-ón al
u s a a l - i o cor respecto al estado del procesador central ec cualquier
moment9 dadc. Fay cuatro bits de estado comprobabiss y dos nc
comprobables, en cada registro. En la figura 5 se muestra la
posición y la identidad de estos bits de estado.

C = 1NDIC.ADOR DE ACARREO.
N = INDI ADOR DE SUMA'RESTA
P/V = INDICD.?C)R DE PARIDAD/DESBORDAMIENTO
H = INDICADOR DE SEMIACAREO
Z = INDICADOR DE CERO
S = INDICADOR DE SIGNO

13
MANUAL DE PRACTICAS

X = NO UTILIZADO
figura 5 posiciones e identidad de los bits de indicación de
estado en el registro de estado.

Las instrucciones ponen a uno (bit de estado=l)o pone a cero


<Lit estado=O) los indicadores de una manera en correspondencia
con la operación particular que está ejecutando.

ARQUITECTURA BÁSICA DE LAS MICROCOMPUTADORAS.


Las cuatro arquitectcra básica de las microcompuradoras se
presenta en la figura6 Estas son:

Aj Arquitectura esLándar.
Laarquitectura estándar
se
caracteriza por utilizar u? microprocesador (MPU) que realizalas
funciones de C P U . La memoria ( R A M y ROM) y el control de l o s
dispositivos
de
entrada y salida (PIO) son
externos
al
microprocesador.Serequiere,además,ungenerador de reloj
externo y un cristal.
Esta arquitectura se distingue por poseer tres canales de
información datos, direcciones y control. Es importante hacer
notar que, en la arquitectura estándar es posible estándar es
posible conectar todo el número de dispositivos deseados a los
canales de información, es decir, este sistema es ilimitado.
B) Microcomputadora en un circuito en un circuito integrado.
Los progresos de la integración a gran escala han hecho posible
desarrollar en un solo integrado un micr?procesador, un reloj,
memoria ( R A M y ROM) y control de Yuertos <e E/S. Además de esto,
zluu~c scuentan también cor. reloje; programables, circuitosde
_ .
i : : i c i z - l z a c l o n , etc. El c r i s - t a l es externo.
. I

_,na
_ consecuencia imporEante e.1 esta arquitectura. es el no
requerir del canal de datos ni el de direcciones. Estas líneas
sobrantes se utilizan para proporcionar, al menos, tres canales de
S Sits de entrada y salida. Estos puertos se conectan directamente
a los dispositivos periféricos.
P Microcomputadoraendoscircuitc S integrados.Esta
arquitectura se encuentra entre la estándar y la microcomputadora
e:? un circuito integrado. En la microcomputa "Jra formadapor dos
integrados, el microprocesador es análogo a la primer arquitectura
mencionada. pero incorpora el reloj y capacidad de controlde

14
MANUAL DE PRACTICAS

entrada y salida de información.


La principal diferencia respecto a las otras arquitecturas,
radica en contar con un integrado que incluye la memoria y más
capacidad para controlar puertos E'S. De esta forma, con dos
integrados se logra ensamblar una microcomputadora completa. Su
cantidad de memoria es limitdda. Como requiere menos líneas de
direccionaxiento de memoria, las líneas sobrantes son utilizadas
como entrada-salida es decir, el r.icroprocesador ( M P U ) en esta
arquitectcraseencuentraequipadcconalmenos 8 líneasde
entrada .salida. El segundointegrado,además de contar C O R
memoria, elspone, For lo menos, de Cios puertos de E bits para
comunicarse con el exterior.
Aunque desde un punto de vista funcional esta arquitectura y
la de la rr.icrocomputadora en un integrado parecen ser similares,
desde un punto de vista de ejecución no lo son. La primera, al no
compartir elintegradodel MPU conlamemoria o E / S , se
caracterizaporsermásveloz y poderejecutarfunciones
complejas. Por el contrario, la microcomputadora en un integrado
se encuentra limitada en velocidad de ejecucióny en complejidad
de funciones.

D) Bit-slice. Estos
dispositivos son rebanadas de un
procesador, por lo que si se conectan en cascada, se cuenta con
una unidad lógica aritmética( A L U ) . El bit de acarreo (carry) y la
mejoría de la velocidad al multiplicar y al dividir deben ser
alambradas externamente. Sin embargo, el mayor problema radica en
la realización de!~a sección de control y su circuiteria asociada.
UnaALUconsusregistrospuedenserensambladacon 4 a 6
integradc.:,en cambio, la unidad de control del procesamielAco
r e q u i e r e ee 20 a 50 integrados.

15
MANUAL DE PRACTICAS

1 ARQUITECTURA E

CRISTAL
I - MPU ROM RAM PIO- PERIFERICOS
+
e
RELOJ A
9
A

rp
CANAL DE DIRECCIONES [NO SE INCLUYE EL CANAL DE CONTROL)
2 MICROCOMPUTADORA EN UNINTEGRADO
CRISTAL CANAL1

CONTROL - MPU
I
f
,
CANAL 2
PERIFERICOS

3 MICROCOMPUTADORA EN DOS INTEGRADOS

-
DATOS
CRISTAL -MEMORIA Y
CONTROL DE
MPU PERIFERICOS
L

PERIFERICOS
CANALE S E /S
2
Y4 I dL0L.L
SALlDb DATOS
ENTRADA INSTRUC CANAL DIREC.
I 1 -
BIT BIT BIT MEMORIA
Y
CONTROL SLICE SLICE CONTROL
SLlCi .
EXTERNO 2 N DE
1
PERIFERICOS

4 4 ++
I
CONTROL ~. -
ENTf4AG.A

Figura 6.-Arquitectura b á s i c : de las microcomputadoras.

16
PRACTICA 1
SISTEMA MÍNIMO.
el conociendo su
objetivo: Armar un sistema mínimo con 280,
arqitectura.
Material: Microprocesador Z8ci
Memoria
Ram
6264
MemoriaEprom2764
8255 Pio
245 er Buf
Convertidor D/A DACO8
Latch 323
Display
Compuertas
Resistencias,capacitores,etc

INTRODUCCI~NTE~RICA.
arquitectura
La microprocesador
del determina los
dispositivos de soporte requerido para hacer un sistema de mínimo.
Portantoesnecesarioexaminarbrevementelasprincipales
diferencias en la arquitectura.
Un sistema mínimo, tiene las características siguientes:
l.-ENTR?iDA Deben existir medios para permitir la introducción
de datos o instrucciones.
2 . - MEMORIA La secuencia del programa debe almaccmarse antes
Y despuésdelaejecución y debedinponersederecursos
paraalmacenar elresultados
-.. . - UNI3AD
decualquier sistema.
_ ARITMÉTICA Y LóGICA Realiza
operaciones
aritr,sticas con los datos
almacenados
de entrada.
4 . - SECCIóN DE CONTROL Toma decisiones con respecto al flujo
del programa y control del proceso basándose en los
estados internos delos resultados de cálculos
aritméticos.
5 . - SALIDA Los resultadosseentreganaldsdario o se
a-.
macsnanenunmedioadecuado.
El ricroprocesador es el circuito integrado único sobre el
qur esta construido un sistema mínimo. En su forma menos .-ompleja,
los microgrocesadores sólo incluyen las funciones de tres y cuatro

17
MANUAL DE PRACTICAS
elementos de datos y deben contar con dispositivos externos unidos
a los buses para realizar las demás tareas. En la figura 7 se
iicstra el diagrama de bloques básicos de una microcomputadora de
8 bits y muestra la interconexión de estos buses y elc-.mentosde

SALIDA DATOS
REGISTRO DE DATOS
DE HEHORIA
hL/mu.u~woR REG1 STRO DE DI RECCI ONES
t DE HEHORII
r . HEHORI I

'
I O
1 UNIDID RRITHETICI L O C I M

ACUHULRDOR

SALIDA
DATOS DE DATOS
118)

SALIDA ENTRADA
I I I
Figura 7.-Un diagrama debl'oques de una microcomputadora que
ilustra el concepto de la disposición
de buses de datos.

soporte. La computadora de la figurd 7 utiliza seis buses


independientes; direcciones de memoria, datos de memoria (entrada
/ salida), direcciones de E / S y entrada sallda de datos. El
microprocesadorcontiene
un
procesador
centralque
está
constituido por los circuitos requeridos para tener 2 la memoria
adecuada y las posiciones E/S de y para intentar las instrucciones
resultantes que también se ejecutan en esta unid7d. E l proceso
central contiene también la ALU (unidad aritméti-ay ljgica), que
es una red combinacional que realiza operaciones <:ritméticas y
lógicas con los dacos Además, el procesador central incluye una
sección de control que rige el funcionamiento de r :.Jmputadora
la y
l o s diversos registros de datos utilizados para la manipulación y
almacenamiento

18
MANUAL DE PRACTICAS ~ ~~~ ~~

de datos e instrucciones. Realmente pocos microprocesadores tienen


un buses independientes. El número de terminales que se requería
en el circuito integrado es algo no trascendente. En cambio, para
reducir las salidas de terminales, l o s fabricantes de componentes
suelen combinar los buses de entrada y salida de datosy hacerlos
"bidireccionales". Durante una instrucción de salida, los datos
fluyendesde el microprocesadoraldispositivodesalida y
viceversa,duranteuna instrucción deentrada.Parareducir
todavía más el numero de terminales requeridos en el procesador
central, rl bus de direcciones de memoria puede servir también
como el bus de direcciones de entrada y salida. Durante las
instrucci::nes de entraday salida la dirección presenta en las de
dirección se refiere a un dispositivo de entrada y sali6.2
particularEnfigura 8 semuestra la configuracijn reducid<\
resultante

BUS DE
DIRECCIONES
BUS 3E (16)
DATOS
<8 >

Figura 8.-Un diagrama debloques de una microcomputadoraq u e


utiliza técnicas de configuración de buses direccionales
para reducir las salidas de terminales.

19
MANUAL DE PRACTICAS

El concepto de dos buses es f6cif.de comprendery, desde un


punto de vista del hardware, sencillo d’e utilizar. Los buses están
multiplexadosentiempo y función - - E s decir,durante las
operaciones de memoria, los bits en el bus de direcciones se
refieren a una posición de memoria y l o s datos en elbus de datos
representan el contenido de memoria.El seqtido del flujode datos
(a o desde elprocesocentral)estácontroladodentrodel
microprocesador.Las actividades con dispositivos de entrada/salida
se realiza de una forma similar. Durante esas instrucciones, l o s
datos de entraday salida y las direcciones de dispositivos ocupan
109 buses.
E]. numero de hilos de conexión de buses puede reducirse más
cornj:;lnando los datos y las direccxonés ‘en
las lmeas y
mult-iplexando en tiempo la tzansferencia de datos a lo i.ar7c de
elLa2 En la figura 9 se ilwtra esta configuración finai. Este
método

7BUS UNICO DE COMBINACION DE DATOS/DIRECCIONESBlDlRECClONALES


Microprouesador

14
Y MEMOAlA

LOGIC4 DE REGISTRO
CONTROL DE ALMACENA- SALIDA
Y TEMPO MIENTO DE
RIZACION. DIRECCIONES

ENTRADA

U
U DlRECClON DERIVADA

Figura 9.-Diagrma de bloques de una microcomputadora que


utilizaun bus
bidireccional
multiplexado
Único
para
funciones de entrada/salida y de memoria.
requiere elementos circuitales adicionales para multiplexar
y
almacenar los datos pertinentes.Los componentes externos

20
MANUAL DE PRACTICAS

adicionales necesarios para utilizar esta característica de la


arquitecturahacenque su uso no searecomendableparael
aficionado. Hay otros microprocesadores que son más sencillos de
utilizar.
La construcción del hardware de una microcomputadora es sólo
la mitad del trabajo. Debe estar programada para realizar un
trabajoútil.
Inicialmente,el
constructor,por
necesidad,
manejará códiaos y ensamblará sus propios programas. Sin embar-go,
a la larga, puede surgir la necesidad de que la computadora
realiza una tarea que requiera un programa muy grande que no pueda
ensamblarse fiicilmente. El usuario debe conrar con un programa
ensamhiador er una maquina mas granc e. Por supuesto, el programa
ensamblador :endria que
ser
compatible con el
juego
de
instrucciones de el sistema mínimo.

En la figura 10 se ilustra la estructura de buses del


280. Su circuiteria externa reducida da lugar a una comparación
efecciva de los costes,
comparación
en otros
con
microprocesadores. Asimismo, la facilidad de interconexión 2del80
le hace ser la elección natural cuando se construye un sistema a
partir de nada ya existente.

21
MANUAL DE PRACTICAS

nI > BUS DE DIRECCIONES


I161

DESARROLLO.
que se
1.- Armar el sistema mínimo, en base a el diagrama
muestra a continuación.

2 . - Utilizar todo el material adecuadocomo: bases $ara wire


1, t.odos 10s
Lir-ap: i n g , enreiador, tabla perfcr-ada, alambre especial
di spzzitivos para armar el sisteza.

3 . - Asegurarse que las conexiones estén bien echas, pues esto


podrla generar un problema o hasta el quemar los dispositivos.

22
MANUAL DE PRACTICAS

CUESTIONARIO:
i.- Describa cada uno de los componentes que utilizo en el
sistema y diga que función tiene cada un-, de ellos.

2 . - Diga de que forma se puede csmprobar que su sistema


funciona correctamente.
2 - iique
frecuencias puede trabajar el 2 8 0 y probiemas O
beneficios terdría modificar esta frecuencia en el sistema.
4 .- Las, nemorias tendrán algún prollerna con el
incremento de
la frecuencia.

EIBLIOGRAFÍA

l . - ~ t e v eCiarcia ,Construya una microcomputadora basado en el


Z80.,Ed McGRAW-HILL, México
1981
2.-Angel Benjamín EscandonMartínez.,Microcomputadora modular
para aplicaciones biomedicas.Proyecto final U.A.M.1 junio
1986

23
"UAL DE PRACTICAS

PRACTICA 2 .
CHECAR RAM.

Objetivo: Elaborar un programaque chequela nemoria RAM y


ROM del sistema mír,imo.

MATERIAL: Sistema minimo 280


Fuer.te de poderde 5V.

INTRODUC~I~N TS~RICA:
Para p,-xier
comprobar
que
nuestro
slsrema
funciona
correctamente tendremos que programarloy observar que lo realice
eficientemente esto puede implicar que esta bien armado.
Antes de podamos usar dispositivos de E/S debemos aprender
cómo actúa el direccionamiento del 280. Recordar que ladireccih
FF hexadecimal podría referirse a la memoria o a un puerto de
entrada o salida. El sistemapodríatenerlacapacidad de
diferenciar entrel o s tres posibles significados.
Las salidas de control del 280 tiene la información necesaria
para el encaminamiento,y seleccionando con puertaslas señales de
formas
adecuadas, se
obtienenlas
señalescorrectas.Para
operaciones de memoria y E/S básicas, las cuatro señales de
especiales interés son MREQ, IORQ, RD y WR. Sus definiciones son
las siguientes:
a) MREQ Petición de memoria.Siempreqye
sucede -ana
transacción entre el procesador central y la memoria, la línez.
MREQ pasa a nivel lógico " O " .
b) IORQ Peticijn de E J S . Siempre que sucede cna transacción
entre el procssaaor central y un puerto de encraca o de
salida, la linea IORQ pasa a un nivel lógico " 0 " .
c ) RD Petición de lectura. Siempre que el procesador central
lea datos deentrada de la memoria o de un puerto deentrada,
la 1 L I L C ~ .RD
~ pasa a un nivel lógico
"O".

d) WR Peticióndeescritura.Siemprequeelprocesador
central estc escribiendo datos en memoria o para un puerto de
salida, la línea m.pasa a un nivel lGgico " O " .

24
MANUAL DE PRACTICAS

Para diferenciar entre puertos de entrada y salida durante


las instrucciones de E/S, IORQ,RD y WR se hacen pasar por las
mismas puertas comose muestra en la figura11. De manera similar,
MREQ, RD y WR pasan por
puertas 2 % computación
durante
transferencias de memoria, como se muestra en la figura 12. Se
supone que cuando la memoria no esta en un modo escritura,
de esta
en el estado de lectura.
_""""""
I
7404 I
I

U
STROBE DE
SERALES DE ESCRITURA
EL CPU -
WR I
E& (IOWR)

figura 11

3ESARROLLO.
1 . - Elaborar un programa qJe coqruebe el funcionamiento Us
la xemoria RAM y ROM.

3 . - El programa de prueba de la ROM es la técnica de Check


Sum que consiste en sumar todos los bytes de la ROMun byte no
utilizado debe de ser cero y revis? qxe la suma coincida con
la calculada previamente y almacenarJ2 en las ultimas
localidades de ROM.
3 .- Parachecarla RAM larLtina.tiene quechecarla
escribiendo primero 55 h entodasla5localidades y después
leyéndolaschecandosinohayerror.

25
MANUAL DE PRACTICAS

MREQ MEMWR
SERALES DE MREQWR
EL CPU
WR
""""""""""""" """"""""""""""

' RD

: MEMRD NO ES
NECESARIA
LA
HERORIA SE DEJA
EN EL ESTADO DELECTURA
CUANDO NO ESTAEN UNA OPERIlCION DE ESCRITURA .:

figura 12

CUESTIONARIO:
1.- A q u e se le llama fetch

. - Dibuje el diagrama de lectura y escritura para las


memorlas.

1 . - Esplique algunc de los diagramas de tiempo v señales

26
MANUAL DE PRACTICAS

BIBLIOGRAFÍA:
1.- Steve Ciarcia.,Construyauna microcomputadora basado en
el Z80.,EdMcGRAW-HILL, Méx’co
1981

2, . _ k ; i l l i a m Barden Jr., The Z8C Microcomputsr handbook., Ed.


,Inward W. Sams & Co; Inc.Indianapolis, lndianaE . U 1984.
3. . - Streintmatt-er GeneA . Fiore Vito. ,Microprocesors theory
and applications., Reston Plblishing Company., P. Prenzice
Sal1 Co. Reston, l’irginia 1 3 8 2 .

27
MANUAL DE PRACTICAS

PRACTICA 3 .
OBJETIVO: Lograrrranejar 6 manipular el modo O de la PPI
y realizar algunos ejemplos con el.

MATEi;.IAL: SisEema mínimo 2 8 0 .


Fuente ae poder5 V
INTROXJCCI~N TE~RICA:
Modos de interrupción de el 280.
El :?O tiene dos entradas para solicitud de interrupcion-S
NMI (in.
..errupción
no
enmascarable)
INT
e(interrupcijn
enmascarable). La entrada NMI permite una interrupción mientras
que la entrada INT permite hasta 128 interrupciones de vector.
Las acciones de las interrupciones a través de la línea NMI,
ya que el dispositivo que interrumpe debe proporcionar UL dato
codificado que lo identifique.
Existen
tres
modos
para
obtener
solicitud
la de
interrupciones por medio de la línea INT. Estos se conocen con
los nombres de modos:
0,1,2 y se seleccionan por las interrupciones 1M0, 1M1 y 1M2. Cada
modo realiza diferentes acciones para atender la solicitud.
Interrupción no enmascarables NMI. Cuándo la línea NMI toma
nivel bajo,se esta realizando una solicitud de interrupción NMI y
se reconoceráalfinal de laejecucióndelainstrucción
actualmente en proceso. El CPU ejecuta una instrucción RST a la
localidsd 0066h.
Interrupción modo O . El modo de inicio para la ‘lines IT’’ ya
quees si modoquetomael Z8@ cuandoseproporciona la
alirnentacion de energia al sistema o cuándo se actil.-a la señal
REST. El modo O tambiénseordenaconlaejecuc-ión de la
instruccidnIMO. La interrupciónenmodo O seidentificaal
proceso de interrupción del microprocesador8080A. Si el 280 esta
en el modo O y el flip flop FF esta puesto, las solicitudes de
interruprión enmascarablese procesan.
--~tcrrupciónde modo 1. El modo 1 se ordena ejecutakiu lLa
instrucci:,n 1M1. Las acciones en modo 1 son idénticas a 1.1s
accionss de interrupción NMI (no enmascarable) excepto q u e se
ejecuEan L.‘ 9 instrucción RST a la localidad0038 h en lugar de A
localidad006h.Cuándo el 280 estaprogramadoenmodo 1 de
interrupciones habilitadas, FF=l, responderá a una solicitud de
interrupción INT ejecutando una instrucción RST a la localidad
0038H. El contenido

28
MANUAL DE PRACTICAS
del contador del programa se salva en el stock de la memoria y
continúa con la ejecución de la rutina de servicio a partir de la
dirección 0038H. La ventaja del modo 1 respecto al modo O es que
la interfaz del periférico no requicre enviar el código de la
instrucciónRSTalbusdedatoscuandoel 280 reconocela
solicitud de interrupción.
Interrupción en modo 2 El modo 2 de interrupción es el mas
poderoso de
. ,
los modos de el 280, permite hasta 128 niveles de
interrupclon.
E l modo 2 se ordena ejecutando la instrucción 1M2. Este modo
deirterrupciónrequierede una t;bla dedireccionesenla
memoria. El número de palabras de est? tabla es 2deX ?< en donde
N es el númerode interrupcionesposiblesdelsistemaen
particular.Elmodo 2 deinterrupcionespermiteseleccionar
cualquieráreadelamemoriaparaalmacenarlatabla de
direcciones de las rutinas de interrupción cargando el registro
vector 1 con 8 bits de mayor orden de la dirección que se desea.
DESARROLLO
1.- Realizar varios ejemplos utilizando el modoO , como por
ejemplo: Sacar información porel puerto A, poner en setCo,
leer un dato por el puertoB etc.

CUESTIONARIO:

1.- Dibujar el mapa dc puertos que utiliza el sistema.


Z . - Cuales c o n las características del modoO de el PPI.

3.
” Cuantas posibles configuraciones E
de/S del modo O .
diferentes pude haber.
EIBLIOGRAFÍA
1 . - William Barden Jr., The L b u Yicrocomputer handbook., Ed.
Howard W. Sams & CO; I~r.Indianapolis,Indiana E . U
1964.

29
MANUAL DE PRACTICAS

Solución de la 1
Practica
1. -Describa cada uno de los coaaponentes que utilizo en el
sistema y diga que función tienecada uno deellos.
a) 2 8 0 Es el microprocesador, el cual tiene mayor importancia
en nuestro sistema mlnimo, pues el se encarga de manejar los
dispositivos externos y llevar a cabo el procesamiento de las
señales o datos, todas sus características fueron descritas al
principio de este manual.

b ) La mezoria Ram 6264 estas son las que almacenan datos


recibidos O m e se van a procesar en particular esta memoria es de
tipo volátil de acceso aleatorio y puede ser leida o puede
escribirse en ella.

c) La memoria Eprom 2764 esta es una memoria no volátil,


estática, de acceso aleatorio, cuya información es previamentea-
lmacenada por el usuario, solo puede ser leída.

d) Los circuitos de control son decodificadores y restableci-


miento de la señal incluidos en el módulo de CPU (reloj, reset,
decodificación y bufers) están diseñados con la intención de
minimizar el númerode circuitos integrados utilizados.

e) PI0 8255 Es una interfase paralela programablede entrada


y salida es el encargado de poner en contacto al bus de datos del
modulo del CPU con los dispositivos internos. Proporciona diverscs
c3nales dc. E/S , multiplexa una sola conexión del bus ,de d3to-r a
d,,s o tres pcertos externos; cuenta con un latch de entrada y
salida y F.:ede establecer
una
intercomunicación
entre
mi-roprozesadc-es 4’ el periférico (handshaking) para sillcronizar
la entrada y salida de información.

f) D/A DAC08 convertidor digital analógico :Mantiene el valor


proporcional de voltaje a su salida mediante el cerrojo (latch) <?
la u l t h a >alabra enviada para su conversión. Hace de usouna ; O l a
instrucción de salida consiguiendo su habilitación o inicio de
conversicn. Seencargadelasalidaparasuobservaciónen
osciloscopio c x un conector BNC. Su canal de salida es variable en
amplitud.

30
MANUAL DE PRACTICAS

g) Timer 8284 Temporizador : Ofrece el bloque de temporiza-


ción, pone al alcance del usuario el reloj que alimenta DAC,
al la
frecuencia de muestre0 es seleccionable por el usuario enviando la
palabra de control adecuado, llevar a cabo la cuenta de algún
evento, en forma creciente o decreciente, todo esto de manera
sincronía conel relcj que alimenta al micro.
2.-Diga de que forma se puede comprobar que su sistema
funcione correctamente.

Se puede comprobar elaborando un programa que cheque la memo-


rias y que encienda unos leds en diferentes puertos.
3. -Ague frecuencias puede trabajar el 280 y que problemas o
beneficios tendríamodificar esta frecuencia en el sistema.

El 280 puede trabajar puede operar de 1Mhz a 4 Mhz , entre


mas frecuencia mas rápido se ejecutan las instrucciones que este
tiene que elaborar, teniendo una promedio de ejecución de 8 bits
en 4 ciclos de reloj.

4--LaS IImnOrias tendrían algún problemacon el incremento de


la frecuencia.

Enparticularlasmemoriasocupadasnotendríanningún
problema, sola mente la que podrían tener algún problema serían
las SRAM, por que se tienen que estar refrescando un determinado
tiempo y si nosehaceestoadecuadamenteseperderíala
infJrmación o podría siempre estar refrescando la memoria

31
MANUAL DE PRACTICAS

Solución dela Practica 2.


Este programa compruebe el funcionamiento de dos memorias :
la PROM y la RAM.
..........................................................
* Definición de constantes para la función Checksum
**********f******************************t****************

DMSEi EQU 1 F T h ;Dirección del nibble 1 del byte mas sigvo.


DMSB9 EQU 1FFDh ;Dirección del nibble O del byte mas sigvo.
DLSEl EQCr1CZEh ;Dirección del nibble 1 del byte menos sigvo.
DLSE2 EQ'J1FFFh ;Dirección del nibble 1 del byte menos sigvo.
FINEOYL EQ3 E2k part^ baja de la dirección donde acaba la rom
FINF.OIW EQV 1Fh ;Part6 alta de la dirección donde acaba la rom
ORGMSG EQV 1FEOh ;Dirección donde se guarda el código de los
;mensajes
ORGS'UNTOT EQU 1FFCh ;Dirección donde se guarda el resultado de
la ;suma total previamente conocida
Checksum ;Preservar el contexto
PUSH HL
PUSH BC
PUSH DE
PUSH AF

LD HL,OOOOH ;x:=O
LD DE,OOOOH ;sum:=O
LD BC,OOOOH
FOR ;Ciclo for
LD A , (HL) ;mern[x:
CALL Suma ;s~m:=sum+mem[x]
INC H i
LD A ,FINROYI
SUB H
JP NZ,FOR
LD A,FINROML
SUB L
JP Z,FINFOR ;Si es iqual a fin termina el ciclo
for
JP FOR

32
MANUAL DE PRACTICAS

LD A,(DMSBl) ;compara el nibble 1


SUB D
JP NZ ,MSGERROR
LD A, (DMSBO) ;compra el nibble O
SUB E
JP NZ , FSGERROR
LD k,(DLSBl) ;compara el nibble 1
SUB B
GP KZ , MSGERROR
L D A,(DLSBO) ;compara el nibble O
SUB C
JP NZ,MSGERROR
ASGEXITO LD D,06H ;para recorrer 6 localidades
LD BC,03H
ADD HL,BC ;para mover hacia la localidad donde se encuentra
CALL MUESTRA ;el código que indica éxito de ia yROM su resul
; tad0
JP FIN
MSGERROR LD D,03H ;para recorrer3 localidades
CALL MUESTRA
FINPOPAF;recuperaelcontextoanterior
POP DE
POP BC
POP HL
RET
CheckrRam LD HL,ORGRAM ;asignamos a HL donde empiela la memoria
RAM
F.E?ITE LD(HL),55H ;escribimos 55h en la Lmsición de la memoria
~ - 7
3
~"

INC HL
L9 A,FINRAMH
SUB H;como estareStaconocemossiHL llego a
BFOOH
JP NZ,REPITE ;mientras no ocurre entrara al ciclo
LD A,FINRAML
SUBL;conestosesaldrádelcicl . cuandoHL

JP NZ,REPITE
LD HL,ORGRAM ;iniciamos la lectura al principio de la
m
LEE LD A, (HL) ;leemos el contenido de todas las posiciones
de
SUB 55H ;la memoria RAM y comparamos con 55h si no
JP NZ,ERRORRAM;coinciden enviamos mensaje de error
INC HL
LD A , FIN-
33
MANUAL DE PRACTICAS

SUB H
JP NZ,LEE
LD X,FINRAML;se controla el numero de localidades a
leer
SUB 3 ;como en el caso de la escritura
JP KZ,LEE
MSGBIEN CALL MSGRAM ;para desplegar r,a
;D D,04H ;para recorrer 4 localidades donde se
encuentra
LD EC,09H ;el código de mensaje
ADD XL,BC ;movemo,c a HL donde se encuentra en mensaje
de
CALL MUESTFA;bien
FIN: RET procedimiento
;del checkram

ERRORRAM CALL MSGRAM ;para desplegar ra


LD D,03H
CALL MUESTRA ;para desplegar error
JP FIN1
MSGRAM LD A,31H ;cargar el código de la letra r
OUT(1),A
CALL DELAY
LD A,5Fh ;cargar el código de la letra a
OUT(1), A
CALL DELAY
LD HL,ORGMSG ;movemos HL a donde se encuentra inicio de
;los mensajes
RET ; fi ;I del
msgram
;delay realiza un retraso para mostrar un
;carácteriaprox 1 seg)
Lil A , TIMZH
WAIT2 LD C ,TIMEH
WAITliD B,TIMEL
WAIT2 DJNZ WAIT2
DEC C
JP NZ,WAIT1
DEC A
JP KZ,WAIT0
RET
MUESTRA
SIGUELD A, (HL)
OUT(1),A
CALL DELAY
LD A,OOH

34
MANUAL DE PRACTICAS
OUT(1), A
LD A,TIMEBH
DELAY2 LD B,TIMEBL
ESPERA DJNZ ESPERA
DEC ii
JP NZ,DELAY2
INC HL
DEC 3
JP NZ,SIGUE
RET

l.-Ague se le llama fetch.

Se le llama Fetch a el ciclo de búsqueda y ejecución.


Es decir en un procesador central que contiene registros,
contadores y otroselementosnecesariosparasuministrarla
funcionalidadquerequiereelcontroldelmovimiento de la
información entre la memoria, la unidad aritmética y lógica y
otras partes de la maquina.
En la forma mas sencilla de la maquina clásica de Von Newman,
launidad de controlcontieneuncontadordeprogramas,un
registro de direcciones y un registro que guarde y decodifique el
código de operación. A veces, se denomina a los últimos dos
registros conjuntamente registros de instrucción. Esta unidad de
control opera, entonces, en un ciclo de búsqueda y ejecución
Es decir que al buscar la instrucción, se obtiene en la
remoria y eldecodificadordeterminalanaturalcza de la
Cnstrucción. Si esta es de referencia o referencia? de memoria. El
paso de ejecución realizala operación u operaciones necesarias y
la 1-eferencia 2 referencias de memorias En algunos casos, puede no
haber pasade
ejecución, por ejemplo, urla instrucción de
referencia de memoria.

35
MANUAL DE PRACTICAS

2.-Dibuje el diagrama delectura y escritura delas memorias.

Clock

00-115

nREQ

-
WR

BUS D E
DATOS
CDB-D7 >

-
WIlI T

3.-Explique como leer l o s diagramas de tiempos y señales.

Lectura de l o s diagramas para s c R a l e s .


l .-Un nivel de renal baio e r equivalente a ausencia de tenribn. U n nivel
alto de raPial o r equrvalente a tonrldn no nula.

3 Una x e i í a l rehzando una Iranxlclón entre e


l nrvel atto y bato r e replerenta as1

4 . - D a d a r dos o m i x tefialer paralelarJa notacibn:

reprexenta el cambto de nivel de una o más de l a x señale. paralela.. pero no


resulta especlficado al tipo de tranricion (alto a baio o baio a alto).

!> -Una sehal de I r e x ertsdox r e m u e s t r a flotante (indeflnldal a t #

flotants

36
MANUAL DE PRACTICAS

6 . - U n bus de t r o t ettadot contiene dot o mat te6alet se muestra flotante at#:

7 -Cuando el camhlo de una sena1 condiclona el cambio de 011s. s e incluye una tlecha
indicando la inlerrelacidn como sigue.

-2
D E oxla torma el qua la tsanslci6n da una xefial de balo a alto provoque el camhao
do o t r a tefiel del nivel alto al bajo. s e represenla como sogue

fJ -Cuando deben darte d o s o má8 condoc~onetpara producor una camboo en otras


xenalex I6g1cat.la rep~esenIaci6n quoSE uliloza e s
E stas
condtctoncs

"5 Provoca un carnblo aqut


Según e s t o . t i la tranticibn de nivel bajo al allo de una sefial coincadiendocon que
otra señal ettd bala origanan el cambio do una tercera teRal. debrla seprotentarta
como tigus-

9.-Cuando el canbio de una señal ptovoca dos o más eventos, se utiliza b


siguiente representación:

Según eslo, una transicrm del nlvel bajo al alto de una señal que provoca
cambios en otras dos señales debe ilustrar como sigue

37
MANUAL DE PRACTICAS
Solución de la practica3 .
l.-Realizar varios ejemplos utilizados el modo O, como por
ejeqp1o:Sacar información por el puerto A, poner en set Co, leer
un dato por el puerto B etc.

Programa 1 "colocar A0 en 1"


LD A,80H ; Se inicializa
OUT (07),A ; la palabrade control
LD A,OlH ; sacamos por el
OUT (041,A ; punto A un 01H
RST 08h ; regresamos al monitor.
Programa 2 "leer por el puerto B y sacar el valor por el
puerto A "

LD A,82H ; Inicializa el registro de control


OUT (071,A ;leer el dato, escribimos el dato
IN (05),A ;sacamos al monitor.
OUT (04),A ;
RST 08
Programa 3 "Poner CO en set"
LD A,OlH ;accesamos el registro de control
OUT ( 0 7 ) ,A
RST 08
Programa 4 "Sacar por el puerto A u?a"
LD A,80h ;Inicializamos la
OUT (071,A ;palabra de control
OPERA XOR A I

OUT ( 0 4 ),A;sacamos un O
LD A,OFFH ;
OUT (041,A ;sacamos OFFh
JP OPERA ;Cerramos el loop

38
MANUAL DE PRACTICAS
l.-Dibujar e1 mapa de que utiliza
puertos elsistema.

1 PuertoA 1

1 Puerto c I
I Control I

í!.-Cuales son las característicasdel modo O de el PPI.


a) Dos puertos de 8 bits y dos puertos de 4 bits.
b) Cualquier puerto puede ser entrada y salida.
c) Las salidas son latchs.
d) Las entradas no son latchs.

3. -Cuantas posibles configuraciones de E/S del modo O


diferentes puede haber.
Las posibles c'onfiguraciones de los modos de E/S son 16
configuraciones diferentes.

39
MANUAL DE PRACTICAS

Solución a la practica 4.
Programa receptor
LD A,B 8 k ;Se carga la palabra de control
OUT (07),A
BANDERA: IN A, (o6j ;Se prueba el bit para encontrar
BIT 7,A
JP Z,BANDERA ;el dato al bus y pto. A
IN A , ( 0 4 ) ;se carga en ACC.A
RST 08 ;regresa

Programa transmisor de un dato


LD A,AOh ;Se carga la palabra de
OUT (07),A ;control.
LD A, ( 1 5 0 0 ) ;Se saca el dato al bus
OUT (04),A ;pasa al pt0.A
RST 08 ;Regresa.
N datos
Programa para transmitir
(para nigual a 3)
LD A , A B ;Se cargala palabrade control
OUT (07),A ; N igual a
LD D,3 ;3 datos
LD IX,1460 ;se guarda en memoria
REPITE: LD A , (IX+O) ;Se carga el primero parA
OUT ( 0 4 ) , A ;el dato sale por pto .A
NOLISTO: IN A, (06) ;Por medio delp+o.C
BIT 4 , A ;verificamos si podemos
JP Z,NOLISTO ;mandar otro dato.
INC X ;incrementaxnos pa:-a sacar siguiente,
el
DEC C ;dato.
JP NZ,REPITE ;Preguntamos sihay mas
RST ;Regresa (datos)
1.-Defina las funciones básicas del funcisnamicento en modo 1.
a ) Dos grupos (GrupoA y B)
b) Cada grupo contiene puertos de datos de8 Dits ( A y B) y
un puerto el C que tiene 4 bits de datos y 4 de cc~!-~trol.
c) Tiene 6 palabras de control para la transferencia de datos
de un Kit a otro.

40
MANUAL DE PRACTICAS
2.-Mencione los tipos deinterrupciones que tiene el 2 8 0
interrupción no mascarable
I N T interrupción mascarable.

3.-Que diferencia hay en la respuesta del C W a una interrup-


ción no mascarable auna operación normal de lectura de memoria.

La diferencia seria que el contenido del bus de datos se


ignora mientras que el procesador almacena automáticamente el PC
en la pila externay salta a la posición 0 0 6 h .
4. -Durante una so:’..icituddel bus de datos es posible
solicitar una interrupción NMI y INT.
No, porque se perdería la información que lleve o pueda
llevar.

41
CAPITULO I1
ARQUITECTURA DEL MICROCONTROLADOR 8031
1.1 Características del Micro-8031

El microcontrolador €3032 es uno de los miembros de la familia


MCS-51 de Intel, y es toda una computadora fabricada en una pieza
de silicio. Esta familia fue hecha para usarse en aplicaciones de
tiempo real, control industrial y para periféricos de computador,
inteligentes.
Existen básicamente 3 miembros de esta familia:
El 8031 que no tiene memoriade programa interna, pero puede
direccionar 64 Kbytes de memcria de programa externa, además 64 de
Kbytes de memoria de datos e-,:terna.
El 8051 que tiene sus primeros 4Kbytes de memoria de programa
incluidosenuna ROM interna, grabada
almomento
dela
fabricación.
El 8751 que tiene eprom interna que puede ser programada por
el usuario.
El micro-8051 esta basado en los microprocesadores de 8 bits,
contiene internamente un CPU de 8 bits,3 puertos de entrada y
salida paralelo, un puerto de control, el cual a su vez contiene;
un puerto serie, 2 entradas para Timer/contador de 16 bits, 2
entradas para interrupciones externas, las sefiales de RD y WR para
la toma o almacenamiento de datos externos en R A M , la señal de
PSEN paralalecturadeinstruccionesalmacenadasenEPROM
externo. Gracias a estas 3 señales el micro-8031 puede direccionar
64 K de programa y 64 P de datos separadamente, es decir un total
de 128 K b . Además cuenta crn 128 bytes de memoria RAM interna.
Además, el m!.cro-8051 puede generar la frecuencia (BaudRate)
de transmisión/recepción de datos por el puerto Serie, de manera
automática partiendo de la frecuencia del oscilador general, por
medio de laprogramacióndelTimer 1. Dichafrecuenciade
transmisión puede ser cambiada en cualquier momento con sólo
cambiar el valor almacenado on el contador, o también se puede
duplicar ó dividir la frecuencia con solo escribir directamente
sobre el bit 7 (SMOD) del registro de control PCON.

42
MANUAL DE PRACTICAS

1.2 Descripción de las líneas del Micro-8051

El elemento mas básico de la familia 8051 es el 8031, que


carece de EPROM o PROM, el cual es dirrecionado externamente.
El 8031 es fundamental un chip de 40 líneas, figura. 1

Pl.O vcc
P1.l
P1.2

P0.4
Pl.6 P0.5
P1.7
RST 8031 P0.6
P0.7

CPU
RXD

INTO

TO

XTAL2 ,lg
XTALl 20'
GND .11)1

Figura 1 micro 280

Descripción de los pins:


Identificador
pin
Nombre y función.
P1.0 al P1.7 1-8 PORT O Es un puerto bidireccional
con salidas en colector abierto.
Cuando el puerto tiene unos
escritos, la salidas están abiertas

43
MANUAL DE PRACTICAS ~~ ~
~~

y pueden servir como entradas en


alta impedancia. El Puerto O es
también multiplexado para obtener el
DATO y la parte baja de la dirección
RST 9 RESET Una entrada alta en esta línea
durante dos ciclos de máquina,
mientras el oscilador esta corriendo,
detiene el dispositivo. Un resistor
interno conectado a Vss permite un
alto c n la fuente usando solamente
un caIacitor externo Vcc.
a
P3.0-P3.7 10-17 PORT 3 Es un puerto casi-bidireccio
nal con fijadores de nivel internos
(P'JLL-UP). Cuando se escriben unos
sobre el puerto, las líneas pueden
ser utilizadas como entradaso como
salidas. Como entradas, las líneas
que son externamente colocadas en la
posición baja proporcionaran una
corriente hacia el exterior.El
puerto 3 es utilizado además para
producir señales de controlde
dispositivos externos como sonlos
siguientes:
10 RxD!P3.O);puerto serie de entrada
13. TxDlP3.l);puerto serie de salida
12 INTO(P3.2);interrupción externa
13 INTl(P3.3);interrupciÓn externa
14 Tb(P3.4);entrada externa timer O
15 Tl(P3.5);entrada externa timer 1
16 WR(P3.6);habilitador de escritura
para memoria externa de datos
17 RD(D3.7);habilitador de escritura,
;,aL- memoria externa de datos
XTAL2 18 Cristal 2 es la salida del -amDlificador
oscila -Jr inversor

44
MANUAL DE PRACTICAS
XTALl 19 Cristal 1 es la entrada del cristal
para el circuito oscilador (generador
del reloj interno) que amplifica
e "nvierte la entrada.
GND 20Tierra O V referencia.
P2.o-P2.7 21-28 Puerto 2 Es un puerto bidireccional
con fijadores de nivel interno (pull
up) . Cuando se escriben1 ' S sobre el
puerto las líneas puedenser
utilizadas como entradas o como
sa'.idas. Como entradas, las líneas
q u ? son externamente colocadas en la
posición baja proporcionarán una
corriente hacia el exterior. El
puerto 2 es utilizado además para
direccionar memoria externa. Este
puerto, emite el byte más altode la
dirección durante la búsqueda de
datos en la memoria del programa
externo y durante el acceso a
memorias de datos externos que usan
direccionamientos de 16 bits.
Durante el acceso a una memoria de
datos externa que usa direcciones de
8 bits, el puerto 2 emite el
contenido del registro correspon
d'.ente a este puerto, que se
encuentra en el espacio de funciones
especiales.

PSEN 29 Program store enable, habilitador de


lectura para memoriade programas
externos. Cuando el 8031b/8051 esta
ejecutando un código de una memoria
de programas externos , PSEN se
-:?i=ra dos veces cada ciclo de
mapina, excepto cuando se accesa la
mmoria de datos externos que omiten
lay ;los actividades del PSEN
externos. PSEN tampoco es activada

45
MANUAL DE PRACTICAS

cuando se usa la memoriade


programas internos.
ALE 30 Address latch enable Un pulso
positivo de salida permite fijar el
byte bajo de la dirección durante el
acceso de una memoria externa.En
operación normal, ALE es, emitido en
un rango constante de1/6 de la
frecuencia del oscilador y puede ser
usada pa: a cronometrar. Note que un
pulso deL ALE es omitido durante
cada acceso a la memoria de datos
externos.
EA 31 Externalaccesenable FA debe
mantenerse externamente en posición
baja para habilitar el mecanismoque
elige el código de las localizaciones
de la memoria de programas
externos, OOOOH y OFFH. SiEA se
mantiene en posición alta, el
dispositivo ejecuta los programas
que se encuentran en la memoria
interna ROM a menos que el contador
del programa contenga una dirección
mayor a OFFFH.
PO.o - P O . 7 32-39 PORT C Es un puerto bidireccional
cor, s4idas en colector abierto.
Cuando el puerto tiene 1 ' s escritos,
las salidas están flotadas y pueden
servlr como entradasy pueden servir
como entradas de alta impedancia. El
puerto O es también multiplexado
para obtener el DATO y la parte baja
de lad;rección.
vcc 40 A l ir..:n
,,rión 5 V.

46
MANUAL DE PRACTICAS

1 . 3 DESCRIPCI~NDE LOS ESPACIOS DE MENORIA

La memoria del sistema del 8031 se clasifica entres partes


fundamentales (figura 2).
La primera, llamadamemoria deprograma,endondese
encuentran todas las instrucciones que van a ser ejecutadas por el
micro 8031, es decir , el programa de trabajo. Algunas versiones
del 8051 cuentan con memoria de programa interna (de 2 a 4 kb).
Cuando se requiere trabajar con una localidad arriba esta,
de
la meinoria del programa (externa) es seleccionada mediante la
activación de la señal PSEN (estado bajo). El máximo espacio 2.2
memoria de.programa que se puede accesar es deKB.64

MEMORLA DL P R O G WL MEMORIA DE DATOS


FFFFH

EXTERNA

RAM
PSEN-O EXTERNA

lOOM

Figura 2 Estructura de la
INTERNA
256 BYTES
INTERNA.
DE RAM OoWH -

memoria
-
RD-WR-O

F:- 2.3jcrundo espacio de memoria denominado, memoria de ddr-os


accesado mFdiante la activación de las señales RD y W R , durante 1.1
lectura o escritura de datos respectivamente. En este espacio el
micro toma .;alores que se encuentran en memoria como DATOS ,e’
decir , el micro no puede ejecutar ninguna instrucción que se
encuentre aquí almacenada. El 8031 puede direccionar también64 KB
de memoriade datos.

47
“ J A L DE PRACTICAS

El tercer espacio de memoria es el denominado memoria RAM


interna, el cual se subdivide en 128 bytes de memoria baja y en
128bytesdememoriaaltos.En los primeros 128 bytes, se
encuentran
cuatro bancos de7 registros cada uno. Estos registros son degran
ayuda para la simplificación de los programas, debido a que cada
unodeellosnospermitealmacenardatosmomentáneamente y
realizar un basto numero de instrucciones del 8031. También dentro
del espacio, se encuentran 1 6 bytes (del 20H al 2FH) que pueden
ser direccionados directamente por bit.
ET) la parte alta de la memoria RAM interna, se encuent:a el
contenido de l o s registros de funciones especiales, formadc por
Puertos,
registros de
control,
acumuladores , registros
de
interrupción, etc Todos estos registros los veremos detallados
posterio’rmente-
Localidades asignadas a las interrupciones.

La tabla 1 , muestra las localidades las localidades que han

lasa rutinas
sido asignadas por el fabricante, para dar servicio

IEO (interrupción O externa) I

it
0003H
TFO (interrupción del timerO ) OOOBH
IE1 (interrupción 1 externa) 0013H
TF1 (interrupción del timer1) OOlBH
R1 y T1- (interrupción serie) 0023H
Unainterrupciónpuedesercausadademaneraexterna
.
o
intei!:a,
es decirpuede
ser
producida
por
undj?;p<.Jsit.ivo
perifé-ico o por programación respectivamente. La interrupcicn con
mayor ilto orden es el RESET el cual no puede ser mascarable.
Cuando el RESET ocurre el programa comienza a partir de la
direccion O O O O H del programa.

48
MANUAL DE PRACTICAS

Cuandounainterrupciónesproducida,elcontadordel
programa (PC) almacena su contenido temporalmente dentro del SP
(apuntador de apilamiento) y se carga con la dirección de la
localidaddondeseencuentralarutinadeservicio de la
interrupción correspondiente.
Una vezposesionadoenesalocalidaddeberádecomenzarla
ejecución de larutinadeservicio,hastaqueencuentrela
instrucción RETI, que le permitirá al PC al recuperar nuevamente
su valor original almacenado en SP, el y continuar con el programa
anterior a la interrupción.
Por ejemplo a la interrupción O , se le asigna la localidad
0003H, si la interrupción no se utiliza, esta localidad puede
utilizarse
para
propósitos
generalesdel
programa,si la
interrupción ha sido permitido (estableciendo el correspondiente
dentro del registro del control IE ) , en el momento que exista una
activaciór! de la interrupción (estando bajo en la línea INTO) 21
PC se cargara con 0003 y saltara a esa localidad para comenzar a
ejecutar la rutina de servicio.
Estas localidades de memoria de los servicios de interrupción
están separadas en intervalos de 8 bytes, entre si, cuando el
servicio de interrupción es corto, este puede estar contenido en
los 8 bytes. En el caso de que fuese largo se puede ejecutar un
salto a otra localidad de memoria para continuar con la secuencia
de interrupción. El termino de servicio de interrupción deberá de
realizarse mediante la ejecución de la instrucción RETI .
1.4.2 Memoria de programa interna
y externa.
Cuando se utilizan elementos de la familia del 8051 con
memoria interna ROPI (16 K) , esta puede ser accesada mediante la
conexi& de la líxea EA=1 (Vcc). Si la memoria intern?: es 'de
4Kbytes y EA=1, el cpu seleccionara internamente el ROM, desde
OOOOH hasta OFFFH y de manera externa automáticamente a partirde
lOOOH hasta FFFFH.
Por el .contrario, si la línea E A = O , el cpu seleccionara de
forma ex+%xrs el ROM, desde la dirección OOOOH hasta FFFFH. e11 el
caso del 8031 esta línea se conecta siempre O aVolts (Vss).
La línea-PSEN(program store enable), que sirve para leer el
ROM externo, es activado en todas las búsquedas (fetches ) del
programa. PSEN no se activaenbúsquedas(fetches)del RUM
interno.
En la figura 3 , se muestra la conexión de una EPROM externo.

49
MANUAL DE PRACTICAS

PO
BUS D
DEATOS

fiCONTROLADOR
11
I I - I
EPROW

- .
Dir Ba j a
EA -. la d i w c c i o n
8031
-
ALE
P2 Direccion Alta

-
PSEN

Figura 3 Conexión de una memoria externa

1.5 MEMORIA DE DATOS


El espacio de memoria RAM interno esta dividido en tres
espacios, el primer bloque es referido como la parte baja de 128
bytes, el segundo (se tiene solo en algunas versiones del 8051:,la
par-te slta de 128 bytes y el tercero, llamado espacic:SFh (regis-
tros de funciones especiales).
Las direcciones de la memoria interna de datos siempre :-on de
un byte (de O O H a FFH). Sin embargo l o s modos de direccionamiento
para la memoria interna pueden acomodar hasta 384 bytes, como se
ve en la versión8052, lo cual es posible debido a que el modo de
direccionamiento directo accede un espacio de memoria diferente
físicamer-tealpermitido
por
el
modo
de
direccionamic".to
indirecto. Ver figura 4. l o s primeros 128 bytes, son presenta? J S
en todos l o s dispositivos de la familia MCS-51, que están mapead's
como se presenta en la figura5 .

50
MANUAL DE PRACTICAS

Como se puede apreciar en la figura anterior, los 128 bytes


mas bajos son divididos en cuatro bloques de
8 registros cada uno,
que contienen los valores de los registros RO a R7, los bloques
pueden ser seleccionados mediante la escritura de los bits 3 y 4
de
registro PSW (palabra del estado del programa), el cual veremos
mas adelante. La utilización de registros permite un uso mas
eficiente
del
espacio
códigos
de debido
que
sus
a
direccionamientos son de8 bits únicamente.
PPH PPH
Accesable por : Accesable por
Direc-Indirect! Direc.Directo Registro de funciones
Alto128 espaciales:
Puerto.Estado y control
de Bits. Tiner,SP
Acunuladorer.etc
80H I -
80H

7PH r Accusable por


Direc.Directo
e indirecto

Figura 4 Estructura de la memoria interna

Como ya habíamos mencionado anteriormente, existen algunas


versi-mes dei 8051, comoel 8052, quecontiene 128 byces de
memoria interna gu? puede ser direccionada indirectamente. Por
otro lado, i.odas l a s versiones del 8051 contienen un espac’-o de
128 bytes en la parte alta de la memoria que son direccionados
directamente,enesteespacioselocalizan los registrcsde
funciones especiales (SFR). Estos registros especiales, tienen sus
localidades
bien
establecidas,
son
yutilizados
por
el
microcontrol.ador para realizar las distintas operaciones interna?
que ejecuta el microcontrolador, así como también para el control
y acceso de los diferentes puertos de entrada y salida.

51
MANUAL DE PRACTICAS

BITS DE 7FH
S ELECC I ON ESPACIO LIBRE DE
DELBANCO 3 ElH DATOS
DE REGISTROS ~

bN EL PSW 2 PH ESPACIO DE DIRECCIONA-


2 BH HIENTO

10H 4 BANCOS
DE 8 REGISTROS
ElFH R0-R7
El8H
UlLOR DE RESET
DEL SP.

Figura 5 Distribución de los 128 bytes más bajos de la


memoria RAM interna.

2.1 LOCALIRADES DE LOS REGISTROS DE FUNCIONES ESPECIALES.

En el capitulo anterior habíamos visto que10s registros SFR


se encuentran en la parte alta (128 bytes) de la memorias RAM
interna del 8051. Las direcciones de 10s SFR es mostrado en la
tabla 2 .

ACC
Registro B OFOH
I
word
status
Program
PSW ODOH
pointer
Stack I 081H
I Data
pointer I
I DPL I Data pointerlow 082H
U DPH I Data
pointer
high I 083H
I PO I Puerto O I 080H

I P1

52
P2 Puerto 2 OAOH
P3 Puerto 3 OBOH
IP Control
prioridad
de OB8H
de interrup .
OA8H IE de Control
validación de
interrup.
TMOD 089H
control
de Modo
timer/contador
TCON '388H
timer/
Control
de
contador
THO Byte
alto
del t/c O 08CH
TLO Byte
bajo
del t/c O O 8AH
TH1 Byte alto del t/c 1 O 8DH
TL1 Byte
bajo
del
t/c 1 O 8BH
SCON 098H
serie
Control
de
SBUF 099H
datosde
Buffer
serie
PCON Control
potencia
de087H

2.2 REGISTRO DE PALABRA DEL ESTADO DEL PROGRAMA (PROGRAM


STATUS .
WORD)
El registro de palabra del estado del programa contiene
algunos bits que reflejan el estado del cpu en ese instante. El
PSW s e muestra en la fiqura 6.

figura 6 Registro PSW (Palabrade Estado ael Prograriai)


CY PSW. 7BANDERA DEL CARRY
AZ PSW. 6BANDERA DEL CARRY AUXILIAR

53
MANUAL DE PRACTICAS
FO PSW.SBANDERA O PARA USO GENERAL
RS1 PSW.4BIT 1 SELECTOR DEL BANCO DE REGISTROS
RSO PSW.3BIT O SELECTOR DEL BANCO DE REGISTROS
OV PSW. 2BANDERADEL SOBRE FLUJO
- PSW.1BANDERA SIN DEFINIR
P PSW.OBANDERA DE PARIDAD ES'TWLEC'E LIMPIA POR
HARDWARE, INDICA SI EL # 1 ' S E S PAR O IMPAR
DEL ACUMULADOR.
Este registro como ya se vio, reside en el espacio SFR. El
registrocontiene; el bitdecarry,elbitauxiliar (para
operaciones BCD), l o s 29s bitsdeseleccióndelbanco de
registros, labandera dl: overflow,elbit de paridad y dos
banderas sin definir.
El bit de paridad refleja el numero de l's, en el acumulador:
P=l, si el acumulador contiene un numero impar1's. de
P=O, si el acumulador contiene un numero parl's, de es decir el
numero de l ' s , en el acumulador mas P es siempre par.
2.3 REGISTRO DE CONTROL DE POTENCIA

En la figura 7 tenemos el registro PCON, el cual a excepción


de la bandera SMOD,sirve para controlar, principalmente el consumo
de energía, elcualesutilizado solo para los dispositivos
fabricados con la tecnología CHMOS que permite disminuir dicho
consumo de energía, en estados de espera. La bandera PCON.7 (SMOD)
sirve para dividirla frecuencia de transmisión o de recepción por
el puerto serie, proporcionada ya sea, por la frase 2 de los
estados, (1/2 cic- la frecuencia del osciiador en la transmisión

figura 7 PCON (Registro de control de potencia)


SMOD Doble el "BAUD RATE:" para el puerto serie cuando se utiliza
el timer para generar c i BAUD RATE.
GF1 Propósitos generales.
GFO Propósitos generales.
PD Bajo consumo de energí?
IDL Bajo consumo de energía.

54
MANUAL DE PRACTICAS

2 . 4 REGISTROS DE INTERRUPCIONES.

Las interrupciones son controladas mediante la escritura en


los registros IE (Interruption Enable)
IP
e(Interruption
Priority).
2.4.1 Registro habilitador de interrupciones(IE)

La desactivación general de las interrupciones es efectuada


mediante la escritura de un O lógico, en la bandera EA
(IE.7).
Con la bandera EA=l, el 8031 esta en condiciones de aceptar
interrupciones,aunquelaverdaderaaceptaciónes realizada,

figura 8 Registro IE (INTERR. ENABLE)


EA IE.7 Desactiva todas las INTERRUPCIONESEA = O
ET2 IE.5 Activa la int. causada por el timer2 (ET2=1)
ES IE.4 Activa la int. causada por el puerto serie
ET1 IE.3 Activa la int. de sobreflujo causadapor el timer 1
EX1 IE.2 Activa la int. causada externamente en INT 1
ET0 IE.1 Activa la int. de sobreflujo causada por el timerO
EX0 IE.0 Activa la int. causada externamente en INT O.
2 . 4 REGISTROS DE PRIORIDAD.
El 8031 tiene dos planos de prioridad para trabajar las
interrupcionesllamadasalto y bajo,respectivamente.Enla
inicialización , todas las interrupciones trabajan en el plano de
baja prioridad. Para pasar del plano de baja prioridad de al alta
es necesario escribir un 1 lógico en las banderas correspondientes
a las interrupciones que se desean aumentar de prioridad, ubicadas
dentro del regist-c -:P figura 9.

figura 9 Registro de Prioridad de interrupciones.

55
MANUAL, DE PRACTICAS

PT2 IP.5 Timer 2 PT2=1 mayor prioridad.


PS IP.4 Define el nivel de prioridad ladeint. puerto serie.
PT1 IP.3 Define el nivelde prioridad de la int. del timer1.
PX1 IP.2 Define el nivel de prioridad de la 1int. externa.
PTO IP.1 Define el nivelde prioridad de la int. Timer O.
PTO IP.0 Define el nivelde prioridad de ia int. O externa.

2A TIMER/CONTADOR.

El 8031 tiene 2 timer/ccTtadores de16 bits cada uno llamados


Timer O y el Timer 1 respectivamente. Ambos pueden ser
configuradosparaoperarcomotemporizadores(timers) o como
contadores (counters).
Cuando se trabaja como contador, el registro interno del
contador, es incrementado cada vez que existe una transición
negativa (de 1 a O ) por la línea de entrada correspondiente a TO o
T1. En cambio, cuando funciona como temporizador . "Timer"., el
registro es incrementado cada 12 períodos de oscilación es decir
su frecuencia de conteo es 1+12 de la frecuencia del oscilador.
En el momento que los bits del registro del contador pasan de
todos 1 ' S a todos O ' S , se activa la línea de interrupciones
interna correspondiente a TFO o TF1, generándose, (si ha sido
permitida) una interrupción.
2A1 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR

El registro de control del timer/contador de la figura10 es


direccionable por bit, para activar o desactivar cada una de sus
banderas.

figura 10 Registro de control del Timer/Contador


TF1 TCON.7 Banderadesob:eflujo(overflow)delregistrodel
Timer1
TR1 TCON.6 Bit de control de :tivación del Timer 1.
TFO TCON.5 Bandera de sobreflujo del registro del TimerO
TRO TCON.4 Bit de control de activación del TimerO
I E 1 TCON.3 Bandera de transmisión de la interrupción externa
1

56
MANUAL DE PRACTICAS
IT1 TCON.2Bit de control del Interrupción1.
IEO TCON.1 Bandera de transición de la interrupción O.
externa
IT0 TCON.0 Bit de control del InterrupciónO.
TF1 , TFO , IE1 , IEO Se activan por Hardware.
TR1 , TRO , IT1 , IT0 Se activan por Software.

2A2 Registro de modo de control del timer/contador.

Este registro permite especificar si se va a trabajar con


temporizadores (Timers) o como Contadores (counters), l o s puertos
denormados Timer O y Timer 1.

figura 11 TMOD registro del modo de control del Timer/Coun-


ter.

GATE Cuando Trx (en TCON) esta activada y GATE =1 TIMER/COUNTER


correrá.
G T Selector de Timero de Contador. Es limpiado ?or la operación
del Timer (entrada del reloj del sistema interno)
M1 Bit selector de modo.
M0 Bit selector de modo.

?A3A MODO O , DEL TIMER!CONTADOR.


i’n este método cualquiera de l o s 2 Timers, O o 1, t:abajan
como m contador de 8 bits, al cual le antecede un predivlsor la
frecuci?cia deconteo. Enlafigura 12 semuestra el modo
operación O para el timer1.

57
MANUAL DE PRACTICAS

t I

OSC +I2
TU
5 bits
TH1
8bits - IPi -
INT

Figura 12 Modo O , contador de 13 bits con el timer 1


MODO 1, DEL TIMER/CONTADOR.
Este modo es utilizzxio por cualquiera de los 2 Timers,
caracteriza principalmente por ser un Timer/Contador de 16 bits
cuyos valores se encuentran cqrgados en l o s registros TH y TL de
cada unods los timers.
En la figura 13 se puede apreciar la disposición de estos
registros que se asemejan al modo 1, solo que en el modo1, actúan
en cascada.
MODO 2 DEL TIMER/CONTADO;r(.
Este modo puede ser utiliza? tanto por el timer O como por
)

8 bits (TLx). En la figura 14


el 1 , tiers un registro de contso de
se presenca

58
MANUAL DE PRACTICAS

osc '
32
w

qh4 Ill
- IFí
IHi
-,
IN
I
I
8 bits
1

8bits -
I --u
h

"lm TI I

GhIE
J

INTI
#
Figura 13 Modo 1 contador de 16 bits con Timer/Contador1
MOMS 3 DEL TIMER/CONTADOR.
El timer 1, en el modo 3 mantiene su cuenta, es decir, tiene
el mismo efecto que cuando se establece la banderaTRl=O.

59
MANUAL DE PRACTICAS

I NI1
Figura 14 Modo 2, registro
38bits

de 8 bits a ?.torecargable

60
MANUAL DE PRACTICAS

TRB

#TE

I NTB

TRI CONTROL

61
MANUAIL DE PRACTICAS

2A3 UTILIZACI~N DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE"


PARA LA TRANSMISI~NSERIE.
El timer 1 es usado para generar la "recuenciade transmisión
recepción de datos en serie, cuando el puerto es programado para
trabajar en el modo 1 o 3. La frecuencia de transmisión es
obtenida partir del valor almacenado TH1
en y el valor de SMOD
mediante la ecuación siguiente.

Install Equation Editor and c wblc-


click here to view equation.

EI valor 2SM0D/32 es debido a los circuitos divisores de


frecuencia que se encuentran en la etapa de control del puerto
serie, los cuales dividen entre 16 o 3 2 dependiendo del bit 7
(SMOD) del registro de control PCON y la frecuencia que nos
proporciona la salida del Timer 1 Overflow
El valor 12 que divide la frecuencia del oscilador proviene
del divisor que se encuentra en la etapa de control del Timer 1,
cuando este es utilizado como temporizador.
NOTA cabe recalcar que el valor que se almacena en TH1 es el
valor negativo de la cuenta que se desea, debido a que, el
contador se incrementa cada vez que - m pulso es detectado, de ahí,
que en la ecuación se representa como 2=6-(THl).
La interrupción del Timer 1 en Fste caso no tendría mucha
aplicacióx por lo que se podríL deshabilitar.
El Timer 1 actúa en modo 2 , es decir en modo recargable, e l
valor de conteo se encuentra fl jo en el registro TH1, e l cual se
recarga cada vezq u e exista un overflow.

2B PUERTO SERIE.

El puerto serie es un puerto"FULL L TPLEX", lo cual significa


que puede transmitir y recibir datos simultáneamente.

62
MANUAL DE PRACTICAS

El receptor contiene un almacén "Buffer", que le permite


comenzar a recibir un segundo dato sin necesidad que el
de primero
haya sido completamente leído del registro buffer. Sin embargo si
el primer byte permanece sin ser leído hasta el final de la
recepción del segundodato, este se perderá.
El dato de la recepclón y de la transmisión se encuentra en
el
registro SBUF delSFR (espacio de funciones especiales).
2B1 REGISTRO DE CONTROL
DEL PUERTO SERIE SCON.

El puerto serie puede ser operado en4 modos diferente, que


los bits SMO v SM1 del
son especificados mediante la escritura en

SMO SCON.7 Especifica el modo de- control del puerto serie.


SM1 SCON.6 Especifica el modo de control del puerto serie.
SM2 SCON.5 Habilita la comunicación del tipo "multiprocesador"
utilizado en los modos 2 y 3.
REN SCON.4 Establece la recepción serie.
TB8 SCON.3 Almacena el noveno bit que será trasmitidoen los
modos 2 y 3
RB8 SCON.2 Es el noveno bit que fuerecibido en los modos 2 y 3
TI SCON.l Bandera de interrupciones de la transmisión.
RI SCON.0 Sandera de interrupciones de la recepción.
MODO O : Los datosderecepción o transmisiónsonellviados
mediante 8 corrimiento con una frecuencia 1/12 de de la frecuencia
de osrilacion.
MODO 1: 10 Bits SOT: los que se transmiten por la línea (TDX) o se
reciben por la linea (RDX). Un bit de inicio (Strat bit de nivel O
lógico), 8 bits de datos y un bit de fin. En recepción el bitde
fin (Stop), s e almacena en RB8 de SCON, si SM2=0. El buad Rate es
variable !fzc;:.iencia de recepción o transmisión) .
MODO 2 : 11 bits son transmitidos (TDX) o recibidos (RXD), un bit
de inicio ( S t a t bit de nivel O lógico), 8 bits de datos, un
noveno bit de d;lcos programable, en la transmisión es TB8, en la
recepción esRB8 de SCON, y un bit de fin(Stop bit). Su Baud Rate
es de 1/32 o 1/64 cie la frecuencia de oscilación.

63
M
AN
U& DE PRACTICAS
MODO 3: 11 bits son transmitidos (TXD) o recibidos (RXD), en la
mismaforma que el modo 2, sólo que aquí la frecuencia de
transmisión/recepción (Baud Rate). Se utiliza el timer 1 para
generar el baud rate.

64
MANUAL DE PRACTICAS

PRACTICA 1
TRANSMISI~NDE DATOS m SERIE
Objetivo: Utilizar el sistema mínimo del
8031 para transmitir
señales de tiempo real hacia una computadora.
Material: Microcontrolador 8031
Memoria EPROM
2732
Memoria RAM 6116
Muitiplexores.
B v f f ers .
Controlador de Teclado 8279
Compuertas varias.
Phusbotons.
Displays.
Cristal etc .
12MHz,
Ver el diagrama.
Doble emisor/receptor1488

INTRODUCCI6N TE6RICA:
Un
parámetro
importante,
quese
debe
de
tomar
en
consideración, al iniciar cualquier diseño, en la capacidad de
almacenamiento de información de l o s dispositivos principalmente
en los sistemas de adquisición de datos, donde, el tratamiento
análisis y calculo de resultados es indispensable.
Nuestro sistema tendrá que conectarse con una PC y trasmitir
una sefía1 en tiempo real, puede ser cualquier señal (cuad.--ada,
triangular, senoidal, etc).
Hay dos formas de conectarse a la PC sin utilizar carjetas de
interfaz o dispositivos de E/S como
hacen los teclauos,
impresoras, ratones, etc. Estas formas son atraves delos puertos
serie RS 232 y dcl puerto paralelo de la impresora; se puede
acceder a ellos mediante el manejo de l o s conectores situados en
la parte traser?. de la P C . Si se desea realizar la interfase de un
dispositix.-oL Liiz de los puertos, corremos el riesgo de quemar
algúncircuitointegrado o algunatarjetade E/S poniendo
accidentalmente algunas de las líneas a masa o aplicandola
alimentación dondeAO se debe.
Un buen modo de evitar esos problemas es insertar un buffer
(circuito de separación) entre PC la y los circuitos fabricados en

65
MANUAL DE PRACTICAS

casa. Esto se puede lograr fácilmente el porpuerto serie RS232


El protocolo de transmisión es el bit de inicio (Start bit),
el cual tiene la característica de ser siempre un O lógico.
Posteriormente los bits que le siguen son los 8 bits de datos,
comenzando con el menos significativo "DO".
Latransmisiónterminaconelenvíodeunultimo bit,
denominado bit de paro (Stop bit), que siempre será un1 lógico.
El microcontrolador 8031, cuenta con 4 modos de transmisión
de datos en serie, de l o s cuales utilizaremos, el modo 1, es
decir, con el
"BaudRate"
variabledependiendo del valor
almacenado en TH1, con el reloj de11 MHz.
DESARROLLO

1.- Armar el circuito mínimo 8de


031.

2.- Hacer el programa de transmisión hacia


la PC.
3.- Elaborar el programa de recepción
de la PC.
4,- Transmitir diversas señalesy observar que son de tiempo
real.
CUESTIONARIO:
1.-Que modo de transmisiónse utilizoy por que
2.-Explique muy sencillamente ccmo trab2ija este modo.
3.-En que momento en su programa empieza la transmisión
de la
señal.
BIBLIOGRAFÍA:
l.-8051 AND DERIVATE MICROCONTROLLER,PHTTILIPS COMPONENTS,
SIGNETISC 1 9 9 C .
2.-EIGTH-BIT 80C51 EMBEDDED
PROCESSORS, 1990 DATA
BOOK,ADVANCED MICRO DEVICES.

3.-MICROCONTROLLER USER'S GUIEDE., SIGNETICS 1989.

66
MANUAL DE PRACTICAS

PRACTICA 2

Manejo deADC
Objetivo: Utilizar el programa de transmisión anterior y
poder transmitir diferentes señales a la computadora.
Material: ADC8099
1488
DB2 5
Sistema anterior.
INTRODUCCI~NTEÓRICA:

Los sistemas de control, un dispositivo que resulta esencial


es e1 convertidor Analógico/Digital ( A X ) , el cual nos permite
pasar señales del mundo analógico al mundo digital.
Existen en el mercado aproximadamente 60 diferentes tipos de
convertidores Analógicos-Digitales, que van desde los de 8 bits
hasta los de 18 bits, con fi jadores internos, de aproximaciones
sucesivas, con salidas en 3er. estado, etc. La selección tal de o
cual convertidor,va de acuerdo a las necesidades y requerimientos
particulares de nuestro sistema propuesto.
En nuestro caso particular tenemos que tener diferentes
señales en el convertidor Analógico Digital y seleccionar un canal
en especialy para transmitir nuestra señal a PC. la
I
!n convertidor A/D hace lo que su nombre indica. Cor,;Jierte
tensirmes analógicas en una representación digital cornpatitle con
la entrada de lacomputadora. Si se pretende leer una señalde 1OV
con un convertidor de8 bits, la resolución será de+ / - 1/2 LSB.
Cuanto mayor es la resolución tantos más bits st? necesita. El
numero de bits no establece el rango de un convertidor, sólo
determina lo bien que se representa el valor. Un convertidord.2 8
bits (AID o D’A) puede prepararse con la misma facilidad para
cubrir un rango de O a 1 V como para otro de O a 1000 V. Suele
ut+”.ii;L?.rse la misma circuitería, pero se cambia una ctdp de
amplifi,aciónfinal o unareddivisoraderesistencia.Se
entiendt, por supuesto, que con un rango de 1OOV y convert!-dor de
8 bits 1:t resolución es de4V.

67
MANUAL DE PRACTICAS

Tal unidad sería inútil en señales deO a 10 V. El problema


se puede reconciliar en varias formas, pero la solución mas fácil
es utilizar un convertidor con más bits. Un convertidor de 16 bits
tiene 65536(216), en vez de 256(2'), cubriría el mismo rango de
1OOOV en incrementos de 15mV.
La conversión analógica-digital es considerablemente mas cara
que la D / A pues el precio esta directamente relacionado con la
resolución y la exactitud. Hay muchas formas de realización de la
corriente D/A. El rango oscila desde técnicas baratas muy lentas a
otras caras ultra rápidas.
Tenemos convertidores analógica: a ancho de pulso.
Este convertidor es uno los de c.odificadores más populares de
bucle abierto por su simplicidad. Un diagrama de bloque básico se
muestra en la figura 16. Este dispositivo utiliza un oscilador
fijo en combinación con un circuito que genera un ancho de pulso
que es una función lineal de la tznsión de entrada analógica.

V REF
~

GENERADOR
DE RAMPA
ANALOGIM
RESET
ARRANQUE
A
I

ENTRADA V V
CONVERTIDOR DE'
m TENSION EN
ANCHO DE PULSO
CONTADOR

ANALOGICA

GENERADOR DE
RELOJ
SALIDAS
DIGITAL EN
PARALELO

Figura 1 6 Convertidor analógico por ancho de pulso


Existe también convertidoresde r3mpa binarjo el cual utiliza
con mucha frecuencia en medidas de alta precisión con pequeñas
velocidades de muestreo.

68
MANUAL DE PRACTICAS

Lograr estos resultados, no obstante, depende del uso de


componentes de precisión y de una construcción adecuada.En la
figura 17 se ilustra el diagrama de bloques básicode un
convertidor contador rampa binario

Uin
CONVERTIDOR DE
DIGITALAANALOGICO
, DE M BITS

e-
COMPARADOR
DE TENSION IC
SALIDA DE
PARALELO
DE N-BITS
---

RESET

Figura 17 Convertidor analógico de rampa binario

69
MANUAL DE PRACTICAS

En la figura 18 es un esquema de un convertidorde 8 bits de


alta velocidad para propósitos generales.
Es capaz de trabajar con
velocidades de muestre0 de mas de 200 O00 muestras por segundo.
Para alcanzar estas velocidades se utillza la técnica llamadade
aproximaciones sucesivas.

REFERENCIA
ANALOGICA D
p+ -~

I
~

CONVERTIDOR E
SAL1DA V DIGITAL A ANAL Jtlm
I

COMPARADOR
SALIDA DE
PARALELO
DE 8-BITS

-
ENTRADA V

wD I
1
REGISTRODE SALIDA

I RELOJ APROXIMACIONES
SUCESIVAS
DE SERIE

C O M I E N Z O DE
LA CONVERSION
Figura 18 Convertidor
analógico
por
aproximaciones
sucesivas.

Desarrollo:

70
MANUAL DE PRACTICAS

está
viendo,
además
como
van
cambiando
las
mediciones
respectivamente en dicho canal (en número del O al 9 "SISTEMAS
DECIMAL"), el formato visto en los DISPLAYS es el siguiente:
DISPLAYS DE-, O AL 7 :
Debe desplegar el canal en el cual se
está haciendo la medición en ese momento.
DISPLAYS DEL 8 AL 10:
Debeaparecercodificadosensistemas
decimal las primeras mediciones de OOH a FFH o mejor dicho en
sistemas decimal, variará de O00 a 255.
DISPLAYS DE, 11 AL 13

CUESTIONARIO:
1.-Que tipo de convertidor ocupo
2.-Mencione las características para seleccionar este
convertidor A/D.
3.-Cori que instrucción se obtiene el valor a que se trasmite.

SIBLIOGRAFÍA:
1.-8051 AND DERIVATE MICROCONTROLLER, PHILLIPS
COMPONENTS,
SIGNETISC 1930.
2.-EIGTH-?TT
80C51
EMBEDDED
PROCESSORS,
1990
DATA
BOOK,ADVANCL.3 L.IICRO DEVICES.

3.-MICRGClOr\r'l'ROLLERUSER'S GUIEDE., SIGNETICS 1989.

71
MANUAL DE PRACTICAS

PRACTICA 3.

Potencia.
Objetivo: Manejo y control de dispositivos externos
Materia: Sistema anterior.
Optoacopladores.
Un foco.
CD/A.

INTRODUCCI~NTE~RICA.
En muchas aplicacionesde control automático, es necesario el
accionamiento de válvulas o sistemas de engranes con una exactitud
y precisiónmuyalta.EnRobótica,sonindispensablesestas
características, donde las manos y los.brazos mecánicos deben
ejecutar movimientos de gran precisión. En el área de medicina o
de ingeniería civil, mecánica o en cualquier otra ingeniería es
necesario tener este tipo de dispositivos para obtener un buen
resultado.
En nuestro caso trataremos de controlar la intensidad de la
iluminación de un foco de 100 Watts, por medio del teclado ,
teniendo cuatro niveles de iluminación, encendidoy apagado.
Lacomunicacióndeelfoco y nuestrosistema es un
optoacoplador
y para controlar el opto acoplador utilizaremos un convertidor
Digital analógico.
También se necesita un TRIAC v e 2s si el dispositivo que
produce que la iluminación del foco varié.
Cuando se empezó a emplear el SCR c?da vez más en el control
de potencia eléctrica,y debido a cy-le la transmisión de la energía
eléctrica es senoidal (corriente alterna, dos polaridades), se
requirieron dos SCR para poder tener control sobre todo el ciclo
de la señal. Debido a esto es que los fabricantes se preocuparon
por
encontrar ur,a configuración que
3ermitiera crear
un
dispositivo con las características del X k , pero capaz de operar
eficientemente en forma direccional y tener g.e emplear únicamente
un dispositivo para el control del l o s 360' del ciclo de corriente
alterna.
Este
dispositivo se
logran
meL2lando
las
cuatro
configuraciones básicas delos SCR's.

72
MANUAL DE PRACTICAS

En realidad un dispositivo TRIAC presenta características


eléctricas equivalentes a colocar dos SCR encontrados figura 19
En las demás características que se tienen, las diferencias
básicas con respectcj a unSCR son: que en el TRIAC se especifican
las corrientes de disparo IGT enlos cuatro cuadrantes en que este
dispositivo funciona, así como el voltaje de ruptura Vs en sentido
positivo y -Vs en sentido negativo. En cuanto a variación de
parámetros se tiene fundamentalmente lo mismo que enel S C R .

- vs
I

vs

Figura 1 9 Taracterísticas eléctricas delSCR

E l símbolo mas empleado para este tipo de dispositivo cuya


construcción externa es iguala la de los diodos controlados por
silicio se muec! rdm la figura 20
El circuito ecpivalente del TRIAC es igual que el del S C R ,
puessiestadisparadoencualquierdirecciónpresentabaja
resistencia, mientrc2..s
que
si
esta apagado
presenta
alta
resistencia.

73
MANUAL DE PRACTICAS

Terminal dos
T2

Compuerta G

Terminal uno
T1

Figura 2 0 Símbolo del TRIAC


DESARROLLO:
1.-Controlar la intensidad de un =occde íO0 Watts por medio
del teclado , teniendo dos teclasF para prenderlo y E para
apagarlo.
2.-Con la misxa teclaF variar la lntensidad delfoco.
3.-Tiene que a’mentar la intensidad teniendo tres tonos
a) Tenue
b) Normal
c ) Brillante.

CUESTIONARIO:
1.-Que dispositivo se utilizo para control&- el convertidor
D/A
2.-Debido a que se logro la variaciónde la intensidad.

74
MANUAL DE PRACTICAS

BIBLIOGRAF~A:
1.-8051 AND DERIVATE MICROCONTROLLER, PHILLIPS COMPONENTS,
SIGNETISC 1990.

2.-EIGTH-BIT 80C51
EMBEDDED PROCESSORS, 1990 DATA
BOOK,ADVANCED MICRO DEVICES.

75
MANUAL DE PRACTICAS

PRACTICA 4 .
Reloj de Tiempo Real.
Objetivo: Utilizar interrupciones del microprocesador
Material: Nada adicional al hardware
ya armado.
INTRODUCCI~NTE~RICA.
Cuando un periférico o cualquier dispositivo o simplemente
algúnproblemadentro de elpropiosistemasepresentauna
interrupciónla
cual los periféricos
la
valician. Existen
diferentes niveles de interrupción la cual es reconocida por el
procesador,despuésderecibirlapeticiónael dada, el
procesador compara el valor binario indicado con la máscara de
interrupciones en el registro de estado.
Si se muestra una prioridad mayor que la situada en la
máscara, o totalidad
la
si señales
de son
validadas
("interrupciones no mascarables"),el procesador iniciaun
procesamiento excepcional. En caso contrario, el procesador ignora
la peticióny continua con su procesamiento normal.
Si el procesador desea reconocer la interrupción, ejecuta un
ciclo de bus espacio CPU con la salida de nivel de prioridad de
interrupciones.
El dispositivo puede elegir enviar el numero de entrada de la
tabla de vector validadoy cargar el número de vzctor enbus el de
datos.
La mayoría de los nuevos dispositivo; perifel-icos 64K tiene
numeros de vectores de interrupción programable que envía al
procesador un reconocimiento de interrupción.
El 8031 proporciona cinco interrupcionzs, esto se muestra en
la figura 21
La interrupción externa y pueden ser cualquiera de las dos
pueden ser activadas por nivel o por transición, depende de los
bits IT0 y IT1 en el Registro TCON. Las bandeT.2 en realidad
generan esta interrumpción conlos bits IEO y IE; ell TCON. Cuándo
uFa interrupción externa es generada, la bandera q u , ; genera esta
es limpiada para el hardware cuándo l o s servicio de rutina están
~ectorizados, solamente se activa lainterrupción 1 esta en
transición.

76
MANUAL DE PRACTICAS

Si
lainterrupción seactivapornivel,entoncesel
requerimiento externo es una fuente que controla el requerimiento
de la bandera, más bien que enel chip por hardware.
Estructura del nivel de prioridad. cada una interrupción
fuente puede también ser individual programa hasta una de las dos
prioridades de nivel para limpiar un bit en Registro especial de
funciones IP. Unainterrupcióndebajaprioridadpuedeser
sustituida por una interrupción de alta prioridad, pero no por
otro interrupción de baja prioridad.

I
U

U
1
INTERRUPCIONES

TF1

T1

F1

TF2

EXF2
Figura 21 Interrupciones

Una interrupción üe a l t 3 prioridad puede ser interrumpida por


otrainterrupciónfuente,sidosinterrupcionesdediferente
prioridad nivel son recibidas simultáneamente , se pide la del
nivel de mas alta prioridac? y es atendida. Si pide de la mismo
prioridad de nivel son reservadas simultáneamente y se atienden
dependiendo de la secuencia en que se requieran.

77
MANUAL DE PRACTICAS

DESARROLLO :
Se creara un reloj de tiempo real y un fechador, el reloj de
tiempo real, el cual se va a mostrar en los displays de la manera
siguiente: Aparecerá al hora en sistema de 2 4 horas, podiendo
cambiar la hora, minutos, y segundos desde el teclado.
Este sistema funcionara parecido al que tiene PC. una
Se
contara
ademáscon
otra
tecla
también
codificada
previamente, que al ser presionada, nos dará la fecha en la cual
nos encontraremos. Esto lo hará, dado el día, mes y al igual que
la anterior, se deberá poder cambiar desde el teclado.
Este sistema también maneja las otras practicas anteriores.

CUESTIONARIO:
1.-Como se logro que todos l o s programas pudieran funcionar
enuno solo.

2.-Como se dio la prioridad de interrupciones


3.-Que se utilizo para tener el reloj
de tiempo real.

BIBLIOGRAFÍA:
1.-8051 AND DERIVATE MICROCONTROLLER, PHILLIPS COMPONENTS,
SIGNETISC 1990.

2 . -EIGTH-BIT 80C51
EMBEDDED
PROCES.?ORS,
1990
DATA
BOOK,ADVANCED MICXO DEVICES.

78
MANUAL DE PRACTICAS
Solución de la Practica 1
l. - Diagrama anexado.

2.-Programa de transmisión hacia la PC.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% PROGRAMA DE TRASMISI6N
A LA PC. 8
% 8
.......................................................
INICIO2 : MOV PCON,#80H ;PARA PONER SMOD 1 Y LA K=2
MOV TYOD,#21H ;ACTIVA T1EN MODO AUTORRECARGA
MOV SCON,#40H ;SELECCI~NDE MODO 1 TRANSMISI~N
MOV TH1, #OCCH ;PROGRAMAR FRECUENCIA EN BAUDIOS
;DE 1200 b/seg.
SETB TI ;PRENDE LA INTERRUPCI~NDE
;TRASMISI~N
SETB TR1 ;GENERAR BAUDIOS ((TR1=1)
INICIO3 : MOV DPTR,#3000H ;SELECCI6N DEL ADC
EN MAPEO
MOVX @DPTR, A ;ESCRIBE PARA INICIAR
;CONVERSI6N
MOV R7,#05H
RETAR : DEC R7
CJNE R7,#OOH,RETAR
ESPE : m P1.7,ESPE ;ESPERA EL FIN DE CONVERSI~N
MOVX A,QDPTR ;LEER DATO DEL ADC
CLR TI ;BORRA LA INTERRUPCI~NDE
;TRANSMISI~N
l40V SBUF,A ;HACE TRANSMISI~NSERIAL
FINTRAS : JNB TI,FINTRAS ;CONCLUYA TRASMISI~N

MOV RO,FUNCION
CJNE RO,#05,INICJQ3 ;SI NO SE PULSA F5 PARA
;SALIR SIGUE
3 .-Programa de recepción de la PC.

los datos y los almacena


Este programa solamente recibe en un
archivo:

79
MANUAL DE PRACTICAS

#include <bios.h>
#include <conio.h>
#include <stdio.h>
#define COM2
#define TRUE
#define FALSE
#define SETTINGS(OxE0~0x03~0xOO~Oxoo)
FILE *fp

int main
(void)
{
clrscr ( 1 ;
comunica ( 1 ;
transmitir ( ;
return O ;
1
comunica ( )
{
int out,status;
char in,str [40];
clrscr ( ) ;
gotoxy(1 ;
printf ("Introduzca el nombre del archivo
y la unidad de dis
co") ;
gotoxy(15,11);
printf ("Ejemplo:b:recepción\n");
gotoxy(24,12);
gets (str);
if((fp=fopen(str,"wb"))==NULL)
I
I

printf ( "No puedo abrir el


archivo\n") ;
exit (1);

1
return O ;
.l
transmitir ( 1 ;

80
MANUAL DE PRACTICAS

int in,out,status,DONE=FALSE;
clrscr ( 1 ;
bioscom(O,SETTINGS,COM2);
cprintf .BIi3SCOM [ESCI to exit..-\n")
( ' l . . ;
while ( !DONDE)
{
& OxFF) ! = O )
if((out=bioscom(2,0,COM2)
if (out!=Ox40)
{
putt (out,fp);
1
else DONE=TRUE;
1
fclose(fp);
printf("\n. . . cierre dearchivo..
return O ;
BIOSCOM

R S - 2 3 2 comunicación de entrada/ salida


int bioscom(int cmd,char abyte, int
port);
Se utiliza la librería
bios.h
cmd su valor es como sigue:

* O conjunto comLLnicación parámetros para


abyte.
Q 1 env:.ar &yte afuera.
Q 2 recibe un char (regresa un valor bajo
8 bits).
de
Q 3 regresa status.
port es O para COM1, 1 para COM2, etc
Los 8 bits de regres9 valoran el status
La parte Bajar de8 bits depende de cmd especifico

CUESTIONARIO:
1.-Que modo de transmisión se utilizo
y por que
Se selecciono (.-1
modo 1, por que se trasmiten 10 bits por la
línea (TXD) o se reciben por la línea (RXD). Un bit de inicio
(Start bit de nivel O lógico), 8 bits de datos y un bit de fin
(Stop bit de

81
MANUAL DE PRACTICAS

nivel uno lógico). En recepción el bit deFin (Stop), se almacena


en RB8 deSCON, si SM2=0. El baud rate ( frecuencia de recepción o
transmisión) es variable.
2.-Explique muy sencillamente como trabaja este modo.
En este modo 10 bits son trasmitidos (por TXD) o recibidos
(por RXD). Un bit de inicio "START" en nivel O , 8 bits de datos
(primero el LSB), un bit de para "STOP" en el nivel 1. En la
recepción, el bit de STOP viene en RB8 de SCON. El Baud Rate es
determinado por la frecuencia de los "overflows" del timer 1.
La transmisión es iniciada por cualquie- instrucción que
escriba en el registro SBUF. La señal de escritura en SBUF,
también carga un 1 dentro de la g n a . Posición del registro de
corrimiento de transmisión y establece en la unidadde control TX
una demanda de transmisión. La transmisión comienza en S l P l del
ciclo de maquina siguiente, en el primer pxlso proporcionado por
el circuito divisor ( 8 1 6 de la frecuencia dada por el timer1). Es
decir los datos de entrada están sincronizados por el circuito
divisor 816, y no por la escritura en SBUF.
La transmisión comienza con la activación de la señal SEND,
la cual introduce del STAR en TXD. Un período ( 1 / 1 6 de frecuencia
dada por el TIMER1) mas tarde la señal DATA esactivada, la cual
permi te
la salida de los bits que se trasmitirán por TDX. El primer pulso
de Corrimiento ocurre un período después de esto.
La recepción es inicializada por una transición de1 a O en
RXD. La linea RXD es muestreada a la frecuellcia de 16 veces la
frecuencia de "Baud rate" que ha sidc establecida. Cuando un
transciente es detectado el divisor entre 16 es inmediatamente
restablecido y lFFH es escrito en la entrada del registro de
corrimiento.
Cada tiempo que dura el bit recibido, es dividido en 16
períodos. Durante los períodos 7," 8,, y 9, el valor del bit es
muetreado, el valor aceptado, es el que se obtuvo en las ultimas
dos muestras, esto se hace para evitar ruido, Ti el valor aceptado
es 1 , el circuito receptor es restablecidc y 13. unidad receptora
espera otro transciente de inicio. Si el b::t de comienzo es
correcto, es decir O , la recepción continua.

3 . - En que momento en su programa empieza la transmisión de


la señal.
Empieza la transmisión en la línea
MOV SBUF,A ;HACE TRANSMISI~NSERIAL

82
1,
Isa

r-h
1
MANUAL DE PRACTICAS

SOLUCI~NDE LA PRACTICA 2 .
,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...............................................................
I

ELABORADO POR: M Q U E Z L6PEZ GERARD0


................................................................
I
................................................................
I

; DEFINICI~NDE CONSTANTES.
DOV 48H
DO 49H ;DO-Dl5: BUFFFliS EN RAM INTERNA CONEL
Dl 4AH CONT1,NIDODE LOS DISPLAYS
D2 4BH
D3 4CH
D4 4DH
D5 4EH
D6 4FH
D7 50H
D8 51H
D9 52H
Dl0 53H
Dl1 54H
Dl2 55H
Dl3 56H
Dl4 57H
Dl5 58H
Dl5V 59H
ESTADO1 5AH ;ES AUXILIAY PARA HACER COMPARACIONES
TECLA 5BH ;EL VALOR DE LA ULTIMA TECLA PULSADA
FUNCIÓN 5DH ;PARA SABER LA FUNCIÓN QUE SE ESTA REALIZANDO.
ESTAD@ 5EH ;PARA CETECTAR EL TIPODE PROGRAMA EN LA ATEXTl

; CONSTANTES PARA EL 8279


DAT8279 EQU 3 8 0 0 ~ ;DIRECCI~Nm DATOS
CTRL8279 EQU 3801H ;DIRECCIk CONTROL c _

MODO EQU OOOOlOOOB ; (16) OOODiKKK


DIVCLE; EQUOOllOlOOB ;(52) 001DuJDD
RDFIFO EQUOlOOOOOOB ; (64) :: DIRDIRDIh
OlOINC
WROINC EQU10010000B ;(144) IOOINC DIR DIR DIR DIR
CLEAR EQU llOOllOlB ;(205) 1 1 0 CID BIC BIC CFF CAI
PCON EQU0087H ; (135) DIRECCI~NDEL PCON

83
MANUAL DE PRACTICAS

I
................................................................
;DIRECCI~NDE INTERRUPCIONES, NO MODIFICABLES EN SOFTWRE
INTEXTO EQU 0003H
INTTIMO EQU OOOBH
INTEXTl EQU 0013H
INTTIMl EQU OOlBH
INTSERl EQU 0023H

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;~ÓDIGOPARA LAS TECLAS PARA LA SELECCI~NDE FUNCIÓN

F2 11H ;PARA ESCOGER CANALDEL ADC Y LECTURA HEXA


Y ;DECI

................................................................
I

; ORGANIZACI~NDEL PRINCIPIO DEL PROGRAMA


ORG OOOOH
AJMP INICIO
................................................................
I

I LAS DIRECCIONES DE ATENCI6N DE INTERRUPCIONES SE MAPEA


, EN LA PARTE ALTA DE LA MEMORIA RAM EXTEFWA,PARA QUE PUEDAN
I SERMANEJADASPORELPROGRAMADOR

ORGINTEXTl ;INTERRUPCIóN EXTERNA1 TECLADG


AJMP A’TEXT1 ;ATENDIDA POR EL MONITOR

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
; PARA LA INTERRUPCI~NDEL TIMER 1

INTTIMl
.’ )RG ;INTERRUPCI~NDEL TIMER 1
ALIMP
-kTTIMl ;SALTO A RUTINA DE ATENCI~N -)E
INTERRUPCI~N

84
MANUAL DE PRACTICAS

................................................................
I

; PI8279 ESTABLECE ELMODO DE OPERACIbN Y LA FRECUENCIA


DE BARRIDO
DEL
; CONTROLADOR DE TECLADO Y DISPLAYS.

ORGOlOOH
PI8279: PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#CTRL8279 ; APUNTA JIR. DE CONTROL DE 8279
MOV A,#MODO ; MODO: 16 DISPLAYS, ENTRADA POR
DERECHA ;
MOVX @DPTR
,A ; BARRIDO CODIFICADO, UNA TECLA A LA
VEZ
MOV A,#DIVCLK ; DIVISOR DE FRECUENCIAALE, OBTIENE
UN
MOVX @DPTR,
A ; BARRIDO DE lOOKHZ = 12MHZ / 6 / 2 0
MOV A , #CLEAR ; INICIALIZA MEMORIA DE DISPLAY,
STATUS
MOVX A
@DPTR, ; DE FIFO Y LOGICA DE INTERRUPCIONES
PI8279A: MOVX A,@DPTR ; LEF STATUS DE FIFO
JB ACC.7,PI8279A ; MIENTF’AS DISPLAY NO ESTE
DISPONIBLE
POP DPL
POP DPH
POT ACC
RET
.****r**********************************************************
I

; DESPLIEGA RECIBE EN DPTR LA DIQECCIÓN DE UN LETRERO PARA


ESCRIBIRLO EN EL
; BUFFER Y ENVIARLO A LOS DISPLAYS.
DESPLI:ACALLMEMABUF
ACALL BUFADSP
RET

85
MANUAL DE PRACTICAS

................................................................
I

; "ABUF RECIBE m DPTR LA DIRECCI~NDE m LETRERO PARA ESCRI-


BIRLO EN EL
; BUFFER DE R A M INTERNA.

" A B U F : PUSH ACC


PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSE 08H

MOV PSW,#O OH ; SELECCI~NDEL BANCO CERO


MOV RO,#Dl5 ; APUNTA RO AL BUFFERMAS SIGNIFICATIVO

MEMABUF1: MOVX A,@DPTR ; PONE VALOR DE LA TABLA EN A


MOV @RO,A ; PONE EL DATO LEÍDO EN RO
INC DPTR
DEC RO
CJNE RO,#D7,MEMABUFl
MOV PSW,#08H ; SELECCI~NDEL BANCO UNO
MOV R O , #D7 ; APUNTA RO AL BUFFER MAS SIGNIFICATIVO
" A B U F ? : MOVX A,@DPTR ; PONE VALOR DE LA TABLA EN A
rvlClV @RO,A ; PONE EL DATO LEÍDO EN RO
INC DPTR
DEC RO
CJNE RO,#DOV,MEMABUF2
POP 08H
POP O O H
POP PSW
POP DPL
X!P DPH
PO.!',ACC
RE'i'

86
MANUAL DE PRACTICAS

................................................................
I

; BUFADSP ENVÍA EL BUFFER EN RAM INTERNA A LOS DISPLAYS.

BUFADSP:PUSHACC
PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH 08H
MOV DPTR,#CTRL8279 ; PARA E'VIAR PALABRA DE CONTROL
MOV A,#VJROINC ; AVISA .UE VA A ESCRIBIR
MOVX @DPTR,A ; LO ENVÍA A 8279

MOV PSW,#OOH
MOV DPTR,#DAT8279 ; PAPA ENVIAR DATOS AL 827 9
MOV RO,#DO ;CARGA
BANCO O CON
EL DATO DEL
PRIMER
;DISPLAY

BUFADSPl:
MOV A,@RO ; TOMA EL
BUFFER EN CURSO
@DPTR,A
MOVX ; LO ENVÍA AL 8279
INC RO ; PASA AL SIGUIENTE BUFFER
C J N E RO,#D15V,BUFADSP1 ; HASTA QUE TRASMITE LOS 16
DISPLAYS.
POP 08H
POP OOH
POP PSW
POP DPL
E'OP DPH
?OP ACC
RET

87
MANUAL DE PRACTICAS
................................................................
I

LETVACIO: DB OFFH,OFFH,OFFH,OFFH
DB OFFH,OFFH,OFFH,OFFH
DB OFFH,OFFH,OFFH,OFFH
DB OFFH, OFFH, OFFHOFFH,

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MENSAJE: DB OC7H, OFgH, 092H, 087H


DB OCOHr07FH,07FH,07FH
DB OTFH,
07FH107FH,07FH
DB O’IFH, 07FH ; (LISTO.. . . . . . . . . . )
07FH, 07FH,

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;% AUTOM ES EL ESTADO INICIAL DEL SISTEMA DEL CUAL INICIA %
;% LA FUNCIÓN DE SELECCIONAR CANAL %
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AUTOM : MOV A,TECLA

CJNE A,#l,EDOOA
AJMP DIRl ;
EDOOA CJ-NE A, EDOOB;
#2,
AJMP DIR2;
EDOOB CJNE A,# 3 , EDOOC;
AJMP DIR3 ;
CJNE
EDOOC A, EDOOD;
#4,
AJMP DIR4;
CJNE
EDOOD A,# 5 , EDOOE;
AJMP DIR5 ;
EDOOE CUXE A,# 6 , EDOOF;
AJMP DIR6 ;
CJNE
EDOOF A,#7,EDOOG;
AJMP DIR7 ;

aa
M
AN
U& DE PRACTICAS
EDOOG CJNE Al#8,0TRO;
AJMP DIR8;

.................................................................
I

I DIRN RTJTINA PARA INICIAR LA T R A S M I S I ~ NDE


I LA S ~ A L

DIRl : CLR P1.0


CLR P1.1
CLR P1.2
MOV R3, #O1
MOV CAN&, # 0 1
RET

DIR2 : SETB P1.0


CLR P 1 . l
CLR P 1 . 2
MOV R3 # O 1
MOV CANAL,#O2
RET

DIR3 : CLR P 1 . 0
SETB P 1 . l
CLR P 1 . 2
MOV R3,# O 1
MOV CANAL, # O 3
RET

DIR4: SETE P1.0


SETE PI.1
CLR 21.2
MOV R3,# O 1
MOV CANAL, # O 4
RET

DIR5: CLR 2 1 . 0
CLR 21.1
SETE P1.2
MOV F.3, # O 1
MOV CANAL, # O 5
RET

89
MANUAL DE PRACTICAS

DIR6 : SETB P1.0


CLR P1.l
SETB P1.2
MOV R3,% 3 1
MOV CANAL,#O6
RET
DIR7 : CLR P1.0
SETB P1.l
SETB P1.2
MOV R3,# 3 l
MOV CANAL,# 0 7
RET
DIR8: SETB P1.0
SETF P1.1
SETB P1.2
MOV R3,# O 1
MOV CANAL,# O 8
RET
................................................................
I

I OTRO EN CASO DE APRETAR OTRA TECLA QUE NO SEA NINGUNA DEL


1-8
, SE REGRESA
AL
ESTADO
INICIAL
OTRO : MOV R3,# O 0
R.ET

DESPHD : ACALL KEMABHD ;ESCRIBE EL LOS DATOS EN EL BUFER


ACALL BYFADSP ;ENVÍA AL BUFFEE 8279
AL
RET

90
MANUAL DE PRACTICAS

................................................................
I

;PARA CARGARLA MEMORIA CON DATOS CONVERTIDOS A DECIMAL


Y HEXADE-
CIMAL

"ABHD: PUSH ACC


PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH 08H

MOV PSW,#OOH
MOV RO,#Dl5
MOV @RO, #087H ;ES UNA T
DEC RO
MOV @RO, #07FH ;ES UN PUNTO
DEC RO
MOV @RO, #OC6H ;ES UNA C
DEC RO
MOV @RO, #088H ;ES UNA A
DEC RO
MOV @RO, #OC8H ;ES UNA N
DEC RO
MOV @RO, #088H ;ES UNA A
DEC RO
MOV @RO, #OC7H ;ES TTA I
DEC RO
MOV R2,CANAL
MOV B,R2
ACALL BDECI
MOV @RO,B ;NUMERO
CANAL
DEL
DEC RO
MOV PSW,#08H
MOV B,
;GUARDA
A ENA B
ANL A,#00001111B
ACALL ADECI
MOV RO,#D6
MOV @RO,A ; X HEXAD
LSB
MOV A,B

91
MANUAL DE PRACTICAS

ANL A,#11110000B
SWAP A
ACALL ADECI
MOV RO, #D7
MOV @RO,A ;X HEXAD
MSB
MOV RO,#D5
MOV @RO, #089H ;ES LA H
MOV RO , #D2
MOV A,B
MOV B,#10
DIV AI3
ACALL BDECI
MOV @RO,B ;X DECI LSB
MOV B,#10
DIV Al3
ACALL BDECI
MOV RO,#D3
MOV @RO,B ;X DECI BITDE ENMEDIO
MOV B,#10
DIV AB
ACALL BDECI
MOV RO,#D4
MOV @RO,B ;X DECI
MSB
MOV RO , #Dl
MOV @RO, #OA1H ;ES LA D
DEC RC)
MOV @RO,d07FH ;ES UN PUNTO
DEC !?O

POP 08H
PO? 0013
POP PSW
POP DPL
POP DPH
POP ACC
RET

92
MANUAL DE PRACTICAS

................................................................
I

; EL NUMERO QUE SE ENCUENTRA EN EL ACUMULADOR BLO PASA A 7SEG


BDECI : PUSH DPH
PUSH DPL
PUSH ACC
MOV DPTR , #TAB7 SEG
MOV A,B
MOVC A,@A+DPTR
MOV B,A
POP ACC
POP DPL
POP DPH

RET
,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;CORRESPONDENCIA PARA LOS
7 SEGMENTOS
TAB7SEG: DB 1lOOOOOOB ; ES O
DB 1llllOOlB ; ES 1
DB lOlOOlOOB ; ES 2
DB 10110000B ; ES 3
DB lOOllOOlB ; ES 4
DB lOOlOOlOB ; ES 5
DB 10000010B ; ES 6
DB lllllOOOB ; ES 7
DB lOOOOOOOB ; ES 8
DB 1OOllOOOB ; ES 9
DB 1OOOlOOOB ; ES A
DB 10000011B ; ES B
DB llOOOllOB ; ES C
DB lOlOOOOlB ; ES D
DB lOOOOllOB ; ES E
DB lOOOlllOB ; ES F

93
MANUAL DE PRACTICAS
................................................................
I

I CAPTEC RESPONDE A LA INTERFWPCI~N DEL 8279 LEYENDO DE su


DIRECCI~N
I DE DATOS EL C ~ X G O DE LA TECLA PRESIONADA
CAPTEC : PUSH ACC ;
PUSH DPL ;
PUSH DPH ;
MOV DPTR,#CTRL8279 ;APUNTA A LA DIRECCI~NDE CONTROL
;DEL 8279
MOV A,#RDFIFO ;Y LO PREPARA PARA LEER FIFO
EL
MOVX @DPTR, A
MOV DPTR,#DAT8279 ;APUNTA A LA DIRECCI~N DE DATOS
DEL ; 8279
MOVX A,@DPTR ;LEE CODIGO DEL FIFO(SHFT CTRL S
S ;S R R R)
XRL A,#11000000B ;COMPLEMENTA SHFTY CTRL (ACTIVAS
;NEGATIVAS)
MOV TECLA, A ;ESCRIBE EL VALOR PRESIONADO EN
;TECLA
POP DPH ;
POP DPL ;
POP ACC :
RET ;

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;ATENCIóN DE INTERRUPCIóN DEL TIMER1 PROGRAMA 1

ATTIMI: MOV R C ,FUNCIÓN


CJNE RO,#01, FIN;PARAEJECUTARELPROGRAMADEL
LETRERO
MOV R2,CUENm
INC R2 ;SE USA
CUENT
COMO
CONTADOR
MOVCUENTR2
CJNE R2,#8,FIlv ;SI R2 NO ES IGUAL A 8 REGRESA LA
;INTERRUPCI~N

94
MANUAL DE PRACTICAS

MOV CUENT,#OOH ;SI ES IGUAL INICIALIZAMOS CUENT


MOV RO,#DO DO
;Y CARGAMOS RO CON EL DATO
SECORREl : XCH A,@RO ;CAMBIAELCONTENIDO 3E RO AEL
REGISTRO A
;INCREMENTA
INC RO RO
CJNE RO,#DlSV,RECORREl ;COMPARA SI ES IGUAL RO CON
#D15V
MOVX A,@DPTR ;PONE ELVALOR DE LATABLAENA
MOV DO , A ;CARGA DO CON EL CONTENIDO DE A
LCALL BUFADSP ;LLAMA
BUFADSP
A PAILA DESPLEGAR
;MENSAJE
INC DPTR
MOV R1,ESTADO
INC R1
MOV ESTADO, R1
CJNE R1, #32, FIN ;COMPARA R1 CON 32 QUE ES LA CANTI-
DAD
MOV DPTR,#MENSAJE ;QUE REQUIERE EL ULTIMO CARÁCTER
EN
MOV ESTADO,#OOH ;SALIR
RET1 FIN:

................................................................
r

; PROGRAMA PRINCIPAL, INICIALIZA 8031 Y PONE EL LETRERO


DE LISTO
INICIO : MOV IE,#OOH ; HABILITACI~KDE INTFZRUPCIONES
MOV PSW,#OOH ; STATUS
MOV IP,# O O H ; PRIORIDADES DE INT.
MOV TCON,#O OH ; CONTROL DE TIIIIERS
MOV TMOD,# O OH ; MODO DE TIMERS
MOV SCON,#OOH ; CONTROL DEL PTO. SERIE
MOV SP,#060H ; INICIO DE LA PILA
MOV FUNCI~N,#OOH ; PARA INICIALIZAR LA -:.JNCI~NA
; ESCOGER
ACALL PI8279 ; PROGRAMA AL 8279

E1'I:END: MOV DPTR,#MENSAJE


LCALL DESPLI ;DESPLIEGA EL MENSAJE (LIS
;TO. . . . . . . . . . . )
ORDEN : MOV R2,FUNCIóN
CJNE R2,#01, SECUENl
AJMP DISPLAY

95
MANUAL DE PRACTICAS

SECUENl: CJNE R2,# O 2 ORDEN I

MOV CANAL,#O OH
MOV R3,# O 0
ESPERA1 : CJNE R3,# O 1 ESPERA"I

AJMPINICIO2
................................................................
I

; RUTINA PARA MOVIMIENTO DE DISPLAYS

DISPLAY:
ACALL
PI8279
;PROGRAMA
8279
AL
MOV DPTR,#LETVACIC ;DIRECCIONA A LETRERO EN VACIÓ
LCALL DESPLI ;PONE LETRERO VACI6 EN LOS
DISPLAYS
MOV DPTR,#MENSAJE ;DIRECCIONA A MENSAJE
MOV ESTADO, #o011 ;INICIALIZA ESTADO
MOV CUENT,#OOH ;INICIALIZA CUENT
MOV TMOD,# 11H ;SELECCI~NDE LOS TIMERS COMO DE
16 BITS
SETB EA ;HABILITA L A S INTERRUPCIONES
ET1
SETB ;HABILITA LA INTERRUPCI~NDE
;SOBREFLUJO
;DEL TIM1
SETB
;BIT
TR1 DE CONTROL DEL TIMER1
;ARRANCA EL TIMERl
CICLO : MOV R6,FUNCIÓN
CJNE R6,# 0 5 , CICI.5 ;CONTINUAR EN ESTE PROGRAMA
AJ'MP ATILND
;IR A OTRO
PROGRAMA
.............................................................
% 8
x PROGRAMA DE TRASMISI~NA LA PC. %
% %
%%%%%%%%%%%%%5%%%%x%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INICIO2 : MOV PCON,# C o l i ;PARA PONER SMOD
1 Y LA K=2
MOV TMOD,#21H ;ACTIVA T1 EN MODO AUTORRECAR-
GA MOV SCOr;l,#40H ;SELECCI~NDE MODO 1
TRANSMISI~N
MOV TH1,#OCCH
;PROGRAMAR
FRECUENCIA
EN
BAUDIOS ;DE 1200 B/SEG
SETB TI ;PRENDE LA INTERRUPCI~NDE
;TRASMISI~N
SETB
BAUDIOS
;GENERAR
TR1 ((TR1=1)

96
MA
NU& DE PRACTICAS

INICIO3 : MOV DPTR, #3000H ;SELECCI~NDEL ADC EN MAPEO


MOVX @DPTR,A ;ESCRIBE PARA INICIAR
;CONVERSI~N
MOV R7 #05H
I

RETAR : DEC R7
CJNE R7,#OOH,RETAR
ESPE : JNB P1.7,ESPE ;ESPERA EL FIN DE CONVERSI~N
MOVX A,@DPTR ;LEER DATO DEL ADC
CLR TI ;BORRA LA INTERRUPCI~NDE
;TRASMISI~N
MOV SBUF ,A ;HACE TRANSMISI~NSERIAL
FINTRAS: JNB TI,FINTRAS ;CONCLUYA TRASMISI~N
MOV R O ,FUNCIÓN
CJNE RO #05,INICIO3 ;SI NO SE PULSA F5 PARA
;SALIR SIGUE

I
................................................................
;ATEXTl ES LA ATENCIóN DE INTERRUPCIóN DEL TECLADO
ATEXT1:
CLR
EX1
ACALL CAPTEC
MOV A,TECLA
CJNE A,#F2,PROG3
MOV FUNCIbN, #O2
AJMPSALIR

................................................................
I

; PROG3 RECIBE LA INTERRUPCIóN DEL TECLADO PARA-EL PROGRAMA 3


PROG? : MOV R O ,FUNCIÓN
CJNE RO , # 0 2 , PROG4
ACALL AUTOM
AJMP SALIR
.**r******************************************************~*****
I

;RCTINA PARADEJAR LA INTERRUPCI~NEXTERNA GENERADA POR EL TECLADO


SAL7: h . SETB EX1
RET1
END

97
MANUAL DE PRACTICAS
CUESTIONARIO:

1.- ¿QUE TIPODE CONVERTIDOR OCUPO?


se utilizo un ADC0809 de 8 bits que usa aproximaciones
suceci
vas
2.- MENCIONE LAS CARACTERÍSTICAS PARA SELECCIONAR ESTE
CONVERTIDOR
multiplexa 8 canales
tiene un tiempo de conversión de100 ps
fácil interfase con el micrJprocesador
bajo consumo de potencia
contiene 3 estados de salida
tiene un error aproximado de k 1.25 Lsb
no distorciona el código.
3 . - CON QUE INSTRUCCI6N SE OBTIENE EL VALOR CON QUE SE
TRANSMI TE (VELOCIDAD)
CON ESTA ECUACI6N OBTENEMOS EL BAUD RATE

Install Equation Editor and double-


click here to view equation.

por lo tanto las líneas del programa para calcular a que


velocidad estamos trasmitiendo es:

MOV "MOD # 2 1 H ;ACTIVA T1 EN


MODO
AUTORRECARGA
MOV SCON,#40H ;SELECCI~NDE MODO 1
TRANSMISI~N
MOV TH1,#OCCH ; PROGRAMAR FRECUENCIA EN
BAUDIOS ;DE 1200 B/SEG

98
MANUAL DE PRACTICAS

SOLUCI6N DE WL PRACTICA 3

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
...............................................................
I

I ELABORADO POR: MÁRQUEZ


LÓPEZ GERARDO
I

I PROGRAMAMONITOR PARA ELSISTEMA MÍNIMO DEL 8031


................................................................
I
................................................................
I

; DEFINICI~NDE CONSTANTES.
DOV 48H
DO 49H ;DO-Dl5 : BUFF 3RS EN RAM INTERNA CON EL
Dl 4AH CONTENIDO DE LOS DISPLAYS
D2 4BH
D3 4CH
D4 4DH
D5 4EH
D6 4FH
D7 SOH
D8 51H
D9 52H
DlO 53H
Dl1 54H
Dl2 55H
Dl3 56H
Dl4 57H
Dl5 58H
Dl5V 59H
PULSOS 5CH ; PARA LAS VARIACIONESDE POTENCIA
FUNC IÓN 5 PARA SABER LA FUNCIÓN QUE SE ESTA REALIZANDO.
;DH
ESTADO 5EH ; PARA FETECTAR EL TIPO DE PROGRAMA EN LA ATEXTl
CUENT 5FH ;PARA USO DE LA INTERRUPCIóN DEL TIMER1

; CONSTANTES PARA EL 8279


DAT8279 EQU
3800H ;DIRECCIC; DATOS
CTRL8279 EQU 3801H ;DIRECCIóN DE CONTROL
MODO EQU O O O O l O O O B ;(16) O~ODIJKKK
DIVCLK EQU OOllOlOOB ; (52) 001Df'SD
RDFIFO EQU O l O O O O O O B ;(64)010INC X DIRDIRDIR

99
MANUAL DE PRACTICAS

W R O INC EQU 1OOlOOOOB ;(144) 100INC DIR DIR DIR DIR


CLEAR EQU 11OOllOlB ;(205) 110 CID BIC BIC CFF CAI
PCON
EQU
0087H ;(135) DIRECCI6N
DEL
PCON
................................................................
I

;DIRRECCION DE INTERRUPCIONES, NO MODIFICABLES EN SOFTWRE


INTEXTl EQU 0013H
INTTIMl EQU OOlBH
INTSERl EQU 0023H

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
;CÓDIGO PARA LAS TECLAS PARA LA SELECCI~NDE FUNCIÓN
EQU
F4
14H
;PARA
CONTROL
DEL
FOCO

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
; ORGANIZACI~N DEL PRINCIPIO DEL PROGRAMA
ORG OOOOH
AJMP INICIO
................................................................
I

I LAS DIRECCIONES DE ATENCI~NDE INTERRUPCIONES SE MAPEA


I EN LA PARTE ALTA DE LA MEMORIA RAM EXTERNA,PARA QUE PUEDAN
I SERMANEJADASPORELPROGRAMADOR

ORGINTEXTl ;INTERRUPCIóN EXTERNA1 TECL-DO


AJMP ATEXTl ;ATENDIDA POR EL MONITOR
................................................................
I

; PARA LA INTERRUPCI~NDEL TIMER 1

ORG INTTIMl ;INTERRUPCI~NDEL TIMER 1


AJMP ATTIMl ;SALTO A RUTINA DE ATENCI~N DE INTF-WD
;CION

100
MANUAL DE PRACTICAS

................................................................
; PI8279 ESTABLECE EL MODO DE OPEFWI~N Y LA FRECUENCIA DE BARRIDO
; DEL CONTROLADOR DE TECLADO Y DISPLAYS.
ORGOlOOH
PI8279 : PUSH ACC
PUSH DPH
PUSH DPL
MOV DPTR,#CTRL8279 APUNTA DIR. DE CONTROL DE 8279
MOV A,#MODC MODO: 16 DISPLAYS, ENTRADA POR
; DERECHA;
MOVX @DPTR, A BARRIDO CODIFICADO, UNA TECLA ALA
; VEZ

MOV A ,#DIVCLK DIVISOR DE FRECUENCIA ALE, OBTIENE


UN
MOVX @DPTR,
A BARRIDO DE lOOKHZ = 12MHZ / 6 /20
MOV A,#CLEAR ; INICIALIZA MEMORIA DE DISPLAY,
STATUS
MOVX @DPTR ,A DE FIFO Y LÓGICA DE INTERRUPCIONES
PI8279A: MOVX A,@DPTR LEE STATUSDE FIFO
JB A X . 7,PI8279A MIENTRAS DISPLAYNO ESTE DISPONIBLE
?OP DPL
FdP DPH
POP ACC
RET

,. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 * *
; DESPLIEGA RECIBE EN DPTR LA DIRECCI~N DE UN LETRERO PARA
ESCRIBIR ; LO EN EL BUFFER Y ENVIARLO A LOS DISPLAYS.

DESPLI:ACALLMEMABUF
ACALL BIJFADSP
RET

101
MANUAL DE PRACTICAS

................................................................
; "ABUF RECIBE EN DPTR LA DIRECCI~N DE UN LETRERO PARA ESCRI-
BIRLO ; EN EL BUFFER DE RAM INTERNA.
" A B U F : PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH 08H
MOV PSW,#OOH ; SELECCI~NDEL BANCO CERO
MOV RO,#D15 ; APUNTA RO AL BUFFERMAS SIGNIFICATIVO

MEMABUFl: MOVX A,@DPTR ; PONE VALOR DE LA TABLA EN A


MOV @RO,A ; PONE EL DATO LEÍDO EN RO
INC DPTR
DEC RO
CJNE RO, #D7,
"ABUF1
MOV PSW,#08H ; SELECCI~NDEL BANCO UNO
MOV RO,#D7 ; APUNTA RO AL BUFFERMAS SIGNIFICATIVO
"ABUF2 : MOVX A,@DPTR ; PONE VALOR DE LA TABLA EN A
MOV @RO,A ; PONE EL DATO LEÍDO EN RO
INC DPTR
DEC RO
C J N E RO,#DOV,MEMABUF2

POP 08H
POP OOH
POP PSW
POP DPL
POP DPH
POP ACC
RET

102
MANUAL DE PRACTICAS
................................................................
I

; BUFADSP ENVÍA EL BUFFER EN RAM INTERNA A LOS DISPLAYS.

BUFADSP:PUSHACC
PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH 08H

MOV DPTR,#C?'RL8279 ; PARA ENVIAR PALABRADE CONTROL


MOV A,#WROINC ; AVISA QUE VA A ESCRIBIR
MOVX @DPTR, A ; LO ENVÍA A 8279
MOV PSW,#O OH
MOV DPTE,#DAT8279 ; PARA ENVIAR DATOS AL 8279
MOV RO,#DO ;CARGABANCO O CONEL DATO DEL
; PRIMER DISPLAY
BUFADSPl:
MOV
A,@RO ; TOMA EL
BUFFER EN CURSO
MOVX
@DPTR,
A ; LO ENVÍA AL 8279
INC RO ; PASA AL SIGUIENTE BUFFER
CJNE RO,#D15V,BUFADSPl ; HASTA QUE TRASMITE LOS16
; DISPLAYS.

POP 0811
POP OOH
2OP PSW
POP DPL
POP DPH
PC-P ACC
RET

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

MENSAJE: DB OC7H,OF9k!,092H,087H
DB OCOH,@7FH,07FH,07FH
DB 07FH,07FM i)7FH,07FH
DB 07FH,07FH,07FH,07FH;(LISTO. . . . . . . . . . .

103
MANUAL DE PRACTICAS
................................................................

MENSFUN: DB 08EH,OCOH,OC6H,OCOH
DB 07FH,07FH,07FH,07FH
DB 07FH,07FH,07FH,07FH
DB 07FH,07FH,07FH,07FH ;(FOCO. . . . . . . . . . . . )

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
; CAPTEC RESPONDE A LA INTERRUPCI~NDEL 8279 LEYENDO DE su
; DIRECCIóN DE DATOS EL C6DIGO DE LA TECLA PRESIONADA

CAPTEC:
PUSH ACC;
PUSH DPL;
PUSH DPH;
MOV DPTR,#CTRL8279;APUNTA A LA DIRECCI~NDE CONTROL
;DEL 8279

MOV A,#RDFIFO ;Y LO PREPARA2ARA LEER EL FIFO


MOVX GDPTR, A
MOV DPTR,#DAT8279 ;APUNTA A LA DIRECCI~NDE DATOS
DEL ;8279
MOVX A,@DPTR ;LEE CÓDiGO DEL FIFO (SHFT CTRL S
S ;S R R R)
XRL A,#11000000B ;COMPLEMENTA SHFT Y CTRL (ACTIVAS
;NEGATIVAS )
MOV TECLA,A ;ESCRIBE EL VALOF PF.ESIONAD0 EN
;TECLA

POP DPH ;
POP DPL ;
POP ACC ;
RET ;

104
MANUAL DE PRACTICAS

................................................................
I

;ATENCI6N DE INTERRUPCI6N DEL TIMER1 PROGRAMA 1

ATTIMl : MOV RO,FUNCI6N


CJNE RO,#01, FIN ;PARA EJECUTAREL PROGRAMA DEL
LETRERO
MOV R2,CUENT
INC
R2 ;SE USA
CUENT
COMO
CONTADOR
MOV CUENT, R2
CJNE R2,# 8 , FIN ;SI R2 NO ES IGUAL A 8 REGRESA LA
;INTERRUPCI~N
MOV CUENT,#OOH ;SI ES IGUAL INICIALIZAMOSCUEXT
MOV RO,#DO ;Y CARGAMOS RO CON ELDATO DO
RECORRE1 : XCH A,@RO ;CAMBIA EL CONTENIDO DE RO A EL
REGIS ;TRO A
INC
RO ;INCREMENTA RO
CJNE RO,#D15V, RECORRE1 ;COMPARA SI ES IGUAL RO CON
;#D15V
MOVX A,@DPTR ;PONE EL VALOR DE LA TABLA
EN ;A
MOV DO,A ;CARGA DO CON EL CONTENIDO
DE ;A
LCALL BUFADSP ;LLAMA A BUFADSP PARA
DESPLE ;GAR
;MENSAJE

INC
DPTR
MOV R1,ESTADO
INC
R1
MOV ESTADO, R1
CJNE R1,#32,FIN ;COMPARA R1 CON 32 QTX E S LA
;CANTIDAD
MOV DPTR,#MENSAJE ;QUE REQUIERE EL ULTIMcl
;CARÁCTER EN
MOV ESTADO, #OOH ;SALIR
FIN : RET1

105
MANUAL DE PRACTICAS
................................................................
I

; PROGRAMA PRINCIPAL,INICIALIZA 8031 Y PONE EL LETRERODE LISTO


INICIO : MOV IE,#OOH ; HABTLITACI~NDE INTERRUPCIONES
MOV PSW,#OOH ; STATUS
MOV IP,#OOH ; PRIORIDADES DE INT.
MOV TCON , # O OH ; CONTROL DE TIMERS
MOV TMOD,#OOH ; MODO DE TIMERS
MOV SCON,#OOH ; CONTROL DEL PTO. SERIE
MOV SP,#060H ; INICIO DE LA PILA
MOV FUNCI~N,#OOH ; PAT-A INICIALIZAR LA FUNCIÓN A
: ESCOGER
ACALL PI8279 ; PROGRAMA
AL
8279
; TIMER

ATIEND:MOV DPTR,#MENSAJE
LCALL DESPLI ;DESPLIEGA EL MENSAJE (LISTO .....)
ESTACI~N:CJ-NE R~,#O~,ESTACI~N
SJMP ATIEND

................................................................
;ATEXTl ESLA ATENCI6N DE INTERRUPCIóN DEL TECLADO

ATEXT1:
CLR
EX1
ACALL CAPTEC
MOV A,TECLA
TRES : C J N E A,#F4,PKjG3
MOV FUNCIóN, # O 4
AJMPSALIR

106
MANUAL DE PRACTICAS

.........................................................
I

; PROG3 RECIBE LA INTERRUPCI6N DEL TECLADO PARA EL PROGRAMA


3
PROG3 : MOV RO,FUNCI6N
CJNE RO,# 0 3 , PRO5
AJMP
SALIR
PRO5 : AJMP
PROG5
................................................................
I

;RUTINA PARA DEJAR LA INTERRUPCI~NEXTERNA GENERADA POR EL TECLXDO

SALIR : SETB
EX1
RET1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
% RECIBE
PROG5 LA TECLADO
ENTRADA
DEL %
% SE DAN LOS NIVELES PARA CONTROL DEL FOCO DEPENDIENDO DE %
% LAS VECES %
% QUE SE HA PULSADO LA TECLA F Y SI SE DESEA APAGAR EL FOCO %
% SE %
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

RETURN : LJMP RETORNO


PROG5 : MOV R O ,FUNCIÓN
CJNE RO,#04, RETURN
MOV A,TECLA
CJNE A,#OFH,CHECAl ;TECLA F PARA CONTROL DEL FOCO.
MOV DPTR,#MENSFUN
LCALL DESPLI
MOV RO,PULSOS
INC RO
MOV PULSOS,RO
CJNE RO,#01H,SIGl ; INTEl\JSI DAD TENUE
SETB P1.3
CLR P1.4
LLR P1.5
CLR P1.6
LJ-MP RETORNO

107
MANUAL DE PRACTICAS

CJNE
SIGl: RO, #02H, SIG2
; INTENSIDAD NORMAL
SETB P1.3
SETB P1.4
CLR P1.5
CLR P1.6
LJMP RETORNO

SIG2 : CJNE RO, #03H,SIG3 ; INTENSIDAD BRILLANTE


SETB P1.3
SETB P1.4
SETB P1.5
CLR P1.6
LJMP RETORNO
CJNE
SIG3: RO,#04H,SIG4 ; INTENSIDAD MAS BRILLANTE
SETB P1.3
SETB P1.4
SETB P1.5
SETB P1.6
LJMP RETORNO

SIG4 : CJNE RO,#05H, SIG5


; INTENSIDAD BRILLANTE
SETB P1.3
SETB P1.4
SETB P1.5
CLR PI.6
AJMP RETORNO

SIG5: CJNE R G , #06E:, SIL6


; INTENSIDAD NORMAL
SETB P1.3
SETB P1.4
CLR P1.5
CLR P1.6
AJMP RETORNO

108
MANU= DE PRACTICAS

SIG6: CJNE RO,#07H,SIG7 ; INTENSIDAD TENUE


SETB P1.3
CLR P1.4
cL7. P1.5
CLR P1.6
AJMP RETORNO
SIG7: CJNE RO,#08H,INICIAL ; SE APAGA EL FOCO
CLR P1.3
CLR P1.4
CLX P1.5
CL li P1.6
AJMP RETORNO
INICIAL : MOV PULSOS,#O OH
AJMP RETORNO
CHECAl : CJNE A,# OEH , RETORNO ;TECLA E PARA APAGAR FOCO
MOV RO,#08H
MOV PULSOS,# O OH
AJMP SIG7

RETORNO:
SETB
EX1
RET1

END

CUESTIONARIO:
1.-QUE DISPOSITIVO SE UTILIZO PARA CONTROLAR EL CONVERTIDOR
D/A
UR Jptoacoplador, este fungió como un potenciómetro, pues de
una manera sencilla para explicar su función es la siguiente:
este entrega una variación de corriente para que el triac
funcione y pueda hacer variar la intensidad luminosa.
2.-DEBIDO A QUE SE LOGRO LA VARIACIóNDE LA INTENSIDAD.
debido a un triac.

109
R
MANUAL DE PRACTICAS
SOLUCIóN DE LA PRACTICA 4 .
...............................................................
I
.**************t***********************************************
I

I ELABORADO POR: MÁRQUEZ LÓPEZ GERARDO


I

I PROGRAMAMONITORPARAELSISTEMA MÍNIMO DEL8031


................................................................
I
................................................................
I

; DEFINICI~NDE CONSTANTES.
CANAL 2FH
EQU
8
" EQU30H ; ESPACIO DE MEMORIA INTERNA USADO PARA LAS
7" EQU31H ; VARIABLESDELPROGRAMA,BANDERAS Y ALMACÉN
"6 32H
EQU
5" 33H
EQU
4
" 34H
EQU
3" 35H
EQU
2" 36H
EQU
1" 37H
EQU
MESES
38H
EQU
39H
EQU
DIAS
EQU
SEGU 3AH
MINU 3BH
EQU
HORA 3CH
EQU
FLAG1 3QU 3DH
FLAG2
3EH
EQU
FLAG3 E911 3FH
FLAG-: EQU40H
FLAG5
41H
EQU
FLAG6
42H
EQU
FLAG7
43H
EQU
FLAG8
44H
EQU
FLAG9
EQU 45H
FLAG1O EQU46H
MEM9 53" 47H
EQUDOV 48H
DO EQU49H ;DO-D15: B'JFFERSEN RAM INTERNACON EL
Dl EQU 4F11-f 1 . CONTENIDO DE LOS DISPLAYS
D2 4BH EGU

110
LD

0 0 0 0 0 o P P o o o w w
0 0 0 0 0 OPOPOO0303
N P P O O 03000P000
w m w m w 4 o P o l ~ o P o
zzzzz roo or^^
P O O P 0

bh
PH
O
3
m

P
P
P
MANUAL DE PRACTICAS
................................................................
;CÓDIGO PARA LAS TECLAS PARA LA SELECCI~NDE FUNCIÓN
F1 EQU 10H ;PARA MOSTRAR EL LETRERO QUESE RECORRE
QU F2 11H ;PARA ESCOGER CANL~L DEL ADC Y LECTURA HEXA
Y ; DECI
QU F3 12H ;PARA EL RELOJ
EQU F4 14H ;PARA CONTROL DEL FOCO
EQU F5 15H ;PA= SALIR

. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * f * * f * * * * * * *;
+* * * * * * * * * * * * * * i * * * * * * *
; ORGANIZXI~N DEL PRINCIPIO DEL PROGN-
ORG OOOOH
AJMP INICIO
................................................................
LAS DIRECCIONES DE ATENCI~N DE INTERRUPCIONES SE MAPEA
EN LA PARTE ALTADE LA MEMORIA R A M EXTERNA,PARA QUE PUEDAN
SER MANEJADAS POR EL PROGRAMADOR

ORGINTEXTl ;INTERRUPCIóN EXTERNA 1 TECLADO


AJMP ATEXTl ;ATENDIDA POR EL MONITOR
.............................................................
I

; PARA LA INTERRUPCI~NDEL TIMER o

ORGINTTIMO DEL TIMER o


;INTYRRUTTI~~'~
AJMP ATTIMO ;SALTO A RUTINA DE ATENCI~N 3~ INTERRUP
;CION
. * * * * * * f * r * * * * * * * * * * * * * * * * * * * f * * * * * * * * * * * * * * * * * * * * * * * ~ * * * * * * * *

; PARA LA INTERRUPCI~NDEL TIMER 1

ORGINTTIMl ;INTERRUPCI~YDEL TIMER 1


AJMP ATTIMl ;SAL~TOA 1 , ~ 1
i 'DE
~ ATENCI~N
~ ~ DE INTERRUP
;CION

112
MANUAL DE PRACTICAS
................................................................
; PI8279 ESTABLECE EL MODO DE OPERACIóN Y LA FRECUENCIA DE BARRIDO
; DEL CONTROLADOR DE TECLADO Y DISPLAYS.

ORG OlOOE
PI8279: PUSH ACC
PUSH 3PH
PUSH 3PL
MOV DPTR,PCTRL8279 ; APUNTA DIR. DE CONTROL DE 8279
NOV A , #!!IODO ; MODO: 16 DISPLAYS,ENTRADAPOR
; DERECHA
!*IOVX GDPTF.,
A ; BARRIDOCODIFICADO, UNA TECLA PA LA
; VEZ

MOV E., #DIVCLK ; DIVISORDEFRECUENCIA ALE, OBTIENE


UN
MOVX @DPTF.,
A ; BARRIDO DE 100KHZ = 12MHZ / O /20
MOV A,#CLEAR ; INICIALIZA MEMORIA DE DISPLAY,
STATUS
MOVX @DPTR, A ; DE FIFO Y LÓGICA DE INTERRUPCIONES
PI8279A: MaVX A,@DPTR ; LEESTATUS DE FIFO
JB ACC.7,PI8279A ; MIENTRAS DISPLAY NO ESTE DISPONIBLE
DOP PPL
POP DPH
POP ACC
RE'F
.****f**lrf***+**+*r*******************~***************;**

,- DESPLIEGA RECIBE EN DPTR LA DIRECCI~N DE UN LETRERO PARA


ESCRIBIR ; LmT EN EL BUFFER Y ENVIARLO A LOS DISPLAYS.

DESPLI : ACALL P.IEKJ.BUF


ACALL aUFADSP
RET
. * * * t * * * * r * * * * r * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ~ * * * ~ * *

; MEMABUF RECIBE EX DPTR LA DIRECCI~N DE UN LETRERO PARA ESCRI-


BIRLO ; EN EL BUFFER DE RAM INTERNA.

113
MANUAL DE PRACTICAS

MEMABUF: PUSH ACC


PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH G8H
MOV PSW,#OOH ; SELECCI~NDEL BANCO CERO
MOV RC,#Dl5 ; APUNTA RO AL BUFFER MAS SIGKIFICATIVO
MEMABZFl: MOVX A,@DPTR ; PONE VALOR DE LA TABLA ET. A
MOV @RO,A ; PONE EL DATO LEÍDO EN RG
INC DPTR
DEC RO
CJNE RO,#D7,MEMABUFl
MOV PSW,#08H ; SELECCI~NDEL BANCO UNO
MOV RO,#D7 ; APUNTA RO AL BUFFERMAS SIGNIFICATIVO

MEMABUF2 : MOVX A,@DPTR ; PONE VALOR DE LA TABLA EN A


MOV @RO,A ; PONE EL DATO LEÍDO EN RO
INC DPTR
DEC RO
CJNE RO,#DOV,MEMABUF2
POP 08H
POP OOH
POP PSW
POP DPL
POP DPH
POP ACC
RET
. * * * * r * * * * * * * * * * * * * * * * * * * * * f * * * f * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; RUF";DSF ENViA EL BUFFER EN


RAM INTERNA A LOS DICF,LAYS.
RUFADSF : PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
PUSH OOH
PUSH 08H

114
MANUAL DE PRACTICAS

MOV DPTR,#CTRL8279 ; PARA ENVIAR PALABRADE CONTROL


MOV A,#WROINC ; AVISA QUE VA A ESCRIBIR
MOLT @DPTR , A ; LO ENVÍA A 8279

MOV PSW,#OOH
MOY DPTF., #DAT8279 ; PARA ENVIAE DATOS 827AL 9
Mor' RO,P30 ;CARGA BANCO O ?ON EL DATO DEL
; PRIMER
;DISPLAY
BUFADSPl : Mol' A,@I70 ; TOMA
ELBUFFER EN CURSO
MOl,Y @DPT'R,A ; LO ENVÍA AL 8279
INC RG ; PASA AL SIGUIENTE BUFFER
CJXE R G ,iiD15V, BUFADSPl; HASTA QUE TRASMITE LOS 16
; DISPLAYS.

POP 08H
POP OOH
POP PSW
POP DPL
POP DPH
POP ACC
RET

LETVACIO: DB ZFFH, 3FFH, OFFH, OFFH


DE ZFPH, 3FFY, OFFH
OFFH,
OB 2PYH,C)FFH,OFFH,OFFH
DB CFFH, OFFH, OFFH, OFFH

MENSAJE: DE ?C7H,3F5H,v3?H,087H
DB 2COH,07FH,07 'H, 07FH
DB C7FH, 37FH, G7FH, 07FH
DE :7FH,07FH,071 'i,07FH; (LISTO... . . . . . . . .)

115
MANUAL DE PRACTICAS

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MENSFUN: DB 08EH,OCOH,OC6H,OCOH
DB 07FH,07FH,07FH,07FH
DB 07FH,07FH,07FH,07FH
DB 07FH,07FH,07FH,07FH ; (FOCO.. . . . . . . . . . . )

.****+***+*********+************+****************+**************
AUTOM ES EL ESTADO INICIAL DEL SISTEMA DEL CUAL IICICIA
LA FTUNCIÓN DE SELECCIONAR CANAL

AUTOM : MOV A ,TECLA


CJNE A , #1,EDOOA
AJMP DIRl;
EDOOA CJNE A , # 2 , EDOOB
AJMP DIR2;
EDOOB CJNE A,#3,EDOOC
AJMP DIR3;
EDOOC CJNE A,#4,EDOOD;
AJMP DIR4;
EDOOD CJNE A,#5,EDOOE;
AJMP DIR5;
EDOOE CJNE A ,#6,EDOOF;
AJMP DIR6;
E300F CJNE #7,EDOOG;
A ,
AJMP DIR7;
LDOOG C JNE A ,#E(,OTRO;
AJMP DIR8;

116
MANUAL DE PRACTICAS
.*****************r********************************************~

DIRN RUTIKA PARA INICIAR LA TRASMISI~NDE


LA SEÑAL
DIRl: CLR P1.G
CLR P1.l
CLR Pi.2
MOV R 3 ,# C 1
MOV CANAL, #O1
RET
DIR2 : SETB P1.C
CLR P1.l
CLR P1.2
MOV R3, # C 1
MOV CANAL,#02
RET
DIR3 : CLR P1.G
SETB P1.i
CLR P1.2
MOV R3,# O 1
MOV CANAL,# O 3
RET
DIR4 : SETB P1.0
SETB P1.1
CLR P1.2
MOV R3,#C1
YOV CANAL.# O 4
RET
DIR5: CLR F1.O
CLR P1.l
SETB P1.Z
MOV R3,#C:
MOV CANAL,# O 5
RET

117
MANUAL DE PRACTICAS

DIR6 : SETB P1.G


CLR P1.l
SETB P1.2
MOV R3,# O l
YOV CANAL,#O6
RET
DIR7 : CLR P1.0
SETE P1.l
SETB P1.2
YOV R 3 ,# G I
MOV CANAL,# O 7
?.ET
DIR8 : SETBP1.C
SETB P1.l
SETB P1.2
MOV R3,# O 1
MOV CANAL,#O8
RET
.*****t*********************************************************

; OTRO EN CASO DE APRETAR OTRA TECLAQUE NO SEA NINGUNA DEL 1-8


; SE REGRESA AL ESTADO INICIAL
OTRO : MOV R3,# O 0
RET

. * f t r * * * * r * * * * * * * * r * * * * ~ * * * * * * * * * * * * ~ * * * * * * * * * * * * * * * * * * * * * * . ~ ~ * * * * * ~

; HACE r x CONVERSIONES Y VA CARGANDO EL BUFER, POSTERI~RMEN,IE LO


; DESPLIEGA.

DESPHD. ACALL MELXABHD ;ESCRIBE EL LOS DATOSEX EL P 7FER


ACALL BITCADSF ;ENVIAAL BUFER AL 8 2 7 0
RET

118
MANUAL DE PRACTICAS

;PARA CARGARLA MEMORIA CON DATOS CONVERTIDOS


A DECIMAL Y HEXADE
;CIMAL

MEMABHD:PUSEACC
PUSEDPH
PUSEDPL
PUSEPSW
?USE OOE
PUSE 08H
MOV PSD,#OOE
MOV R O ,#Dl5
MOV @RO,#087H ;ES UNA T
DEC RO
MOV @RO,#07FH ;ES UN PUNTO
DEC RO
MOV @RO,#OC6H ;ES UNA C
DEC RO
MOV @RO, #088H ;ES UNA A
DEC RO
MOV @RO, #OC8H ;ES UNA N
DEC RO
MOV @RO, #088H ;LS UNA A
DEC RO
MOV @RC,#OC7H ;ES cJNA L
DEC RO
MOV R2,CANAL
MOV B ,E;.?
ACALL BDECI
MOV @RC,I3 ;NUMERO DEL CANAL
3EC RO

MOV PSW,# O 8H
MOV R ,A ;GUARDA A EN B
ANL A ,#00001111B
ACALL ADECI
MOV RO,#D6
MOV @RO,A ;X HEXAD LSB

119
MANUAL DE PRACTICAS

MOV A,E
ANL A,#11110000B
SWAP A
AC 6LL
ADEC I
MOV RO,#D7
MOV @RC,A ;X HEXAD MSB
MOV RO,gD5
MOV @RG,#089H ;ES LA H
MOV RO,#D2
MOV A ,E
MC.’ B,& ; O
3IV AB
ACALL BDECI
MOV BRO,B ;X DECI LSB
MOV B,#10
DIV
AB
ACALL BDECI
MOV RO,#D3
MOV BRG,B ;X DECI BITDE ENMEDIO
MOV B,#10
DIV AI3
ACALL BDECI
MOV RO,#D4
MOV @RO,B ;X DECI MSB
MOV RO,#DI
’IOV @RO, #OA1H ;ES LA D
JEC RO
MOV @RC, #07FH ;ES UN PUNTO
DEC RO
POP 08H
POP OOH
POP PSW
POP 3PL
;3? 3PH
PC’’ACC

RET

120
MANUAL DE PRACTICAS

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

PUSH DPL
PUSH ACC
MOV DPTR , #TAB7SEG
MOV A,B
MOVC @AA, + D P T R
MOV B ,A

POP ACC
POP DPL

POPDPH
RET
................................................................
I

;CORRESPONDENCIA PARALOS 7 SEGMENTOS


TAB7SEG : DB ES O
DB ES 1
DE ES 2
DE ES 7
DB ES 4
DB ES 5
i)E ES 6
DB ES 7
DB ES 8
DE ES 9
DE ES A
DB ES B
DB ES C
DB ES D
DB ES E
DE ES F

121
MANUAL DE PRACTICAS

,. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
; CAPTEC RESPONDE A LA INTERRUPCI~NDEL 82-79 LEYENDO DE su
; DIRECCI~NDE DATOS EL CÓDIGO DE LA TECLA PRESIONADA

CAPTEC : PUSH ACC ;


PUSH DPL ;
PUSH DPE ;
MOT7 DP'X,
#C?RL8279 ;APUNTA A LA DIRECCI~KDE CONTROL
8279
; DEL
MOV A tiRDFIFO ;Y LO PREPARA P A M LEEE EL FIFO
MOVX @!iPTR, A

MOV DPYR, #DAT8279 ;APUNTA A LA DIRECCI~N DE DATOS


DEL ; 8279
MOVX A,@3PTR ;LEE CÓDIGO DEL FIFO (SHFT CTRL S
S ;S R F. R)
XRL ;COMPLEMENTA SHFTY CTRL (ACTIVAS
;NEGATIVAS )
MOV TECLA, A ;ESCRIBE EL VALOR PRESIONADO EN
; TECLA

POP DPH;
POP DPL;
POI' ACC;
RET :
.******\*T********,t*******************************************

; TABLA DE DECIMAL A HEXADECIMAL.

TABLADH: PUSH DPH


PUSH DPL
MOV DPTR,#CORRES
MOVC A ,2-X+3PTR
POPDPL
POPDPH
RET

122
MANUAL DE PRACTICAS
...............................................................
; CORRESPONDENCIA DE DECIMAL A HEXADECIMAL

CORRES: 3B OOH, 01H, 02H,03H


DE 04H,05H,G6H,O7H
DE 08H,09H,OOH,OOH
DE OOH, OOH,QgH,OOH
DB O"i, OBH, OCH,
ODH
DB OEH,OFH,LOH,liH
DE 12H,i3H,OOH,OOH
DE OOH,OOH,OOH,OOH
Dl3 14H,15H,16H,17H
DE 18H,i9H,:AH, 1BH
DB ICH,lDH,COH,OOH
DB OOH, OOH,@OH,OOH
DB iEH,lFH,2OH,21H
DE 22H,23H,24H,25H
DE 26H,27H,DOH,OOH
DE OOH,OOH,GOH,OOH
DB 28H,29H,2AH,2BH
DB 2CH,2DH,2EH,2FH
DB 30H,31H,OOH,OOH
DB OOH, OOH, OOH OOH,
DB 32H,33H,34H,35H
DB 36H,37H,38H,39H
DB 3AH,3BH,OOH,OOH
DB OOH, OOH, OOH OOH,
DB 3CH,3DH,3EH,3FH
DE 40H,41H,42H,43H
DE 44H,45H,CaH,OOH
DE OaH, OOH,COH,OOH
DE 4óH,47H,48H,49H
DE 4AH,4BH,4CH,4DH
DE 4EH,4FH,OOH,OOH
DB OOH,OOH,OOH,OOH
DE 50H,51H,52H,53H
DB 54H,55H,56H,57H
DB 58H,59H, O3H,OOH
DE OOH,OOH, OOH,OOH
DB 5AH,5BH,5CH,5DH
DB SEE,5FH,63H,61H
DB 62H,63H,OOH,OOH

123
MANUAL DE PRACTICAS
................................................................
. .
; CAPTU ES LA CAPTURA Y DE DATOS PARA LOS SEGUNDOS
CAPTU : MOV RO,FLAG4
CJNE RO,#O:, ETIQ3
AJMP ETIQ4
ETIQ3 : CJNE A,+06H,REVISA ;MENOR QUE 6 PARA QUE ENTRE
LJMP SALIR
REVISA : JC BIEN
LJ-MP SALIR
BIEN : MOV MEB:1 , A
MOV FLkG4,# O 1H
LJMP SALIR
ETIQ4: CJNE A,P3AH,REV1 ;MENOR QUE O A H PARA QUE ENTRE
LJMP SALIR
REV1 : JC BIENl
LJMP SALIR
BIENl : MOV MEM2, A
MOV FLAGS,#01H
MOV A,M EMl
SWAP A
MOV B , M5M2
PRL A,F ;LO HACE DECIMAL
ACALL TABLADH ;TRANSFORMA DE DECIMAL A
HEXADECIMAL
DFC A
MOV SEG'J, A
AJMP SIG'JE1

. * * * * * * * * * * * * * * * ' r r . ~ i * ~ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

; PARA LA Y ITA: IDACIÓN DE LOS MINUTOS, ES


CAPTURA ~ u SIMILAR
y AL DE
; SEGUNDOS

124
MANUAL DE PRACTICAS

CAPTUl MOV RO,FLAG7


CJNE RO,#OlH,ETIQ5
AJMPETIQ6
ETIQS : CJNE A,#06,REVIS2
LJMPSALIR
REVIS2 JC BIEN2
LJMP SALIR
BIEN2 : MOV MEM3 ,A
MOV FLAG7, #O 1H
LJMPSALIR
ETIQ6 : CJNE A ,# O M , REV2
LJMPSALIR
REV2 : JC BIEN3
LJMP SALIR
BIEN3 : MOV MEM4,A
MOV FLAG8,#O 1H
MOV A,MEM3
SWAP A
NOV B,MEM4
ORL A ,B
ACALL TABLADH
MOV MINU,A
AJMPSIGVE2
.***--********r************************* .......................
; C.;I??UFSl LAS HORAS Y LAS VALIDA
CAPTU2
MOV RO,FLAG9
CJNE RO,#01H,ETIQ7
AJMPETIQ8
ETIQ7 : CJNE A,*03H,REVISA3 ;QUE SEA MENOR QUE 3
LJMP SALIR

125
MANUAL DE PRACTICAS

REVISA3 : JC BIEN3 O
LJMP SALIR
BIEN3 O : MOV MEM5, A
MOV FLAG9,#01H
LJMP SALIR

ETIQ8: CJNE A,POAH,REV3 ;QUE SEA MENOR QUE O A H


LJMP SALIR
REV3 : JC BIEN4
LJMP SALIR
BIEN4 : MOV MEK6 , A
MOV A,PEE5
SWAP A
MOV B,m M 6
ORL A,B
ACALL TABLADH
CJNE A,#O24,REVI1 ;QUE SEA MENOR QUE 24
LJMP SALIR
REVIl: JC BIEN5
LJMP SALIR
BIEN5: MOV HORq , A
AJMP SIGUE3
.************r****ft********************************************

; CAPTURA LOS MESES Y HACE su VALIDACI~N


CAPTU3 : MOV R O ,FLAG4
CJNE RO,#OlH,ETIQ9
AJMPETIQlO
ETIQ9 : L‘JNE A,P32H REYLSA4 ;QUE SEA MENOR QUE DOS
LJMPSALlR
REVISA4: JC BIEN6
LJMPSALIR

126
MANUAL DE PRACTICAS

BIEN6:
MOV MEM1,A
MOV FLAG4,#01H
LJMP SALIR
ETIQlO : CJNE A,# O A H ,REV4 ;QUE SEA MENOR QUE O A H
LJMPSALIR

REV4 : JC BIEN7
LJMP SALIR
BIEN7: MOV MEM2,A
MOV FLAGS,#01H
MOV A,MEMl
SWAP n
MOV B,MEM2
ORL A,B
ACALL TABLADH
CJNE A,#O13 ,REV12 ;QUE SEA MENOR QUE 13
LJMP SALIR
REV12 : JC BIEN8
LJMP SALIR
BIEN8 : CJNE A, #OOH,EXITOl
MOV FLAG4,#O OH
MOV FLAGS,#O OH
LJMPSALIR
EXITOl : MOV MESES,A
AJMPSIGUE4
.*****t**r**************************************************

; ESTE ÚNIGL"NTE CAPTURA LOS DIAS,LOS VALIDA EN DONDE ES LLAMADO.


CAPTU4 : MOV RO,FLAG6
CJNE RO,#01H,ETIQll
AJMP ETIQl2
ETIQll:MOV FLAG6,#01H
MOV MEM3,A
LJMP SALIR

127
MANUAL DE PRACTICAS

ETIQ12 : MOV 4" ,A


MOV A,MEM3
SWAPA
MOV B,MEM4
ORL A,E
MOV ESTADO1 , A
LJMP SIGUE5

............................ ********x**************************

;RUTINA QUE ES EL CONTADOR LEL RELOJ.

RELOJ : MOV RO,SEGU


CJNE RO,#60,OTR01
MOV SEGU, #OOH
MOV R3,MINU
INC
R3
MOV MINU, R3
OTRO1 : MOV R7,FUNCIóN
CJNE R7,#03H,BANDE1
MOV A,SEGU
MOV B,#10
DIV AB
ACALL BDECI
MOV RO,#DO
MOV @RO,B ; SEGUNDOS
ACALL ADECI
MOV RO,#Dl
MOV @RC , A

MOV RO,#D2 ;GUIÓN


MOV @Ron#OBFH
BANDEl:
MOV R0,MINU
CJNE RO,#60,OTR02
MOV MINU, #OOH
MOV R4,HORA
INC
R4
MOV H O M , R4

128
MANUAL DE PRACTICAS

OTRO2 : MOV R7,FUNCIóN


CJNE R 7 , #03H,BANDE2
MOV A,MINU
MOV B,#10
;MINUTOS DIV AE
ACALL BDECI
MOV R O ,#D3
MOV @RG,B
ACALL ADECI
MOV RO,ltD4
MOV @RQ,A
MOV RO,# D 5 ;GUIÓN
MOV @RC, #OBFH
BANDE2 : MOV RO,HORA
CJNE RO,#24,OTR03
MOV HORA, #OOH
MOV R5,DIAS
INC R5
MOV DIAS, R5
OTRO3 : MOV R7,FUNCIóN
CJNE R7,#03H,BANDE3
MOV A,H O R A
MOV B,#10 ;HORAS
DIV AB
ACALL BDECI
MOV R O ,#D6
MOV @RC,B
ACALL ADECI
MOV RO,#D7
MOV @R@,A
MOV RO,#D8 ;GUIÓN
MOV @RO, #OBFH
BANDE.3 : MOV A,MESES
ACALL DIAMES
INC
A
MOV B,DIAS
CJNE A,E,OTRO4 ;DIAS

129
MANUAL DE PRACTICAS

MOV DIAS,# 01H


MOV R6,MESES
INC R6
MOV MESES, R6
OTRO4 : MOV R7 , CUNC I ÓN
CJNE R7,?mH, BANDE4
MOV A , DIAS
MOV B,#lO
DIV AB
ACALL BDECI
MOV RO,#D9
MOV @RCI,B
ACALL ADEZI
MOV RO,#Dl0
MOV @RG, A
MOV RO,#Dl1 ;GUIÓN
MOV @RC, #OBFH
BANDE4 : MOV RO,MESES
CJNE RO,#13,OTR05
MOV MESES,# 01H
OTRO5 : MOV R7,FUNCIóN
CJNE R7,# m H ,BANDE5
MOV A,MESES
MOV B , #10
DIV AB ;MESES
ACALL BDECI
MOV RO,# D i 2
MOV @RO,B
ACALL ADECI
MOV RO,#Dl5
MOV @RC,, A
MOV RO,#Dl4 ;GUIÓN
MOV @Re, #OBFH

MOV RO,fD15 ; GUIÓN


MOV @RC,#OBFH
BANDE5 : RET

130
MANUAL DE PRACTICAS
................................................................
;EN DIAMES DADOUN MES OBTENEMOS SU NUMERO
DE DIAS QUE POSEE
DIAMES: PUSH DPH
PUSH DPL
MOV DPTR,#TABMES
MOVC A,@A+DPTR
POPDPL
POPDPH
RET

....................................................................
;TABLA DE CORRESPONDENCIA DE MESES A DIAS
TABMES: DB O 0 ;INICIO DE TABLA
DB 31 ;ENERO
DB 28 ;FEBRERO
DB 31 ;MARZO
DB 30 ;ABRIL
DB 31 ;MAYO
DB 30 ;JUNIO
DB 31 ;JULIO
DB 31 ;AGOSTO
DB 30 ;SEPTIEMBRE
DB 31 ;OCTUBRE
3B 30 ;NOVIEMBRE
DB 31 ;DICIEMBRE

,. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * i * * * * * * * * * * * * * * * * * * * * * * * *
; EL NUMERO QUE SE ENCUENTRA
EL EL ACUMULADORA LO PASA A 7SEG
ADEC I : P'JSH DPH
PUSH DPL
MOV DPTR,#TAB7SEG
MOVC A,@A+DPTR
POP DPL
POP DPH
RET

131
MANUAL DE PRACTICAS
................................................................
I

;RUTINA DE ATENCI~NDE LA INTERRUPCI~NDEL TIMER o PROGRAMA 4

ATTIMO : MOV PSW,#OOH


MOV R1,MEM9
INC R1
MOV "9, R1
CJNE Rl,#OFH,REGRESO
MOV "9, #OOH
MOV RO,#6FH
RELLEl : MOV R1,#OFFH ;RETARDO PARA ACOMPLETAR EL
; SEGUNDO
RELLENO : DEC R1
CJNE R1,#O OH,RELLENO
DEC RO
CJNE RO,#OOH,RELLEl
MOV R2,SEGU
INC R2
MOV SEGU, R2
ACALL RELOJ
MOV R7,FUNCIóN
CJNE R7,#03H,REGRESO ;SOLO MUESTRA SI SE ESTA EN EL
;REL3J
ACALL
BUFADSP ;ENVÍA AL
BUTER AL 8279
REGRESO: RET1
................................................................
;ATENCIóN DE INTERRUPCIóN DEL TIMER1 P R O G W 1
ATTIMl : MOV R O ,FUNCIÓN
CJNE RO,#01,FIN ; PARA EJECUTTP EL PROGRAMA DEL
LETRERO
MOV R2,CUENT
INC
R2 ;SE USA CUENT
COMO
CONTADOR
MOV CUENT , R2
CJNE R2,# 8 , FIN ;SI R2 NO ES IGUAL A 8 REGRESA LA
;INTERRUPCI~N

132
"UAL DE PRACTICAS

MOV CUENT,#OOH ;SI ES IGUAL INICIALIZAMOSCUENT


MOV RC,#DO ;Y CARGAMOS RO CON ELDATO DO
RECORREl: XCE X, @RO ;CAMBIA EL
CONTENIDO DE RO A EL
REGIS ;TRO A
INC RC ;INCREMENTA RO
CJNE RC,#D15V,RECORRE1 ;COMPAR4 SI ES IGUAL RO CON
; #D15V
MOLT A ,13DPTR ;PONE EL VALOR DE LA TABLA
EN ;A
MOV DC ,A ;CARGA DO CON EL CONTENIDO
DE ;A
LCALL EYFADSP ;LLAMA A BUFADSP P k F S '
DESPLE ;GAR
;MENSAJE
INC D?TR
M017 R1,ESTADO
INC R;
MOV ESTADO, R1
CJNE R1,# 3 2 , FIN ;COMPARA R1 CON32 QUE ES LA
;CANTIDAD
MOV DPTR,#MENSAJE ;QUE REQUIERE EL ULTIMO
;CARÁCTER EN
MOV ESTADO,#O OH ; SALIR
FIN : RET1
................................................................
; PF3GRAVA DF,iNCIP.LL, INICIALIZA 8031 Y PONE EL LETRERO DE T,IST3

INICIO: MOV IE,*OOH ; HAEILITACI~NDE INTERRUPCIONES


MOV PS';;,#OOH , ; STATUS
MOV IF,#OOH ; PRIORIDADES DE INT.
MOV TCC?;, #OOH ; CONTROL DE TIMERS
MOV TM03,#O OH ; MODO DE TIMERS
MOT' SCON,#OOH ; CONTROL DEL PTO. SERIE
:íOG SP,&060H ; INICIO DE LA PILA
MOV FLX?IÓN,#OOH ; PARA INICIALIZAR LA FUNCIóN A
: ESCOGER
ACALL
y11279 ; PROGRAMAAL 8279
AJMP 1X;IL"IOl ; SALTOARUTINA P A M INICIALIZAR
; TIMER

133
MANUAL DE PRACTICAS

ATIEND : MOV DPTR,#MENSAJE


LCALL DESPLI;DESPLIEGAELMENSAJE(LISTO ......)

ORDEN : MOV R2,FUNCIóN


CJNE R2,#01,SECUEN1
AJMP DISPLAY
SECUENI : CJNE R2,#02,SECUEN2
MOV CANAL,#OOH
MOV R3,# O 0
ESPERA1 : CJXE R3,#01,ESPERA1
AJI4P INICIO2
SECUEK2 : CJNE R2,#03,SECUEN3
ESTACI~N:CJNE R2,#05,ESTACIÓN
SJMP ATIEND
SECUEN3:CJNE R2,#04,ORDEN
AJMP INICIO4
................................................................
; INICIALIZA EL TIMER Y LOS DATOS DE LA MEMORIA QUE ASÍ LO REQUIE-
RAN

INICIO1:MOV TMOD, #01H ; MODO DE TIMERS


MOV THO,#OOH
MOV TLO,#OOH
?:Ov DIAS,#01H
xov MESES, #0iH
MOV SEGU,#OFFH
MOV MINU,#OOH
MQV HORA, #OOF
MOV IE,#86H ; HABILITA INTERRUPCIONES DEL TIMERO
Y ; EXTERNA
MOV IP,#02H ; PRIORIDAD AL TIMERO DEL RELOJ
Y’>V TCON,#liH ; INICIO DE TIMERS
;,id’
1 MEM9,#OOH ; INICIA MEM9 PARA CONTAR EA h.
TIMER
MG v PSW, #OOH

AJMP ATIEND

134
MANUAL DE PRACTICAS
................................................................
; RUTINA PARA MOVIMIENTODE DISPLAYS

DISPLAY:
ACALI
PI82”9 ;PROGRAMA8279
AL
MOV DPTR,#LETVACIO ;DIRECCIONA A LETRERO EN VACIÓ
LCALI DESPLI ;PONE LETRERO VACIÓ EN LOS DIS-
PLAYS

MOV DPTR,#MENSAJE ;DIRECCIONA A MENSAJE


MOV ESTADO,#OOH ;INICIALIZA ESTADO
MOV CUEN? , #O OH ;INICIALIZA CUENT
MOV TMOD,# 11H ;SELECCI~NDE LOS TIMERS COMO DE
;16 BITS
INTERRUPCIONES
;HABILITA
LAS
EA SETE
ET1
SETE ;HABILITA LA INTERRUPCI~NDE
; SOBREFLUJO
;DEL TIM 1
SETE
TR1 ;BIT DE CONTROL DEL TIMERl
;ARRANCA EL TIMERl
CICLO : MOV R6,FUNCI6N
CJNE R6,# 0 5 , CICLO ;CONTINUAR EN ESTE PROGRAMA
AJMP ATIEND ;IR A OTRO PROGRAMA

135
MANUAL DE PRACTICAS

; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
; % 8
; % PROGRAMA DE TRASMISI~NA LA PC. 8
; % %
; . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

INICIO2 : ACALL PI8279 ; PROGRAME, AL 8279

MOV PCON, #80H ;PARA PONER SMOD 1 V LA K=2


MOV TMOD, #21H ;ACTIVA T1 EN MODO AUTORRE"
CARGA
MOV SCON, #40H ;SELECCI~NDE MODO 1
TRANSMISI~N
MOV T H 1 , # OCCH ; PROGfiAMAR
FRECUENCIA EN
BAUDIOS ;DE 1200 B:SEG
SETB TI ;PREDE LA INTERRUPCI~NDE
;TRASMISI~N
SETB TR1 ;GENERAR BAUDIOS ((TR1=1)
INICIO3 : MOV DPTR, #3000H ;SELECCI~NDEL ADC EN MAPEO
MOVX @DPTR, A ;ESCRIBE PARA INICIAR CONVER
;CION
MOV R7,#05H
RETAR : DEC R7
2JNE R7,#OOH,RETAR
ESPE: JNE P1.7,ESPE I ESPERA EL FIN DE CONVERSI~N

MOVX A ,@DPTR LEER DATO DEL ADC

CLR TI BORRA LA INTERRUPCI~N>E


; TRASMISI~N
MOV SBUF , A HACE TRANSMISI~N SERIAL
FINTRAS : JNB TI,FINTRAS CONCLUYA TRASMISI~N
ACFLL DESPHD PARA CONVERTIRY DESPLEGAR
MOV R O ,FUNCIÓN
CJNE RO,# 0 5 , INICIO3 ; SI NO SE PULSA F5 PARA
SALIR ; SIGUE
AJMP ATIEND

136
MANUAL DE PRACTICAS

................................................................
I
; PROGRAMA PRINCIPAL, INICIALIZA 8031
Y HACE LAS " A D A S A Los
; PROCEDIMIENTOS
PRINCIPALES.
PROGRAMA 5

INICIO4 : ACALL
PI8279 ; PROGRAMPI AL
8279
MOV IE,#86H
MOV PULSOS,#OOH
CLR P1.3
CLR P1.4
CLR P1.5
CLR P1.6

ESPERl : MOV R O ,FUNCIÓN


CJNE RO,#05,ESPER1 ;PARA
ESPERAR
INTERRUPCIóN
DEL
TECLADO
AJMP ATIEND

................................................................
;ATEXTl ES LA ATENCIóN DE INTERRUPCIóN DEL TECLADO
ATEXTl : CLR EX1
ACALL CAPTEC
MOV A,TECLA
CJNE A,#F5 I DETEC
MOV FUPlCI:6N,#O5
AJYP SALT?

DETEC : CJNE A ,#F1,UNO


MOV FLWCIÓN, # o 1
AJMP SALIR
UNO : CJNE A,#F2,DO3
MOV FUNCIÓN,#02
AJMP SALIF
DOS : CSNE A,rrF3 ,'TRES
MOV FUNCIÓK.# 03
AJMP SALIR
TRES CJNE A,#F4,P33G3
MOV FUNCIÓN,#04
AJMP SALIR

137
MANUAL DE PRACTICAS
................................................................
: PROG3 RECIBE LA INTERRUPCIóN DEL TECLADO PARA EL PROGRAMA 3
PROG3 : MOV R O ,FUNCIÓN
CJNE RO , #O 2 , PROG4

ACALL AUTOM
AJMP SALIR
................................................................
I PROG4 RECIBE LA ENTRADA DEL TECLADO PARA PF 3 ELG W 4
PRO5 : AJMP PROG5

PROG4 : MOV R O ,FUNCIÓN


CJNE RO, #03,
PRO5
MOV A,TECLA
MOV RO,FLAG1 ;BANDERA DE A PULSADA
CJNE RO,#OlH,ETIQl
AJMP AUTO
ETIQl: CJNE A,# O A H ,SALTOO ;TECLA A PARA CAMBIOS
DEL
;SISTEMA
MOV FLAG1,#01H
SALTOO : AJMP SALIR
AUTO : MOV RO,FLAG2 ;BANDERA DE B PULSADA
CJNE RO,#01H,ETIQ2
AJMP AUTO1
ETIQ2: C JNE A,#OBH,CHECA ;TECLA B PARA CAMBIO SEG, MIN
Y ;HOR .
MOV FLAG2,# 01H
AJMP SALIR
,A'JTO1 : MOV RO,FLAG3 ;BANDERA DE S G U YF. CAMBIADOS
CJNE RO,#OlH,AUT02
AJMP AUT03

138
MANUAL DE PRACTICAS

AUT02 : AJMP CAPTU ;PARA VALIDAR 'J TOMAR LOS


SEGU
SIGUEl: MOV FLAG3,#01H
AJMP SALIR

AUTO3 : MOV RO,FLAG6 ;BANDERA DE MINU YAC.S.IBIADOS


CJNE RO,#OlH,MIN
AJMP HOR

MIN : AJMP CAPTU1 ;VALIDA Y CAPTURA MIN-..


SIGUE2: MOV FLAG6,# O 1
AJMP SALIR

HOR : AJMP CAPTU2 ;VALIDA Y CAPTURA


HOfir.
SIGUE3: AJMP INIZ MEM INTERNA
;LLAMA A LIMPIAR

CHECA : MOV RO,FLAG10 ;BANDERA DE C PULSADA


CJNE RO , #O lH,AUTO4
AJMP AUTO 5

AUTO4 : CJNE A,#OCH,SALIR ;TECLA C PARA CAME10MESES Y


DIAS
MOV FLAG10,#01H
AJMP SALIR

AUTO5 : MOV RO,FLAG3 ;BANDERA DE MESES YA 2AMBIADOS


CJNE RO,#OlE,MFS
AJMP DIk

MES : AJMP CAPTU3 ;VALIDA Y CAPTURA LOS


MESES
SIGUE4: MOV FLAG3,#O 1H
AJMP SALIR

DIA : AJMP CAPTU4 ; CAPTURA DIAS


SIGUE5 : MOV A ,ESTADO1
ACALL TABLADH ;PASA DE DECIMAL A HSXADECIMAL
MOV MEM7,A
MOV A,MESES
ACALL DIAMES
INC A
MOV B ,A ;} TODO ESTO ES PARA VALIDAR
LOS

139
MANUAL DE PRACTICAS

MOV RO7, "


MOV A,RO
CJNE A,B ,DIFER ; > DIAS, COMPARA DE UNA TABLA
MOV FLAG6, #OOH
AJMP SALIR
;1 LA CANTIDAD DE DIAS CORRES
;PONDIENTES
DIFER : JC MENORES
MOV FLAG6,POOH
AJMP SALIR ;} A EL MES QUE TIENE CON EL
VALOR
MENOKES MOV A,MEM7
CJNE A,#OOH,EXITO ; I INTRODUCIDO POR EL USUARIO
MOV FLAG6,POOH
AJMP SALIR
;} AL FINAL PONE EL DATO EN
DIAS
EXITO: MOV DIAS,A ............................

INIZ: MOV FLAG1,#OOH ;INICIALIZACI~NDE MEMORIA


PARA
MOV FLAG2,#OOH ;USO POSTERIOR
MOV FLAG3,#OOH
MOV FLAG4,#OOH
MOV FLAG5,#OOH
MOV FLAG6,POOH
MOV F L A G 7 , kOOH
MOV FLAG8,=OOH
MOV FLAG9,b:OOH
MGV FLAGlC,#OOH
MOV MEM1,#>OH
MOV MEM2, #SOH
MOV MEM3,#OOH
MOV MEM4,#30H
MOV MEM5,#QOH
MOV MEM6,# O OH
MOV MEM7,#?OH
MOV MEM8,#COH

140
MANUAL DE PRACTICAS
................................................................
I

;RUTINA PARA DEJAR LA INTERRUPCI~NEXTERNA GENERADA POR EL TECLADO

SALIR : SETE
EX1
RET1
. * * * * * * * * * * * * * f * * * * * * * * * * * * * * * * * * t * f * * * * * * j * * * * * * * * * * * * ~ * * ~ * * * * * *

; PROG5 ?,ECIBE LA ENTRADA DEL TECLmG


; SE DAE LOS NIVELES PARA CONTROL DEL FOCO DEPENDIENDO DE LAS

; FULSA E

RETURN:
LJMP
RETORNO

PROG5 : MOV R O ,FUNCIÓN


CJNE RO,# 0 4 , RETURN
MOV A,TECLA
CJNE A,#OFH,CHECAl ;TECLA F PARA CONTROL DEL FOCO.
MOV DPTR,#MENSFUN
LCALL DESPLI
MOV RO,PULSOS
INC RO
MOV PULSOS,RO
CmE RO,#01H,SIGl
SFTB P1.3
CLR P1.4
CLR P1.5
CLR P1.6
LJMP RETORNO

SIGl: LJhE RO,#02H,SIG2


SETB P1.3
SETB P1.4
CLR P1.5
CLR P1.6
LJMP RETORNO

141
MANUAL DE PRACTICAS

SIG2:
CJNE RO,#03H,SIG3
SETB P1.3

SETB P1.4
SETB Pi.5
CLR Pi.6
LJMP RETORNO

SIG3 : CJNE RC,#04H,SIG4


SETB Pi.3
SETB P1.4
SETB P1.5
SETB P1.6
LJMP RETORNO

SIG4: CJNE RC,#OSH,SIGS


SETB P1.3
SETB P1.4
SETB P1.5
CLR P1.6
AJMP RETORNO

SIGS: CJNE Re,#06H,SIG6


SETB P1.3
SETB PI.4
CLR Pi.5
CLR Pi.6
AJMP RETORNO

SIG6: CJNE RC,#07H,SIG7


SETB PI.3
CLR P1.4
CLR P1.5
CLR P1.6
AJMP RETORNO

142
MANUAL DE PRACTICAS

SIG7:
CJNE RO,#08H,INICIAL
CLR P1.3
CLR P1.4
CLR PI.5
CLR P1.6
AJMP RETORNO

INICIAL:
MOV PULSOS,#OOH
AJMP
RETORNO
CHECA1: CJNE A,#OEH,RETORNO ;TECLA E PARA APAGAR FOCO
MOV RO,#08H
MOV PULSOS,#OOH
AJMP
SIG7

RETORNO:
SETB EX1
RET1

END

CUESTIONARIO:
1 .-COMO SE LOGRO QUE TODOS LOS PROGRAMAS PUDIERAN FUNCIONAR,
EN LWO SOLO.

Todo este S? logro por medio de las interrupciones , las


cuales tienen un registro de interrupciones, es efectuada mediante
la escritura de unO lógico, en la bandera ea(ie.7).

143
EA IE.7 DESACTIVA TODAS LAS INTERRUPCIONES%=O
ET2 IE.5 ACTIVA LA INT. CAUSADA POR EL TIMER2 (ET2=1)
ES IE.4 ACTIVA LA INT. CAUSADA POR EL PUERTO SERIE
ET1 IE.3 ACTIVA LA INT.DE SOBREFLUJO 3AUSADA POR EL TIMER
1
EX1 IE.2 ACTIVA LA INT. CAUSADA EXTERNAMENTE EN INTl
ET0 O
IE.l ACTIVA LA INT. DE SOBREFLUJO CAUSADA POR EL TIMER
EX0 IE.0 ACTIVA LA INT. CAUSADA EXTERNAMENTE ENINT O
EN EL PROGRAMA UTILIZADO TENEMOS DEFINIDAS LA INTERRUPCIONES
DE LA MANERA SIGUIENTE:
INTEXTO EQU 0003H
INTTIMO EQU OOOBH
INTEXTl EQU 0013H
INTTIMl EQU OOlBH
INTSERl EQU 0023H

2.-COMO SE DIOLA PRIORIDADDE 1NTERT.UPCIONES.


E s t o también se da por medfo de ur registro de prioridadde
interrupciones, elcualtienedosplanosdeprioridadpara
traba las
ar
interrupciones,
j llamados
alto y bajo,
respectivamsnte. En la inicializ-ición, todas las interrupciones
trabajan en el plano de baja prioridad. Para pasar del plano de
baja prioridad al de alta, es necesario escribir un 1 lógico en
l a s banderas correspondientes a las interrupciones que se desean
aumentar de prioridad, ubicadas dentro de1 registro IP

144
MANUAL DE PRACTICAS

REGISTRO DE PRIORIDAD DE INTERRUPCIONES.


- - PT2 PS PT1 PX1 PTO PXO

PT2 IP.5 TIMER 2 PT2=1 MAYOR PRIORIDAD


PS IP.4 DEFINE EL NIVEL DE PRIORIDAD DE LA INT. PUERTO SERIE
PT1 IP.3 DEFINE EL NIVEL DE PRIORIDAD DE LA INT. DEL TIMER 1
PX1 IP.2 DEFINE EL NIVEL DE PRIORIDAD DE LA INT. 1 EXTERNA
PTO IP.l DEFINE EL NIVEL DE PRIORIDAD DE LA INT. TIMER O
PTO IP.0 DEFINE EL NIVEL DE PRIORIDAD DE LA INT. O EXTERNA

3.-QUE SE UTILIZO PARA TENER EL RELOJ


DE TIEMPO REAL
Se utilizo el timer/contador para poder tener un reloj de
tiempo real. El 8031 tiene 2 timer/contadores de 16 bits cada uno
llamados timer O y el timer 1 respectivamente. Ambos pueden ser
configuradosparaoperarcomotemporizadores(timers) o como
contadores (counters).
Cuando se trabaja como contador, el registro interno del
contador, es incrementando cada vez que existe una transición
negativa (de 1 a O ) por la líyea ?e cytrada correspondiente at O o
tl. ER cambio, cuando funciona comotemporizador "timer", el
registro es incrementado cada 12 períodos de oscilación es decir
SU frecuencia de conteo es le12 de ].a frecuencia del oscilador.

En el momento que los bits del regiscro del contador pasdn


de
todos 1'S a todos O ' S , se activa la línea de interrupción interna
correspondiente a tfO o tfl, generándr 'e, (si ha sido permitida)
una interrupción.

145
CAPITULO I11
MANUAL DE PRACTICAS
DE 68HCll
1.1 CARACTEZ~ÍSTICA~

El p68HCll viene como un simple o sencillo Circuito integrado


empacado en unou orto tipo , 52 pines Plastic Leaadless Chip Carrier
(PLCC) o 48 pines Dual in Line Package (DIP).
En la figura 3.1 es un diagramaa bloques del 68HCll. En adición
a laUnidadCentral de Procesamiento (CPU), lacajamarcada
M68HCllCPZ, elcircuitointegrado (C.1) contieneunaROM , RAM,
Convertidor A/D, entre otras cosas. A continuación se muestra en la
figura 3 . 2 . el sistema de cómputo simplificado, el cual consiste
únicamente del 68HC11 CPU y una R A M , en donde se puede ver lo

PA7 48 VDD
PA6 z P D 5
PA5 46, PD4
PA4 A Po3
PA3 44, m2
PA2
PA1 & PDl
PDO
PA0
68HC1 *
"4' IRQ
XlRQ
RESET
CPU 37,
PC7AD7
PC6AD6
36 PC5AD5

x
35' PC4AD4
PB1 A9 PC3AD3
PBO AB PC2 AD2

zg
PE O 32 PC1
AD1
PCOADO

* XTAL
EXTAL
STB R N
VR+
vss
MODB
I _
261 E
~
27
?C STA AS
MODA

figura 3.1
146
MANUAL DE PRACTICAS

Los MC68HCll con EEPROM on-chip es una de las familias


MCU más potentes y versátiles que se pueden encontrar en el mercado
actualmente.
El microcontrolador MC68HCll e s L X chip avanzado que contiene
dentro de si nismo funciones tanto de memoria como de periféricos.
Para demostrar las capacidades de este microcontrolador se diseño ;a
EVB j~.intocon . m programa de monitoreo llamadoBTJFFALO (bit User Fast
FriendlyAid
Logical Operations). La EVB nos provee
deuna
herrazienta de bajo costo para la evaluación de la tarjeta básica del
siste7.a microcontroladorMC68HCll.

I 1

116 LnsarAO-Al5j

But de Dmaccana

U R W 11 L m a )

U
figura 3 . 2

La E\TB fue diseñada pard operar en dos modos distintos, el de


prueba y el a e emulación. El primer modo de operación permite al
usuario utilizar la EVB apoyindose en el programa de control del
monitor BUFFALO. El código de usuario se ensambla en la EVE3 y después
es car-gadoa la €?AM de la misma con ayuda de una PC y el discg "S" de
Motorzla. El programa de monitoreo BUFFALO es usado para ensamblar
el cózigo del xuario.

El control de prueba de laEVB es yoporcionado por


el
rrogramade
monitoreo
residente
enla
EPROM
(externa
al
microrontrolador)pormediodela t ;mina1 deinteracción.La
interfase del sistema es proporcionada por los dispositivos MCU Y
PRU .
147
MANUAL DE PRACTICAS

Microcontroladores single-chip (MCU's)


Los niveles incrementados de integración periférica dieron alce
a los microcontroladoressingle-chip (MCU). Los single-chip,un
t-emporizador, una ROM para manejar rutinas de programa para una
aplicación dedicada, una RAM para manejar las manipulacionesde datos
asociados y capacidad suficiente de entrada-salida, par interfase con
un numero de periféricos externos orientados en paralelo y serie.
Estos sistemas single-chip reducen el costo de componentes, el cost
de equipo rnanu-Iacturadoy los requerimientos de espacio.
Las familias MCU incluyen ambas tecnologías HMOs y HCMOS. Cada
familia llena un lugar especial en los rangos de precio/ejecución
demandado porlaenormevariedad deaplicacionesenelmercado
actual. Con. cada familia hay una selección de funciones periféricas
on-chip que fija cerradamente los requerimientos de l o s sistemas
eventuales.
Familias HCMOSMCU
M68HCll,M68HC05,M68HC04
Dos delasúltimastendenciasenlatecnologíaMCUson
procesadores HCMOS y EEPROM on-chip. El procesador HCMOS (High -
Speed Complementary Metal Oxide Silicon) ofrece muchas ventajas sobre
el procesador HMOs (High DensityN M O S ) , incluyendo su bajoconsumo de
potencia, su alta portabilidad, sus rangos de tensión, y su alta
inmunidad al ruido.
La familia M68HCll
Los MC68HZll con EPROM on-chip es una de las mas potentes
17 mas
versstiles familias MCLJ viables en el mercado actual. Es;a familia
utiliza nuevas técnicas de diseño CMOS alta-densidad, y similares al
rango de bus normal mas alto (2.1 MHz) de su contraparte XMOS más
rápido. SucorazónM6800básicofueexpandidocon 11 nuevas
instruccione? que suman una ejecución significativa sin compromiso 3e
compatibil
con
otros
M6800
MPU y miembros
fanullar.
de
periféricos. :-ascantidadesdeadicionesmassignificativasa
conjunto de ilistrucciones es una que concatena los dos acumuladcres
de 8 bits en u" acumulador dobiebyte, permitiendo proceso interno dc
16 hitsconunasubstancialsumaenportabilidad.Unnúmero
significativo de
148
MANUAL DE PRACTICAS

instrucciones de habilitamiento resulta de la adición de un segundo


registro indexado de 16 bit.
Las habilitaciones de periféricos on-chip incluyen una interfase
de comunicación serial duplex completa (!XI) con una variedad de
ranqos de baud, unainterfase
de
comunicación
asi-rrona,
un
temporizador corriendo libre de 16 bits, y 3 8 líneas de entrada y
salids. Una selección de opcionesde memoria conociendo una variedad
de necesidades combinadas con una mezcla de otras funciones. Estas
producenoptimización
costo-efectivo
de para
requerimientos
especlficos.
Con una EPROM on-chip para almacenaj 3 no volátil a través de
bajas potencias, la RAM interna es libre para almacenaje de datos
temporales. Las tablas de calibración, los datos adquiridos propios,
l a s correcciones de software, las rutinas para clientes, y tablas de
búsqueda pueden ser programadas dentro de la EPROM.
jln M68HCll controlador de disco duro.
El controlador de disco duro MC68HC99 es un microcontrolador
single-chip dedicadoa control de disco. Este contiene un controlador
de datos seria a alta velocidad., Reed-Solomon basado en corrección
y detección de errores, dos buffers de datos de 528 bytes, y una
interfase residente que es compatible SCSI. También sobreel MC68HC99
esta un microprocesador MC68HCll como Corazón,12 KB de programación
mascarable ROM, 256 bytes de I", un temporizador a 16 bits y 2
puertos E / S bidireccionales de 8 bits ( usado para seleccionar el
disco y la posicióa de la cabeza de lectulray escritura). El MC68HC99
reemplaza al conjunto múltiple-c 3ip Lon,-rolador usando en niveles de
tarjeta corrientes y diseños controladores de manejo. Esta interfase
con discos ST-506, ESDI y SMD y soy?rta SCSI también como otro
resiste común de interfase de computadQra. Su conjunto de comandos y
funciones son programables por el usuario.
Oo-Chip E / ' S
Single-chip MCU's son variablesempaquetadoscorriendoen
conficuración de pin desde20 pines hast? 7 8 pines. Como muchosde 1.2
pines son requeridos para servir de potenc'a y funciones de control,
hasta para 40 pines en los paquetes mas 1; rgos puede ser usado como
E'S. Iiunque muchas Entradas/Salidas digicales forman la forma de los
puertos de propósito general, muchos de 10, pines pueden ser usados
en u" número de diseños para interfase de comunicariones seriales
especiales.
149
MANUAL DE PRACTICAS

Convertidor A , ' D .
Miembros de las familias M68HCll y M6805 incluyen un convertidor
multicanal de 8 bits analógico. El 6805R y la versión S contiene 4
entradas análogas y el M68HCl3 MCTT's forma hasta 88canales.
COP.- "ComputerOperatingPropetingProperly" ( Operativo de
computación propiamente) restablece el temporizador que actúa como
vigía para restablecer automáticamente el CPU si no restablece por
secuencia de programa en una cantidad de tiempo dado. Todas la
familias M68Hcll contienen esta forma.
MODOS DE OPERACI~N.

Existen cuatro modos de operación


n:
a) SINGLE CHIP:
Con este modo
el HC1 funcionacomoun
microcontrolador
monolitico, es decir sin direcciones externas o buses de datos. El
puerto B , el C strobe A y B funcionancomopropósitogeneral
entrada/salida y señales deHANDSHAKING.
b) EXPANDED-MULTIPLEXED:
A q u í el microprocesador tiene la capacidad de accesar
un espacio
de dirección de 64 Kbytes. Este espacio total de direcciones incluye
las mismas direcchnes de memoria en el chip usadas por la operación
single chiF, r2riféricos externos y dispositivos de memoria. El bLs
de expansión es echo del puertoB y C y señales de control AS y R/W

c) SPECIAL B0OTSTRAP.S

Se considera ;In modelo de operación especial y es una variación


n de modo de operación n sigle chip. Es un modo de operación muy
versátil ya que esencialmente no hay limitaciones en el programa dc
propósitosespecialesquepuedensercargadodentro de la ram
interna. El pr
,grama BOOTLOADER (carga
deinstrucciones de
inicialización! esté contenido en la ram en el byte 192 del modo
bootstran. Esta r : x se habilita sólo si el MCU es reseteado en el
modo de Operación bootstrap, y aparece como un espacio de memoria
interna en las
150
MANUAL DE PRACTICAS

localidades BF40-BFFF.El programa bootloader usar el SCI para leer


una variable del programa hasta los 52 bytes, dentro de la ram del
chip en las localidades OOOO-OlFF, después de que el bit final se
recibe, elcontrolesautomáticamentepasa63alprogramaen la
localidad 0 0 0 0
El HCll comunica a través del puertoSCI. Después del reset
en el modo de operación SPECIAL BOOTSTRAP el S C I está corriendo en E
el reioj/l6 (7812 baudios para el reloj de E es igual2 2 MHz). Si la
característica de seguridad fue especificada y e l bi: de seguridad
está activado, la dirección FF es sacada pur el transmisorSCI y esto
implica que la EEPROM fue borrada. Si no hubc éxito, la dirección n
FF se saca de nuevo y se asegura que se haya borrado de nuevo. Hasta
que se esté seguro del borrado satisfactorio la de EPROM, toda la ram
interna se escribe en la dirección n FF. Entonces el registro config
se borra.
d) SPECIAL TEST:
Sirve primordialmente para prueba de fábrica. Es muy similar al
modo EXPANDED MULTIPLEXED. En este modo de operación el reset y el
interruptor son manejadores con ciclos fetch desde las localidades de
memoriaexterna$BFCO-$BFFhasta$FFCO-$FFFF.Nohaylimites de
tiempo para la protección de l o s registros TMSK2 OPTION, BPROT EINT,
entonces los registros pueden ser escritos repetidamente. También se
habilita un registro especial TEST1 el cual permite varias funciones
deprueba de fábricaparaserrealizadas. No serecomiendala
utilización por parte del usuario, de este modo debido al reducido
sistema de seguridad.
REGISTROS
El microprocesador utiliza un registro INDEX el cual sirve para
indesar modos de direcciones, existen dos tipos de registros index:
el X 1' Y.
E1 primero provee un valor de indexado de 16 bits el cual se a
adecua añade a un offset de 8 bits provisto en una ixstrucción para
crear un direccionamiento efectivo. Puede ser usado como un contador
o como un registro acumulador de tiempo. E! Tegundo es semejante al
primero, sin embargo requiere un byte extrd ae código de máquina y un
ciclo extra de ejecución de tiempo,ya que hay ..los bytes opcode.
La tendencia actual en arquitectura de los microprocesadores es
acerca la teoría de estructura de datos a niyv.el "HARDWARE", por lo
que una pila se puede implementar con el registro SP o apuntador de
pila.
151
MANUAL DE PRACTICAS

Se dispone de un registro de 16 bits, el SP contiene la direccih de


la siguiente localidad libre de la pila. El SP esta configurado como
la secuencia del ultimo en entrar es el primero en salir. Cada vez
que un byte es almzcenado en la pila (push) el SP es decrementado
todo y cada vez que el byte es removido el STACK (pop) el SP es
incrementado. La pila puede ser localizada en cualquier dirección
dentro de 64kbytes gue dispone la memoria, y su tamaño puede ser
disponible por el sistema.
Con el registro index no es posible implementar la pila, por que
el index es un contador o un acumulador detiempo.
Parapoderimplementararitméticade 16 bitstenemos dos
acumuladores li y B de 8 bits cada uno los cuales son de propósito
generalusadosparareteneroperandos y resultadosdecálcclos
aritméticos o manipulaciones de datos. Estos dos acumuladores pueden
serconcatenadosenunacumuladorsencillode 16 bitsllamado
acumulador D.
MODOS DE DIRECCIONAMIEWTO.

El microprocesador 68HCll tiene los siguientes


modos de
direccionamiento.
a ) INMEDIATO :

El argumento actual está contenido en el byteo bytes inmediato


que sigue a ala instrucción, donde el número de bytes relaciona el
tamaño de registros, Estas son doso tres o cuatro instrucciones byte
( si se re-wierc Frebyte.)

b) DIilECTO:

Algunas veces llamado direccionamiento de página cero. El byte


menos significativo del direccionamiento en operación se Lonecta a
un byte sencillo siguiendo el opcode y el byte mas significativo se
asume en la direcctón O O . La dirección directa permite al usar el
acceso desde la 2ilc=e:ión O000 hasta la dirección OOFF usando las dos
instrucciones de byte-y el tiempo de ejecución es reducido porque se
eliminaelaccescdememoriaadicional.Enlamayoríadelas
aplicaciones,esta -'rea de 512 bytes se
reserva
paradatos
referenciados frecuentemente. En el microprocesador el software puede
configurar el mapeode memoria tal que laRAM interna I/O, registros
152
MANUAL DE PRACTICAS

internos, o espacio
de
memoria
externa
puede
ocupar
estas
direcciones.
c ) EXTENDIDO
En este caso , el segundo y el tercer bytes (siguientes al
opcode) contiene la dirección absoluta del operando. Estas son 3 o 4
instrucciones de byte (si se requiere prebyte) uno o dos para el
opcode y dos para el direccionamiento efectivo.

C ) INDEXADO
En este caso unode l o s registros index (X o Y) ya antes
mencionados se usan para calcular la dirección efectiva. En este
caso, la dirección efectiva es variable y depende de dos factores:
1.- Los contenidos de corriente en el registro index (X o Y) son
usados.
2 . - El offset asignado de 8 bits contenido en la instrucción.
Este modo de direccionamiento permite referenciar localidades de
memoria en elespaciode 64 Kbytes.Usualmentehaydos o tres
instrucciones byte (si se requiere prebyte), el opcode mas el offset
de 8 bits.
e ) INHERENTE
Toda la información e s t á contenida en el Jpcode. Los operandos
(cualquiera) son registros y no memrria..; S': requiere referencia.
Estas son comúnmente una o dos instrucclones byte.

f ) RELATIVO
Es usado para bifurcaro ramificar instrucciones.
Si la condición de bifurcar es verdadera, l o s contenidos de , 8
bits son marcados byte siguiente del opcode (of' .et). Esta adición de
los contenidos del contador de programa para rorm-ir direccionamientos
bifurcados efectivos, de otra manera, procede ,
:
1 control para la
siguiente instrucción. Son comúnmente instrucciones de dos bytes.

153
MANUAL DE PRACTICAS

MANEJO DE REGISTROS.

E s de gran utilidad conocer rápidamente si el resultado de


ciertasoperacionessoncero,negativas,etc.ademásdeciertas
condiciones de operación del microprocesador. Este registro se le
conoce como registrode código de condición( C C R ) .
Es uc registro de 8 bits en el cual cada bit significa el
resultado de la instrucción ejecutada. Estos bits pueden ser probados
individualmente por un programa y una acción específica puede ser
tomada de este resultado de prueba.
a ) CARRY -BORROW ( C) :

El b i t C es activado si hubo un carry o un borrow fuera de la


ALU durante la última operación aritmética. E l bit C también es
afectado durante la instrucción de cambio y rotación.

b) OVER-FLOW (V):

Se activa si el resultado de la última operación aritmética,


lógica u operación de manipulación de datos fue cero; de otra manera
Z se va clear.
d) NEGATTVE

Se activa si e? resultado de la última operación aritmética,


logica u operazión de manipulacióc de datos fue negativo; de otra
manera N se va clear. Se dice que un resultado es negativo si su bit
más significativo es uno.
e ) MASK I N T E R R U P T 'I)

Se activa ya sea ri3r hardware o instrucción de programa para


deshabilitar imascarar) todas las faentes de interrupción mascarable
(externas e internas).

154
f) HALF CARRY (H):
Se habilita para que un 1 lógico cuando ocurre un CARRY entre
los bits 3 y 4 del ALU durante una instrucciónADD, ALA, ADC; de otra
manera el bitH se va a clear.
g) X interrupt MASK (X):
Se acciva solarnente por hardware ( RESET o XIRQ ) se va a clear
sólo por instruccibz de programa ( T A P o RPI).

h) STOP DISABLZ (S) :

Se activaparadeshabilitarlainstrucción deprograma.La
instrucción de STO? es tratada como operación (NOP) si el bit S se
activa.

155
MANUAL DE PRACTICAS

PRACTICA 1
SISTEMA MÍNIMO
objetivo: Armar un sistema mínimo conel 68HCl1, conociendo su
arquitectura.
Material: Microcontrolador 68HCll.
Memoria
6264
Ram
Memoria
Eprom
2764
245 Buffer
Latch 323
Displays.
Compuertas.
Resistencias ,capacitores, etc

INTRODUCCI~NTE~RICA.
Laarquitecturadelmicrocontrolador68HClldetermina los
dispositivos de soporte requeridos para hacer una sistema mínimo.
Como se vera posteriormente en el diagrama electrónico del
sistema minimo, se comunican las memorias RAM, EPROM por medios de
bus.
El bus de datos se considera su funcionamiento clave pues por
medio de él, se logra la transferencia de información entre la UCP y
los demás elementos del sistema.
Como se sabe, esto se puede lograr únicamente gracias a los
dispositivos de tercer estado. De manera que todos l o s dispositivos
que se conecten al ductodi: datos para entrar en comunicación con la
U C P , debe contar c3n b3ja- de especificación de las R A M , ROM y EPROM
con las que se
puede formar
el módulode
menoria
de
una
microcomputadora . En dichas especificaciones puede comprobarse que
todas estas memoriLs tienen en sus salidas dispositiTLros con tercer
estado.
Generalmente laseñalquecontrolaeltercerestadoesla
entrada de selección de dispositivo (chip select: C S ) . En algunas
memorias se tienen varias 'ntradas, las salidas del sistema estarán
en el estado de alta impedanci-a.
Como se ve en las hojas de especificación de memorias hay muchos
parárnetros para medir la velocidad de 19s circuitos de memoria. De
todos los parámetros el más común es el tiempo de acceso (Access
Time) que generalmente se define comoel. tiempo comprendido desde el
inicio
156
MANUAL DE PRACTICAS

del ciclo de lectura hasta el tiempo en que las salidasde datos de


la memoria son válidos. La elección de una memoria particular(con un
tiempo de acceso especifico) depende del microprocesador elegido, de
su ve.locidad máximay de la manera en que realice las operaclones.
DESARROLLO:
1 . - Armar el sistema mínimo, en base a el diagrama que se
muestra a continuación.

L . - Eiaborar el programa monitor para este sistema mín'ao.

CUESTIONARIO:
1.-Después de ejecutar la ISR (Interrupt Service Routine), ¿Cómo
sabe el pP a qué dirección debe regresar en el programa principal?

2.-¿Qué sucede cuando un dispositivo de E/S interrumpe el pP


mientras está ejecutando una porción de programa que requiere un
procesamiento continuo?

3 .-¿Qué pasa si en el programa principal se está empleando el


contenido de uno o más de l o s registros internos del pP y la rutina
de servicio a interrupcionesISRcambiaelcontenido de estos
reg:-stros?

157
MANUAL DE PRACTICAS

PRACTICA 2.
TRANSMISI~N SERIAL.
Objetivo: Lograr Trasmitir datos por el puerto serie (interfase
?S-232c) del microcontrolador 68HCll hacia una computadora del
tipo PC-Compatible con IBM.
Material: Microcontrolador 68HCll
Interfase serial MC145407
Conector DB25.
Resistencias, Capac.-tores
etc.

Introducción teórica:

Hay dos formas de conectarse a la PC sin utilizar Earjetas de


interfaz o dispositivos de E / S como hacen los teclados, impresoras,
ratones, etc. Estas formas son atraves de los puertos serie RS 232 y
del puerto paralelo; se puede acceder a ellos medianteel manejo de
los conectores situados en la parte trasera de la PC. Si se desea
realizarlainterfasedeundispositivoaunode l o s puertos,
corremoselriesgodequemaralgúncircuitointegrado o alguna
tarjeta de E / S poniendo accidentalmente algunas de las líneas a masa
o aplicando la alimentación donde no debe.

Un buen modo de evitar es3s problemas es insertar un buffer


(circuito de separación) ertre la PC y l o s circuitos fabricados en
casa. E s t o se puede logrdr fácilmente por el puerto serle F.S232.

?ara la recepción de los datos ala PC utilizaremos programas del


bios para adaptar la comunicación asincrona que se utiliza en la PC.
E s L e adaptador se basa en 8250 elemento de comunicación asincronas
(ACE! que es el circuito integrado que se utiliza para realizar
comuzicaciones. El ACE es una f rma de Trasmisor-Receptor Asincrono
Unixrersal. La nomenclatura gt,leLlc a para este dispositix-o es AURT.
Para romprender de manera adecuada el 8250, las comunicaciones conel
RS-232 y el c6digo BIOS relacionado con este procesmiento es útil
empezar con breve exposición del 1 .oducto de comunicaciones y luego
estudiar el HARDWAREy el SOFTWARE.

158
MANUAL DE PRACTICAS

DESARROLLO:
1.- Armar el circuitomínimo del 68HCll.
2.- Hacer el programade transmisión hacia la PC

3 . - Eiaborar el programa de recepción de PC


la
CUESTIONARIO :
i.-\..omo se realizo la transmisión de datos a la PC

2.-Que tipo de conversión se utilizo.


3.-COmO se realizo la recepción de datos enPC.
la

;59
MANUAL DE PRACTICAS

SOLUCI~NPRACTICA 1
1.- El diagrama del Sistema mínimo se encuentra después
del programa monitor.

2.- SISTEMA MONITOE DEL MC68HCllAIP


* DECLARACI~NDE CONSTANTES
CLEAR EQU $CI Limpia el bufferRAM DISPLAYS
READ EQU $40 Lectura FIFO CENSORRAM
DISPY EQU $8 Numero de display:
WRITE EQU $90 8279
Comando de escritkra en displays del
HDISP EQU $A0 Habilitación de displays
IRQVEC EQU Vector de interrupciones IR@
$FFF2
SA1 EQU Ubicación de la subrutina de atención
$FOOO
* interrupción.
STACK EQU $DFFF Ubicación del tope de la PILA.
* FUNCIONES
FUNCl EQU $DC F1
FUNC2 EQU $D4 F2
FUNC3 EQU $CC F3
FUNC4 EQU $C4 F4
FUNC5 EQU $84 F5
ESCEQJ$C4ESCESCAPE
FLAG EQU SF0 Bandera que indica tecla de función pulsada
* DIRECCIONES VARIAS.
DCOMl' EQU $0001 Guarda datos convertidosA HEXADECIMAL ( 8 bits)
NDATOS EQU $ 0 0 0 2 Guarda numero de caracteres de
un dato ( 2 )
NDIRS EQU $0003 Guarda numero de caracteres de una direcciól; (4)
CODIGO EQU $0004 Guarda código producido por teclado del 8279
C-7 seg EQU $0005 Guarda código pay desplegarse en 7 segmentos
DIREAL EQU $0006
DATORL EQU $0008
LimSup EQU $0009 Limite superior
LimSupL EQU $OOOA
LimInf EQU SOOOB Limite inferior
LimInfL EQU $OOoC
160
MANUAL DE PRACTICAS

* MAPA DE MEMORIA
INRAM
EQU $COO0 Iniciode la RAM EXTERNA
FINRAMEQU $DFFF Fin dela RAM EXTERNA
WAKEUPEQ3 ;F2FE Dirección donde despiertael 68HCll en modo
* EXPANDIDO después de RESET.
INRAM1EQU $C300 Inicio de la RAM INTERNA
FINRAMI EQLJ SC3FF FIn de la R4M INTERNA
INROM EQ'J $5300 Inicio ROM EXTERNA
FINROM EQLJ $ F F F Fin de laRAM EXTEWJA
INRAMIED EQU $300D Inicio de RAM int para editar

* COMAN3OL P-WA PROGRAMAR EL 8279

CTDAT EQLJ $ 2 3 0 0 Transferencia de datos al 8279


CTCOM
EQU $ 2 3 0 1 Transferencia de comandos al 8279
ZQU
CTCK $34 Programación del reloj del 8279 (100Khz)
CTMOD
EQU $02 Programación del modo de operación del 8279
* ( I displays con entrada de los datos por la izquierda)

*%%%%%%%%%%%%%%%%%%%%%%%%INICIO DEPROGRAMA%%%%%%%%%%%%%%%%%%%%%%%%
ORG WAKEUP
FILL $E0,1 Salto al inicio de la EPROM
FILL $00,1
ORG INROM Inicio de la EPROM
LDS #FINRAM1 Cargado del SP (stack pointer)al final de
* la RAM INTERNA
INICIA: BSR PG8270 Inicializa 8279
BSR LIMPIA Apaga los displays
BSR CHKRAM Revisa laRAM EXTERNA
LDX #HOLA
?SR MENSAJE Escribe saludo"HOLA"
2 $IR ENTER
LJ..S #STACK Cargado delSP (stack pointer) al finalde . 3 *
RAM EXTERNA
ES-INT:
LDX #MENU Mensaje "Función"
BSR MENSAJE
MANUAL DE PRACTICAS

CLI Habilita interrupciones


NOP
NOP
WAI Espera interrupción
SEI Deshabilita interrupciones
JSR TECLA Revisa si la tecla pulsadaes de FUNCION
CMPA #FLAG Esta puesta la bandera de FUNCION?
BNE ES-INT Si no, espera otra interrupción
JSR FUNCION Si esta entonces es tecla de funciór,, la
* ejecuta
JMP ES-INT Retorno a la esptra de interrupciones
FIN
END
Termina
programa
MONITOR

*%%%%%%%%%%%%%%%%%% SUBRUTINAS %%%%%%%%%%%%%%%%%%%%%


* CHECK RAM
CHKRAM LDX #INRAM Inicializa un apuntador X con $COO0
REVISA: LDAA #$S5
LDAB #$DF Parte alta de la dirección de RAM la
STAA 0,X Escribe $55 en una localidad de memoria X
CMPA 0,X Compara el valor leído con el escrito
BNE ERROR Si no son iguales ha ocurridoun error
PSHX
PULA
CBA
BNE INCRSl
LDAB #$FF
PULA
CBA
BNEINCRE
RTS
INCREl : PULA
INCRE : INX
JMP REVISA
ERROR : LDX#BAD
BSRMENSAJE
ALTO:NOP Ciclo infinito cuando ha detectddo un error
NOP en la RAM EXTERNA
JMP ALTO
162
MANUAL DE PRACTICAS

BAD FILL $79,i MensajedeERROR


FILL $50,2
FILL $5C,1
FILL $50,1
FILL $ 0 8 , 3 GUION

* %%%f%%%%%%? Programación del controlador de teclado


62?9 %%%%%%%%Y,

PG82-5: LDA;. #CTCK


ST= CTCOM Programa elreloj del 8279
LDAA #HDISP Habilita salida en displays
STAA CTCOM
LDAq #CTMOD
STAA CTCOM Programael modo de operaciór? del 8279
* a 8 bits 8 displaysentrada
izquierda
por
la
RTS
* % % F F % % % % % % % % % % % % % % % % %Retardo
%%%% 8%%%%%%%%%%%%%%%%%6%%%6

DELAY : PSHX
LDX#$FFFF
DLOOP : DEX
BNEDLOOP
PULX
RTS

* Procedixr,iento de borrado de la FIFO/SENSOR R W DISPLAYS 891%%%%


LIMFTA: LDAA #CLEAR Comando de limpieza
STAA CTCOM
ESPEL;: LDAA CTCOM Retardo para borrar FIFO/CENSOR RAM
ANTA #$8G
L L P #S80
BEQESPERA
RTS
en displays %%S%%S%%S%%~%%%XB
* %SkF%%S%%% E- -ritura de mensa-es
MENSAJE: BSR LIMPIA
LDY #DISPY Numero de displays
163
MANUAL DE PRACTICAS

LDAE #WRITE Coloca al8279 en modo de ESCRITURA


STAB CTCOM
ESCRIBE : BEQ l o s 8 caracteres
REGRESA Termina si desplegado
LDAE 0,x
STAE CTDAT
INX
DEY
JMP ESCRIBE
REGRESA : ETS

RevisiÓR de la tecla pulsada % ? % % % % % % % 8 % 8 % % X % %


TECLA : LDAB CODIGO Carga el código leído del 8279
LDX #TABFNES Dirección detcbla de funciones
LDY # $ O 5 Numero de funciones
COMPARA : BEQ BACK
CMPB 0,x
BEQ BAKC 1
INX
DEY
LJ-MP COMPARA
BACK1 : LDAA #FLAG Bandera que indica que el código pertenece a
BACK : RTS una función.
* %%E%%%%% Comparaciones para ver QUE FUTZION SE EJECUTARA
%%%%

FUNCICIN: CMPE #FUNC1


BNE F-2
JSR FN1
BXA HECHO
F-2 : CMPE#FUNC2
BNE F-3
JSR FN2
BRA HECHO
F-3 : CMPE #FUNC3
BNE F-4
JSR FN3
BRA HECHO
164
MANUAL DE PRACTICAS

F-4 : CMPB
#FUNC4
BNE F-5
JSR FN4
BRA HZCHO
F-5 : CMPE #FUNC5
JSRFN5
HECHO : RTS

FN1: #DFNl
LDX
JSRMENSAJE
JSRDELAY
JSL DELAY
JSRDELAY
* % % % % % % % % % % % % % % % Mensaje de opción.............................

LDX #AoB
JSRMENSAJE
JSRDELAY
JSRDELAY

L9AB CODIGO
CMPB # $ 8 0 Comp con ESCAPE (SHIFT)
BEQSALFl
CMPE #$DB
BEQEJEC-A
C I 2 E k !<D3
BEQ E "EC--B
SEI
JMP HF :HO
SALFl : LDX #MENSFIN
JSh MENSAJE
i65
MANUAL DEPRACTICAS

SEI
JMP HECHO

EJEC-A : LDX #ESC-A


J R S MENSAJE
J R S DELAY
JRS DELAY
J R S DELAY
JRINSMIED
JMP HECHO

E JEC-B : LDX #ESC-B


J R S MENSAJE
J R S DELAY
J R S DELAY
J R S DELAY
JRS INRAM
JMP HECHO
* % % % % % % % % % % % % % % % % E j e c u c i ó n de l a Función 2 . . . . . . . . . . . . . . . . . . . . . .

FN2 : LDX #DFN2


JRS MENSAJE de f u n c i ó n F2
JRS DELAY
JRS DELAY
JRS DELAY

* % % S 8 % % % ~ % % % % 8 8 % Menú
% % % de o p c i ó r % 8 8 8 % 8 ~ ~ ~ % % % % % 8 % % % % % 8 % % % % % % % % % % ~

LDX #AoB
JM
SERN S A J E
JSR DELAY
JSR DELAY
CLI
NOP
NOP
WAI E s p e r a opción

LDAB CODIGO
166
MANUAL DE PRACTICAS

CMPB # $ 8 0 C o m p a r a con E S C A P E ( S H 1 F T )
BSEAQL F l
CMPB #$DE
BEQ
EDITA-A
CMPE #$I23
BEQ
EDITA-B

SEI
JMP HECEI3

EDITA-A : LDX #EDI-A


JSR MhNSAJE
JSR DELAY
JSR DELAY
JSR DELAY
LDY # INRAMIED
JMP EDITA

JSR DELAY
JSR DELAY
JSR DELAY
LDY k INEiAMIED
JMP EDI-IA

EDITA-B: LDX #EDI-B


JSR MFNSAJE
JSR DELAY
JSR DELAY
JSR DELAY
LDY # INF-U4
JMP EDI'
EDITA : LDAA # $ O ?
EDITA-1: WAI Espera dato
LDAB CODISC
8 ~ ~ 8 8 X % % 8 % % % % 8 % % % ~E
6%s c%r %
i b%
e dato actual en disp: 2 ~ 8 8 8 % % % % % % 8 % 8

167
MANUAL DE PRACTICAS

PSHA
LDAA #CLEAR
STAA CTCOM
ESP: ;DA?! CTCOM
ANDA #$80
CMPA # $ B O
BEQESP
LDAA #WRITE
STAA CTCOM
JSRREVAL-E
CMPB #FLAG
BEQ GO
STAB CTDAT
GO PULA

LDAB CODIGO
CMPB # $ 8 0 Verifica si es ESCAPE (SHIFT)
BEQSALTE
CMPB #$DC Verifica sie s ENTER (Fl)
BEQENTERF2
CMPB #$C4 Verifica si es SALIDA (F4)
BEQSALF2
JSRVALIDA-E
LSLB
LSLB
LSLE
LSLB
LSLD
LSLD
LSLD
LSLD
JMPEDITA-1
ENTES.’? : STAA O , X
INX
LDAA #CLEAR
STAA CTCOM
JMP EDITA
168
MANUAL DE PRACTICAS

SALF2 : STAA 0,x


SALTE : LDX #MENSFIN
JSR MENSAJE
SEI
JMP HECHO
VALIDA-B : CMPE #$CO
BEQ ES-G
CMPE #$C8
BEQ e5-1
CMPE #$C9
BEQ e5-2
CMPE # $CA
BEQ e5-3
CMPE #$DO
BEQ e5-4
CMPE #$Dl
BEQ e5-5
CMPE # $D2
BEQ e5-6
CMPB # $D8
BEQ e5-7
CMPE #$D9
BEQ e5-8
CMPE #$DA
BEQ e5-3
CMPE #$DE!
BE3 E5-A
CMFE # SD3
BEQ ES-E
CMPT: #$CE
BEQ ES-C
CMPE #$C3
BEQ ES-D
CMPE #$C2
c

BEQ ES”
CMPE #$C1
BEQ ES-F
RTS
ES-O : LDAB # $ 0
RTS
169
MANUAL
DE PRACTICAS

ES-1 : LDAB #$I


RTS
ES-2 : LDAB # $2
RTS
ES-3 : LDAB # $ 3
RTS
ES-4 : L3AB # $4
RTS
ES-5 : LDAE # $ 5
RTS
ES-6 : LDAB #$6
RTS
ES-7 : LDAB # $ 7
RTS
ES-8 : LDAB # $ 8
RTS
E S - 9 : LDAB # $ 9
RTS
ES-A : LDAB #$A
RTS
ES-B LDAB # $ B
RTS
ES-C LDAB #$C
RTS
ES-D LDAB #$D
RTS
ES-E: LDAB # $ E
RTS
ES-F: LDAb #$F
RTS
EZVAL-E : CMPB # $co
BEQ PON-O
CMPB # $ C 8
BEQ PON-1
CMPB #$?9
BEQ PCXG-.-2
CMPB # $ CE,.
BEQ P3N-3
CMPB
#$DO
BEQ PON-4
CMPB # $ D l
170
MANUAL D EP R A C T I C A S

BEQ PON-5
CMPB#$D2
BEQ PON-6
CMPB#$D8
BEQ PON-7
CMPE#$D9
BEQ PON-8
CMPE
#$DA
BEQ PON-?
CMPE # $ D E
BEQ PON-A
CMOE # $ D 3
BEQ PON-B
CMOE # $ C B
BEQ PON-C
CMOE # $ C 3
BEQ PON-D
CMOB # $ C 2
BEQ PON-E
CMOB # $ C I
BEQ PON-F
CMOB # $FLAG
RTS
PON-O : LDAB #$3F
RTS
PON-1 : LDAE #$O6
RTS
PON-2 : LDAE # $ 5 S
RTS
PON-3 : LDAE #$4F
RTS
PON-4 : L D A#
E$ 6 6
RTS
PON-5 : L D A#E$ 6 D
RTS
PON-6 : L D A#E$ 7 D
RTS
PON-7 : LDAE
#$O7
RTS
PON-8 : LDAE #$7F
RTS
171
MANUAL DE PRACTICAS

PON-9 : LDAB #$6F


RTS
PON-ALDAB #$77
RTS
PON-BLDAB #$7C
RTS
PON-C ;DAB#$39
RTS
PON-DLDAE #$5E
RTS
PON-ELDAE #$79
RTS
PON-F LDAE #$71
RTS
* % % % % % % % % % % % % % % % % % Mensaje de opción para F1o F2 % % % % % % 8 % % % % % % % % %

AoB FILL $77,1 A


FILL $5C,1 0
FILL $7C,1 E
FILL $00,5

* %%%%%%%%%%%%%%% Mensaje de ejecución en A (RAM interna) % % % % % % % % % %


ESC-AFILL $79,1 E
FILL $1E,1 J
FILL $79,1 E
FILL $39,1 C
FILL $08,1 -
FILL $77,1 A
FILL $ 0 0 , 2
* %%%E%%%%%%%%%%% Mensafe deejecución en B (RAM interr,a) % S % % % % % % % %
ESC-AFILL $79,1 E
FILL
FILL
FILL
FILL
FILL
FILL
172
MANUAL DE PRACTICAS

* %%%%%%%%%%%%%%% Mensaje de edición en


A (RAM interna) %%%%%%e%%%
ESC-AFILL $79,1 E
FILL $5E,1 d
FILL $06,1 I
FILL $78,1 t
FILL $08,1 -
FILL $77,1 A
FILL $ 0 0 , 2

* %%,$%?%%8%%%%%%% Mensaje de edición en B ( R A M interna) % % % % % % % % P . %


ESC-EFILL $79,1 E
FILL $5E,1 d
FILL $06,1 I
FILL $78,1 t
FILL $08,1 -
FILL $7C,1 b
FILL $ 0 0 , 2

* % % % % % % % % % % % % % % % Mensaje de fin de función


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

MENSFIN: FILL $71,1 ??


FILL $GC,1 I
FILL $54,1 n
FILL $08,5 -

COSA:FILL $39,1 C
FILL $3F,1 O
FILL $6D,1 5
FILL $ 0 8 , 4 -

173
MANUAL DE PRACTICAS

* % % % % % % % % % % % Ejecución de la Función 3 . . . . . . . . . . . . . . . . . . . . . . . . .
* La función F3 permite visualizar el contenido de losregistros del
* 68HCll y cambiar su contenido si así se desea.

FN3 : LDX #DFIG3


JSR MENSAJE
Escribe F3-
JSR ENTER
REGBAS : LDX #REGBASE
JSR MENSAJE Escribe 1000 en displays
LDAA #$96 Localidad donde se iniciara el despliegue en
STAA NDATOS los displays ( 0 6 )
LDAA $1000
LDAB
JSR
JSR ENTER
LDX #DIEIN1 Se pide la dirección del registro
a ver O
JSR MENSAJEcambiar
JSR ENTER
JSR Dir-Real Se lee la dirección
LDX DIREAL Se valida que la dirección en el
cPX #$lo00 intervalo correcto que es desde
BLT NOREG la localidad 1000h a la 103Fh
cPX #$103F
BGT NORZG Si la direcciónno es valida se envía un
* mensaje informado, y se€);deatrj dirección
LDAA #$96 Se desplegara el contenido deDIREAL
STAA NDATOS Localidad donde se iniciara el despliegue en
LDAA 0,X los displays (06)
LDAB 0,x
JSR HEX-7SEG Se despliega el contenidode DIREAL
,-S-TEC : CLI la tecla
Se espera a que se oprima
NOP que indlcara que se alterara el contenido
WAI del registro seleccionado
SEI
LDAA CODIGO
CMPA #FUNC1 Si se desea cambiar el contenido del registro
BEO CAMBIO Se oprime F1
174
MANUAL DE PRACTICAS

CMPA #ESC Con F4 se deja el registro sin cambio


BEQEXIT y se sale de la función
JMP ES-TEC Si se oprime otra tecla se regresa
a esperar
* F1 o F4

CAMBIO:LDAA #$96
STAA CTCOM
LDAA # $ O 8
STAA CTDAT Seescriben-en los displays 06 y 07
JSR DatoReal Se lee el nuevo valor del registro elegido
JSR ENTER Se acepta el dato
LDAA DATORL Dato a introducir al registro seleccionado
LDXDIREAL
STAA 0,X Se coloca el dato en la dirección elegida
LDAA 0 , X
CMPA DATORL Se compara el contenido del registro con
BNE NOREG el dato que se deseaba introducir, si no es
* igual se informa conun ERROR
JSR SALIR Presionar F4 para salir de la función
EXIT : RST
NOREG : LDX #BAD Mensaje de error indicado que el Cambio
JSR MENSAJE en el registro seleccionado no fue posible
JSRENTER
JMP EXIT

* % % % % % % % % % % % % Ejec1,ciÓri de la función 4 . . . . . . . . . . . . . . . . . . . . . . . . . . .

FN4 : LDX
#DFN4
JSR MENSA;'E
JSRENTER
JSR SALIRpresionar F4 para salirde la función
RTS
* % % % % % % % % % % % % % Ejecución de 1
; función 5 . . . . . . . . . . . . . . . . . . . . . . . . . .
FN5 : LDX
#DFN5
JSRMENSAJE
JSRENTER
SELMEM : LDX $ 0 0 0 0 Se coloca en cero ambos limites
175
MANUAL DE PRACTICAS
STXLimSup
STXLimInf
LDX #MABCDespliega "A o B O C"
JSRMENSAJE
SMEM : CLI
NOP
WAI
SEI
L D M CODIGO
CMPE. # $DB "A"
BEQRAMI
LDAA CODIGO
CMPE. #$D3 " b "
BEQ RAME
LDAA CODIGO
CMPA #$CB
BEQEPROM
BRA SMEM

RWII : LDX # INRAMI


STXLimInf
LDX#FINRAM1
STXLimSup
JMP LIMITS
RAME : LDX # INRAM
STXLimInf
LDX#FINRAM
STXLimSup
JMPLIMITS

EPROM : LDX # INROM


STXLimInf
LDX#FINROM
STXLimSup
JMP LIMITS

I t 4 L 1NF : LDX#BAD
JSRMENSAJE
JSRENTER
* Limite inferior
176
MANUAL DE PRACTICAS

LIMITS : LDX
JSR
JSR
JSR
JSR
;DX
CPX
BLT
STX
LTP

MALSU"
LDX #BAD
;SR MENSAJE
JSR ENTER

* %%%S?%%?%%%%%%%%%% Limite superior % % % % % % % % % % % % % % % % % % % % % % % % % % % % %


ESCFN LDX #DIRFN
JSR MENSAJE
ZSR ENTER
JSR Dir-Real
JSR ENTER
LDX DIREAL
CPX LimSup
BGT MALSUP
STX LimSup
;DX meno?-cpc el limite
LimSup si el limite superior es
CPX LimInf inferior se invierten
BLT INVIERTE
JXP MODO

INVIEX'E: LDY LimInf


STY LimSup
STX LimInf

MOD0:;E #AUTO-PAS Se selecciona el modo de ejecuciónde la


JSRMENSAJE
visualización
L'LI
NOP
WAI
177
MANUAL DE PRACTICAS

SEI
LDAA CODIGO
CMPA#$DB "A"
BNEPASOFl
LDY LimInf Apuntador
ala
dirección inicial,limite
A T J T O ~ T :JSR AUT-PAS inferior. Ejecución automaEica
JSR DELAY
JSR DELAY
JSR DELAY
JSR DELAY
ZSR DELAY
JSR DELAY
JSR DELAY
JSR DELAY
JSR DELAY
JSRDELAY
INY Se
incrementa
el
apuntador
de
direcciones
CPYLimSup Si todavía no se alcanza el limite superior
BLEAUTOMAT se continua desplegando
BRASALF5 Si se alcanzo, se sale de la función.
PASOFl : CMPA #$DC " F1 " Ejecuci6n paso a paso
BNEMODO

LDY LimInf Apuntador a la dirección inicial, limite PASS:


JSR AUT-PAS inferior
JSRENTER
INY Seincrementa e1 apuntadordedirecciones
CPYLimSup Si codavía no se alcanza el limite superior
BLE PASS se continua desplegando
ELESALFS Si S I alcanzo se sale de la función

DFN1:FILL $ 0 8 , 3 - -F1-
FILL $71,1 F
FILL $ 0 6 , 1 1
FILL $ 0 8 , 3 -
178
MANUAL DE PRACTICAS

DFN2:FILL $08,3 "


F
2-
FILL $71,1 F
FILL $5B,1 2
FILL $08,3 -

DFN5:FTLL $ 0 8 , 3 - -F5-
FILL $71,i F
FILL $6D,1 5
FILL $08,3 -
* %%%i%%%%%%% Tabla de Valores utilizados para comparar funciones% %
TABFNES FILL $DC,1 F1
FILL $D4,1 F2
FILL $CC, 1 F3
FILL $C4,1 F4
FILL $84,1 F5 Shift + F4

YOLA FILL $76,1 H HOLA


FILL $3F,1 O
FTLL $38,1 L
FILL $77,1 A
FILL $08,4 - GUION

179
" U A L DE PRACTICAS

* % % % % % % % % % % % % % % % Mensaje de " Función" . . . . . . . . . . . . . . . . . . . . . . . .


MENU : FILL $71,1 F
FILL $1C,1 u
FILL $54,1 n
FILL $ 5 8 , i C
FILL $ 0 4 , : i
FILL $5C,1 o
FILL $54,1 n
FILL $ O O , l

* X8888~B~%%%%F%%%P6%%%%888X88%8868%RSB%%~~,~%%%~%%8~:~~,%~~%%%
* ENTER Es un ciclo del cual se sale
si se oprime la teclaF1

ENTER : CLI
NOP
WAI
SEI
LDAB CODIGO
CMPB #FUNCl
BNE ENTER
RTS

* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
* SALIR: Es un ciclo del cual soio se sale si se oprime ESC= tecla
* F4
SALIR: CLI Lee TECLA F4
N3P
N\3P
WAI Espera q u e una tecla sea oprimida
SEI
LDAA #ESC
CMPA CODIGO
BNE SALIR
RTS
* e888%%%5%~%%%%%%E88%%%%?%%%%%%%%%%~%%%%%%%%~%%%~%%%%%%%%%%%%%
* Función Dato-Val, verifica si la tecla pulsada es Alfanumérica
MANUAL DE PRACTICAS

Dato-Val: LDAB # $ O 0 Contador de códigos comparados


STAB DCOMV Limpia registro de datos convertidos
LDX #ALFANUM Tabla de códigos alfanuméricos3EL TECLADO
REPITE:
CLI
Lee
dirección
NOP
NOP
WAI
SEI
RET LDM. O ,X
CMP;. CODIGO Compara código leído con la tabla
BEQ VALIDO Tecla valida
Incrementa
INCBcontador
INX Incrementa
apuntador a la
tabla
TMPB #$11 Verifica si termino de comparar
BNERET
JMP Dato-Val

VALIDO:
ADDB
DCOMV
DCOMV=Dirección $01
STAB DCOMV Dato tecleado CONVERTIDO A hexadecimal real

RTS

Dir _Real: ,JSR LIMPIA Limpia displays


LDY # $ O 4 Numero de teclas a leer ( O a 4 )
LDAA #$O0
STAA NDIRS
Lee-Dir CPY #$O000
BEQOTRO
JSR Dato-Val Valida el dato tecleado
LDA? CCIDIGO Si.se ha cometido un error en la dirección se
CMPL #ESC oprime F4 y se escribe nuevamente
BEQ 3Ir-Real
JSR HEXACOD Convierte el dato en código de7 segmentos
JSR DESPDIR Despliega el dato tecleado
181
MANUAL DE PRACTICAS
LDAA DCOMV Carga el dato convertido en un NUMEROHEX
PSHE. Guarda eldatoenlapila
DEY
JMP Lee-Dir

OTRO : PULEObtienela direccih real


STAE INRFLMI Se utiliza INFAMI como registro auxiliar
PULE
ASLE
ASLE
ASLE
ASLE
ADDE INFSJMI
PULA
STAA INRAMI
PULA
ASLA
ASLA
ASLA
ASLA
ADDA INRAMI D < - - Dirección Real
STD DIREAL DIREAL < - - Dirección Real
DIREAL-RST $0006:$0007

* MSB=A=$0006, LSB=B=$0007
* 8%8%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%~%%%%%%%%%%%%

* Obtención del dato reala part ir 12 1:s códigos del 8279


DatoReal: LDY # $ O 2 Numero de teclas (= leer ( O a 2 )
LDAF. #$O6
STAA NDATOS
Lee-Dato: CPY #$O000
BEQELSE
JSRDato-Val
LDAE CODIGO Si se ha cometido u error en !os datos se
CMPE #ESC oprime F4 y se escribe nuevamente
BEQDato2eal
JSR HEXACOD
182
MANUAL DE PRACTICAS

JSR DESPDATO Despliega el dato tecleado


LDAA DCOMV Carga el dato convertido
PSHA
Guarda
el
dato
en
la
pila
DEY
JMP Lee-3ato
ELSE:PULA
STAA INRE-VI
PULB
ASLB
ASLB
ASLB
ASLB
ADDB I W I B<-- Dato Real
STA3 DATORL DATORL < - - Dato Real DATORL=$OOOF,
RTS

* % % % 6 % % % % % % % % % % % % % ~ % % % % % % % % % % % % % % % % ~ % % %
* DESPDIR: Despliegalos caracteres de una DIRECCION enlos displays
* 00,01,02 y 0 3
DESPDIR: LDAB NDIRS
CMPB # $ o @
BIGE UNO
INCB
STA?? NDIRS
LDAA # $ 8 C
STA4 CTCOM
LDAA c-7 seg
STAA CTDAT
JMP LISTO
UNO : CMPB #$O1
BNE "OS
IXZB
STAB NQIRS
LDAA #$81
STAA CT"34
LDAA C-7 seg
STAA CTDAT
183
MANUAL DE PRACTICAS

JMPLISTO
DOS : CMPB # $ O 2
BNETRES
INCE
STAE NDIRS
LDAA # $82
ST= CTCOM
LDAA C-7 seg
STAA CTDE-T
J-MP LISTO

TRES CMPB # $ o 3
BNE LISTO
LDAA #$83
STAA CTCOM
LDAA (2-7 s e g
STA?, CTDAT

LISTO: RTS

DESPDATO : LDAB NDATOS


CMPE # $ O 5
BNESIETE
INCE
STAE NDATOS
LDAA # $ a 6
STAA CTCOY
LDAA C-7 seg
STAA CTDAT
J-MP REA3Y
SIETE CMPE # $ O 7
BNEREADY
LDAA # $ 8 7
STAA CTCOY
LDAA C-7seg
STAA CTDAT
184
MANUAL DE PRACTICAS

READY : RTS
* %%%%%%%%%%%%%%%%?%%%%%%%%%%%%%%%%%%%%%%%%%%~%%%%%%%%%%%%%~%%~%%%%?
* Tabla de caracter?s alfanuméricos. Conversión de códigos del
* teclado a hexadecimales
ALFANUM FILL $Co, 1O CODIGOS OBTENIDOS DEL TECLADO
FILL $C8,1 1
FILL $C9,1 2
FILL $CA,1 3
FILL $DOI1 4
FILL $DI,1 5
FILL $D2,1 6
FILL $D8,1 7
FILL $D9,i 8
FILL $DA,1 9
FILL $DB,1 A
FILL $D3,1 B
FILL $CB,1 C
FILL $C3,1 D
FILL $C2,1 E
FILL $C1,1 F
FILL $C4,1 F4
* %%%%%%%%~%%%%%%%8%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
* FUNCION: hexacod convierte un código producido por el
* teclado del 8279 en un código que representa su carácter en
* disp:.ays 7 cqmentos
HEXACOD: LDX #ALF,".LNUM
PSHY P o r el teclado del 8279
LDY #HEX-COD Dirección de la tabla de código en 7
Cm-COD: LDAB O , X
CMPB CODIG3
BNE AUMENTA
LDAB O , -I *
STAE C-';Lc?g Obtiene el código en7 segmentos
PULY
correspondiente la
atecla
pulsada
RTS Y lo ahacena enC-7seg
AUMENTA: INX
INY
BRA CMV-COD Salto a convertir a código de 7 segmentos
185
HEX-COD : FILL $3F,1 O CODIGOS DE DISPLAYS 7 SEGMENTOS
FILL $06,1 1
FILL $5B,1 2
FILL, $4F,1 3
FILL $66,1 4
FILL $6D,1 5
FILL $7D,1 6
FILL $07,1 7
FILL $7F,1 8
FILL $6F,1 9
FILL $77 I 1 A
FILL $7C,1 b
FILL $39,1 C
FILL $SE,1 d
FILL $79,1 E
FILL $71,1 F

MABC:FILL $77,1 A
FILL $5C,1 0
FILL $7C,1 b
FILL $5C,1 0
FILL $39,1 C
FILL $00 I3

DIRIKI: FILL $5E,1 d


FILL $04,1 i
FILL $50,1 r
FILL $00,1
FILL $04,1 i
FILL $54,1 n
FILL $04,1 i
FILL $00,1
MANUAL DE PRACTICAS

DIRFN : FILL $5E,1 d


FILL $04,1 i
FILL $50,1 r
FILL $00,1
FILL $71,1 F
FILL $04,1 i
FILL $54,1 n
FILL $00,1

AUTO-PAS FILL $77,1 A


FILL $0@,2
FILL $5C,1 0
FILL $OG,2
FILL $71,1 F
FILL $06,1 1

AUT-PAS:STYLimInf
LDAA #WRITE
STAA NDATOS
LDAA LimInf
LDAB LimInf
JSR HEX-7SEG Despliega la parte alta de la dirección del
LDAA # $ 9 2 registro
seleccionado
STAA N3A'Y';
LDAA Limlnf L
LDAB Lim:?f L
JSF. HEX"7SEG Despliega la parte baja de la dirección dei
LDAA # $ 9 6 registro
seleccionado
STAA NDATOS
LDAA 0 , Y
LDAB 0 , Y
JSR HEx-7SEC. Despliega el contenido del registro

RTS

187
MANUAL DE PRACTICAS

* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
* HEX-7SEG: Convierte un numero de un byte 2encódigos de displays *
a 7 segmentos correspondientes a su carácter los
en mismos
HEX-7SEG: LSRB
LSRB
LSRB
LSRE
PSHA
LDX #HEX-COD Carga tabla de código de displays 7
LDAA #$O@ segmentos
CODUNO : CBA Cuenta hasta ubicar el apuntador de la tabla
BEQ DUNO HEX-COD en el código 7 segmentos
INX correspondiente al numero hexadecimal que se
INCA desplegar
JMP CODUNO
DUNO : LDAA NDATOS
STAA CTCOM
LDAA 0,X
STAA CTDAT Despliega el primer carácter del BYTE en
cuestión
PULA .
LSLAEjemplo:sielBYTE= 11110000=F
LSLA Se despliega primero F en el display
LSLA
LSLA
LSLA
LSLA
LSLA
LSLA
LDX#HEX-COD
LDAB # $ O 0
CODDOS : CBA
BEQDDOS
INX
INCB
JMP CODDOS

DDOS : LDAB o , X
STAB CTDAT Despliegue del segundo que seria O en el
*ejemplo
RTS
188
MANUAL DE PRACTICAS

REGBASE: FILL $06,1 1


FILL $3F,3 O
FILL $00,4
* %%%%%%%%%%%% Subrutina de Atención de interrupción
%%%%%%%%%E%

ORG SA1 Subrutina de atención de interrupciones


SUB-INT: SDAA #READ Modo de lectura del 8279
STAA CTCOM
LDAA CTDAT Lee el código qenerado por el8279
STAA CODIGO Guc.rda el código LEIDORAMENINTERNA
BTI
ORGIRQkTC Vector de interrupción IRQ
FILL $F0,1 Salto a SUB-INT (subrutina de atención
de
FILL $00,1 interrupción) Dirección de SUB-INT=$FOOC

RESPLJESTA AL CUESTIONARIO:
1.-Después de ejecutar la ISR (Interrupt ServiceRoutine), ¿Cómo
sabe elp? a qué dirección debe regresar en el programa principal?
Es una pregunta importante ya que la interrupción puede ocurrir
en cualquier momento y no hay forma de saber que instrucción estaba
procesando el CPU cuando ocurrió la interrupción. Este problema se
resuelve fácilmente si el CPU almacena el contenido del contador de
programa (PC) antes de
saltar a la ISR. La mayoría de los
microprocesado:-esalrrdcenanelcor,=enidodelPCenlapilade
sistema axEes de saltar a la rutina de servicio ISR. PosterioL-mente,
al final ie la ISR. Cllando se ejecuta la instrucciónRTI, el pC carga
automaticarnente al PC con lo q u e se tiene en la pila.

2.-iQué sucede cuando un dispositivo de E/S interrumpe el pP


mientras está ejec!I+3A 3 'ma porción de programa que requiere un
procesamiento continuo?
Cuancio el pP esta en un lazo de temporización (para qenerar
retardos cie una duración ,,recisa) o cuando el pP se esta comunicando
con
otros
dispositivosde E/S. Por este motivo, todos l o s
microprocesadores tiene algún medio para inhibir la interrupción bajo
189
MANUAL DE PRACTICAS

control de programa. Normalmente, esto se logra por medio de un


biestable interno en el pP al que se llama bandera de inhibición de
interrupción. 4

3 .-¿Qué pasa si en el programa principal se


está empleando el
contenido de uno o más de los registros internos del pP y la rutina
de servicioainterrupciones ISR cambiaelcontenidodeestos
registros?
El resultado puede ser desastroso, debido a que cuando el pp
regresa a continuar la ejecución del programa principal, continua
trabajando con estos registros en la misma forma en que lo hacia
antes de ocurrir la interrupción.Unamaneraderesolvereste
problema es almacenar el contenido de los registros internos del pP
er! la pila del sistema antes de saltar a la rutina de servicio ISR.
E:1 la mayoría de l o s microprocesadores esto se haceC O I , 1 7 . r ~ cuantas
~
in.:trucciones que manejen la pila y que serían entonces ias primeras
instrucciones de la ISR. Después, al final de la ISR antes de la
instrucción RTI.

190
MANUAL DE PRACTICAS

3 .-¿Qué pasa si en el programa principal se está empleando el


contenido de uno o más de l o s registros internos del pP y la rutina
de servicioainterrupciones ISR cambiaelcontenido de estos
registros?
El resultado puede ser desastroso, debido a que cuando el pP
regresa a continuar la ejecución del programa principal, continua
trabajando con estos registros en la misma forma en que lo hacia
antes de ocurrir la interrupción.Unamaneraderesolvereste
problema es almacenar el contenido de los registros int,ernos del pP
er! la pila del sistema antes de saltar a la rutina de servicio ISR.
€211 la mayoría de l o s microprocesadores esto se hace C O I , 1’nF.Z cuantas
in.ZL-rucciones que manejen la pila y que serían entonces ;as primeras
instrucciones de la ISR. Después, al final de la ISR antes de la
instrucción RTI.

190
MANUAL DE PRACTICAS

SOLUCION DE LA PRACTICA2
1.- Armar el circuito mínimo del 68HCll.

2.- Hacer el programa de transmisión del 68HC;l hacia la PC.


....................................................................
* INICIO: Donde el microcontrolador MC68HCllE9

B603 JMP $B610 Despierta y donde el RESET se inicializa


B610 LDAA #$93
B612 STAA $1039 Configuración de OPTION
BO15 LDAA #$O0
B617 STAA $1024 Configuración de TMSK2
B61A LDS #$O065
B613 JSR SE34B Inicializa el Vector de interrupciones
B620 LDAA $1020
B623 0- #$O3
B625 STAA $1020 Configura el TRACE en el pinOC5
B628 CLR $OOA8
B62B CLR $OOA7
B62E JSR $E343 Conecta SCI al puerto serie
B631 JSR $E43D Inicializa el puerto a 9600 baud sin paridad 8 data 1
B634 CLR $OOA7 s t o p
B637 JMP $B700 Salta a la rutina de conversión A/D
* Rutina de escrituraenpuertoserie
B6AO LDAB $102E Sacael dato atraves del puerco serie
B6A3 BITB #$80
B6A5 BEQ $B6AO Hasta que este listo
B6A7 STAA $102F Escribe el dato al puerto serie
B6.U RTS

B700 ;SR$E44D Lee un carácter del puerto serie


B703 #$OD Compara si es un ENTER
CMPA
B705 BNE$B700
B707 LDAA
#$21
B709 STAA
$1030 Configura el convertidor A/D: Con-:ersión continua en
* el canal 2
B7OC LDAA $1030 Lee el status del canal2
B70F BITA # $ 8 0
E711 BEQ $B70C Se encicla hasta que se encuentra una conversión
* valida
191
MANUAL DE PRACTICAS

B713 LDAA $1032 Lee la conversión


B716 JSR $B6AO Escribe la conversión al puerto serie
B719 JMP $B713 Realiza la conversión continua
E343 PSHA TARGCO conecta SCI al puerto serie
E344 LDAA # $ O 0
E346 STAA $400C Fija el flip-flop d Oen para indicar quese conecto
SCI al puerto serie.
E349 PULA
E34A RTS
E34B LDX #$OOC4 INICIALIZA Vector de Interrupciones
E34E LDY #$E365
E352 LDD #$7EG3
E355 CMPA $ O O , X
E357 BEQ $E35E Todas la interrupciones son fijadas
E359 STAA $ O O , X a una rutina de enciclamiento.
E35E ABX
E35F CPX #$o100
E362 BNE $E355
E364 RTS
E43D LDAA # $ 3 0 Conecta SCI al puerto serie
E43F STAA $102B Indica 9600 baudios
E442 LDAA #$O0
E444 STAA $102C Indica 1 bit de start 8 bits de datos sin paridad 1
2447 LDAA #$OC bit paro
E449 STAA $102D Activa el puerto
E44C RTS
E44D LDAA $102E Lee un carácter del puerto serie
E450 ANDA #$20
E452 BEQ $E459 salta si no hay dato disponible
E454 LDAA $102F lee dato
- 4 5 7 ANDA #$7F
~ 4 5 9RTS

E365 LDAA #$50 Rutina de enciclamiento


E3.I TAP paratodaslasinterrupciones.
E368 STOP
E369 JMP $E365
192
MANUAL DE PRACTICAS

3.- Elaborar el programa de recepción de la PC.


...................................................................
* PROGRAMA DE RECEPCI~NEN LA PC
* ELABORADO EN C.
#include <dos.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <stdarg.h>
#define IntEnableReg 0x01* Registro de activación de Interrupción p-S *
#define IntdReg 0x02/*Reg de Identificación de Interrupciones p-S * /
#define LineControlReg 0x0; / * Reg de Línea de Control *!
tidef ine ModemControlReg0x04 / * Registro de Control del Modem -
#define LineStatusReg 0x05 * Registro de status de Linea * /
#define ModemStatusReg 0x06 / * Registro de status del Modem *!
#define ModemControlOn OxOF ,'* Activación del Modem * i
#define ModemControlOffOx00 / * Desactivación del modem* /
#define IntEnableAllOXOF Activación de todas la interrupciones del
/it p-S * /
#define IntDisableAll 0x00 Desactivación de int interrupción del p-S
i t */
#define MDMSTATUS 0x00/ * Identificación de interrupción * /
#define TXXEGEMPTY 0x02
#define RXDATAREADY OXO4
#define RLINESTATUS OXO6
#define TAM OX200
i2t Combase = 0 ~ 3 F 8 ;; * Dlrección Base del puerto serie COMl *
int COmpardmS =OxE3;/ * 9600 Saudios, No paridad, P bits, 1 bit p a r o * /
int PortNumber=O; I * 1 para C O M ~ * I
int IntEnableMask=OxEF; ):ascara para el 8259 (OxF7 para COM:) *:
int IntDisableMask=OxlO; / * Ox08 para C O M ~* /
int ComIntNumber=OxOC;i* Numc ? de Interrupciones para el COMl(9xOb C O M 2 ) *:
void interrupt(*Old)(void,; -
qanejador anterior a la interrupcidn * /
I

void interruptNew (void) ; !* ~puv:.ador a nueva interrupción * /


unsigned char Datos1 [TAM] ,Dztos2 ; / * [TAM]
Datos a graficar
int ApDato=O;
unsigned char dato=OxOD;
int TxEnable=O;
193
"UAL DE PRACTICAS

int Manejador;
int Modo;
double Radio;
int Ma=;
int MaxY;
int MaxColores;
int CodigoError;
struct palettetype Paleta;
float xl,y:, x2,y2 ;
char [ 3O 1;
msg
int viewx,viewy;
int xa,ya,xb,yb;
void vacia ( )
{
int i;
for(i=O;i<256;i++)
Datosl[i]=Datos2[i]=O;
1
void Init_ps(int p )
í * Inicializa Puerto Serie * /
{ union REGS rin,rout;
rin.h.ah=O;
rin.X.dX=p; / * O para COM1; 1 para COM2 * /
rin.h.al=OxE3; / * 9 6 0 0 baud, no paridad 8 bits de datos 1 bit de
int86 (0x14,&rin,&rout) ; / * paro * /
1
void SwapInt ( ) Intercambia manejadores de interrupción * . I
{
Old=getvect (ComTntNumher);
setvect (ComIntNumber, New) ;
1
void PrgInt( ) I*Se programa la interrupcibn * '

i
disable ( ) ;
outportb(Combase+ModemCon rolReg,ModemControlOn);
outportb(Combase+InEnaSleneg,IntEnableAll);
outportb (0x21,inportb (0x21
'GInEnableMask);
enable ( ) ;
1
194
MANUAL DE PRACTICAS

void RePrgInt( ) / * Deja Original Todo * /


t
disable ( 1 ;
outportb(Combase+ModemControlReg,ModemControlOff);
outportb(Combase+InEnableReg,IntDisableAll);
outportb (0x21,inportb (0x21) &InDisableMask)
;
enable ( ) ;
setvect (Com IntNumber, Old) ;
1
v o i d interrup New0

nt r ,int d;
enable ( ;
)&OxOl)==O)
while( ((r=inport(Combase+IntdReg)
{
switch(r)
{ case MDMSTATUS:
d=inportb(Combase+ModemStatusReg);
break ;
case TXREGEMPTY: if(TxEnab1e)
t
outportb(Combase, dato)
;
TxEnable=O;
ApDato=O;
1
break;
case IiXDATAREADY:Datosl[ApDato++]=inportb(Combase;+~;
if(ApDato==TA"l)ApDato=T;
break;
case RLINESTATUS: d=inportb(Cornbase+LineStatusRpg);
break;
>I
ou.tportb(0x20,0x20);

1-oid Tx(unsigned char x)


dato=x;
- ' . . i p o r t(Combase+IntEnableReg,
inportb(Combase+IntEnableReg) ITXREGEMPTY)
TxFnable=l;
outport (Combase,
dato) ;
195
MANUAL DE PRACTICAS

unsigned charD X ( )
return(inportb(Combase)1;

void IniciaPuertoO
t
Ini t_ps ( PortNumber ;
SwapInt ( ) ;
Prglnt ( ) ;
}

void Borde
( )
{
struct viewporttypev p ;
setlinestyle(SOLID~LINE,O,NOR."WIDTH);
getviewsettings(&vp);
rectangle(O,O,vp.right-vp.left,vp.bottom-vp.top);
1

int gprintf(int *xloc, int *yloc, char *fmt,...)


{
va-list argprt;
char str[l401;
int cnt;
va-start(argptr,fmt);
cnt=vsprintf (str,fmc,argptr);
outtexty(*xloc,*ylx,str);
*yloc+=texLheight( "H") +2;
va-end (argptr);
return(cnc1 ;
1

void llena(xa,ya,xb,y'.~.)
int xa,ya,xb,yb;
{
int i ,j ;
i<=xb;i++,
for (i=xa;
line(i,ya, i,yb)
;
1
196
MANUAL DE PRACTICAS

void Inicializa (void)


{
int xasp,yasp;
Manejador=DETECT;
inicgraph ( &Manejador, &Modo,
"B: " ) ;
CodigoError=graphresult();
if(CodigoError!=grOk)
{ printf i "Sistema gráfico con % s \ \ c 'grapherrormsg
error: ', (CodlgoError)) ;
exit(1);
getpalette(&Paleta) ;
MaxColores=getmaxcolorO;
MaxX=getmaxx ( ) ;
MaxY=getmaxy( ) ;
getaspectratio (&xasp, &yasp)
;
Radio= (double) xasp/ (doub1e)yasp;
1

void Ventana(char *header)


{ int height;
int t ;
int i ;
char S [15];
setbkcolor (BLUE)
;
cleardevice ( 1 ;
setcolor (WHITE);
setlriewport(O,O,MaxX,MaxY,l);
height=textheight( "H") ;
setEextjustify(CENTER_TEXT,TOP_TEXT,TOP-TEXT)
;
outEextxy (MaxX/2,2, header);
sLt*itck(Manejador)

i
itoa(i,s,lO)
outtextxv(xa-8,yb-i*t,s);
197
MANUAL DE PRACTICAS

1
setfillstyle(7,LIGHTBLUE);
bar(xa,ya,xb,yb);
setviewport (O,height+4,MaxX,MaxY-
(height+4),
1) ;
setcolor(WH1TE);
Borde ( ) ;
setviewport(xa-1,ya-l,xb+l,yb+l,l);
setcolorÍLIGHTBLUE);
Borde ( ) ;
setviewport(xa,ya,xb,yb;
viewX=xb-xa+l;
viewY=yb-ya+l;
1
int n e m (float r)
{
return(abs(int) viewX*(r-xl)/(x2-xl)));

int newy(f1oat y )
{
return(abs(int1 / (y2-yl)1 ) ;
viewY* (y-yl)
1
I,
void ponpixel (float float y, int c)
t
if ((r>xl!&(r.-=x2)’x(y~;.yl)&(y<=y2))
putpixel(newx(r),view~-newy(y)
,c);
1

void IniciaRangoO
{
~1=-12a;
x2= 127;
yl=-12a;
y2= 127;
1

198
MANUAL DE PRACTICAS

void IniciaGraf ( 1ica


{
IniciaRango( ;
Iniciallza ( ;
strcpy(msg,"Graficador de señal MC68HCll") :
Ventanacmsg);
line(neT$:(xl),newy(O),newx(x21,newy(O));
line (new(0), newy (y11 , newx (01 , n e w )(
;~ 2 )
\J

void Grafica
( )
{
int i;
bar(xa,ya,xb,yb);
setcolor(YELL0W);
line(new(x1),newy(O) ,newA(x2) ,newy(O));
line (newi O ) , newy (yl), newx ( O ) , newy (y2 1 ;
for(i=O;i<256;i++)
ponpixel((f1oat)(i+xl),(float)(Datos2[i]+yl),BLACK);
ponpixel((float)(i+xl),(float)(Datosl[i]+yl),WHITE);
Datos2 [ i] [ i] ;
=Datos1
1
1

main ( )
I
I

char c ;
varia ( ) ;
IniciaPuerLa ( ) ;
IniciaGraf ( 1 ;
ica
do
{
Tx ( OxOD! ;
DxO;
disable i ) ;
Graf ica
i ) ;
if(kbhiE0);

199
MANUAL DE PRACTICAS

switch(c)
{
case 0x0: c= getch0;
switch(c)
{
case Ox4B : IniciaGraficaO;
break ;
case Ox3C: getck!( ) ;
break ;
1
1
1
enable ( ) ;
1
while(c!=OxlB);
RePrgInt ( 1 ;
1

200
MANUAL DE PRACTICAS

CUESTIONARIO:
1.-Como se realizo la transmisiónde datos a laPC.
Se utilizo el circuitoM C 1 4 E 1 0 7 el cual es una inrerfase serial
y se encarga de la comunicación con la PC.
9600 baudios.
S i n paridad.
Ocho bits de datos.
Un bit de paro.
Este circuito se coloco entre MCU68HCll e? y la PC
Este circuito se conecto2n la interfase seriai de
comunicaciones quetiene prcvista la tarjeta de? HCll como
inician las siguientes figura:

i
- U
.;
", CONTROL

201
MANUAL DE PRACTICAS

El MC145407contienetresinterfasesserialesRS2.32C yse
puevcean en DI1 y DO1 para que Txl y Rxl se encarguen de generar las
señales DCD, DSR,C T S y DTR respectivamente, las anteriores seflales
timen el siguiente significado en la PC:
3CD Detectorportadordedatos,esteindicaalaPCquehay
presencia de datos
3SR Datoscolocadoslistos,estasalidaindicaelestadode
disponibilidad de los datos.
CTS'Limpiarpara enviar, dalaseñal de salida q - 1 ~ permite la
transm:,sión.
DTR T'fzrminal de datoslista, Esta señal de entrada indica que va a
recibir.
el MC145407.

202
MANUAL DE PRACTICAS

Los datos a trasmitir salen del MC68HCll en el pin TxD/PDl para


llegar al pin DI2 del MC145407a su vez salen del pin Tx2 para luego
depositarlo a la PC a través del 3 pin del DB25.
Por ultimo los datos enviados por la PC llegan en el pin del
DB25 para luego ir al pin Rx2 del MC145407, l o s cuales salen por DO2
para llegar a RxO/PDO del MC68HCll.
interfase
La del
MC68HCll
trasmite y recibe
datos
independientemente del CPU pero los comandos de configuración son
fijados por medio de bits de formato, que indican al SCI comodedebe
trasmitir.
Los datos son recibidos en la e,ltrada del pinR x O y los datos a
enviar se realizan en el pin TxO.
La secuencia de la transmisión se indica la ensiguiente figura

Linea O 1 2 3 4 5 6 7 8
inactiva l l l l l l ~ ~ ~ ~ l u
START
2

1 ) Se mantiene la línea inactiva con un nivel lógico


1.
2 ) Un bit cero indica el inicio(START)
3 ) Se trasmiten los ocho bits de datos
4 ) Se indica un bit de paro con un nivel uno logico, se1)repite

La configuración delS C I se real.za através de registros.


El registro (SCCR1) se encarga e indicar por medio de bits las
siguientes especificaciones.

203
MANUAL DE PRACTICAS

U u a a 8 m a 8
3

R8 Recibe 8 bits de datos (se fija er, uno)


T8 Trasmite 8 bits de datos(se fija en uno)
Bits-No im!-,lementado Siempre cero
M-Longitud
O=Indica un bitde comienzo, 8 bits de datos, un bit de paro
l=Un bit de inicio, 9 bits de datos, un bit de paro (se fija en cero

WAKE Selección de señal en la línea


O=Línea inactiva (nivel lógico1)
l=Marca dirección (se fija en cero)

Bits 2-1 No implementados


El registro SCCR2
Provee el control de individuales funciones:
- - - - - -
$1020
RESET
U U 8 8 6 8 8 8
4
T I E Activa la interrupción de transmisión
(se fija en cero)
O=Desaetiva
l=Activa
TRIE Activa la interrupción de recepción (se fija en cero)
O=Desactiva
1=Al.' iva
TCIE AL'tlV?. lainterrupción de transmisión completa(se fija en c.?ro)
O=Des.2ctiva
I=Actim
ILIE Activa la interrupción de línea inactiva (se fija en cero)
O=Desact.iva
204
MANUAL DE PRACTICAS

l=Activa

TE Activa la transmisión (se fija en unc)


RE Activa la recepción (se fija en uno)
RWU Recepción de wake up(se fija en cero)
SBK Envía breake (se f i j a en cero)

Registro SCSR
Este registro se encarga de leer el status de la comunicación
serial.
I U J t J L # U

$ 1 0 2 ~ ~ T D R EI TC I RDRF I IDLE I OR I NFIFE Io SCSR


RESET
u u O o O 0 0 0
5

TDRE Indica que ha sido transferido un dato en el puerto serie

TC Indica transmisión completa

RDRF Indica quese lleno el regist10ae recepción de datos

IDLE Detecta línea inactiva

OR Error de over run


NF Bandera de ruido
205
MANUAL DE PRACTICAS

FE Error de detección de bit de paro

Bit O No implementado

Registro BAUD
Selecciona a cuantos Baudios se transmite

c u J T J L I U

RESET
ITCLR I O I S C P l I SCPOl RCKBI SCR2 ISCR2 lSCR0 I BAUD

u u o O O O O O
6

TCLR Limpia el contador de baudios (utilizado solo en fábrica)


S C P l y SCPO Selección de primera pre-escala del rango de baudios a
transmitir

El r e i o j E es dividido por un factor como indica


la tabla

Se elige SCPl
y SPO en 1-1

206
MANUAL DE PRACTICAS

SCR2,SCRl y SCRO Selección de rango de baudios

(se escogió 0 - 0 - 0 )
NCKB Checa el relojde transmisión (usado defabrica)

PROGM DE INICIALIZACI~NDEL SCI

ONSCILDAA #$30
STAABAUD Fija lo Baudios
LDAA #$O0
STEL; SCCRl Fija unbit de in-zio, 8 bits de datos y
LDA4 #$OC uno de
paro
STA.: SCCR2
RTS
Activa transmisión
la y la recepción
PROGRAMA DE LECTURA
207
MANUAL DE PRACTICAS

INSCI
LDAA
SCSR
Lee
status
ANDA #$20 Checa si existe datos
BEQ INSCII Salta si no hay datos
LDAASCDAT Lee el dato

PROGRAMA DE ESCRITURA

ONTSCILDAB SCSR Lee status


BIT B #$80 Checa si esta desocupado el canal
BEQ OUTSCI Se encicla hasta que se desocupe el canal
START !;CDAT Envía el dato
RTS
2.-Que tipo de conversión se utilizo.

Para
seleccionar
el A/D se
observaron
las
siguientes
características:
Simplicidad, demanera que el componentesea de uso fácil

Bajo costo, para permitir el acceso al uso que necesiten la


conversión A/D.

Velocidad, para los casos en que hay que tomar medida en gran
cantidad;

Linealidsd, para l o s casos que se necesita la mayor precisión


posi5le en ! S S medidas utilizadas.

Impedanciadeentradaelevadademanerade no influerziar
(cargar) el circuito analógico de transconductor.
Algunas compañías poseen una vasta línea de convertidores A/D,
algunos de ellos dotados hasta de complejos sistemas de señales para
aplicaciones que exigen estos recursos.
Se u t j . 1 ' ;i3 el microcontrolador MC68HCllE9 de 8 canales, en' r,a-;z
multiplexada, ('on aproximación sucesiva.
Dos línea: (VRL,VRH) son provistas para la entrada de voltaje de
referencia.
Estos pines son conectadosVRL a tierra y \RH a Vcc para tener
entradas de voltaje de O a 5 Vcc.
208
MANUAL DE PRACTICAS

Cada conversión es realizada en32 ciclos de reloj ,E,el reloj E


provee un rango mayor que 750 K H .
Para sistemas los cuales operan en rangos menores que 750 KHz,
un oscilador interno puede ser usado como reloj del sistema
A/D.
El oscilador interno R C es seieccionado por el bit CSEL, del
registro OPTION.

La asignación del canal se realiza con un multiplexor con el


cualseleccionamosunode los 16 canales., 8 de estoscanales
correspondenalae-ltradadelpuerto E, lascualessonseñales
analógicas. Los sig:i.ientes 4 se toman como puntos de referencia
interna, y los 4 restantescanalessonreservadosparafuturas
aplicaciones.

Registro A/D control de status (ADCTL)


t b 3 4 S L l U

$1030 ~ C C F IIOSCAN I MULT I c ~ l c ccelm


l ~ADCTL
RESET
O 0 0 O o o u u
7

A continuación explicamos l o s bits que componen el registro


ADCTL .
CCF Bandera de conversión completa ( es de solamente lectura)
Cada vez que 21 registro ADCTL es escrito, este bit es limpiado
y se inicia una nueva secuencia.
BIT 6 Este bit no se implementa todavíay siempre tieneel valor
lógico cero.
SCAN Este bit lo fijamos en el nivel lógico uno para tecer una
secuencia de conversión continua y con un nivel lógico cero para una
secuencia de conversión de paro. En este proyecto se fijo SCAN en un
nivel lógico uno para tener la secuencia de conversión continua.

MULT Cuando est e bit es fijado en un nivel lógico cero el


sistema es configurado para ejecutar cuatro conversiones consecutivas
en un Único canal que se especifica por uno de los

209
MANUAL D EP R A C T I C A S

canales que se seleccionan con l o s cuatro bits de selección de canal,


cuando este bit es puesto en un nivel lógico 1, el sistema es
cocfigurado para hacer una conversión en cada uno de los cuatro
canales,
mandando correspondiente
el resultado canal
al
correspondiente.
En este proyecto se utiliza MULT en el nivel lógico
cero.
Los bits llamados CD,CC,CBy CA son l o s registros de control de
puertos,estosbitssonusadosparaseleccionaruno de los 16
canales. Para este proyecto se utilizoel bit CD en el nivel lógico
cero, el bit CC ex el nivel lógico cero, el bit CB en el nivel lógico
cero y el bit CA en el nivel lógicouno, esto fue para seleccionar el
canal dos , y así, el resultado es colocado por el convertidor en el
registro A D R 2 .
La configuración para este proyecto del registro A D C T L es el
siguiente:

/ b 3 4 3 L l U

$1030 ICCFl O I SCAN I MULT I CD I CC I CB I CAI ADCTL


RESET
O 0 1 O O 0 O 1
8

El siguiente código muestra como se tiene que programarel I C í 1


para hacer funcionar el convertidor A / D .
LDDA #$93
STAA $ 1 0 3 9 configuraelregistrooption
..........
. . f . . . . . . .

..........
LDAA # $ 2 1
STAA $1030 Configura el convertidor A / D , configura canal 2 y
lectura de conversión

210
MANUAL DE PRACTICAS
3.-COmO se realizo la recepción de datos en PC. la
Se utilizo una comunicación asincrona que se utiliza en la PC,
el cualsetratadel8250quees elelementodecomunicación
asincrona (ACE) que es el circuito integrado que se utiliza para
realizar comunicaciones con el RS-232c y el código B I O S .
La interfaz RS-232C es utiliza para la comunicaclón con equipo
periférico y para esto hay que tener cuidado cuando se establece una
interfaz con equipo periférico ya que se debe verificar que es
compatible con la interfaz RS232C.
Las terminales que se indican en la tabla, son las que se
encuentran normalmente en el conector estándar tipo DB25 la cual
tiene 25 terminales. Si hay que conectar 2 interfases RS-232C la
técnica habitual es construir un cable que realice la configuración
de modem nulo. Esta configuración cruza las terminales2 y 3 , 4 y 5 ,
6 y 20, de modo que la línea de transmisión de 1, es la entrada a la
línea de recepción del otro.En general la terminal8 se utiliza para
encender un LED que indica la presencia de comunicación cuando se
utilizan modems para la interfaz. Las terminales7 y 1 son acopladas
de manera directaa través de7 y 1 respectivamente.

211
MANUAL DE PRACTICAS

Paraprogramarel 8250 tenemosqueutilizarlarutina de


serviciodel BIOS paracomunicacionesasincronastienencuatro
funciones.
1.-Inicializa el puerto de comandos(-=O)
2.-Enviar una carácter (en AL) fuera del puerto (AH=l)
3.-Enviar un carácter (establecido en AL) desde el puerto
(AH=2)
4.-Retorna el estado del puerto en AL (AH=3)
Durante el proceso de inicialización, se deben colocar varios
parámetros para detinir la línea de comunicaciones. Estos parámetros
incluyen longitud de la palabra de datos (7 u 8 ) , número de bits de
paro para indicar el fin de una palabra de datos (cero o un bit)
paridad par o impar, según lo indica el bit de paridad (la paridad
impar) indica que el bit de paridad siempre esta ajustado para dar un
número total impar de los bits activos incluyendo los bits de la
palabra de datos yel de paridad, velocidad
y de datoso baud y rate.

212

Vous aimerez peut-être aussi