Está en la página 1de 14

El Microcontrolador 8051

CAP. 6

CAPITULO 6

Control de perifricos. Puertos de Entrada/ Salida


6.1. INTRODUCCION
En el Captulo 1 se describa la arquitectura de los puertos de entrada y salida
(E/S) de la familia de Microcontroladores 51. En este captulo, se retorna el tema
para recordar, ampliar y mostrar una serie de ejercicios de iniciacin en el control
de los puertos que van a permitir comunicarse con una buena parte de los
perifricos comerciales y con los que el usuario disee.
Los cuatro puertos del 8052/8051 son bidireccionales, es decir, permiten la lectura
y escritura en el perifrico correspondiente. Las salidas estn <latcheadas, lo que
posibilita mantener el dato indefinidamente hasta que sobreescriba la informacin
original. Otra caracterstica importante es que los puertos pueden ser utilizados
como buses de direcciones, datos y control, por lo que en estas circunstancias se
dice que el microcontrolador trabaja como microprocesador. A esta caracterstica
se refiere el siguiente apartado.

6.2. EL MICROCONTROLADOR COMO MICROPROCESADOR


Los drivers de salida de los Puertos P0 y P2 y los buffers de entrada del Puerto P0
se pueden utilizar para acceder a la memoria externa del sistema. En estas
condiciones, el Puerto P0 se configura como salida del byte bajo del bus de
direcciones (A0 a A7), de un bus que consta de 16 bits (capacidad de
direccionamiento 64K), multiplexado en el tiempo como bus de datos bidireccional
(D0 a D7). El Puerto P2 se configura como salida del byte alto del bus de
direcciones (A8 a A15). De esta manera e] microcontrolador se configura a modo
de CPU de un sistema externo con unas capacidades de expansin definibles por
el usuario. Naturalmente, en estas condiciones, le queda como puerto ntegro,
para el control de perifricos, el Puerto P1 y parte del Puerto P3. puesto que hay
seales que se utilizan para el control del sistema (bus de control).
En la Figura 6.1 se muestran los cronogramas correspondientes aun ciclo de
lectura en la memoria externa de programas ya un ciclo de lectura y escritura en la
memoria de datos externa. Tambin, se hace referencia a los parmetros
representados en la Figura 6.1 y en el Cuadro 6.1, sin hacer mencin a los
tiempos reales que dependen del tipo de microcontrolador y de la frecuencia de
trabajo.
_________________________________________________________________________
ITMAR, Mazatln
57
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Figura 6.1

_________________________________________________________________________
ITMAR, Mazatln
58
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Para un mejor entendimiento y seguimiento de los cronogramas anteriores, en la


Figura 6.2 se dibuja un esquema en el que aparece el microcontrolador
comandando una memoria RAM (43256C) y una memoria EPROM (2764).
Cuadro 6.1.

Smbolo
TLHLL
TAVLL
TLLAX
TLLIV
TLLPL
TPLPH
TPLIV
TPXIX
TPXIZ
TPXAV
TAVIV
TPLAZ
TRLRH
TWLWH
TRLDV
TRHDX
TRHDZ
TLLDV
TAVDV
TLLWL
TAVWL
TQVWX
TQVWH
TWHQX
TRLAZ
TWHLH

Parmetro
ALE Pulse Width (Anchura pulso ALE)
Address Valid to ALE Low (Direccin vlida a ALE bajo)
Address Hold After ALE Low (Direccin mantenida despus de ALE
bajo)
ALE Low to Valid Instruction In (ALE bajo a Instr. In. vlida)
ALE Low to PSEN Low (ALE bajo a PSEN bajo)
PSEN Pulse Width (Anchura pulso PSEN)
PSEN Low to Valid Instruction In (PSEN bajo a Instr. In. vlida)
Input Instr. Hold After PSEN (Mantenimiento de Instr. In.
despus de PSEN)
Input Instr. Float After PSEN (Bus flotante de Instr. In. despus
de PSEN)
PSEN to Address Valid / PSEN a Direccin vlida
Addres to Valid Instr. In. / Direccin a Instr. In. vlida
PSEN Low to Addres Float / PSEN bajo a bus direccin flotante
RD Pulse Width / Anchura del pulso de lectura
WR Pulse Widht / Anchura del pulso de escritura.
RD Low to Valid Data In / RD bajo a Dato In. vlido
Data Hold After RD / Mantenimiento de Dato despus de RD
Data Float After RD / Bus Datos flotante despus de RD
ALE Low to Valid Data In / ALE bajo a Dato In. vlido
Addres to Valid Data In / Direccin a Dato In. vlido
ALE Low to RD or WR Low / ALE bajo a RD o WR bajo
Addres to RD or WR Low / Direccin a RD o WR bajo
Data Valid to WR Transition / Dato vlido a transicin WR
Data Valid to WR High / Dato vlido a WR alto
Data Hold After WR (Mantenimiento de Dato despus de WR)
RD Low to Addres Float (RD bajo a bus flotante Direccin)
RD or WR High to ALE Hight (RD o WR alto a ALE alto)

