Sie sind auf Seite 1von 14

El Microcontrolador 8051 CAP.

6
_________________________________________________________________________
ITMAR, Mazatln 57 Ing. Rufino J. Domnguez Arellano
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.
El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 58 Ing. Rufino J. Domnguez Arellano




Figura 6.1






El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 59 Ing. Rufino J. Domnguez Arellano
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 Parmetro
TLHLL ALE Pulse Width (Anchura pulso ALE)
TAVLL Address Valid to ALE Low (Direccin vlida a ALE bajo)
TLLAX Address Hold After ALE Low (Direccin mantenida despus de ALE
bajo)
TLLIV ALE Low to Valid Instruction In (ALE bajo a Instr. In. vlida)
TLLPL ALE Low to PSEN Low (ALE bajo a PSEN bajo)
TPLPH PSEN Pulse Width (Anchura pulso PSEN)
TPLIV PSEN Low to Valid Instruction In (PSEN bajo a Instr. In. vlida)
TPXIX Input Instr. Hold After PSEN (Mantenimiento de Instr. In.
despus de PSEN)
TPXIZ Input Instr. Float After PSEN (Bus flotante de Instr. In. despus
de PSEN)
TPXAV PSEN to Address Valid / PSEN a Direccin vlida
TAVIV Addres to Valid Instr. In. / Direccin a Instr. In. vlida
TPLAZ PSEN Low to Addres Float / PSEN bajo a bus direccin flotante
TRLRH RD Pulse Width / Anchura del pulso de lectura
TWLWH WR Pulse Widht / Anchura del pulso de escritura.
TRLDV RD Low to Valid Data In / RD bajo a Dato In. vlido
TRHDX Data Hold After RD / Mantenimiento de Dato despus de RD
TRHDZ Data Float After RD / Bus Datos flotante despus de RD
TLLDV ALE Low to Valid Data In / ALE bajo a Dato In. vlido
TAVDV Addres to Valid Data In / Direccin a Dato In. vlido
TLLWL ALE Low to RD or WR Low / ALE bajo a RD o WR bajo
TAVWL Addres to RD or WR Low / Direccin a RD o WR bajo
TQVWX Data Valid to WR Transition / Dato vlido a transicin WR
TQVWH Data Valid to WR High / Dato vlido a WR alto
TWHQX Data Hold After WR (Mantenimiento de Dato despus de WR)
TRLAZ RD Low to Addres Float (RD bajo a bus flotante Direccin)
TWHLH 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.




El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 60 Ing. Rufino J. Domnguez Arellano
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.

El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 61 Ing. Rufino J. Domnguez Arellano

+5 V
EPROM
2764
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
Vpp
O7
O6
O5
O4
O3
O2
O1
O0
CE
OE
PGW
U3
RAM
43256C
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
CS
OE
WR
U2
8052
P1.0/T2
P1.1/T2X
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RESET
T0
T1
X2
X1
P2.5
P2.6
P2.7
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
EA/Vpp
P2.0
P2.1
P2.2
P2.3
P2.4
ALE/P
TXD
RXD
INT0
INT1
PSEN
WR
RD
U1
74LS373
D7
D6
D5
D4
D3
D2
D1
D0
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
OE E
U4
+5 V
+5 V
EPROM
2764
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
Vpp
O7
O6
O5
O4
O3
O2
O1
O0
CE
OE
PGW
U3
RAM
43256C
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
CS
OE
WR
U2
8052
P1.0/T2
P1.1/T2X
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RESET
T0
T1
X2
X1
P2.5
P2.6
P2.7
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
EA/Vpp
P2.0
P2.1
P2.2
P2.3
P2.4
ALE/P
TXD
RXD
INT0
INT1
PSEN
WR
RD
U1
74LS373
D7
D6
D5
D4
D3
D2
D1
D0
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
OE E
U4
+5 V



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:

El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 62 Ing. Rufino J. Domnguez Arellano
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.






El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 63 Ing. Rufino J. Domnguez Arellano



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.
El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 64 Ing. Rufino J. Domnguez Arellano
.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 ).





El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 65 Ing. Rufino J. Domnguez Arellano

; Escribe en el puerto P0 configurado como salida
;
ORG 0200H
;
RETAR1 EQU 0300H
MOV A, #00H
ANL P0, A ; Escribe CERO en el puerto P0
CALL RETAR1 ; Producir retardo
SAL0: 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
SAL0: MOV R1, #85H ;Se CARGA R1 con #85H
SAL1: MOV R2, #FFH ;Se CARGA R2 con #FFH
SAL2: 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
El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 66 Ing. Rufino J. Domnguez Arellano

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


El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 67 Ing. Rufino J. Domnguez Arellano



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:





El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 68 Ing. Rufino J. Domnguez Arellano



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

El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 69 Ing. Rufino J. Domnguez Arellano
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
El Microcontrolador 8051 CAP. 6
_________________________________________________________________________
ITMAR, Mazatln 70 Ing. Rufino J. Domnguez Arellano
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
;

MOV DPTR, #0300H ;inicializa puntero de TABLA
SAL0: MOV A, P0 ; LEE puerto PO
ANL A, #07H ; Enmascara
MOVC A, @A+DPTR ; Direcciona y captura dato
MOV Pl, A ;Acta
JMP SAL0
END