El acceso a la memoria externa puede hacerse o bien a la memoria de programas


o a la memoria de datos y esta ltima puede ser para leer o escribir un dato. Estos
tres aspectos se van a desarrollar someramente a continuacin.

_________________________________________________________________________
ITMAR, Mazatln
59
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

6.2.1. Ciclo de lectura en la memoria externa de programas


Para acceder a la memoria externa de programas utiliza la seal PSEN (Program
Store Enable) como seal de autorizacin de lectura (Figuras 6.1 (A) y 6.2).
La seal ALE latchea el byte bajo del bus de direcciones en el primer estado
(ciclo de reloj), y as permite direccionar, durant todo el ciclo de instruccin,
mientras esas mismas lneas son utilizadas, en el resto del ciclo de instruccin,
como bus de datos. En la Figura 6.2 se puede observar que la lectura en la
memoria de programas se realiza cuando PSEN est a nivel bajo y las lneas A13,
A14 y A15 se encuentran a nivel alto, siendo el resto de las lneas de direccin las
que establecen la localidad exacta del byte de instruccin u operando que ha de
ser ledo. (La actuacin del PSEN elimina cualquier incompatibilidad que podra
producirse al estar los dos chips seleccionados, es decir, CE complementado y
CS = 0.)
Para el acceso a la memoria de programas, utiliza los 16 bits del bus de
direcciones, su posicin en el mapa general de memoria es la que se encuentra al
final de los 64 Kbytes puesto que A15=A14=A13=1, concretamente comienza en
la direccin 1110 0000 0000 0000 = E000H y termina en la direccin FFFFH, en
total 8 Kbytes.
A la memoria de programas externa se accede bajo dos condiciones:
I. Cuando la seal EA es activa, caso de la Figura 8.2.
2. Cuando el contador de programa (PC) contiene un nmero ms grande
que 0FFFH para el 8051 o 1 FFFH para el 8052.
En las versiones de microcontroladores sin ROM (8031 y 8032) tienen la seal de
control EA puesta a nivel bajo permanentemente para leer el programa en la
memoria externa.

6.2.2. Ciclo de lectura en la memoria externa de datos


Para el acceso a la memoria externa de datos utiliza la seal de control RD
(funcin alternativa de P3.7) y puede utilizar los 16 bits de direccin (MOVX A,
@DPTR) o bien 8 bits (MOVX A, @Ri) (vase Figura 6.1(B)).
En un ciclo de lectura el byte de entrada es aceptado en el Puerto P0 justo antes
de que la seal de control RD que autoriza la lectura sea desactivada.
_________________________________________________________________________
ITMAR, Mazatln
60
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

U2

U4
D0
D1
D2
D3
D4
D5
D6
D7
OE

74LS373

U1
EA/Vpp
X1

+5 V

X2
RESET
INT0
INT1
T0
T1

8052
P1.0/T2
P1.1/T2X
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
E

P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7

A0
Q0
A1
Q1
A2
Q2
A3
Q3
A4
Q4
A5
Q5
A6
Q6
A7
Q7
A8
A9
A10 RAM
A11
A12
A13
A14
CS

U3

+5 V

OE
WR

43256C

A0
O0
A1
O1
A2
O2
A3
O3
A4
O4
A5
O5
A6
O6
A7
O7
A8
A9 EPROM
A10
A11
A12
CE
OE
PGW
Vpp

2764

P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7
RD
WR
PSEN
ALE/P
TXD
RXD

Figura 6.2

6.2.3. Ciclo de escritura en la memoria externa de datos


Para la escritura en la memoria externa de datos utiliza la seal de control WR
(funcin alternativa P3.6) y puede utilizar los 16 bits de direccin (MOV @DPTR,
A) o bien 8 bits (MOV @Ri, A) (Figura 6.1.(C)).
En el ciclo de escritura, el byte de dato debe permanecer sobre el Puerto P0 antes
y despus de que la seal de control de escritura WR sea desactivada.
En general, tanto para la lectura como para la escritura, cuando una direccin de
16 bits es utilizada (MOVX @DPTR), el byte alto de direccin sale por el Puerto P2
donde permanecer mientras dura el ciclo de lectura o escritura.
Si se utiliza una direccin de 8 bits (MOVX @Ri), el contenido del Puerto P2 en el
SFR permanece sobre los pines de P2 durante todo el ciclo de acceso a la
memoria externa. Esto facilita la paginacin (vase Apartado 2.3).
Resumiendo, si se utilizan los puertos para comandar unidades de memoria
externa o interface, los puertos quedarn en esta situacin:

_________________________________________________________________________
ITMAR, Mazatln
61
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

P0: Bus de direcciones de menos peso (A0 a A 7) y bus de datos (D0 a D7)
multiplexados en el tiempo.
P1: Puerto de E/S.
P2: Bus de direcciones de ms peso (A8 a A15).
P3: Bus de control.

6.3. OPERACIN DE ESCRITURA EN LOS PUERTOS DE LOS


MICROCONTROLADORES 8052/8051
La operacin de escritura, utilizando los puertos del 8052/8051, puede ser
realizada por cualquiera de ellos; no obstante, el Puerto P0 es el que presenta una
mayor cargabilidad, permitiendo comandar ocho cargas TTL-LS, mientras que los
otros tres permiten cuatro cargas TTL-LS.
En la ejecucin de una instruccin que cambia el valor del latch del puerto, el
nuevo valor llega al latch durante el estado 6, fase 2 del final del ciclo de
instruccin, segn indica la Figura 6.3.
Antes de comenzar con el estudio y comprobacin de los puertos de E/S, se dibuja
el interface para la conexin de los puertos a los dispositivos de salida, que en
este caso pueden servir unos simples LED (Figura 6.4).
Para comandar cargas de mayor consumo energtico, como rels, se recomienda
utilizar, entre el puerto y la carga, drivers no inversores, como el ULN 2003, o
inversores, como el ULN 2803, que tienen una cargabilidad de 500 mA y soportan
hasta 50 v.
Como ya se sabe, el 8052/8051 presenta dos seales de control, una para
ejecutar la lectura (RD) y otra para la escritura (WR). Por esto la activacin de
estas seales depende del formato de la instruccin. Para la operacin de
ESCRITURA en el puerto, la instruccin ms habitual es la siguiente:
MOV PX, <DATO>

; X toma valores 0, 1, 2 y 3 segn el puerto.

Admitiendo <DATO> todos los tipos de direccionamiento estudiados en el Captulo


3.

_________________________________________________________________________
ITMAR, Mazatln
62
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Figura 6.3

Figura 6.4

Ejercicio 6.1. El puerto P0 en modo salida


Este ejercicio muestra cmo se deben tratar los cuatro puertos cuando se tiene
que enviar una informacin de salida del microcontrolador. Se refiere,
comnmente, a una operacin de escritura. El ejercicio se realiza con el Puerto P0
pero el usuario puede comprobar que el programa funcionar igual si sustituye el
Puerto P0 por el P1 , P2 o P3.
El programa muestra distintas formas de escritura en el puerto. As:

En las primeras instrucciones, mediante una mscara, se ponen todos los


bits del Puerto P0 a CERO.
Se incrementa el acumulador y se transfiere al Puerto P0. por lo que el
contenido de dicho puerto se incrementar, as hasta contar hasta 5.

_________________________________________________________________________
ITMAR, Mazatln
63
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

.Direccionando directamente los bits 0 y 2 del Puerto P0. que en la ltima


operacin haban quedado a UNO, se ponen a CERO. En este instante
todos los bits de P0 estn a CERO.
Se pone a UNO el bit 7 de P0 y con direccionamiento inmediato se carga
P0 con 55H.
Finalmente, se complementa (operacin lgica NOT) la informacin de P0
cambiando los UNOS por CEROS y los CEROS por UNOS.

Se observar que entre las distintas operaciones se ha incluido un lazo de retardo


para poder seguir la evolucin de la secuencia anteriormente descrita. La rutina de
retardo es la misma que la estudiada en el Ejercicio 5.1, con la diferencia del valor
asignado al registro R0 y, tambin, que dicha rutina se ubica a partir de la
localidad 0300H para que no coincida con el programa principal.
Una ltima observacin antes de pasar a realizar el ejercicio.
Si se necesita activar o desactivar un bit de un puerto (se puede hacer extensivo a
todos los registros direccionales bit a bit del SFR), puede hacerlo utilizando las
instrucciones booleenas (ver Tabla 4.2).
CLR bit
SETB bit
CPL bit

As, por ejemplo, para activar el bit0 del Puerto P0:


SETB P0.0

o tambin
SETB 80

o el bit 1 del Puerto P0:


SETB P0.1

o tambin
SETB 81

Efectivamente, por esta razn slo son direccionables bit a bit los registros
correspondientes a la primera columna (ver Tabla 4.1 ).

_________________________________________________________________________
ITMAR, Mazatln
64
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

RETAR1

SAL0:

SAL0:
SAL1:
SAL2:

CAP. 6

; Escribe en el puerto P0 configurado como salida


;
ORG 0200H
;
EQU 0300H
MOV A, #00H
ANL P0, A
; Escribe CERO en el puerto P0
CALL RETAR1
; Producir retardo
INC
A
; Incrementa ACC
MOV P0, A
; Escribe en el puel1o P0
CALL RETAR1
CJNE A, #05H , SAL0
; Si se han realizado 5 incrementos de P0 sale
CLR P0.0
; Pone el bit 0 de P0 a CERO
CLR P0.2
; Pone el bit 2 de P0 a CERO
CALL RETAR1
SETB P0.7
; Pone el bit7 de P0 a UNO
CALL RETAR1
MOV P0, #55H
; Carga P0 con 55H
CALL RETAR1
MOV A, #FFH
XRL
P0, A
; Complementa P0
NOP
END
;
ORG 0300H
;
MOV R0, #40H
; Se CARGA el registro R0 con #40H
MOV R1, #85H
;Se CARGA R1 con #85H
MOV R2, #FFH
;Se CARGA R2 con #FFH
DJNZ R2, SAL2
; Decrementa R2 y repite el lazo hasta que R2=0
DJNZ R1, SAL1
; Lo mismo que la instruccin anterior, pero por cada
; lazo de R1, ejecuta FFH veces el lazo R2
DJNZ R0, SAL0
; Lo mismo que las instrucciones anteriores, pero por
; cada lazo de R0, ejecuta 85H lazos de R1 y
; 85H * FFH lazos de R0
NOP
RET
END

6.4. OPERACION DE LECTURA EN LOS PUERTOS DE LOS


MICROCONTROLADORES 8052/8051
La operacin de lectura o de adquisicin de datos no representa ningn tipo de
problema; solamente se deber cambiar el orden de los operandos en la
instruccin respecto a la operacin de escritura.
Para la operacin de lectura, el formato de la instruccin ms habitual es el
siguiente:
MOV <destino>, PX

_________________________________________________________________________
ITMAR, Mazatln
65
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Se presentan dos circuitos de interface muy sencillos para poder introducir datos a
los puertos del microcontrolador, cuando ste trabaja en modo lectura. El primero,
muy simple, es til para la comprobacin de la mayor parte de los ejercicios qu
aqu se exponen; no obstante, tiene el problema de los rebotes (Figura 6.5). El
segundo circuito est pensado especialmente para los ejercicios que se refieren al
tema de las interrupciones. Este circuito es, hasta cierto punto, inmune a los
rebotes de los contactos (Figura 6.6).

Ejercicio 6.2. Operacin de lectura en el puerto P0 y de escritura en el


puerto P1
Este ejercicio trata de mostrar cmo se manipula el Puerto P0 para utilizarlo como
entrada y el P1 como salida, de tal forma que la informacin leda por el Puerto P0
y despus de ser tratada adecuadamente sale escrita por P1. En este caso
concreto, la informacin leda por P0 sale intacta por el Puerto P1.

Figura 6.5

Este es el listado del programa:


Lazo:

MOV A, P0
MOV P1, A
AJMP Lazo

_________________________________________________________________________
ITMAR, Mazatln
66
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Figura 6.6

Ejercicio 6.3. Control de un proceso industrial elemental


El siguiente ejercicio muestra cmo realizar el control de un proceso industrial muy
simple, utilizando la CPU del microcontrolador para la toma de decisiones, la
memoria para almacenar las instrucciones del programa y los datos, y los puertos,
uno (de lectura) para comprobar la situacin de los sensores y el otro (de
escritura) para enviar la seal a los actuadores.
Se ha escogido este ejercicio resuelto en el libro Sistemas Microprocesadores, de
J. M. Angulo Usategui, por considerar que es conocido entre muchos
profesionales y entusiastas de los micros, y es interesante ver su resolucin
desde la perspectiva de los Microcontroladores 8052/8051.

Proceso

Se trata de controlar el nivel de liquido de un depsito, utilizando tres sondas


detectoras de niveles A, B y C, y dos bombas B1 y B2 (Figura 6.7).
He aqu una descripcin del proceso, desde el punto de vista de su relacin con el
mundo exterior, segn los tres tipos de seales principales:

_________________________________________________________________________
ITMAR, Mazatln
67
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Figura 6.7

Entrada de informacin: SENSORES (sondas).


Actuacin sobre los elementos finales: ACTUADORES.
Sealizacin del proces{): INDICADORES.

1. SONDAS (entradas)
La sonda A seala el nivel mnimo de agua. Por debajo de este nivel, se indicar
VACIO en el cuadro de INDICADORES.
La sonda B seala el nivel ptimo y cuando se alcance se indicar LLENO.
La sonda C seala el nivel peligroso e indica REBOSE.
Las sondas sern ledas por el Microcontrolador a travs del Puerto P0.
P0.0 - A
P0.1- B
P0.2 - C

_________________________________________________________________________
ITMAR, Mazatln
68
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

2. ACTUADORES (salidas)
Cuando ninguna de las sondas est mojada, se entiende que el depsito est
vaco y los actuadores activarn las dos bombas B1 y B2 (P1.0 y P1.1).
Cuando el nivel del lquido toque la sonda B, se desactivar la bomba B2,
quedando la bomba B1 activada en modo mantenimiento.
Si el nivel del lquido moja la sonda C (rebose), se desactivar la bomba B1,
quedando las dos bombas, de momento, fuera de servicio.

3. INDICADORES (salidas)
La sealizacin utiliza el Puerto P1.
P1.2 -- VACIO
P1.3 -- LLENO
P1.4 -- REBOSE
y cuando se produce un fallo (mal funcionamiento) en las sondas de entrada por
ejemplo, que la sonda B (P0.1 ) se active cuando la A (P0.0), por debajo de la B,
no lo est- se excita en el cuadro de indicadores una seal de ALARMA.
P1.5 --ALARMA
La Figura 6.8 muestra la disposicin de los actuadores, indicadores y sondas.

Figura 6.8

_________________________________________________________________________
ITMAR, Mazatln
69
Ing. Rufino J. Domnguez Arellano

El Microcontrolador 8051

CAP. 6

Este es el listado:
; Controla el nivel de lquido de un depsito.
;
ORG 0300H
;
.BYTE 07H,03H,20H,09H,20H,20H,20H,18H
;
ORG 0200H
;
SAL0:

MOV
MOV
ANL
MOVC
MOV
JMP
END

DPTR, #0300H ;inicializa puntero de TABLA


A, P0
; LEE puerto PO
A, #07H
; Enmascara
A, @A+DPTR
; Direcciona y captura dato
Pl, A
;Acta
SAL0

_________________________________________________________________________
ITMAR, Mazatln
70
Ing. Rufino J. Domnguez Arellano

También podría gustarte