Você está na página 1de 187

Dr. Alejandro Vega S.

MANUAL DEL
MICROCONTROLADOR 8051

Regreso al
men principal

Dr. Alejandro Vega


Agosto-diciembre 1999

INDICE
Pgina
INTRODUCCIN

PRIMERA PARTE.
CAPITULO 1, CARACTERSTICAS DEL MICROCONTROLADOR 8051

1.1CARACTERSTICAS DELC-8051
1.2DESCRIPCIN DE LAS LINEAS DEL C-8051
1.3CARACTERSTICAS ESPECFICAS DEL C-8051
1.3.1 Descripcin de los espacios de memoria.

6
6
9
9

1.4 MEMORIA DEL PROGRAMA.


1.4.1 Localidades de asignadas a las interrupciones
1.4.2 Memoria de programa interna y externa.

11
11
11

1.5 MEMORIA DE DATOS.

12

CAPITULO 2, REGISTROS DE FUNCIONES ESPECIALES (SFR).

14

2.1
2.2
2.3
2.4

LOCALIDADES DE LOS REGISTROS DE FUNCIONES ESPECIALES. 15


REGISTRO DE PALABRA DEL ESTADO DEL PROGRAMA.
16
REGISTRO DE CONTROL DE POTENCIA.
17
REGISTRO DE INTERRUPCIONES.
17
2.4.1 Registro Habilitador de Interrupciones (IE).
18
2.4.2 Registro de Prioridades.
19

CAPITULO 3, MANEJO DE LOS TEMPORIZADORES Y CONTADORES.

20

3.1 TIMER / CONTADOR


21
3.2 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR.
21
3.3 REGISTRO DE MODO DE CONTROL DEL TIMER/CONTADOR.
22
3.3.1 Modo 0 del Timer/Contador.
23
3.3.2 Modo 1 del Timer/Contador.
24
3.3.3 Modo 2 del Timer/Contador.
24
3.3.4 Modo 3 del Timer/Contador.
25
3.4 UTILIZACION DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE"
PARA LA TRANSMISION SERIE.
25
CAPITULO 4, CONTROL DEL PUERTO SERIE.

26

4.1 PUERTO SERIE


4.2 REGISTRO DE CONTROL DEL PUERTO SERIE SCON
4.3 MODOS DE CONTROL DEL PUERTO SERIE.
4.3.1 Transmisin serie, utilizando el modo de control 0.
4.3.2 Transmisin serie, utilizando el modo de control 1.
4.3.3 Transmisin serie, utilizando los modos 2 y 3.

27
27
28
29
30
32

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

CAPITULO 5, MODOS DE DIRECCIONAMIENTO.

35

5.1
5.2
5.3
5.4
5.5
5.6
5.7

36
36
36
37
37
37
38
38
39

MODOS DE DIRECCIONAMIENTO.
DIRECCIONAMIENTO DIRECTO.
DIRECCIONAMIENTO INDIRECTO.
DIRECCIONAMIENTO INMEDIATO.
DIRECCIONAMIENTO INDEXADO.
DIRECCIONAMIENTO POR REGISTRO.
TRANSFERENCIA DE DATOS.
5.7.1 RAM interna.
5.7.2 RAM externa.
5.7.3 Movimientos de tablas localizadas en la memoria del
programa
5.8 INSTRUCCIONES BOOLEANAS.
5.9 INSTRUCCIONES DE SALTO.
5.9.1 Saltos condicionados.
5.9.2 Saltos incondicionados.

39
39
40
40
41

SEGUNDA PARTE
CONJUNTO DE INSTRUCCIONES DEL C- 8051.

43

TERCERA PARTE
APLICACIONES DEL MICROCONTROLADOR 8051.

96

BIBLIOGRAFA

102

ANEXOS
.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

INTRODUCCIN

Hoy en da, el incremento competitivo en el mercado de la industria


electrnica, crea la necesidad de disear sistemas con mejores caractersticas, de
menor tamao, bajos requerimientos de energa, mejor realizacin, teniendo un
especial nfasis sobre todo en la facilidad de duplicidad del sistema diseado. La
lgica definida por el usuario, y realizada por el fabricante, permite individualizar a
los sistemas diseados, as como tambin apegarse ms a los requerimientos
especficos del usuario. Esto, tiene repercusin en el costo, realizacin,
compactabilidad, desempeo y seguridad del diseo.
Con el fin de permitir la construccin de circuitos lgicos usando el concepto
de lgica programable, los fabricantes de circuitos integrados han visto la
necesidad de producir dispositivos, de alta velocidad, con los que se puedan
desarrollar funciones lgicas de toda clase.
En estos circuitos, el usuario puede programar, en un slo "chip", funciones
que, de otra forma, con la circuitera tradicional de compuertas, utilizaran muchos
componentes, adems del espacio fsico de los mismos.
En cursos anteriores ya hemos visto los PLDs "Dispositivos Lgicos
Programables Los
diseadores
de circuitos digitales han utilizado
tradicionalmente los PLD's para obtener funciones lgicas que generalmente no
se encuentran disponibles como componentes estndares. Los PLD's son una
excelente opcin en sistemas donde el tamao y complejidad de las tarjetas de
circuito impreso, la confiabilidad, el nmero de componentes o la velocidad son
factores crticos.
Como sucede con la familia de las memorias ROM, algunos PLD's se
programan una sola vez, otros se pueden programar y borrar las veces que sea
necesario. Los PLD's contienen compuertas y Flip-Flops, pero estos componentes
no se encuentran interconectados en configuraciones fijas, sino que, se tienen
pequeos fusibles que se funden o abren para interconectar dicha circuitera interna.
Creando de esta manera cualquier configuracin requerida.
Para muchas de las aplicaciones los PLDs son una excelente opcin,
desafortunadamente, sus aplicaciones se ven limitadas cuando es necesario
transmisin de informacin, adquisicin y tratamiento de datos, temporizaciones, etc.
Es aqu donde hacen sus aparicin los microcontroladores, que son dispositivos
mas verstiles que nos permitan llevar a cabo estas nuevas aplicaciones.

Pero, qu es un microcontrolador ?
Un Microcontrolador es todo un "sistema mnimo" dentro de un
slo
dispositivo, lo cual ofrece un enorme panorama hacia el mundo de la compatibilidad.
Este dispositivo contiene: Un CPU (basado principalmente en un microprocesador
de 4, 8 16 bits), puertos paralelos de entrada y salida, puerto serie, timers,

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

contadores, memorias, y en algunos casos hasta convertidores analgicos


digitales, todo esto dentro de un solo chip.
Por qu un microcontrolador y no un microprocesador ?
Un microcontrolador est encaminado bsicamente hacia aplicaciones
concretas en donde, el espacio, y nmero de componentes es mnimo, adems,
los cambios o ampliaciones futuras del sistema son casi nulos. Por otro lado, un
microprocesador se destina a sistemas donde su expansin a corto o mediano
plazo es factible. A pesar de que un microprocesador es ms rpido que un
microcontrolador para la ejecucin de sus instrucciones, en la mayora de los casos es
necesario interconectarlo con dispositivos perifricos
Un microcontrolador, puede ser utilizado con un mnimo nmero de
componentes en trabajos especficos y en un amplio rango de aplicaciones, tales
como; los sistemas de control de alarmas, tableros de control en la industria
automotriz, en la instrumentacin mdica, en los teclados de computadora, en los
sistemas porttiles de almacenamiento de datos, en equipos de laboratorio, etc.
En ste manual nos concretaremos especficamente al microcontrolador
8051,
estudiaremos sus caractersticas, as como tambin algunas de sus
aplicaciones.
El manual se divide bsicamente en tres etapas fundamentales:
La primera, est enfocada hacia la descripcin detallada de cada una de las
lneas del microcontrolador 8051 (C-8051), que nos permitirn la interconexin
con los sistemas perifricos o directamente con los sistemas a controlar.
Tambin se estudiar n cada uno de los registros internos, sus utilidades y sus
aplicaciones.
En la segunda parte, veremos cada una de las instrucciones, las cuales
reforzaremos con breves ejemplos especficos. Por ltimo en la tercera etapa,
presentaremos algunos diseos que se han tratado de detallar de la manera ms
completa, desde el planteamiento hasta la realizacin de sus programas.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

MANUAL DEL
MICROCONTROLADOR 8051

Dr. Alejandro Vega


Agosto-diciembre 1999

INDICE
Pgina
INTRODUCCIN

PRIMERA PARTE.
CAPITULO 1, CARACTERSTICAS DEL MICROCONTROLADOR 8051

1.1CARACTERSTICAS DELC-8051
1.2DESCRIPCIN DE LAS LINEAS DEL C-8051
1.3CARACTERSTICAS ESPECFICAS DEL C-8051
1.3.1 Descripcin de los espacios de memoria.

6
6
9
9

1.4 MEMORIA DEL PROGRAMA.


1.4.1 Localidades de asignadas a las interrupciones
1.4.2 Memoria de programa interna y externa.

11
11
11

1.5 MEMORIA DE DATOS.

12

CAPITULO 2, REGISTROS DE FUNCIONES ESPECIALES (SFR).

14

2.1
2.2
2.3
2.4

LOCALIDADES DE LOS REGISTROS DE FUNCIONES ESPECIALES. 15


REGISTRO DE PALABRA DEL ESTADO DEL PROGRAMA.
16
REGISTRO DE CONTROL DE POTENCIA.
17
REGISTRO DE INTERRUPCIONES.
17
2.4.1 Registro Habilitador de Interrupciones (IE).
18
2.4.2 Registro de Prioridades.
19

CAPITULO 3, MANEJO DE LOS TEMPORIZADORES Y CONTADORES.

20

3.1 TIMER / CONTADOR


21
3.2 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR.
21
3.3 REGISTRO DE MODO DE CONTROL DEL TIMER/CONTADOR.
22
3.3.1 Modo 0 del Timer/Contador.
23
3.3.2 Modo 1 del Timer/Contador.
24
3.3.3 Modo 2 del Timer/Contador.
24
3.3.4 Modo 3 del Timer/Contador.
25
3.4 UTILIZACION DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE"
PARA LA TRANSMISION SERIE.
25
CAPITULO 4, CONTROL DEL PUERTO SERIE.

26

4.1 PUERTO SERIE


4.2 REGISTRO DE CONTROL DEL PUERTO SERIE SCON
4.3 MODOS DE CONTROL DEL PUERTO SERIE.
4.3.1 Transmisin serie, utilizando el modo de control 0.
4.3.2 Transmisin serie, utilizando el modo de control 1.
4.3.3 Transmisin serie, utilizando los modos 2 y 3.

27
27
28
29
30
32

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

CAPITULO 5, MODOS DE DIRECCIONAMIENTO.

35

5.1
5.2
5.3
5.4
5.5
5.6
5.7

36
36
36
37
37
37
38
38
39

MODOS DE DIRECCIONAMIENTO.
DIRECCIONAMIENTO DIRECTO.
DIRECCIONAMIENTO INDIRECTO.
DIRECCIONAMIENTO INMEDIATO.
DIRECCIONAMIENTO INDEXADO.
DIRECCIONAMIENTO POR REGISTRO.
TRANSFERENCIA DE DATOS.
5.7.1 RAM interna.
5.7.2 RAM externa.
5.7.3 Movimientos de tablas localizadas en la memoria del
programa
5.8 INSTRUCCIONES BOOLEANAS.
5.9 INSTRUCCIONES DE SALTO.
5.9.1 Saltos condicionados.
5.9.2 Saltos incondicionados.

39
39
40
40
41

SEGUNDA PARTE
CONJUNTO DE INSTRUCCIONES DEL C- 8051.

43

TERCERA PARTE
APLICACIONES DEL MICROCONTROLADOR 8051.

96

BIBLIOGRAFA

42

ANEXOS
.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

INTRODUCCIN

Hoy en da, el incremento competitivo en el mercado de la industria


electrnica, crea la necesidad de disear sistemas con mejores caractersticas, de
menor tamao, bajos requerimientos de energa, mejor realizacin, teniendo un
especial nfasis sobre todo en la facilidad de duplicidad del sistema diseado. La
lgica definida por el usuario, y realizada por el fabricante, permite individualizar a
los sistemas diseados, as como tambin apegarse ms a los requerimientos
especficos del usuario. Esto, tiene repercusin en el costo, realizacin,
compactabilidad, desempeo y seguridad del diseo.
Con el fin de permitir la construccin de circuitos lgicos usando el concepto
de lgica programable, los fabricantes de circuitos integrados han visto la
necesidad de producir dispositivos, de alta velocidad, con los que se puedan
desarrollar funciones lgicas de toda clase.
En estos circuitos, el usuario puede programar, en un slo "chip", funciones
que, de otra forma, con la circuitera tradicional de compuertas, utilizaran muchos
componentes, adems del espacio fsico de los mismos.
En cursos anteriores ya hemos visto los PLDs "Dispositivos Lgicos
Programables Los
diseadores
de circuitos digitales han utilizado
tradicionalmente los PLD's para obtener funciones lgicas que generalmente no
se encuentran disponibles como componentes estndares. Los PLD's son una
excelente opcin en sistemas donde el tamao y complejidad de las tarjetas de
circuito impreso, la confiabilidad, el nmero de componentes o la velocidad son
factores crticos.
Como sucede con la familia de las memorias ROM, algunos PLD's se
programan una sola vez, otros se pueden programar y borrar las veces que sea
necesario. Los PLD's contienen compuertas y Flip-Flops, pero estos componentes
no se encuentran interconectados en configuraciones fijas, sino que, se tienen
pequeos fusibles que se funden o abren para interconectar dicha circuitera interna.
Creando de esta manera cualquier configuracin requerida.
Para muchas de las aplicaciones los PLDs son una excelente opcin,
desafortunadamente, sus aplicaciones se ven limitadas cuando es necesario
transmisin de informacin, adquisicin y tratamiento de datos, temporizaciones, etc.
Es aqu donde hacen sus aparicin los microcontroladores, que son dispositivos
mas verstiles que nos permitan llevar a cabo estas nuevas aplicaciones.

Pero, qu es un microcontrolador ?
Un Microcontrolador es todo un "sistema mnimo" dentro de un
slo
dispositivo, lo cual ofrece un enorme panorama hacia el mundo de la compatibilidad.
Este dispositivo contiene: Un CPU (basado principalmente en un microprocesador
de 4, 8 16 bits), puertos paralelos de entrada y salida, puerto serie, timers,

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

M
M
C
R
O
C
O
N
T
R
O
L
A
D
O
R
MIIIC
CR
RO
OC
CO
ON
NT
TR
RO
OL
LA
AD
DO
OR
R88005511

Introduccin

contadores, memorias, y en algunos casos hasta convertidores analgicos


digitales, todo esto dentro de un solo chip.
Por qu un microcontrolador y no un microprocesador ?
Un microcontrolador est encaminado bsicamente hacia aplicaciones
concretas en donde, el espacio, y nmero de componentes es mnimo, adems,
los cambios o ampliaciones futuras del sistema son casi nulos. Por otro lado, un
microprocesador se destina a sistemas donde su expansin a corto o mediano
plazo es factible. A pesar de que un microprocesador es ms rpido que un
microcontrolador para la ejecucin de sus instrucciones, en la mayora de los casos es
necesario interconectarlo con dispositivos perifricos
Un microcontrolador, puede ser utilizado con un mnimo nmero de
componentes en trabajos especficos y en un amplio rango de aplicaciones, tales
como; los sistemas de control de alarmas, tableros de control en la industria
automotriz, en la instrumentacin mdica, en los teclados de computadora, en los
sistemas porttiles de almacenamiento de datos, en equipos de laboratorio, etc.
En ste manual nos concretaremos especficamente al microcontrolador
8051,
estudiaremos sus caractersticas, as como tambin algunas de sus
aplicaciones.
El manual se divide bsicamente en tres etapas fundamentales:
La primera, est enfocada hacia la descripcin detallada de cada una de las
lneas del microcontrolador 8051 (C-8051), que nos permitirn la interconexin
con los sistemas perifricos o directamente con los sistemas a controlar.
Tambin se estudiar n cada uno de los registros internos, sus utilidades y sus
aplicaciones.
En la segunda parte, veremos cada una de las instrucciones, las cuales
reforzaremos con breves ejemplos especficos. Por ltimo en la tercera etapa,
presentaremos algunos diseos que se han tratado de detallar de la manera ms
completa, desde el planteamiento hasta la realizacin de sus programas.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

CAPITULO 1
CARACTERSTICAS GENERALES DEL
MICROCONTROLADOR 8051

Men principal

men principal

Caractersticas del Microcontrolador 8051

Captulo 1

1.1 CARACTERSTICAS DEL 8051.

La Familia de C-8051 es variada, y se encuentra en diversas presentaciones, la


seleccin de uno o de otro tipo de microcontrolador depender principalmente de las
necesidades a satisfacer. En este manual hablaremos de manera particular del 8051
el cual se presenta en tres versiones, con ROM interna (8051) la cual es programada
directamente por el fabricante, con EPROM interna (8751) que puede ser programada
por el usuario y sin PROM ni EPROM (8031),cuando el programa se selecciona de
manera externa.
El c-8051 est basado en los microprocesadores de 8 bits, contiene internamente
un CPU de 8bits, 3 puertos de entrada y salida paralelos, un puerto de control, el cual
a su vez contiene; un puerto serie, dos entradas para Timer/Contador de 16 bits, dos
entradas para interrupciones externas, las seales de RD y WR para la toma o
almacenamiento de datos externos en RAM, la seal de PSEN para la lectura de
instrucciones almacenadas en EPROM externa. Gracias a estas tres seales el c8051 puede direccionar 64 K de programa y 64K de datos separadamente, es decir
un total de 128Kb. Adems cuenta con 128 bytes de memoria RAM interna.
Adems el C-8051 puede generar la frecuencia (Baud Rate) de
Transmisin/Recepcin de datos por el puerto serie de manera automtica partiendo
de la frecuencia del oscilador general, por medio de la programacin del Timer 1.
Dicha frecuencia de transmisin puede ser cambiada en cualquier momento con solo
cambiar el valor almacenado en el control o tambin se puede duplicar o dividir la
frecuencia con solo escribir sobre el bit 7 (SMOD) del registro de control (PCON).

A continuacin comenzaremos a ver con mayor detalle todo lo referente a sus


conexiones as como tambin las caractersticas especiales del c-8051.

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

1.2 DESCRIPCION DE LAS LINEAS (PINS) DEL 8051.

El elemento ms bsico de la familia 8051 es el 8031, que carece de EPROM o


PROM, el cual es direccionado externamente.

El 8031 es fundamentalmente un chip de 40 lneas.

P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
P3.0/RxD
P3.1/TxD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.6/T1
P3.6/WR
P3.7/RD
XTAL2
XTAL1
Vss

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

8051
8031
8751

40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21

Vcc
P0.0
P0.1
P0.2
P0.3
P0.4
P0.5
P0.6
P0.7
Vpp/EA
PROG/ALE
PSEN
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0

Fig.1 Microcontrolador 8051

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

Descripcin de conexiones.

Nemnico Conex

Tipo

Vss

ENT

Tierra 0V referencia.

P0.0-P0.7 39-32

E/S

Port 0. Es un puerto bidireccional con salidas en


colector abierto. Cuando el puerto tiene 1s
escritos, las salidas estn flotadas y pueden servir
como entradas en alta impedancia. El puerto 0 es
tambin multiplexado para obtener el DATO y la
parte baja de la direccin.

P1.0-P1.7 1-8

E/S

Port 1. Es un puerto quasidireccional, cuando se


escribe 1s en el puerto, el puerto puede ser
utilizado como entrada.

P2.0-P2.7 21-28

E/S

Port 2. Es un puerto quasi-bidireccional con


fijadores de nivel internos (pull-up). Cuando se
escriben 1s sobre el puerto, las lneas pueden ser
utilizadas como entradas o salidas. Como
entradas, las lneas que son externamente
colocadas en la posicin baja proporcionaran una
corriente hacia el exterior. El puerto 2 es utilizado
adems para direccionar memoria externa. Este
puerto, emite el byte ms alto de la direccin
durante la bsqueda 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 dato
externa, que usa direcciones de 8 bits, el puerto
dos emite el contenido del registro del
correspondiente a este puerto, que se encuentra
en el espacio de funciones especiales.

P3.0-P3.7 10-17

E/S

Port 3. Es un puerto quasi-bidireccional con


fijadores de nivel internos (PULL-UP). Cuando se
escriben 1s sobre el puerto, las lneas pueden ser
utilizadas como entradas o como salidas. Como
entradas las lneas que son externamente
colocadas en la posicin baja proporcionarn una
corriente. El puerto 3 se utiliza adems para
producir seales de control de dispositivos
externos como son los siguientes:

E
S

RxD(P3.0): Puerto serie de entrada.


TxD(P3.1): Puerto serie de salida.

20

10
11

Manual de Microcontrolador 8051

Nombre y funcin

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

12
13
14
15
16

E
E
E
E
S

17

RST

ALE

30

E/S

PSEN

29

Program Store Enable. Habilitador de lectura


para memoria de programas externos. Cuando el
8031B/8051 est ejecutando un cdigo de una
memoria de programas externos, PSEN es
activada dos veces cada ciclo de mquina,
excepto cuando se accesa la memoria de datos
externos que omiten las dos activaciones del
PSEN externos. PSEN tampoco es activada
cuando se usa la memoria de programas internos.

EA

31

External Access Enable. EA debe mantenerse


externamente en posicin baja para habilitar el
mecanismo que elige el cdigo de las
localizaciones de la memoria de programas
externos, 0000H y 0FFFH. Si EA se mantiene en
posicin alta, el dispositivo ejecuta los programas
que se encuentran en la memoria interna ROM, a
menos que el contador del programa contenga una
direccin mayor a 0FFFH.

XTAL1

19

XTAL2

18

Crystal 1. Es la entrada del cristal para el circuito


oscilador (generador del reloj interno) que
amplifica e invierte la entrada.
Crystal 2. Es la salida del amplificador oscilador
inversor.

Manual de Microcontrolador 8051

INT0(P3.2): Interrupcin externa.


INT1(P3.3): Interrupcin externa.
T0(P3.4): Entrada externa timer0.
T1(P3.5): Entrada externa timer1.
WR(P3.6): Habilitador de escritura para memoria
externa de datos.
RD (P3.7): habilitador de lectura para la memoria
externa de datos.
Reset. Una entrada alta en esta lnea durante dos
ciclos de maquina mientras el oscilador est
corriendo detiene el dispositivo.
Un resistor
interno conectado a Vss permite un alto en la
fuente usando solamente un capacitor externo a
VCC.
Address Latch Enable. Un pulso positivo de
salida permite fijar el byte bajo de la direccin
durante el acceso a una memoria externa. En
operacin normal, ALE es emitido en un rango
constante de 1/6 de la frecuencia del oscilador, y
puede ser usada para cronometrar. Note que un
pulso de ALE es emitido durante cada acceso a la
memoria de datos externos.

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

1.3 CARACTERISTICAS ESPECIFICAS DEL 8051.


El 8051 contiene las siguientes caractersticas:

1.3.1

1 CPU de 8 bits como parte central.


32 lneas bidireccionales de entrada y salida (4 puertos)
128 bytes de memoria RAM
2 Controladores / Timers de 16 bits
1 UART completo
5 estructuras de interrupcin con dos niveles de prioridad
1 circuito de reloj
64 Kbytes de espacio para programa.
64 Kbytes de espacio para datos.

DESCRIPCION DE LOS ESPACIOS DE MEMORIA.

La memoria del sistema del 8051 se clasifica en tres partes fundamentales:


(fig. 2):
La primera, llamada memoria de programa, en donde se encuentran todas las
instrucciones que van a ser ejecutadas por el C-8051, 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 de sta, la memoria del
programa (externa) es seleccionada mediante la activacin de la seal PSEN (estado
bajo). El mximo espacio de memoria de programa que se puede accesar es de
64KB.
El segundo espacio de memoria denominado, memoria de datos es accesado
mediante la activacin de las seales RD y WR, durante la lectura o escritura de
datos respectivamente. En este espacio del C toma todos valores que se
encuentran en memoria como DATOS, es decir, el C no puede ejecutar ninguna
instruccin que se encuentre aqu almacenada. El 8051 puede direccionar tambin
64KB de memoria de datos.
El tercer espacio de memoria es denominado como memoria RAM interna, el cual se
subdivide en 128 bytes de memoria bajos y en 128 bytes de memoria altos. En los
primeros 128, se encuentran 4 bancos de 7 registros cada uno. Estos registros son de
gran ayuda para la simplificacin de los programas, debido a que cada uno de ellos
nos permiten almacenar datos momentneamente y realizar un basto nmero de
instrucciones del 8051. Tambin dentro de este espacio, se encuentran 16 bytes (del
20H al 2FH) que pueden ser direccionados directamente por bit.
En la parte alta de la memoria RAM interna, se encuentran el contenido de los
Registros de Funciones Especiales, formado por Puertos, Registros de Control,
Acumuladores, Registros de interrupcin, etc. Todos estos registros los veremos
detalladamente posteriormente.

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

MEMORIA DE PROGRAMA

MEMORIA DE DATOS

FFFH__

FFFH__

EPROM
EXTERNA

RAM
EXTERNA
PSEN=0

1000H__

EA=1 --0FFFH-EPROM
O PROM
INTERNA --000H-PSEN=1

EA=0

128 B.
SFRS

EPROM

128B
INTERNA

EXTERNA

0000H__

PSEN=0

256 Bytes de RAM __ ___


Interna
RD=WR=0

1.4.1 LOCALIDADES ASIGNADAS A LAS INTERRUPCIONES.


A continuacin veremos de manera ms detallada el espacio destinado al programa
de trabajo.
La tabla 1, muestra las localidades que han sido asignadas por el fabricante, para dar
servicio a las rutinas de interrupcin.
FUENTE DE INTERRUPCIN

VECTOR DE DIRECCIONES

IE0 (Interrupcin 0 externa)


TF0 (Interrupcin del timer 0)
IE1 (Interrupcin 1 externa)
TF1 (Interrupcin del timer 1)
R1 y T1 (Interrupcin serial)
TF2 y EXF2 (Slo para el 8052)

0003H
000BH
0013H
001BH
0023H
002BH

Tabla 1. Interrupciones

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

Una interrupcin puede ser causada de manera externa o interna, es decir puede ser
producida por un dispositivo perifrico o por programacin respectivamente. La
interrupcin con mayor alto orden es el RESET el cual no puede ser mascarable.
Cuando el RESET ocurre el programa comienza a partir de la direccin 0000H del
programa.
Cuando una interrupcin es producida, el Contador del Programa (PC) almacena su
contenido temporalmente dentro del SP (apuntador de apilamiento ) y se carga con la
direccin de la localidad donde se encuentra la rutina de servicio de la interrupcin
correspondiente. Una vez posicionado en esa localidad deber de comenzar la
ejecucin de la rutina de servicio, hasta que encuentre la instruccin RETI, que le
permitir al PC recuperar nuevamente su valor original almacenado en el SP, y
continuar con el programa anterior a la interrupcin.
Por ejemplo a la interrupcin 0, se le asigna la localidad 0003H, si la interrupcin no
se utiliza, esta localidad puede utilizarse para propsitos generales del programa, si la
interrupcin ha sido permitida, (estableciendo el bit correspondiente dentro del
registro de control IE), en el momento que exista una activacin de la interrupcin
(estado bajo en la lnea INTO) el PC se cargar con 0003 y saltar a esa localidad
para comenzar a ejecutar la rutina de servicio.
Estas localidades de memoria de los servicios de interrupcin estn separadas en
intervalos de 8 bytes, entre s. Cuando un servicio de interrupcin es corto, ste
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
interrupcin. El trmino del servicio de interrupcin deber de realizarse mediante la
ejecucin de la instruccin de la instruccin RETI.

1.4.2 MEMORIA DE PROGRAMA INTERNA Y EXTERNA.

Cuando se utilizan elementos de la familia del 8051 con memoria interna ROM (o
16K), esta puede ser accesada mediante la conexin de la lnea EA =1 (Vcc). Si la
memoria interna es de 4 Kbytes y EA = 1, el CPU seleccionar internamente el ROM,
desde 0000H hasta 0FFFH y de manera externa automticamente a partir de 1000H
hasta FFFFH.
Por el contrario, si la lnea EA = 0, el CPU seleccionar de forma externa el ROM,
desde la direccin 0000H hasta FFFFH. En el caso del 8031 sta lnea se conecta
siempre a 0 Volts (Vss).

La lnea PSEN (Program Store Enable), que sirve para leer el ROM externo, es
activado en todas las bsquedas (Fetches) del programa. PSEN NO SE ACTIVA en
bsquedas (fetches) del ROM interno. La fig. 1.3 muestra un conexionado a una
EPROM externo.

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

P0

Captulo 1

BUS DE DATOS

CONTROLADOR
8051
LATCH
Sujeta
la dir.baja

EA
ALE
P2

EPROM
Dir. Baja

Direccin Alta

PSEN

OE

Fig. 1.3 Conexionado de una memoria externa

1.5. MEMORIA DE DATOS (DATA MEMORY)


El espacio de memoria RAM interno est dividido en tres espacios, el primer bloque
es referido como la parte baja de 128 bytes, el segundo (se tiene slo en algunas
versiones del 8051 v.gr. 8052), la parte alta de 128 bytes y el tercero, llamado espacio
SFR ( Registros de Funciones Especiales).
Las direcciones de la Memoria Interna de Datos siempre son de un byte (de 00H a
FFH). Sin embargo los modos de direccionamiento para la memoria interna pueden
acomodar hasta 384 bytes, como se ve en la versin 8052, lo cual es posible debido a
que el modo de direccionamiento directo accede un espacio de memoria diferente
fsicamente al permitido por el modo de direccionamiento indirecto.

FFH
Alto 128
80H
7FH

FFH
Accesable por
direccionamiento
indirecto

Accesable por
direccionamiento
directo

80H

Registro de Funciones
Especiales: Puertos,
estado y control de Bits,
timer, SP, acumuladores,
etc.

Accesable por
direccionamiento
directo e
indirecto

Bajo 128
Fig. 1.4 Estructura de la memoria interna.

Manual de Microcontrolador 8051

Dr. Alejandro Vega S.

Caractersticas del Microcontrolador 8051

Captulo 1

Los primeros 128 bytes, son presentados en todos los dispositivos de la familia
MCS-51, que est mapeados como se presenta en la fig 1.5.

Bits de seleccin
del banco de
registros en el
PSW

7FH
ESPACIO LIBRE DE DATOS
30H
2FH
ESPACIO DE DIRECCIONAMIENTO
POR BITS

20H
1FH
11
18H
17H
10
10H

4 BANCOS DE 8 REGISTROS R0R7


0FH

08H
07H

VALOR DEL RESET DEL SP

00
00H
Fig. 1.5 Distribucin de los 128 Bytes ms bajos de la memoria RAM interna.

Como se puede apreciar en la figura anterior, los 128 bytes ms bajos son divididos
en 4 bloques de 8 registros cada uno, que contienen los valores de los registros R0 A
R7, los bloques pueden ser seleccionados mediante la escritura en los bits 3 y 4 del
registro PSW (palabra del estado del programa), el cual veremos ms adelante. La
utilizacin de registros permiten un uso ms eficiente del espacio de cdigos debido a
que sus direccionamientos son de 8 bits nicamente.
Como ya habamos mencionado anteriormente, existen algunas versiones del 8051,
como el 8052, que contienen 128 bytes de memoria interna que puede ser
direccionada indirectamente. Por otro lado, todas las versiones del 8051 contienen un
espacio de 128 bytes en la parte alta de la memoria que son direccionados
directamente, en este espacio se localizan los Registros de Funciones Especiales
(SFR). Estos registros especiales, tienen sus localidades bien establecidas, y son
utilizados por el microcontrolador para realizar las distintas operaciones internas que
ejecuta el microcontrolador, as como tambin para el control y acceso de los
diferentes puertos de entrada y salida.

Manual de Microcontrolador 8051


S.

10

Dr. Alejandro Vega

Registros de Funciones Especiales

Captulo 2

CAPITULO 2
REGISTROS DE FUNCIONES ESPECIALES (SFR)

Regreso al
men principal

Manual del Microcontrolador 8051

14

Dr. Alejandro Vega S.

Registros de Funciones Especiales

2.1

LOCALIDADES
ESPECIALES.

DE

Captulo 2

LOS

REGISTROS

DE

FUNCIONES

En el captulo anterior habamos visto que los SFR se encuentran en la parte alta
(128 bytes) de la memoria RAM interna del 8051. Las direcciones de los SFR es
mostrado en la Tabla 2.

SMBOLO

NOMBRE

ACC
B
PSW

DIRECCIN

Acumulador
Registro B
Program Status Word
(Palabra de estado del programa)
SP
Stack Pointer (apuntador de apilamiento)
DPTR
Data Pointer (apuntador de datos)16bits
DPL
Data Pointer low byte
DPH
Data Pointer high byte
P0
Puerto 0
P1
Puerto 1
P2
Puerto 2
P3
Puerto 3
IP
Control de Prioridad de Interrup.
IE
Control de Validacin de Interrup.
TMOD
Modo de control Timer/Contador
TCON
Control del Timer/Contador
T2CON(8052)
Control 2 del Timer/Contador
TH0
Byte alto del T/C 0
TL0
Byte bajo del T/C 0
TH1
Byte alto del T/C 1
TL1
Byte bajo del T/C 1
TH2(8052)
Byte alto del T/C 2
TL2(8052)
Byte bajo del T/C 2
RCAP2H(8052) Byte alto del registro de captura T/C2
RCAP2L(8052) Byte bajo del registro de capt. del T/C2
SCON
Control serie
SBUF
Buffer de datos serie
PCON
Control de Potencia

0EOH
0F0H
0DOH
81H
82H
83H
80H
90H
0A0H
0B0H
0B8H
0A8H
89H
88H
OC8H
8CH
8AH
8DH
8BH
0CDH
0CCH
0CBH
0CAH
98H
99H
87H

Tabla 2 Espacio de los registros de funciones especiales.

En la Fig. 2.1 se muestra el mapa de memoria correspondiente a los registros de


funciones especiales.

Manual del Microcontrolador 8051

15

Dr. Alejandro Vega S.

Registros de Funciones Especiales

Captulo 2

Mapa de memoria de los SFR (registros de funciones especiales)


F8
F0
B
E8
E0 ACC
D8
D0 PSW
C8 T2CON
C0
B8
IP
B0
P3
A8
IE
A0
P2
98 SCON
90
P1
88 TCON
80
P0

RCAP2L RCAP2H

TL2

TH2

TH0

TH1

FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F
PCON 87

SBUF
TMOD
SP

TLO
DPL

TL1
DPH

Fig. 2.1 Mapa de memoria de los SFR


A continuacin veremos con mayor detalle cada uno de los principales registros de
control del 8051.

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 se muestra en la fig.2.2.
CY

AC

F0

RS1

RS0

OV

Fig. 2.2 Registro PSW (Palabra de Estado del Programa)


CY
AC
F0
RS1
RS0
OV
P

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

Bandera del carry


Bandera del carry auxiliar (operaciones en BCD)
Bandera 0 para usos generales
Bit 1 selector del banco de registros
Bit 0 selector del banco de registros
Bandera del overflow
Bandera sin definir
Bandera de paridad, establece/limpia por hardware, indica
si el nmero de 1s en el acumulador es par o impar.

Manual de Microcontrolador 8051

16

Dr. Alejandro Vega S.

Registros de Funciones Especiales

Captulo 2

Este registro como ya se vio, reside en el espacio SFR. El registro contiene; el bit de
Carry, El bit Auxiliar (para operaciones BCD), los dos bits de seleccin del banco de
registros, la bandera de overflow, el bit de paridad y dos banderas sin definir.
El bit de Paridad refleja el nmero de 1s, en el acumulador:

P=1, si el Acumulador contiene un nmero impar de 1s


P=0, si el Acumulador contiene un nmero par de 1s, es decir el nmero de 1s, en el
acumulador ms P es siempre par.

2.3. REGISTRO DE CONTROL DE POTENCIA (CONSUMO DE


ENERGIA).
En la fig.2.3 tenemos el registro PCON, el cual a excepcin de la bandera SMOD,
sirve para controlar, principalmente el consumo de energa, el cual es utilizado slo
por los dispositivos fabricados con la tecnologa CHMOS que permite disminuir dicho
consumo de energa, en estados de espera. La bandera PCON.7 (SMOD) sirve para
dividir la frecuencia de transmisin o de recepcin por el puerto serie, proporcionada
ya sea, por la fase 2 de los estados, (1/2 de la frecuencia del oscilador en la
transmisin serie en modo 2), o bien, por el timer 1 en los modos 1 y 3.

SMOD

GF1

GF0

PD

IDL

Fig.2.3 PCON (Registro de control de potencia)

SMOD
GF1
GF0
PD
IDL

Dobla el BAUD RATE para el puerto serie cuando se utiliza el timer


para generar el BAUD RATE.
Propsitos generales
Propsitos generales
Bajo consumo de energa
80C51BH CHMOS
Bajo consumo de energa

Manual de Microcontrolador 8051

17

Dr. Alejandro Vega S.

Registros de Funciones Especiales

Captulo 2

2.4. REGISTROS DE INTERRUPCIONES.


Las interrupciones son controladas mediante la escritura en los registros IE
(Interruption Enable) e IP (Interruption
Priority) los cuales son fsicamente
representados en la fig.2.4.

REGISTRO
IE

REGISTRO ALTA PRIORIDAD


IP

0
INT0
IT0

IED

BAJA

PRIORIDAD

TF0
0
INT1
IT1

IED

SECUENCIA

DE

TF1

SERVICIO
DE

RI

INTERRUPCIN

TI
ACCIN
INDIVIDUAL

DESHABILITADOR
GENERAL

Fig. 2.4 Sistema de control de interrupciones

Manual de Microcontrolador 8051

18

Dr. Alejandro Vega S.

Registros de Funciones Especiales

Captulo 2

2.4.1 REGISTRO HABILITADOR DE INTERRUPCIONES (IE).


La desactivacin general de las interrupciones es efectuada mediante la escritura de
un 0 lgico, en la bandera EA (IE.7).
Con la bandera EA=1, el 8051 est en condiciones de aceptar interrupciones, aunque
la verdadera aceptacin es realizada cuando se escribe un 1 lgico, en la bandera de
la interrupcin correspondiente del registro de interrupciones, IE (fig.2.5).
EA

ET2

ES

ET1

EX1

ET0

EX0

Fig. 2.5 Registro IE (Interruption Enable)


EA
ET2
ES
ET1
EX1
ET0
EX0

IE.7
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0

Desactiva todas las INTERRUPCIONES EA=0.


Activa la interrupcin causada por el timer2 (ET2=1)
Activa la interrupcin causada por el puerto serial.
Activa la interrupcin de sobreflujo causada por el timer 1.
Activa la interrupcin causada externamente en INT1.
Activa la interrupcin de sobreflujo causada por el timer 0.
Activa la interrupcin causada externamente en INT 0.

2.4.2 REGISTRO DE PRIORIDAD.


El 8051 tiene dos planos de prioridad para trabajar las interrupciones, llamadas alto y
bajo, respectivamente. En la inicializacin, 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 lgico en las banderas correspondientes a las interrupciones
que se desean aumentar de prioridad, ubicadas dentro del registro IP (fig.2.6.)
-

PT2

PS

PT1

PX1

PT0

PX0

Fig. 2.6 Registro de Prioridad de Interrupciones


PT2
PS
PT1
PX1
PT0
PX0

IP.5
IP.4
IP.3
IP.2
IP.1
IP.0

Timer 2 PT2=1 mayor prioridad.


Define el nivel de prioridad de la interrupcin del puerto serial.
Define el nivel de prioridad de la interrupcin del Timer 1.
Define el nivel de prioridad de la interrupcin externa 1.
Define el nivel de prioridad de la interrupcin del Timer 0.
Define el nivel de prioridad de la interrupcin externa 0.

Aunque los registros de control de los puertos del Timer / Contador y Serie
pertenecen a los registros de funciones especiales les vamos a dedicar un captulo
completo a cada uno de ellos debido a la importancia que presentan para el
desarrollo e interconexin con sistemas perifricos.

Manual de Microcontrolador 8051

19

Dr. Alejandro Vega S.

CAPITULO 3
MANEJO DE LOS TEMPORIZADORES
Y CONTADORES

Regreso al
Men principal
men principal

Temporizadores y Contadores

Captulo 3

3.1 TIMER / CONTADOR .

El 8051 tiene 2 timer/contadores de 16 bits cada uno, llamados Timer 0 y


el Timer 1 respectivamente. Ambos pueden ser configurados para operar como
temporizadores (timers) o como contadores (counters).
Cuando se trabaja como contador, el registro interno del contador, es
incrementado cada vez que existe una transicin negativa (de 1 a 0) por la lnea de
entrada correspondiente a T0 T1. En cambio, cuando funciona como temporizador
"Timer", el registro es incrementado cada 12 periodos de oscilacin 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 0's, se activa la lnea de interrupcin interna correspondiente a TF0 o TF1,
generndose, (si ha sido permitida) una interrupcin.
3.2 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR.
El registro de control del Timer/Contador de la fig. 3.1 es direccionable por Bit,
para activar o desactivar cada una de sus banderas.

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

Fig. 3.1 Registro del control del Timer/Contador

TF1 TCON.7 Bandera de sobreflujo (overflow) del registro del Timer 1.


Activada por hardware cuando el registro que guarda la cuenta
del Timer/Contador 1, incrementa su contenido pasando todos
sus bits de 1's a 0's. Limpiado por hardware cuando existe el
procesamiento de los vectores del servicio de las rutinas de
interrupcin.
TR1 TCON.6 Bit de control de activacin del timer 1. Habilitado/Deshabilitado
por
software para colocar el Timer/Contador en
Encendido/Apagado.
TF0 TCON.5 Bandera de sobreflujo (overflow) del registro del Timer 0.
Activada por hardware cuando el registro que guarda la cuenta
del timer/contador 0, incrementa su contenido pasando todos sus
bits de 1's a 0's. Limpiado por hardware cuando existe el
procesamiento de los vectores del servicio de las rutinas de
interrupcin.

Manual del Microcontrolador

Dr. Alejandro Vega S.

Temporizadores y Contadores

Captulo 3

TR0 TCON.4 Bit de control de


activacin
Habilitado/Deshabilitado por software
Timer/Contador en Encendido/Apagado.

del
para

timer
colocar

0.
el

IE1 TCON.3 Bandera de transicin de la interrupcin externa 1. Activada por


hardware cuando una transicin (de 1 a 0) en la lnea de
interrupcin externa 1,
es detectada.
Limpiada
por
hardware cuando la interrupcin es procesada. (solamente se
acciona si se program la aceptacin de la interrupcin por
transiente, IT1=1).
IT1 TCON.2 Bit
de control del Interrup 1. Activado/Limpiado por
software para especificar el tipo de interrupcin, por nivel bajo
(IT1= 0) o por transiente negativo (IT1=1).
IE0 TCON.1 Bandera de transicin de la interrupcin externa 0 Activada
por hardware cuando una transicin (de 1 a 0) en la lnea de
interrupcin externa 0, es detectada. Limpiada por hardware
cuando la interrupcin es procesada. (solamente se acciona si
se program la aceptacin de la interrupcin por transiente,
IT0=1).
IT0 TCON.0 Bit de control del Interrup 0. Activado/Limpiado por software para
especificar el tipo de interrupcin, por nivel bajo (IT0= 0) o por
transiente negativo (IT0=1). 3.3 registro de modo de control del
timer/contador.

3.3

REGISTRO
DE
TIMER/CONTADOR

MODO

DE

CONTROL

DEL

Este registro permite especificar si se van a trabajar como Temporizadores


(Timers) o como Contadores (Counters), los puertos denominados Timer 0 y Timer 1.
Existen 4 modos de trabajo para estos puertos, los cuales son definidos por la
escritura en los bits M1 y M0 de TMOD fig 3.2.

GATE

C/T

M1

M0

TIMER 1

GATE

C/T

M1

M0

TIMER 0

Fig.3.2 TMOD: Registro del Modo de Control del Timer/Counter


GATE

Cuando TRx (en TCON) est activada y GATE=1, TIMER/COUNTERx


correr. solamente si la lnea INTx est en posicin alta (control por
hardware). Cuando GATE=0, TIMER/COUNTERx correr solamente si
TRx=1 (control por software)

Manual del Microcontrolador

Dr. Alejandro Vega S.

Temporizadores y Contadores

C/T

Captulo 3

Selector de Timer o de Contador. Es limpiado por la operacin del Timer


(entrada del reloj del sistema interno). Es activada por la operacin del
Contador (entrada de la lnea Tx)

M1
M0

Bit selector del modo.


Bit selector del modo.

M1
0
0
1
1

M0
0
1
0
1

MODO
0
1
2
3

ESPECIFICACIN
Timer/contador de 13 bits
Timer/contador de 16 bits
Timer/contador de 8 bits recargables
Timer 0, TL0 Timer/contador de 8 bits, controlado
por los bits
de control del Timer 0 .
TH0 Timer de 8 bits controlado por los bits de Control
del timer 1. ( El Timer 1 no se utiliza )

3.3.1 MODO 0, DEL TIMER/CONTADOR.


En este modo, cualquiera de los 2 Timers, 0 1, trabajan como un contador
de 8 bits, al cual le antecede un predivisor de la frecuencia de conteo. En la fig.3.3
se muestra el modo de operacin 0 para el timer 1.
El registro del Timer 1 est configurado como un registro de 13 bits, que
consisten de los 8 bits de TH1 y los 5 bits menos significativos de TL1. Los 3 bits mas
significativos de TL1 no se utilizan en este modo.

OSC

1/12
0

TL1
5 BITS

C/T
1
ENTRADA T1

TH1
8 BITS

TF1

Inter

TR1
GATE
ENTRADA
INT1

Fig. 3.3 Modo 0, contador de 13 bits con el Timer1

Manual del Microcontrolador

Dr. Alejandro Vega S.

Temporizadores y Contadores

Captulo 3

El valor de la cuenta se puede apreciar en el registro TH1, dado que TL1


solamente acta como divisor de frecuencia, TH1 se puede cargar con cualquier
valor, de 1 a 256 cuentas, pudiendo obtener de esta forma varios retardos,
solamente detectando la bandera se sobreflujo (overflow TF1).
3.3.2 MODO 1 DEL TIMER/CONTADOR
Este modo es utilizado por cualquiera de los 2 Timers, se caracteriza
principalmente por ser un Timer/contador de 16 bits cuyos valores se encuentran
cargados en los registros TH y TL de cada uno de los Timers.
En la fig. 3.4 se puede apreciar la disposicin de estos registros que se
asemejan al modo 0, solo que en el modo 1, actan en cascada.

OSC

1/12
0

TL1
8 BITS

C/T
1
ENTRADA T1

TH1
8 BITS

TF1

TR1
GATE
ENTRADA
INT1

Fig. 3.4 Modo 1 contador de 16 bits con Timer/Contador 1


3.3.3 MODO 2 DEL TIMER/CONTADOR
Este modo puede ser utilizado tanto por el timer 0 como por el 1, tienen un
registro de conteo de 8 bits (TLx).
En la figura 3.5 se presenta el manejo del Timer 1, en el modo 2. El registro
TL1 es cargado automticamente con el contenido de TH1, cuando se produce el
sobreflujo en TL1, el cual adems establece la bandera de TF1.

Manual del Microcontrolador

Dr. Alejandro Vega S.

Inter

Temporizadores y Contadores

OSC

Captulo 3

1/12
0

TL1
8 BITS

C/T
1
ENTRADA T1

TF1

Inter

TR1

TH1
8 BITS

GATE
ENTRADA
INT1

Fig. 3.5 Modo 2, registro de 8 bits autorecargable


3.3.4 MODO 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 bandera TR1=0.
El Timer 0, en ste modo, establece TL0 y TH0 como dos contadores
separados. La figura 3.6 muestra la lgica para el modo 3. TL0 utiliza los bits de
control (C/T, GATE, TR0, INT0) del Timer 0. TH0 es bloqueado como temporizador
"Timer", el cual emplea las seales de control del Timer 1, TR1 y TF1.

OSC

1/12
0

TL0
8 BITS

C/T
1
ENTRADA T0

TF0

Inter

TR0
GATE
ENTRADA
INT0

TH0
8 BITS

OSC
12

TF1
8 BITS

Inter

TR1
Fig. 3.6 Modo 3, 2 timers de 8 bits
El Timer 1 puede ser activado o desactivado con solo salir o entrar al modo 3
respectivamente o puede permanecer siendo utilizado por el puerto Serie cuando

Manual del Microcontrolador

Dr. Alejandro Vega S.

Temporizadores y Contadores

Captulo 3

est generando la frecuencia de oscilacin "Baud rate",o en efecto en cualquier


aplicacin que no se requiere una interrupcin.
3.4 UTILIZACIN DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE PARA
LA TRANSMISIN SERIAL.
El Timer 1 es usado para generar la frecuencia de transmisin /
Recepcin de datos en serie, cuando el puerto es programado para trabajar en el
modo 1 3. La frecuencia de transmisin es obtenida a partir del valor almacenado
en TH1 y el valor de SMOD mediante la siguiente ecuacin:
Baud Rate = 2SMOD x Frec. Del Oscilador
32
12 x [256 (TH1)]
El valor 2SMOD / 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 32
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 a la frecuencia del oscilador proviene del divisor, que
se encuentra en la etapa de control del Timer 1, cuando ste 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 un pulso es detectado, de ah que en la ecuacin se representa como
256-(TH1).
La interrupcin del Timer 1 en ste caso no tendra mucha aplicacin por lo que
se podra deshabilitar.
El Timer 1 acta en modo 2, es decir en modo recargable, el valor de conteo
se encuentra fijo en el registro TH1, el cual se recarga cada vez que existe un
overflow.
La figura 3.7 muestra una tabla de valores de TH1, para generar el Baud
Rate, tomando en cuenta la frecuencia del oscilador.
BAUD
RATE
19.2 kHz
9.8 kHz
4.8 kHz
2.4 kHz
1.2 kHz
137.5 Hz
110 Hz

F osc

TIMER1

SMOD

C/T
VALOR DE TH1
MODO
0
FDH
11.059 MHz
1
2
0
FDH
11.059 MHz
0
2
0
FAH
11.059 MHz
0
2
0
F4H
11.059 MHz
0
2
0
E8H
11.059 MHz
0
2
0
1DH
11.986 MHz
0
2
0
72H
6.000 MHz
0
2
FIG. 3.7 Tabla de valores para generar el Baud Rate

Manual del Microcontrolador

Dr. Alejandro Vega S.

CAPITULO 4
CONTROL DEL PUERTO SERIAL

Regreso al
men principal

Men principal

Puerto Serial

Captulo 4

4.1 PUERTO SERIAL


El puerto serial es un puerto FULL DUPLEX , lo cual significa que puede transmitir y
recibir datos simultneamente . El receptor contiene un almacn Buffer, que le
permite comenzar a recibir un segundo dato sin necesidad de que el primero haya
sido completamente ledo del registro Buffer. Sin embargo si el primer byte
permanece sin ser ledo hasta el final de la recepcin del segundo dato, ste se
perder.
El dato de la Recepcin y de la Transmisin se encuentra en el registro SBUF del
SFR (espacio de funciones especiales).

4.2 REGISTRO DE CONTROL DEL PUERTO SERIAL SCON


El puerto Serie puede ser operado en 4 modos diferentes que son especificados
mediante la escritura en los bits SM0 y SM1 del registro de Control del Puerto Serie
(Fig. 4.1)

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

Fig. 4.1 Registro de control del puerto serie. Bit direccionables.


SMO SCON.7
SM1 SCON.6
SM2 SCON.5

Especifica el modo de control del puerto serie.


Especifica el modo de control del puerto serie.
Habilita la comunicacin del tipo "multiprocesador" utilizado
en los modos 2 y 3. En estos modos, si SM2 = 1, RI no es
activado si el noveno dato recibido (RB8) es 0. En modo 1,
RI no es activado si no se recibe un bit de stop.
En el modo 0, SM2 ser 0.
REN SCON.4 Establece la recepcin serie, cuando REN = 0 se desactiva
la recepcin ( por software ).
TB8 SCON.3 Almacena el noveno bit que ser transmitido en los modos
2y3.
RB8 SCON.2 Es el noveno bit que fue recibido en los modos 2 y 3 . En el
modo 1, si SM = 0, RB8 es el bit de stop recibido.
En el modo 0 RB8 no es usado.
TI
SCON.1 Bandera de interrupcin de la transmisin. Activada por
hardware al final del octavo bit en el modo 0, o al principio
del bit de stop en los otros modos. Debe ser limpiado por
software.
RI
SCON.0 Bandera de interrupcin de la recepcin. Activada por
hardware al final del octavo bit en el modo 0, o al medio
tiempo de trasmitido el bit de stop en los otros modos.
Debe ser limpiado por software.

Manual del Microcontrolador 8051

27

Dr. Alejandro Vega S.

Puerto Serial

SM0 SM1 MODO


0
0
0
0
1
1
1
0
2
1
1
3

Captulo 4

ESPECIFICACIN
BAUD RATE
Registro de corrimiento
F. Osc. /12
UART 8 bits
Variable.
UART 9 bits
F.Osc./32 o /64
UART 9 bits
Variable.

Descripcin del funcionamiento de cada modo.


MODO 0: Los datos de recepcin o transmisin son enviados mediante 8
corrimientos con una frecuencia de 1/12 de la frecuencia de
oscilacin.
MODO 1: 10 bits son los que se transmites por la lnea (TxD) o se reciben por
lnea (RxD). Un bit de inicio (Start bit de nivel 0 lgico). En recepcin
el bit de Fin (Stop), se almacena en RB8 de SCON, si SM2=0. El
Baud Rate (frecuencia de transmisin o recepcin) es variable.
MODO 2: 11 bits son transmitidos (TxD) o recibidos (RxD), un bit de inicio
(Start bit de nivel 0 lgico), 8 bits de datos, un noveno bit de datos
programable, en la transmisin es TB8, en la recepcin es RB8 de
SCON, y un bit de Fin (Stop bit). Su Baud Rate es de 1/32 o 1/64 de
la frecuencia de oscilacin.
MODO 3: 11 bits son transmisin (TxD) o recibidos (RxD), en la misma forma
que el modo 2, slo que aqu la frecuencia de transmisin/recepcin
(Baud Rate) es variable. Se utiliza el Timer 1 para generar el Baud
Rate.

En los 4 modos, la transmisin es inicializada cuando SBUF es utilizado como registro


destino. La recepcin en el modo 0 comienza cuando RI=0, en los otros modos,
cuando se detecta el bit de inicio (START) si REN=1.

Manual del Microcontrolador 8051

28

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

4.3 MODOS DE CONTROL DEL PUERTO SERIAL


Veamos con mayor detalle los 4 modos de control para
transmisin/recepcin de datos por el Puerto Serie, comenzando por el Modo 0.

la

Fig. 4.2 Transmisin serial en Modo 0.

Manual del Microcontrolador 8051

29

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

4.3.1 TRANSMISIN SERIAL UTILIZANDO EL MODO DE CONTROL 0.


Los datos seriales que entran o sale a travs de RxD o TxD respectivamente, son
efectuados mediante 8 corrimientos, con una frecuencia de transmisin (Baud Rate)
de 1/12 de la frecuencia del oscilador. La figura 4.2 muestra el Puerto Serie en Modo
0.
La transmisin es iniciada por cualquier instruccin que utilice SBUF como registro de
Destino, v.gr. MOV SBUF,A . La escritura a SBUF se produce durante la fase 2 de
estado 6 S6P2 del ciclo de mquina, tambin se carga un 1 dentro de la 1 9na.
Posicin del registro de corrimiento y llama al bloque de control de Tx para que
comience a transmitir. Un ciclo completo de la mquina se efectuar entre la escritura
en SBUF y la activacin de la seal de SEND.
SEND acciona la salida del registro de corrimiento la funcin alterna de la lnea P3.0
de salida. Tambin acciona el reloj de corrimiento Shift Clock a la funcin alterna de
la lnea P3.1 de salida. El reloj de corrimiento esta en estado bajo, durante los
estados S3, S4 y S5 de cada ciclo de mquina y en estado alto durante S6, S1 y S2.
En la fase 2 del estado 6, S6P2, de cada ciclo de mquina la seal SEND es activada
y el contenido del registro de corrimiento de transmisin es recorrido hacia la derecha
una posicin (Fig.4.3).

Fig. 4.3 Diagrama de estados del Modo 0.

Manual del Microcontrolador 8051

30

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

Cuando los datos van saliendo por la derecha, ceros van entrando por la izquierda.
Cuando el bit ms significativo MSB, del caracter, est en la posicin de salida del
registro de corrimiento, el 1 que fue inicialmente cargado en la 9na. Posicin est
justo a la izquierda del MSB y todas las dems posiciones a la izquierda se
encuentran cargadas de ceros. Esta condicin establece al bloque de control Tx a
realizar un ltimo corrimiento y despus desactiva SEND y establece TI. Ambas
acciones ocurren en S1P1 del 10mo. Ciclo de la mquina despus de la escritura en
SBUF.
La recepcin es iniciada por la condicin REN=1 y RI=0. En S6P2 del siguiente ciclo
de mquina, la unidad de Control Rx escribe los bits 11111110 al registro de
corrimiento del receptor y en la siguiente fase del reloj activa RECEIVE.

RECEIVE acciona SHIFT CLOCK a la funcin alterna de la lnea P3.1 de salida.


SHIFT CLOCK hace las transiciones del S3P1 y S6P2 de cada ciclo de mquina
cuando se activa RECEIVE el contenido del registro de corrimiento de recepcin, es
recorrido a la izquierda una posicin. El valor que viene de la derecha es el valor que
fue muestreado de la terminal P3.0 y S5P2 del mismo ciclo de mquina.
Como los bits del carcter que se recibe entran por ls derecha, 1s saldrn por la
izquierda. Cuando el cero que fue inicialmente cargado en la posicin ms hacia la
derecha, llega a la posicin mas a la izquierda en el registro de corrimiento, esta
condicin establece en el bloque de Control Rx de realizar un ltimo corrimiento y
carga SBUF. En S1P1 del 10mo. Ciclo de mquina (despus de haber escrito RI=0 en
SCON), RECEIVE es limpiado y RI establecido.

Manual del Microcontrolador 8051

31

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

4.3.1 TRANSMISIN SERIAL UTILIZANDO EL MODO DE CONTROL 1.


En este modo, 10 bits son transmitidos (por TxD) o recibidos (por RxD).Un bit de
inicio START en nivel 0, 8 bits de datos (primero el LSB), y un bit de paro STOP en
nivel 1. En la recepcin , el bit de STOP viene en RB8 de SCON. El Baud Rate es
determinado por la frecuencia de los overflows del Timer 1. La figura 4.4 muestra un
diagrama del Puerto Serie en MODO 1.

Fig. 4.4 Transmisin serial en Modo 1.

Manual del Microcontrolador 8051

32

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

La transmisin es iniciada por cualquier instruccin que escriba en el registro SBUF.


La seal de escritura en SBUF, tambin carga un 1 dentro de la 9na. Posicin del
registro de corrimiento de transmisin y establece en la unidad de Control Tx una
demanda de transmisin. La transmisin comienza en S1P1 del ciclo de mquina
siguiente, en el primer pulso proporcionado por el circuito divisor (%16 de la
frecuencia dada por el Timer 1). Es decir, los datos de entrada estn sincronizados
por el circuito divisor %16, y no por la escritura en SBUF.
La transmisin comienza con la activacin de la seal SEND, la cual introduce el bit
de START en TxD. Un periodo (1/16 de la frecuencia dada por el Timer 1) ms tarde
la seal DATA es activada, la cual permite la salida de los bits que se transmitirn por
TxD. El primer pulso de corrimiento ocurre un perodo despus de esto.
La recepcin es inicializada por una transicin de 1 a 0 en RxD. La lnea RxD es
muestreada a una frecuencia de 16 veces la frecuencia del Baud Rate que ha sido
establecida. Cuando un transiente es detectado el divisor entre 16 es inmediatamente
restablecido y 1FFH es escrito en la entrada del registro de corrimiento.
Cada tiempo que dura el bit recibido, es dividido en 16 perodos. Durante los perodos
7mo. 8vo. 9mo., el valor del bit muestreado, el valor aceptado, es el que se obtuvo en
las ltimas dos muestras. Esto se hace para eliminar ruido. Si el valor aceptado del
primer bit es 1, el circuito receptor es restablecido y la unidad receptora espera otro
transiente de inicio. Si el bit de comienzo es correcto, es decir 0, la recepcin
contina.
Cuando RI=0, SM2=0 o el bit de stop es = 1, el bit de stop se introducir en RB8, los 8
bits de datos en SBUF y RI se activa. A partir de este momento la unidad receptora
espera otra transicin negativa en la lnea RxD.

Fig. 4.5 Diagrama de estados del Modo 1.

Manual del Microcontrolador 8051

33

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

4.3.1 TRANSMISIN SERIE UTILIZANDO LOS MODOS DE CONTROL 2 Y 3


11 Bits son transmitidos (por la lnea TxD) o recibidos (por la lnea RxD); un bit de
inicio (0), 8 bits de datos, un bit programable (9no. Bit) y un bit de stop (1).
En la transmisin el 9no. Bit transmitido es TB8, el cual se le puede asignar al valor 0
o 1. En la recepcin del 9no. Bit recibido en RB8 de SCON.
En el modo 2 el Baud Rate es programable a 1/32 o 1/64 de la frecuencia de
oscilacin. (Fig. 4.6).

Fig. 4.6 Transmisin en Modo 2.

Manual del Microcontrolador 8051

34

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

En el modo3 el Baud Rate es variable y es generado por el Timer 1. (Fig. 4.7)

Fig. 4.7 Transmisin Serie en Modo 3

Manual del Microcontrolador 8051

35

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

La transmisin de iniciada cuando se escribe en SBUF, en ste momento tambin


TB8 se carga en el 9no. Bit del registro de corrimiento.
La transmisin comienza con la activacin de SEND la cual pone el bit de inicio en la
lnea TxD. En un perodo (tiempo que dura un bit transmitindose o recibindose) ,
mas tarde, DATA es activada , lo cual habilita el bit de salida del registro de
transmisin a la lnea TxD.
El primer pulso de corrimiento ocurre un perodo mas tarde. El primer pulso de reloj
pone un 1 (bit de stop), en la posicin del 9no. bit. Despus de esto, solo ceros sean
introducidos por la izquierda mientras que los bits de datos salen por la derecha.
Cuando TB8 est en la posicin de salida del registro de corrimiento, a la izquierda de
ste se encontrar el bit de STOP y a la izquierda del bit de STOP todos los dems
bits del registro sern igual a ceros. Esta condicin establece la unidad de cotrol TX la
cual ser un ltimo corrimiento y entonces desactivar la seal de SEND y
establecer TI.
Esto ocurre en el 11vo. Perodo despus de la escritura en SBUF (Fig. 4.8).

Fig. 4.8 Diagrama de estados de los Modos 2 y 3

La recepcin es iniciada por la deteccin de un transiente negativo (de 1 a 0) en la


lnea RxD, la cual es muestreada a una frecuencia de 16 veces la frecuencia de
Baud Rate que ha sido establecida. Cuando un transiente es detectado el divisor
entre 16 es inmediatamente reestablecido y 1FFH es escrito en la entrada del registro
de corrimiento.

Manual del Microcontrolador 8051

36

Dr. Alejandro Vega S.

Puerto Serial

Captulo 4

Cada tiempo que dura el bit recibido, es dividido en 16 perodos. Durante los perodos
7mo., 8vo. Y 9no, el valor del bit es muestreado, el valor aceptado, es el que se
obtuvo en las ltimas dos muestras. Esto se hace para eliminar ruido. Si el valor
aceptado del primer bit es 1, el circuito receptor es restablecido y la unidad receptora
espera otro transiente de inicio. Si el bit de comienzo es correcto, es decir 0, contina
la recepcin.
Cuando RI=0 y SM2=0 o el 9no. bit de datos = 1, el 9no. bit de datos se introducir en
RB8, los 8 bits de datos en SBUF y RI se activa. A partir de este momento la unidad
receptora espera otra transicin negativa en la lnea RxD.

Manual del Microcontrolador 8051

37

Dr. Alejandro Vega S.

CAPITULO 5
MODOS DE DIRECCIONAMIENTO

Regreso al
Men principal
men principal

Modos de Direccionamiento

Captulo 5

5.1 MODOS DE DIRECCIONAMIENTO.


Los modos
siguientes:

de

direccionamiento

que

la familia del MCS-51 trabaja son los

5.2 DIRECCIONAMIENTO DIRECTO.


En este direccionamiento el operando es especificado por una direccin de 8 bits en
la instruccin. Solamente los datos de la RAM interna y los del campo del SFR
pueden ser directamente direccionados.
EJEMPLO :
ADD

A,7FH

;El Acumulador es sumado al dato que se encuentra en


la direccin 7FH de la RAM interna y el resultado ser
almacenado en el Acumulador.

MOV

A,2EH

;El Acumulador es cargado con el dato que se encuentra en


la direccin 2EH de la memoria RAM interna.

MOV

3DH,4EH;El contenido de la direccin 3DH es cargado con el dato


que se encuentra en la direccin 4EH.

5.3 DIRECCIONAMIENTO INDIRECTO.


En este direccionamiento se utiliza un registro en el cual se encuentra la direccin
del operando. Toda la memoria RAM interna y externa puede ser direccionada
indirectamente.
Los registros de direcciones de 8 bits, pueden ser los registros R0 y R1 del banco
de registros, o el SP.
El registro de direccin de 16 bits puede ser solamente el registro DPTR.
EJEMPLO :
ADD

A,@R0

;El Acumulador es sumado con el contenido de la direccin


que esta apuntando R0.

MOV

A,@R0

;El Acumulador es cargado con el dato que se encuentra en


la direccin apuntada por R0.

MOVX A,@DPTR ;El Acumulador es cargado con el dato que se encuentra en la


direccin apuntada por el DPTR.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Modos de Direccionamiento

MOVX @DPTR,A

Captulo 5

;El contenido del acumulador es guardado en la direccin


apuntada por el D

5.4 DIRECCIONAMIENTO INMEDIATO.


El valor de una constante sigue al cdigo de operacin en el programa.
EJEMPLO :
MOV

A,#64H

;El acumulador es cargado con el dato 64H inmediatamente.

ADD

A,#120

;El acumulador es sumado al nmero decimal 120 y el


resultado se almacena en el acumulador.

MOV

DPTR,#1245H ;El DPTR


inmediata.

es

cargado

con el dato 1245H en forma

5.5 DIRECCIONAMIENTO INDEXADO.


Solamente la memoria del programa puede ser accesada mediante este modo
de direccionamiento y slo en lecturas.
Este modo de direccionamiento es utilizado en las lecturas de tablas de la memoria
del programa o datos que se encuentran como constantes.
Un registro de 16 bits ( el DPTR o el PC), apunta la base de la tabla y mediante el
Acumulador se establece el nmero de la entrada de la tabla. La direccin de la
entrada de la tabla en la memoria del programa est formada por la suma del
Acumulador y el Apuntador de Base (DPTR o PC).
Otro tipo de Direccionamiento indexado, es usando la instruccin "Salto de
casillero". En este caso la direccin del destino el salto es calculada como la suma del
apuntador de base ms el Acumulador.
EJEMPLO :
MOVC A,@A+DPTR;Mueve una constante que se encuentra en la memoria del
programa. El Acumulador es cargado con el dato que se
encuentra apuntado por la direccin formada por la suma
del Acumulador A y el Apuntador de Datos.
MOVC A,@A+PC ;El Acumulador es cargado con dato que se encuentra en la
direccin formada por la suma del mismo Acumulador A y el
Contador del Programa (PC).

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Modos de Direccionamiento

Captulo 5

5.6 DIRECCIONAMIENTO POR REGISTRO


Los 8 registros pueden ser accesados mediante ciertas instrucciones que
simplifican sus cdigos de operacin (opcode) y en la mayora de los casos son ms
rpidas.
Existen 4 bancos de registros, cada banco contiene los 8 registros (R0 a R7). Estos
bancos pueden ser accesados mediante los bits 3 y 4 del PSW.
EJEMPLO :
ADD

A,R7

;El acumulador es cargado con el resultado de suma del


Acumulador y el contenido del registro R7.

DEC

R0

;Decrementa el registro R0.

5.7 TRANSFERENCIA DE DATOS.


5.7.1 RAM INTERNA.
Para poder mover datos de la memoria interna RAM o SFR, existen 8 instrucciones
principales:
MOV A, <fuente>
MOV <destino>,A
MOV <destino>,<fuente>
MOV DPTR,#dato 16 bits
PUSH <fuente>
POP <destino>
XCH A, <byte>
XCHD A, @Ri

;
;
;
;
;
;
;
;

A = <fuente>
<destino = A
<destino> = <fuente>
DPTR = constante de 16 bits inmediata.
INC SP <@SP> (fuente)
(destino) <@SP> ; DEC SP
ACC y <byte> intercambia sus datos.
ACC y @Ri intercambian nibble bajo.

La instruccin MOV <dest>,<fuente> ; permite transferir datos de la memoria


interna RAM y del SFR sin pasar a travs del Acumulador, mientras que las
instrucciones MOV A,<fuente> y MOV <dest>,A utilizan al Acumulador para el
movimiento de datos dentro de la memoria interna RAM.
La instruccin PUSH, primeramente incrementa el Stack Pointer (SP), y despus
guarda el dato dentro de la localidad de memoria apuntada por el Stack.
La instruccin POP, primero toma el dato de la memoria y despus decrementa el
SP. Cabe sealar que si el SP apunta en la localidad 7FH en los dispositivos que no
tienen implementados los 128 bytes altos de memoria interna RAM, NO SE
PODRN SEGUIR ALMACENANDO
DATOS, DEBIDO A QUE ESTOS SE
PERDERAN.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Modos de Direccionamiento

Captulo 5

Arriba de la direccin 80H los datos almacenados con la instruccin PUSH se


pierden y los datos tomados con POP, son indeterminados.
La instruccin XCH A, <direccin> permite al Acumulador y al dato apuntado por la
direccin de intercambiarse entre si. La instruccin XCHD A,@R0
intercambia
los 4 bits menos significativos (low nibbble), de Acumulador con los 4 bits menos
significativos del dato apuntado por el registro R0.

5.7.2 RAM EXTERNA.


Las instrucciones para la transferencia de datos en la memoria RAM externa, son
4 bsicamente:

MOVX A, @Ri
MOVX @Ri,A
MOVX A,@DPTR
MOVX @DPTR,A

;
;
;
;

A
<@Ri>
A
<@DPTR>

<@Ri>
A

<@DPTR>
A

Las habilitaciones de lectura y escritura en RAM externa son activadas solamente


durante la activacin de una instruccin MOVX.

5.7.3 MOVIMIENTO DE TABLAS LOCALIZADAS EN LA MEMORIA DEL PROGRAMA


La mayora de las veces dentro de nuestro programa principal tenemos
algunas constantes, como son palabras de control, contadores, banderas
iniciales, tablas de datos, etc. Por tal motivo, el 8051 utiliza las siguientes
instrucciones solamente en lectura (ya que en escritura no tendr caso por ser una
memoria EPROM o ROM),

MOVC A, @A + DPTR ;
programa
MOVC A, @A + PC
;

A <@A + DPTR>Direccin en memoria de


A <@A + PC> Direccin en memoria de programa.

5.8 INSTRUCCIONES BOOLEANAS.


El 8051 contiene un completo procesador Booleano (por bits), el cual permite ejecutar
instrucciones de movimiento, limpieza, establecimiento, complementacin de un slo
bit, y operaciones de AND y OR entre bits.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Modos de Direccionamiento

ANL C,bit
ANL C,/bit
ORL C,bit
ORL C,/bit
MOV C,bit
MOV bit,C
CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
JC rel

Captulo 5

;
C C .AND. bit
;
C C .AND. .NOT. bit
;
C C .OR. bit
;
C C .OR. .NOT. bit
;
C bit
;
bit C
;
C0
bit 0
C1
;
bit 1
;
C .NOT. C
bit .NOT. bit
;
Brinca si C = 1

;
;

EJEMPLO :
CONTROL
BANDERA

DATA
BIT
ORG 100H
MOV C,BANDERA
MOV P1.0,C

20H
CONTROL,7

La etiqueta BANDERA representa, un bit direccionable de los 128 bits que se


encuentran en la memoria baja RAM interna (desde la direccin 20H a la 2FH), o
de los 128 bits de algunos registros del espacio SFR. En este caso particular,
pertenece al bit 7 de la palabra CONTROL que se encuentra en la direccin 20H de
la RAM interna, la lnea 0 del Puerto 1 es establecida o limpiada dependiendo del
valor de BANDERA.

Otro ejemplo, sera la implementacin de la funcin Booleana OR Exclusivo


por programacin. Partiremos de la funcin siguiente:
C = bit 1 .XRL. bit 2

bit2

bit1

0
1
1
0

0
0
1
1

0
1
0
1

Como podemos apreciar si el bit 2 es igual a 0 el bit 1 tiene el mismo valor


de C, y si el bit 2 es igual a 1, el bit 1 tiene el valor negado de C, de tal forma que su
implementacin seria:

MOV C,bit 1
JNB bit 2,conti:
CPL C

Manual del Microcontrolador 8051

;El carry C = bit 1


;Es bit 2 = 0?, sino salta
;Se complementa C=bit 1

Dr. Alejandro Vega S.

Modos de Direccionamiento

conti: RET

Captulo 5

;Regresa al programa

5.9 INSTRUCCIONES DE SALTO.


5.9.1 SALTOS CONDICIONADOS.
El juego de instrucciones con saltos que estn condicionados a la activacin
o desactivacin de algunas de las banderas del PSW son las siguientes:
JZ rel
JNZ rel
DJNZ <byte>, rel
CJNE A,<byte>,rel
CJNE <byte>,#dato,rel

DJNZ <byte>, rel

;
;
;
;
;

Salta si A = 0
Salta si A 0
Decrementa y salta si no es igual a 0
Salta si A <byte>
Salta si <byte> #dato

;Decrementa y salta si no es igual a 0

Como se vi anteriormente, en el PSW no se tiene la bandera Z, que prueba


el CERO, ms sin embargo, aqu se muestran las instrucciones JZ y JNZ, las
cuales prueban todo el dato del Acumulador para esta condicin.
La instruccin DJNZ (decrementa y salta sino es igual a cero), ejecuta un
lazo N veces, hasta que un "contador" es igual a cero.
EJEMPLO :
MOV

CONTADOR,#10 ; N = 10

LAZO: (comienzo del conjunto de instrucciones)


DJNZ CONTADOR,LAZO
(contina)
De la misma forma podemos apreciar la instruccin CJNE, la cual compara y
salta si el BYTE (registro, Acumulador o direccin) es igual al dato comparado. El
salto es relativo.
En los saltos relativos el rango del desplazamiento es de -128 a +127
bytes con respecto al primer byte siguiente a la instruccin.
5.9.2 SALTOS INCONDICIONADOS.
Las
siguientes:

instrucciones que permiten hacer los saltos incondicionados son las

JMP direccin
JMP @A + DPTR
CALL direccin
RET
RETI
NOP
Manual del Microcontrolador 8051

;
;
;
;
;
;

Salta a la direccin.
Salta a la direccin A + DPTR
Llama a la subrutina "direccin".
Regreso a la subrutina.
Regreso de la interrupcin.
Sin operacin.
7

Dr. Alejandro Vega S.

Modos de Direccionamiento

Captulo 5

En la tabla se muestra una sola instruccin de Salto JMPdirec pero en


realidad existen 3 tipos de saltos; SJMP, LJMP y AJMP los cuales difieren en el
formato de la direccin de destino.
JMP es un Mnemnico genrico el cual puede ser usado (en algunos
compiladores) durante la programacin sin tener en cuenta de ue forma el salto ser
codificado.
La instruccin SJMP, codifica la direccin como un desplazamiento
relativo. La instruccin es de 2 bytes, es decir el PCODE y el salto relativo. Su lmite
es de -128 a +127 bytes a partir de instruccin siguiente al SJMP.
La instruccin LJMP, codifica la direccin como una constante de 16
bits. La instruccin es de 3 bytes de largo, el OPCODE y la direccin en 2 bytes. Este
salto puede desplazarse en todos los 64K de memoria.
La instruccin AJMP codifica la direccin como una constante de 11 bits. La
instruccin es de 2 bytes de largo, el OPCODE el cual contiene3 bits de los 11 bits de
direcciones y el otro byte de 8 bits de direcciones. Cuando la instruccin es ejecutada
esos 11 bits son simplemente sustituidos por los 11 bits ms bajos en el PC. Los 5
bits mas altos permanecen sin alterarse. Estos saltos pueden ser hasta de 2K.
En cualquiera de los casos el programador especifica la direccin al
ensamblador de la misma manera; como una etiqueta o constante de 16 bits. El
ensamblador deber poner la direccin dentro del formato correcto de forma
automtica.
La instruccin RETI es usada para el regreso de una rutina de servicio de
interrupcin. la diferencia con la instruccin RET es que RETI llama al sistema de
control de interrupcin mientras que la interrupcin est en proceso. Si no existe
ninguna interrupcin en proceso, entonces la instruccin RETI es igual a RET.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

CONJUNTO DE INSTRUCCIONES
DEL MICROCONTROLADOR 8051

Regreso
al men
Menu Principal
principal

C-8051

Conjunto de instruciones

ACALL direccin 11
(llamada absoluta)

ACALL llama incondicionalmente a una subrutina localizada en la direccin


indicada. Durante esta instruccin se realizan los siguientes eventos: El contenido del PC se
incrementa dos veces y apunta la direccin de la siguiente instruccin; el apuntador de
apilamiento (Stack Pointer) se incrementa una vez, introduciendo el byte bajo del PC;
incrementa nuevamente el SP para introducir el byte alto del PC; por ltimo, el PC es
cargado con el contenido de la DIRECCIN DESTINO. La ejecucin de las
instrucciones de la subrutina comienza en sta direccin, hasta que encuentre la instruccin
RET, la cual restablece el PC que habr sido almacenado en el SP, continuando nuevamente
con el programa inicial.
La DIRECCIN DESTINO es obtenida por concatenacin sucesiva de los cinco
bits de ms alto orden del PC incrementado; ms los 3 bits de ms alto orden y el byte bajo
del cdigo de operacin (OPCODE). Colocados respectivamente en ese orden a partir del
byte alto, para formar la nueva direccin del PC. En otras palabras, las operaciones
que se llevan a cabo son las siguientes:
OPERACIN: ACALL
(PC)

(SP)

((SP))

(SP)

((SP))

(PC)+2
(SP)+1
(PC7-0)
(SP)+1
(PC15-8)

El PC final es creado por:


(PC15-11)

(PC10-8)

(PC7-0)

(PC15-11 INCREMENTADO)
(OP CODE 15-13) # de la pg.
(OP CODE 7-0) direc. en la pg.

A continuacin se presenta un ejemplo detallado de sta instruccin.

EJEMPLO:
ORG 00H
0000 5100
0002 E8
LAZ02 :
0003 C6
0004 E9
0005 22
0006 02 0200

ACALL LAZO1 ; 0101 0001 0000 0000


MOV A, R0
pg.2
Direc. pg.
XCH A, @R0
MOV A, R1
RET
LJMP 0200H

ORG 0200H
0200 F8 LAZ01: MOV R0, A
0201 22
RET
0202 1102
ACALL LAZO2; 000 1 0001 0000 0010
0204
END
pg.0
Direc. Pg.

Manual del Microcontrolador 8051

44

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

En el ejemplo anterior se muestra en la direccin 0202 el llamado a la subrutina


LAZO2, con el cdigo de operacin 1102, por lo tanto, la direccin a la cual debe de saltar se
forma de la siguiente manera:

PCINC = 0204

OPCODE = 1102

0000 0 010 0000 0100 B

000 1 0001 0000 0010 B

B
A

PC FINAL =

0000 0 000 0000 0010 B = 0002H

La direccin con la cual se carga el PC es 0002. Cabe aclarar que los bits 8 al
12 del OPCODE permanecen siempre constantes (10001), en cualquier llamado del tipo
ACALL.
Como puede observarse tambin, el valor del nibble de ms alto orden del PC INC
y el PC FINAL es el mismo, ello nos limita la longitud del salto.
El destino debe por lo tanto estar dentro del mismo block de 2K de memoria del
programa donde se encuentra la instruccin ACALL.

ADD suma la variable (SRC-BYTE) indicada y el Acumulador, dejando el


resultado en el Acumulador. Las banderas de acarreo y acarreo auxiliar son establecidas, si
hay un acarreo hacia afuera del bit 7 o del bit 3, de otro modo son limpiadas.
Cuando se suman enteros sin signo, la bandera de acarreo indica que ocurrir un sobreflujo.
OV se establece si hay un acarreo del bit 6 al 7 pero sin existir acarreo del bit 7
hacia afuera, o un acarreo hacia afuera del bit 7 pero no del bit 6 al 7; de otro modo OV es
limpiada. Cuando se suman enteros signados, el OV indica un nmero negativo producido
como la suma de dos operandos positivos, o uno positivo producido por la suma de dos
operandos negativos.
Cuatro modos de fuentes de operandos dirigidos estn permitidos: registro,
directo, registro indirecto, o inmediato.

EJEMPLO:
El Acumulador contiene 0C3H (11000011B) y el registro 0 contiene 0AAH
(10101010B). La instruccin, ADD A,R0, dejara 6DH (01101101B) en el acumulador con la
bandera del acarreo auxiliar limpiada y las banderas de acarreo y sobreflujo establecidas .

Manual del Microcontrolador 8051

45

Dr. Alejandro Vega S.

ADD A,<SRC
BYTE>

C-8051

Conjunto de instruciones

ADD A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0010
OPERACIN:

1rrr

ADD
(A)

(A)+(Rn)

ADD A, @Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0010

OPERACIN:

111i

ADD
(A)

(A)+((Ri))

EJEMPLO:

RAM INTERNA
A=21

R0=10

0000

10

0000 28

ADD A,R0

0010

12

0001 26

ADD A,@R0

En la primera instruccin se suman el contenido de A ms el contenido de R0, es


decir : 21 + 10 = 31, el resultado es almacenado en al acumulador, ahora A=31.
En la segunda instruccin se suman el contenido del acumulador y el
contenido de la localidad de memoria (direccin) apuntada por el registro R0, que en este
caso es la 10, es decir: 31 + 12 = 43, el resultado se almacena en el acumulador. Al
trmino de las instrucciones el estado del programa sera A=43, C=0, AC=0, OV=0.

ADD A, directo

Manual del Microcontrolador 8051

46

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0010
OPERACIN:

0101

direccin directa

ADD
(A)

(A)+(directo) ADD A, #dato

ADD A, #dato
BYTES: 2CICLOS: 1
CDIGO DE OPERACIN:
0010
OPERACIN:

dato inmediato

ADD
(A)

PSW7
CY

0100

(A) + #dato

PSW6
CY

PSW2
0V

BANDERAS QUE SE

ACTIVAN

EJEMPLO:

0000 7421
0002 7810
0004 2500
0006 751012
0009 2412
000B

ORG 00H

RAM INTERNA

MOV A,#21H
MOV R0,#10H; A21H
ADD A, 00H ;
A31H
MOV 10H,#12H
ADD A,#12 ;
A43H
END

R0 R1-----R7
0000 10
0009
0010 12
0018

ADDC simultneamente suma el byte variable indicado, la bandera de acarreo y


el contenido del Acumulador, dejando el resultado en el Acumulador. Las banderas de
acarreo-auxiliar y la de acarreo estn establecidas, respectivamente, si hay acarreo hacia el
exterior del bit 3 del bit 7. De otra forma ellas estn limpias.
Cuando se suman enteros signados negativamente la bandera de acarreo, indica que
ocurri un sobreflujo. OV se establece, si hay un acarreo del bit 6 al bit 7 pero no del bit 7

Manual del Microcontrolador 8051

47

Dr. Alejandro Vega S.

ADDC A, <src-byte>
sumar con acarreo
(carry).

C-8051

Conjunto de instruciones

hacia afuera, o del bit 7 hacia afuera pero no del bit 6 al bit 7. de otro modo OV est limpio.
Cuando se suman enteros signados, el OV indica un nmero negativo producido como la
suma de dos operandos positivos un nmero positivo producido por la suma de dos
operandos negativos. Cuatro modos de direccionamiento de operandos fuente estn
permitidos: registro directo, registro indirecto inmediato.

EJEMPLO:
El Acumulador contiene 0C3H (11000011B) y el registro 0 contiene 0AAH
(10101010B) con la bandera de acarreo fija. La instruccin, ADDC A, R0, dejar 6EH
(01101110B) en el acumulador con AC limpiado y las banderas de acarreo y OV
establecidas.
ADDC A, Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0011
OPERACIN:

1rrr

ADDC

(A)

(A)+(C)+(Rn)

EJEMPLO:
A = C3

R0=AA C=1

ADDC A,R0

A 6E
AC 0

C3 = 11000011
AA= 10101010
CT=
1
1 01101110
CY=1
OV=1

ADDC A, @Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0011
OPERACIN:

011i

ADDC

Manual del Microcontrolador 8051

48

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(A)

(A)+(C)+((Ri))

ADDC A, directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0011

OPERACIN:

0101

direccin directa

ADDC
(A)

(A)+(C)+(directo)

ADDC A, #dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0011
OPERACIN:

0101

dato inmediato

ADDC
(A) (A)+(C)+(#dato)

AJMP transfiere la ejecucin del programa a la direccin formada por la


concatenacin de los 5 bits de ms alto orden del PC incrementado, ms los bits del 7 al 5 del
cdigo de operacin y el segundo byte que forma sta instruccin AJMP. El destino debe por
lo tanto estar dentro del mismo block de 2K de memoria del programa donde se encuentra
la instruccin AJMP.
EJEMPLO :
La etiqueta "SALTDR" est en la direccin del programa 0123H. La instruccin,
AJMP SALTDR est en la localizacin 0345H y cargar el PC con 0123H.
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
a10 a9 a8 0 0 0 0 1

Manual del Microcontrolador 8051

a7

49

a6

a5

a4

a3

a1

a1

Dr. Alejandro Vega S.

AJMP direccin 11
(salto absoluto)

C-8051

Conjunto de instruciones

OPERACIN:

AJMP
(PC)

(PC)+2

El PC final es creado por:


(PC15-11)
(PC15-11 INCREMENTADO)
(PC10-8)
(OP CODE 15-13) # de la pg.
(PC7-0)
(OP CODE 7-0) direc. en la pg.

EJEMPLO :
0000 C100
0600 7450
END
ANL <dest.>,<fuente>

ORG 00H
AJMP ETA ;ETA =0600H = 0000 0 110 0000 0000B
ETA: MOV A,#50

ANL Ejecuta la operacin lgica AND, bit a bit entre las variables indicadas y
guarda los resultados en la variable destino. Las banderas no son afectadas.
Esta operacin lgica permite 6 combinaciones de direccionamientos. Cuando
el destino es el acumulador, los direccionamientos pueden ser por registro, directo,
registro-indirecto, inmediato. Cuando el destino es una direccin, la fuente puede ser el
acumulador o el dato inmediato.
NOTA :
Cuando sta instruccin es usada para modificar un puerto de salida, el valor usado
como dato del puerto ser ledo del latch del puerto NO DE LA PATA DEL MISMO.
EJEMPLO :
Si el acumulador contiene OC3H (11000011B) y el registro contiene 55H
(01010101B) luego la instruccin, ANL A,R0 dejar 41H (01000001B) en el acumulador.
Cuando el destino es un byte direccionado directamente, sta instruccin limpiar
combinaciones de bits en cualquier localidad RAM o registro.
El byte mscara que determina el patrn de bits que sern limpiados puede ser una
constante contenida en la instruccin o un valor calculado en el acumulador. La
instruccin, ANL P1,#01110011B, limpiar los bits 7, 3, y 2 del latch del puerto de salida 1.
ANL A,Rn
BYTES: 1

CICLOS: 1

Manual del Microcontrolador 8051

50

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CDIGO DE OPERACIN:
0101
OPERACIN:

1rrr

ANL
(A)

(A)^(Rn)

ANL A,Directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0101
OPERACIN:

0101

direccin directa

ANL
(A)

(A)^(directo)

ANL A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0101
OPERACIN:

011i

ANL
(A)

(A)^((Ri))

ANL A,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0101
OPERACIN:

0100

dato inmediato

ANL
(A)

(A)^#dato

ANL directo,A
BYTES: 2

CICLOS: 1

Manual del Microcontrolador 8051

51

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CDIGO DE OPERACIN:
0101
OPERACIN:

0010

direccin directa

ANL

(directo)

(directo)^(A)

ANL directo,#dato
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0101

OPERACIN:

0011

direccin directa

dato inmediato

ANL

(directo)

(directo)^#dato

EJEMPLO :
A=C3

R0=55

ANL A,R0 ;

11000011 = A
01010101 = R0
01000001 = A x R0 = 41

ANL P1,#01110011B ; si

P1 es puerto de lectura
P1 = 11111111
P1 = 01110011
Limpia los bits 7, 3 y 2 del puerto de salida 1.

ANL C, bit
AND lgico para
bits variables

Si el valor Booleano del bit fuente es un 0 lgico, limpia la bandera de acarreo; de


otro modo deja la bandera de acarreo en su estado corriente. Un slash ("/") precediendo al
operando en el lenguaje de ensamblador indica que el complemento lgico del bit
direccionado es usado como el valor fuente, pero el bit fuente por si mismo no es afectado.
Ninguna otra bandera es afectada.
Slo el direccionamiento directo es permitido por el operando fuente.

Manual del Microcontrolador 8051

52

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

EJEMPLO :
Se coloca la bandera de acarreo si y solo si , P1.0=1, ACC.7=1 y OV=0:
MOV C,P1.0; C
ANL C,ACC.7;
ANL C,/0V;
casos.

P1.0 ; establece el CARRY


C = C x ACC.7 ; Y-lg. del bit ACC.7 con el CARRY
C = C x OV
; Y - lgico con el inverso de la bandera OV C se establece en los 3

ANL C,bit
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1000
OPERACIN:

0010

bit direccionado

ANL
(C)

(C)^(bit)

ANL C,/bit
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1011
OPERACIN:

0000

bit direccionado

ANL
(C)

(C)^/(bit)

CJNE. Compara las magnitudes del primero y segundo operando, y brinca si sus
valores no son iguales. El salto es calculado por la suma algebraica del valor actual del PC y
el desplazamiento relativo (operando REL). La bandera de acarreo es establecida si el valor
entero sin signo de la <palabra destino> es menor que el valor entero sin signo de la <palabra
fuente>; por otro lado el acarreamiento es limpiado. Ningn operando es afectado.
Los primeros dos operandos permiten cuatro combinaciones de modos
de
direccionamiento; el acumulador puede ser comparado con cualquier palabra directamente
direccionada un dato inmediato, y cualquier localidad de RAM indirecta registro
trabajando que puede ser comparado con una constante inmediata.
EJEMPLO :
El acumulador contiene 34H. El registro 7 contiene 56H. La primera instruccin
secuencia,

Manual del Microcontrolador 8051

53

Dr. Alejandro Vega S.

CJNE
<dest>,<fuente>
Compara y brinca
si no es igual

C-8051

Conjunto de instruciones

CJNE R7,#60H,NO_IGUAL
;R7=60H
NO_IGUAL: JC RIG_BAJO

;si R7<60H
;si R7>60H

establece la bandera de acarreo y brinca a la instruccin con la etiqueta NO_IGUAL.


Probando la bandera de acarreo esa instruccin determina si R7 es mayor o menor que
60H.
Si el dato que ha sido presentado al puerto 1 es tambin 34H entonces la instruccin;
ESPERA: CJNE A,P1,ESPERA
limpia la bandera de acarreo y continua con la siguiente instruccin, debido a que el
acumulador es igual al dato ledo del puerto P1. Si es cualquier otro valor el programa deber
de girar en este punto hasta que el puerto 1 tenga el dato 34H.
NOTA :
El dato es tomado directamente de las terminales del puerto.
CJNE A, DIRECTO,REL
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1011
OPERACIN:

(PC)

0101

direccin directa

direccin relativa

(PC) + 3

Si (A) <> (directo)


Entonces:
(PC)

(PC) + salto relativo

Si (A) < (directo)


Entonces:
(C)

De lo contrario:
(C)

Manual del Microcontrolador 8051

1
0

54

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CJNE A,#DATO,REL
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1011
OPERACIN:

(PC)

0101

dato inmediato

direccin relativa

(PC) + 3

Si (A) <> DATO


Entonces:
(PC)

(PC) + salto relativo

Si (A) < dato

Entonces:
(C)

Adems:
(C)

CJNE Rn #DATO, REL


BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1011
OPERACIN:

1rrr

dato inmediato

direccin relativa

CJNE
(PC)

(PC) + 3

Si (Rn) < > dato


Entonces:
(PC)

(PC) + salto relativo

Si (Rn) < dato


Entonces:
(C)

Manual del Microcontrolador 8051

55

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

De lo contrario:

(C)

CJNE @Ri,#DATO,REL
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1011
OPERACIN:

011i

(PC)

dato inmediato

direccin relativa

(PC) + 3

Si ((Ri)) <> dato


Entonces:
(PC)

(PC) + salto relativo

Si ((Ri)) < dato


Entonces:
(C)

De lo contrario:
(C)
CLR A
Limpia el acumulador

CLR A. El acumulador es limpiado (todos los bits se colocan en cero). Las


banderas no son afectadas.
EJEMPLO :
El acumulador contiene 5CH (01011100B).
acumulador colocado a 00H (00000000B).
BYTES: 1

La instruccin, CLR A dejar el

CICLOS: 1

CDIGO DE OPERACIN:
1110
OPERACIN:

0100

CLR
(A)

CLR bit
limpia el bit.

Manual del Microcontrolador 8051

56

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CLR. El bit indicado es limpiado (se convierte a cero). Ninguna otra bandera es
afectada. CLR puede operar sobre una bandera de acarreo o cualquier bit directamente
direccionable.
EJEMPLO :
El puerto 1 ha sido previamente escrito con 5DH (01011101B). La instruccin,
CLR P1.2
dejar el puerto colocado en 59H (01011001B El).
CLR C
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1100
OPERACIN:

0011

CLR
(C)

CLR bit
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
11 00
OPERACIN:

0010

direccin del bit

CLR
(bit)

CPL A. Cada bit del acumulador est lgicamente complementado (complemento


a unos). Los bits que previamente contienen un 1 son cambiados a 0 y viceversa. Las
banderas no son afectadas.

Manual del Microcontrolador 8051

57

Dr. Alejandro Vega S.

CPL A
complemento del
acumulador.

C-8051

Conjunto de instruciones

EJEMPLO:
El acumulador contiene 5CH (01011100B).
acumulador colocado a 0A3H (10100011B).

La instruccin, CPL

A dejar el

CPL A
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:

OPERACIN:

CPL
(A)

/(A)
Complemento del acumulador

CPL BIT
Complemento del bit

CPL BIT. La variable bit especificada es complementada. Un bit el cual ha estado


en 1 es cambiado a 0, y viceversa. Ninguna otra bandera es afectada. CPL puede operar
sobre la bandera de acarreo (carry) o cualquier bit direccionable.
NOTA :
Cuando sta instruccin es utilizada para modificar una terminal de salida, el
valor usado como dato original ser ledo del latch de salida (cerrojo), no de la entrada de la
terminal del puerto 1;
EJEMPLO :
El puerto 1 ha sido previamente escrito con 5DH (01011101B).
La instruccin secuencia,
CPL P1.1
CPL P1.2
dejar el puerto colocado a 5BH (01011011B).
CPL C
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1011

0011

Manual del Microcontrolador 8051

58

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

OPERACIN:

CPL
(C)

/(C)

CPL bit
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1011

0010

direccin del bit

OPERACIN:
(bit)

/(bit)
Complemento del acarreo

DA A, Ajusta el valor de los 8 bits del acumulador, resultado de una suma anterior de
dos variables (cada una en formato BCD), produciendo dos dgitos de cuatro bits. Cualquier
instruccin ADD o ADDC puede haber sido usada para ejecutar la suma.
Si en el acumulador los bits de 3-0 son, ms grandes que 9 (XXXX1010XXXX1111), o si la bandera AC es 1, 6 es sumado al acumulador produciendo el dgito en
BCD del nibble de bajo orden. Esta suma interna establecer la bandera de acarreo si un
acarreo hacia el exterior del campo de los cuatro bits de alto orden, del o contrario, limpiar la
bandera de acarreo.
Si la bandera de acarreo es ahora establecida si los cuatro bits de alto orden ahora
excedieron de nueve (1010XXXX-1111XXXX), estos bits de alto orden son incrementados por
seis, produciendo el dgito BCD en el nibble de alto orden. De igual forma, se establecera la
bandera de acarreo si hubiera un acarreo hacia el exterior de los bits de alto orden, de lo
contrario la bandera ser limpiada. As la bandera de acarreo indica si la suma de las dos
variables BCD, originales es ms grande que 100, permitiendo sumar mltiples decimales con
precisin. OV no es afectado.
Todo esto ocurre durante el ciclo de una instruccin. Esencialmente, esta instruccin
ejecuta la conversin decimal por adicin de 00H, 06H, 60H, 66H al acumulador,
dependiendo del acumulador inicial y las condiciones del PSW.
NOTA:
DA A no puede simplemente covertir un nmero hexadecimal en el acumulador a
notacin BCD; no se aplica DA A a substraccin decimal.
EJEMPLO:

Manual del Microcontrolador 8051

59

Dr. Alejandro Vega S.

DA A
Ajuste decimal del
acumulador por
adicin

C-8051

Conjunto de instruciones

El acumulador contiene el valor 56H (1010110B) representando el paquete de dgitos


BCD del nmero decimal 56. El registro 3 contiene el valor 67H (01100111B) representando
el paquete de dgitos del nmero decimal 67. La bandera de acarreo est establecida. La
secuencia de instrucciones,
ADDC A,R3
DA

ejecutar una suma estndar en complemento a dos binario, resultando el valor 0BEH
(101111110) en el acumulador. Las baderas de acarreo y acarreo auxiliar sern limpiadas.
La instruccin de ajuste decimal alterar entonces el acumulador al valor 24H
(00100100B), indicando el paquete de dgitos del nmero decimal 24, los dos dgitos de bajo
orden de la suma decimal de 56, 67, y el acarreo. La bandera de acarreo ser establecida por la
instruccin de ajuste decimal, indicando que ocurri un sobreflujo. La verdadera suma 56, 67,
y 1 es 124.
Las variables BCD pueden ser incrementadas o decrementaras por adicin de 01H
99H respectivamente. Si el acumulador inicialmente contiene 30H (representando los dgitos
del 30 decimal), entonces la secuencia de las instrucciones,
ADD

A,#99H

DA

dejarn el acarreo establecido y 29H en el acumulador, puesto que 30 + 99 = 129. El byte de


bajo orden de la suma puede ser interpretado como 30 1= 29. En este caso es convencional si
se incluye o no el valor del acarreo como parte del resultado.
BYTES:1

CICLOS: 1

CODIGO DE OPERACIN:
1101

OPERACIN:

0100

DA
Los contenidos del acumulador estn contenidos en BCD
SI

[[(A3-0) > 9] V [(AC) = 1]]


Entonces (A3-0)
(A3-0) + 6

SI

[[(A7-4) > 9] V [(C ) = 1]]


Entonces (A7-4)

Manual del Microcontrolador 8051

60

(A7-4) + 6

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

DEC. La variable indicada es decrementada en 1. Cuando el valor original del BYTE


es 00H al decrementarse pasar a 0FFFH y existir un sobreflujo. Ninguna otra bandera es
afectada. Cuatro operandos de modos de direccionamiento son permitidos: acumulador,
registro, directo registro indirecto.
NOTA:
Cuando sta instruccin es usada para modificar un puerto de salida, el valor usado
como el dato original del puerto ser ledo del latch de salida, no de la terminal de entrada.
EJEMPLO:
El registro 0 contiene 7FH (01111111B). Las localidades 7EH y 7FH de la RAM
interna contienen 00H y 40H, respectivamente. La secuencia de instrucciones,
DEC
DEC
DEC

@R0
R0
@R0

Dejar el registro 0 colocado a 7EH y la localidad de la RAM interna 7EH y 7FH colocada a
0FFH y 3FH. Se indicar adems que hubo un sobreflujo, OV = 1.
DEC

A
BYTES:1

CICLOS:1

CDIGO DE OPERACIN:
0001
OPERACIN:

DEC

DEC
(A)

0100

(A) 1

Rn
BYTES:1

CICLOS: 1

CODIGO DE OPERACIN:
0001
OPERACIN:
(Rn)

1rrr

DEC

(Rn)

Manual del Microcontrolador 8051

61

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

DEC

directo
BYTES:2

CICLOS:

CDIGO DE OPERACIN:
0001
OPERACIN:

0101

DEC
(directo)

direccin directa

(directo) 1

DEC @Ri
BYTES:1

CICLOS:1

CODIGO DE OPERACIN:
0001

0111

OPERACIN:
((Ri))
DIV AB
Divide

((Ri)) - 1

DIV AB divide el entero no signado del acumulador entre el entero no signado del
registro B. El acumulador recibe la parte entera del cociente; el registro B el residuo. El carry
y la bandera OV sern limpiadas.

EXCEPCIN:
Si B contiene originalmente 00H, los valores del acumulador y el registro B ser
indefinido, la bandera de sobreflujo ser establecida. La bandera de acarreo de limpiada en
cualquier caso.
EJEMPLO:
El acumulador contiene 251 (0FBH 11111011B) y B contiene 18 (12H
00010010B). La instruccin,
DIV

AB

Dejar 13 en el acumulador (0DH 00001101B) y el valor 17 (11h 00010001B) en B, puesto


que 251 = (13 x 18) + 17. Carry y OV sern limpiados.

BYTES: 1

CICLOS: 4

Manual del Microcontrolador 8051

62

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CODIGO DE OPERACIN:
1000

0100

OPERACIN: DIV
(A)15-8

(A) / (B)

(B))7-0

DJNZ decrementa en uno la localidad indicada, si el byte no es igual a cero, salta a la


direccin formada por la suma algebraica del PC incrementado y el desplazamiento relativo
<REL>, de otra manera contina con la siguiente instruccin.
Un valor original de 00H pasar a 0FFh. Las bandera no son afectadas. La localidad
decrementada puede ser un registro o un byte direccionado directamente.
NOTA:
Cuando la instruccin es usada para modificar un puerto de salida, el valor usado
como dato original del puerto se leido del latch de salida, no de las terminales de entrada.
EJEMPLO:
Las localidades de la RAM interna 40H, 50H y 60H contienen el valor 01H, 70H y
15H, respectivamente. La secuencia de instrucciones,
DJNZ 40H,LABEL_1
DJNZ 50H,LABEL_2
DJNZ 60H,LABEL_3
Causar un salto a la instruccin con la etiqueta LABEL_2 con los valores 00H, 6FH
y 15H, en las tres localidades de la RAM. El primer salto no se efecta porque el resultado es
cero.
La instruccin provee una forma simple de ejecutar el lazo de un programa un
nmero dado de veces, o provocar un tiempo de retraso moderado (de 3 a 512 ciclos de
mquina) con una sola instruccin. La secuencia de instrucciones,

TOGGLE:

MOV R2,#8
CPL
P1.7
DJNZ R2,TOGGLE

Alternar el P1.7 ocho veces, causando cuatro pulsos de salida que aparecern en el
bit 7 del puerto de salida 1. Cada pulso durar tres ciclos de mquina; dos por DJNZ y uno por
alterar la terminal.

Manual del Microcontrolador 8051

63

Dr. Alejandro Vega S.

DJNZ <byte>,<rel>
decrementa y brinca
si no es cero

C-8051

Conjunto de instruciones

DJNZ Rn,rel
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0000
OPERACIN:

0101

direccin directa

DJNZ
(PC)

(PC) + 2
(Rn)

(Rn) 1
Si (Rn) > 0 (Rn) < 0
Entonces:
(PC)

(PC) + rel

DJNZ directo,rel
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1101

0101

OPERACIN:

DJNZ

Direccin directa

Direccin relativa

(PC)

(PC) + 2
(directo)
(directo) 1
Si (directo) > 0 (directo) < 0
Entonces:
(PC)
INC<byte>
incremento.

(PC) + rel

INC incrementa el byte en 1. Si ste se encuentra inicialmente en 0FFH


pasar a 00H. Las banderas no son afectadas. Cuatro modos de direccionamiento son
permitidos: Acumulador, registro, directo, registro-indirecto.
NOTA :
Cuando asta instruccin es usada para modificar un puerto de salida, el valor usado
como el dato original del puerto ser ledo del latch de salida, no de la terminal de entrada.
EJEMPLO :
El registro 0 contiene 7EH(011111110B). Las localidades de la RAM interna 7EH
y 7FH contienen 0FFH y 40H, respectivamente.

Manual del Microcontrolador 8051

64

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

La instruccin secuencia,
INC @R0
INC R0
INC @R0
dejar el registro 0 colocado a 7FH y las localidades de la RAM interna 7EH y 7FH
conteniendo (respectivamente) 00H y 41H.
INC A
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0000
OPERACIN:

0100

INC
(A)

(A) + 1

NOTA:
En esta instruccin de INC la bandera de paridad se ve afectada.
INC Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0000
OPERACIN:

0rrr

INC
(Rn)

(Rn) + 1

INC directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0000

OPERACIN:

0101

direccin directa

INC

Manual del Microcontrolador 8051

65

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(directo)

(directo) + 1

INC @Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0000
OPERACIN:

INC
((Ri))

INC DPTR
incrementa el apuntador de
datos.

011i

((Ri)) + 1

INC DPTR. Incrementa el valor del apuntador de datos en 1. El incremento en


un registro de 16 bits es optimizado; un sobreflujo del byte de bajo orden del apuntador de
datos (D L) de 0FFH a 00H incrementar el byte de alto orden (D H). Las banderas no son
afectadas.
Este es el nico registro de 16 bits que puede ser incrementado.
EJEMPLO :
Los registros DPH
secuencia de instrucciones,

DPL

contienen

12H

y 0FEH, respectivamente. La

INC DPTR
INC DPTR
INC DPTR
cambiar DPH y DPL a 13H y 01H respectivamente.

INC
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
1010
OPERACIN:

0011

INC

Manual del Microcontrolador 8051

66

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(DPTR)

(DPTR) + 1

JB. Si el bit indicado es uno, salta a la direccin formada por la suma algebraica
del PC incrementado y del byte de desplazamiento relativo, REL; de otra manera
procede con la siguiente instruccin. El bit marcado no se modifica. Las banderas no son
afectadas.
EJEMPLO :
El dato presente en el puerto de entrada 1 es CA (11001010B). El
contiene 56 (01010110B). La secuencia de instrucciones,

acumulador

JB 1.2,ETIQUETA1
JB ACC.2,ETIQUETA2
causar que el programa en ejecucin salte a la instruccin marcada con ETIQUETA2.
JB
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0010
OPERACIN:

0000

direccin del bit

direccin relativa

JB
(C)

(C) + 3

(C)

(C) + rel

Si (bit) = 1
Entonces:

JBC. Si el bit marcado es uno, lo limpia y salta a la direccin formada por la suma
algebraica del C incrementado y del byte de desplazamiento relativo, REL; de otra manera
procede con la siguiente instruccin. Las banderas no son afectadas.
NOTA : Cuando esta instruccin es usada para examinar una terminal de salida, el valor
usado como dato original ser ledo del latch de salida, no de la terminal de entrada.
EJEMPLO :
El acumulador contiene 56H (01010110B). La secuencia de instrucciones,
JBC ACC.3,ETIQUETA1
JBC ACC.2,ETIQUETA2
causar que la ejecucin del programa contine en la instruccin identificada
ETIQUETA2, con el acumulador modificado a 52H (01010010B).
JBC

Manual del Microcontrolador 8051

67

Dr. Alejandro Vega S.

por

JBC bit,rel
Si el bit esta establecido
lo limpia y salta.

C-8051

Conjunto de instruciones

BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0001
OPERACIN:

0000

direccin del bit

direccin relativa

JBC
(PC)

(C) + 3

(bit)
(PC)

0
(PC) + rel

Si (bit) = 1
Entonces:

JC. Si la bandera de acarreo est establecida, salta a la direccin formada por


la suma algebraica del C incrementado y del byte de des desplazamiento relativo, REL; de
otra manera procede con la siguiente instruccin. Las banderas no son afectadas.
EJEMPLO:
La bandera de acarreo es limpiada. La instruccin secuencia,
JC
ETIQUETA 1
CPLC C
JC
ETIQUETA 2
colocar el carry y causar la ejecucin del programa ara continuar con la instruccin
identificada por la etiqueta LABEL 2.
JC
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0100
OPERACIN:

0000

direccin relativa

JC
(C)

Si (C) = 1

(C) + 2

Entonces:
(C)

(C) + rel

JMP @A+DPTR
salto indirecto.

Manual del Microcontrolador 8051

68

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

JUMP @A+DPTR. Suma los ocho bits no signados contenidos en el acumulador


con los 16 bits del apuntador de datos y carga la suma resultante al contador del programa.
Esta ser la nueva direccin para las siguientes bsquedas de las instrucciones.
La suma de los 16 bits es optimizada. El carry de salida de los ocho bits de bajo
orden se propaga a los bits de alto orden. Ni el acumulador ni el dato del apuntador son
alterados. Las banderas no son afectadas.
EJEMPLO :
Un nmero par de 0 a 6 est en el acumulador. La siguiente secuencia de
instrucciones saltar a una de cuatro instrucciones AJMP en un salto empezando por
JMP_TBL:

JMP_TBL:

MOV
DPTR,#JMP_TBL
JMP
@A+DPTR
AJMP ETIQTA0
AJMP ETIQTA1
AJMP ETIQTA2
AJMP ETIQTA3

Si el acumulador es igual a 04H cuando empieza sta secuencia, la ejecucin de


la instruccin JMP @A+DPTR, saltar a la etiqueta ETIQTA2. Recuerda que AJMP es una
instruccin del byte 2, as la instruccin empieza en cada direccin.
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
0111
OPERACIN:

0011

JMP
(PC)

(A) + (DPTR)

JNB. Si el bit indicado es un cero, salta a la direccin formada por la suma


algebraica del PC incrementado y del byte de desplazamiento relativo, REL; de otra
manera procede con la siguiente instruccin.
El bit examinado no es modificado. Las banderas no son afectadas.
EJEMPLO:
El dato presente en el puerto de entrada 1 es 11001010B. El acumulador contiene
56H (01010110B). La instruccin secuencia,
JNB P1.3,ETIQTA1
JNB ACC.3,ETIQTA2
causar la
ETIQTA2.

ejecucin del programa para continuar con la instruccin o etiqueta

Manual del Microcontrolador 8051

69

Dr. Alejandro Vega S.

JNB bit,rel
salta si el bit no es
colocado

C-8051

Conjunto de instruciones

BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0011
OPERACIN:

0000

bit de direccin

direccin relativa

JNB

(PC)

(PC) + 3

Si (bit) = 0
Entonces (PC)

(PC) + rel

JNC. Si el bit de acarreo es un cero, salta a la direccin formada por la suma


algebraica del PC incrementado y del byte de desplazamiento relativo, REL; de otra manera
procede con la siguiente instruccin. La bandera de acarreo no es modificada.

EJEMPLO :
La bandera de acarreo est establecida. La secuencia de instrucciones:
JNC ETIQTA1
CPL C
JNC ETIQTA2
limpiar el acarreo y continuar la ejecucin del programa en la instruccin identificada con
la etiqueta ETIQTA2
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0101
OPERACIN:

0000

direccin relativa

JNC
(PC)

(PC) + 2

Si (C) = 0
Entonces (PC)
JNZ rel
salta si
el acumulador no es
cero.

(PC) + rel

JNZ. Si cualquier bit del acumulador es un 1, salta a la direccin formada por


la suma algebraica del PC incrementado y del byte de desplazamiento relativo, REL; de otra
manera procede con la siguiente instruccin. La bandera de acarreo no es modificada. de
otra manera procede con la siguiente instruccin.

Manual del Microcontrolador 8051

70

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

EJEMPLO :
El acumulador originalmente contiene 00H. La secuencia de instrucciones,
JNZ
INC
JNZ

ETIQUETA1
A
ETIQUETA2

colocar el acumulador a 01H y saltar a la instruccin identificada con ETIQUETA2.


BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0111
OPERACIN:

0000

direccin relativa

JNZ
(PC)

(PC) + 2

Si (A) $ 0
Entonces (PC)

(PC) + rel

JZ. Si todos los bits del acumulador son cero, salta a la direccin formada por
la suma algebraica del PC incrementado y del byte de desplazamiento relativo, REL; de otra
manera procede con la siguiente instruccin. El acumulador no se modifica. Las banderas no
son afectadas.
EJEMPLO :
El acumulador originalmente contiene 01H. La secuencia de instrucciones,
JZ ETIQUETA 1
DEC A
JZ ETIQUETA 2
cambiar el acumulador a 00H y causar que la ejecucin del programa contine en la
instruccin identificada por ETIQUETA 2.
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0110

0000

Manual del Microcontrolador 8051

direccin relativa

71

Dr. Alejandro Vega S.

JZ rel
salta si el acumulador
es cero.

C-8051

Conjunto de instruciones

OPERACIN:

JZ
(PC)

Si (A) = 0
Entonces (PC)

LCALL direccin 16
llamada larga.

(PC) + 2
(PC) + rel

LCALL llama una subrutina que puede empezar en cualquier parte de la memoria
de programa (64K bytes). La instruccin suma tres al contador del programa para que apunte
a la direccin de la siguiente instruccin, luego incrementa el SP introduciendo el byte bajo del
PC e incrementa nuevamente el SP para introducir el byte alto del PC. El PC se carga con el
segundo y tercer byte de la instruccin LCALL. La ejecucin de las instrucciones de la
subrutina comienza en sta direccin, hasta que encuentre la instruccin RET, la cual
restablece el PC que haba sido almacenado en el SP, continuando nuevamente con el
programa inicial. Las banderas no son afectadas.
EJEMPLO :
Inicialmente el apuntador de apilamiento es igual a 07H. La etiqueta "SBRTN" es
asignada a la memoria del programa en la localidad 1234H. Despus de la ejecucin la
instruccin, LCALL
SUBRTN se localiza en 0123H, el apuntador de apilamiento
contendr 09H, las localidades de la RAM interna 08H y 09H contendr 26H y 01H, y la PC
contendr 1235H.
BYTES: 3

CICLOS: 2

0001
OPERACIN:
(PC)
(SP)
((SP))
(SP)
((SP))
(PC)

LJMP direccin 16
salto largo.

0010

direc. 15-direc. 8

direc. 7-direc. 0

LCALL

(PC) + 3
(SP) + 1
(PC7-0)
(SP) + 1
(PC15-8)
direc.15-0

LJMP causa un salto incondicional a cualquier parte en el espacio de memoria del


programa (64K bytes). El PC se carga con los 2 ltimos bytes de la instruccin y salta para
continuar con la ejecucin del programa a partir de esa direccin. Las banderas no son
afectadas.
EJEMPLO :
La etiqueta "SALTO" es asignada a la instruccin del programa de memoria en
la localidad 1145H.

Manual del Microcontrolador 8051

72

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

0156 021145

LJMP SALTO

1145 7827

SALTO: MOV R0,#27

La instruccin LJMP se localiza en 0156H, cargar el contador del programa con


1145H y saltar a dicha direccin continuando la ejecucin del programa en ese punto.
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0000
OPERACIN:

0010

direc. bits 15-8

direc. bits 7-0

LJMP
(PC)

direc.15-0

MOV. La variable indicada por el segundo operando "Byte Fuente" es copiada en


la localidad especificada por el primer operando "Byte destino". La palabra fuente no es
afectada. Ningn otro registro o bandera es afectado.
Esta es la operacin ms extensa y flexible con que cuenta el microcontrolador.
Quince combinaciones de modos de direccionamiento de fuente y destino son
permitidos.
EJEMPLO :
La localidad de la RAM interna 30H contiene el dato 40H. El valor de la RAM
interna 40H es 10H. El dato presente en el puerto de entrada 1 es 11001010B (0CAH).
00
0000 7830
0002 E6
0003 F9
0004 87F0
0006 A790
00088590A0
0000

ORG 00H
MOV R0,#30H
MOV A,@R0
MOV R1,A
MOV B,@R1
MOV @R1,P1
MOV P2,P1

;
;
;
;
;
;

R0 30H
A 40H
R1 4OH
B 10H
RAM(40H) 0CAH
P2 #0CAH

END
deja el valor 30H en el registro 0, 40H en ambos el acumulador y el registro 1, 10H en el
registro B, y 0CAH (11001010B) ambos en la localidad 40H de la RAM y sobre el puerto 2
de salida.
MOV A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:

Manual del Microcontrolador 8051

73

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

1110
OPERACIN:

1rrr

MOV
(A)

(Rn)

MOV A,directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1110
OPERACIN:

0101

direccin directa

MOV
(A)

(directo)

MOV A,ACC no es una instruccin vlida.


MOV A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1110
OPERACIN:

011i

MOV
(A)

((Ri))

MOV A,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0111
OPERACIN:

0100

dato inmediato

MOV
(A)

#dato

MOV Rn,A

Manual del Microcontrolador 8051

74

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1111

OPERACIN:

1rrr

MOV

(Rn)

(A)

MOV Rn,directo
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1010
OPERACIN:

1rrr

direccin directa

MOV
(Rn)

(directo)

MOV Rn,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0111
OPERACIN:

1rrr

dato inmediato

MOV

(Rn)

#dato

MOV directo,A
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1111
OPERACIN:

0101

direccin directa

MOV

Manual del Microcontrolador 8051

75

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(directo)

(A)

MOV directo,Rn
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1000
OPERACIN:

1rrr

direccin directa

MOV

(directo)

(Rn)

MOV directo,directo
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
1000
OPERACIN:

0101

direc. directa(dest.)

direc.directa(fuen.)

MOV

(directo)

(directo)

MOV directo,@Ri
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1000
OPERACIN:

011i

direccin directa

MOV

(directo)

((Ri))

MOV directo,#dato
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0111
OPERACIN:

0101

direccin directa

dato inmediato

MOV

Manual del Microcontrolador 8051

76

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(directo)

#dato

MOV @Ri,A
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1111

OPERACIN:

011i

MOV

((Ri))

(A)

MOV @Ri,directo
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1010
OPERACIN:

011i

direccin directa

MOV

((Ri))

(directo)

MOV @Ri,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0111
OPERACIN:

011i

dato inmediato

MOV
((Ri))

#dato

MOV. El bit indicado por el segundo operando es copiado en la localidad


especificada por el primer operando. Uno de los operandos debe ser la bandera de
acarreo; el otro puede ser cualquier bit direccionable directamente. Ningn otro registro o
bandera es afectado.
EJEMPLO :

Manual del Microcontrolador 8051

77

Dr. Alejandro Vega S.

MOV
<bit destino>
<bit fuente>
movimiento de bit

C-8051

Conjunto de instruciones

La bandera de acarreo es originalmente establecida a 1 lgico. El dato presente


en el puerto 3 de entrada es C5 (11000101B). El dato previamente escrito al puerto 1 de
salida es 35H (00110101B).Las instrucciones,
MOV P1.3,C
MOV C,P3.3
MOV P1.2,C
dejarn el acarreo limpiado y cambiar el puerto 1 a 39H (00111001B).

MOV C,bit
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1010
OPERACIN:

0010

direccin del bit

MOV
(C)

(bit)

MOV bit,C
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
10 01
OPERACIN:

direccin del bit

MOV
(bit)

MOV DPTR,#DATO 16
carga al apuntador de datos
con una constante de 16 bits.

0010

(C)

MOV DPTR.El apuntador de datos es cargado con un dato de 16 bits contenidos


en el segundo y tercer bytes de la instruccin, que corresponden al byte de alto orden (DPH)
y al byte de bajo orden (DPL) del DPTR respectivamente. Las banderas no son afectadas.
Esta es la nica instruccin que mueve un dato de 16 bits.
EJEMPLO :
La instruccin, MOV DPTR,#35A4H cargar el valor 35A4H en el apuntador de
datos : DPH almacenar 35H y DPL almacenar A4H.

BYTES: 3

CICLOS: 2

Manual del Microcontrolador 8051

78

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

CDIGO DE OPERACIN:
10 01
OPERACIN:

0000

E
MA

dato inmediato 7-0

MOV

DPH
DPL

dato inmediato 15-8

#dato15-8
#dato7-0

La instruccin MOVC carga el acumulador con un byte cdigo, constante del


programa de memoria. La direccin del byte escogido es la suma de los 8 bits del
contenido original del acumulador y los 16 bits del registro base, el cual puede ser el
apuntador de datos (DPTR) o el contador del programa (PC). En el ltimo caso, el PC es
incrementado a la direccin de la siguiente instruccin antes de ser sumado con el
acumulador. En cualquiera de los casos el registro base no es alterado. La suma de los 16 bits
es optimizada. Un acarreo de salida del byte de bajo orden se propaga al byte de alto orden.
Las banderas no son afectadas.
EJEMPLO :
Un valor entre 0 y 3 est en el acumulador. La siguiente instruccin trasladar el
valor en el acumulador a uno de cuatro valores definidos por el DB (byte definido) directivo.
REL_PC:

INC
MOVC
RET
DB
DB
DB
DB

A
A,@A + PC
66H
77H
88H
99H

Si la subrutina es llamada con el acumulador igual a 01H, retornar con 77H en


el acumulador. La instruccin INC A es necesitada antes de la instruccin MOVC para saltar
por encima de la instruccin RET a las constantes de la tabla.
MOVC A,@A + DPTR
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
10 01
OPERACIN:

0011

MOVC
(A)

((A) + (DPTR))

MOVC A,@A + PC

Manual del Microcontrolador 8051

79

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
10 00
OPERACIN:

0011

MOVC
(PC)
(A)

(PC) + 1
((A) + (PC))

La instruccin MOVX transfiere el dato entre el acumulador y un byte de la memoria


externa. Existen dos tipos de instrucciones; las que proveen un direccionamiento indirecto
de 8 bits y las que lo hacen con 16 bits para accesar un dato de la RAM externa.
En el primer caso, el contenido de R0 y R1 proveen los 8 bits de la parte baja de
la direccin dada por el puerto P0. Ocho bits son suficientes para una expansin externa
I/O decodificada o para un arreglo RAM relativamente pequeo. Para algunos arreglos
grandes, cualquier puerto de salida o terminal puede ser usado para direccionar bits de salida
de alto orden. Estas terminales debern ser controladas por instrucciones de salida que
precedan la instruccin MOVX.
ATENCIN:
En el direccionamiento indirecto de 8 bits, en el momento de accesar el Dato, el
contenido del P2 que se encuentra en el Espacio de Funciones Especiales ser enviado sin
excepcin a las terminales de salida del puerto.
Debe tenerse especial cuidado cuando se accese una memoria de 256 bytes, de
utilizar las terminales restantes del puerto de manera correcta, o bien, cuando se utilice una
memoria mayor y se desee accesar por pginas, por medio de los registros R0 o R1,
asegurarse que el P2 seale el nmero de pgina adecuado.
En el segundo caso, el apuntador de datos DPTR, genera una direccin de 16 bits.
Por el puerto P2 saldr el byte de alto orden (el contenido de DPH) de la direccin y por el
puerto P0 el byte de bajo orden (DPL) el cual se multiplexa con el dato. En el registro de
funciones especiales el P2 retiene su contenido previo mientras el buffer de salida del P2
est emitiendo el contenido de DPH. Esta forma es ms rpida y ms eficiente cuando accesa
arreglos de datos muy grandes (hasta 64K bytes), dado que no necesita instrucciones
adicionales en el P2 para accesar el dato.
Es posible en algunas situaciones mezclar los dos tipos de MOVX. Un arreglo de
RAM grande con sus lneas de direccin de alto orden manejadas por P2 puede ser
direccionado por va del apuntador de datos, o guardando primeramente en el puerto P2 la
direccin de alto orden, seguida por una instruccin MOVX usando R0 o R1.
EJEMPLO :

Manual del Microcontrolador 8051

80

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

Una RAM externa de 256 bytes, usando un multiplexor de lneas dato/direccin


(v.gr. el 74HC373), es conectada al puerto 0 del 8051. El puerto 3 provee lneas de control
por la RAM externa. El puerto 1 y 2 son usados por I/O normal. El registro 0 y 1 contienen
12H y 34H.
La localidad 34H de la RAM externa contiene el valor 56H. La secuencia de
instrucciones,
MOVX
MOVX

A,@R1
@R0,A

copia el valor 56H en el acumulador y la localidad 12H de la RAM externa.


MOVX A,@Ri
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
1110
OPERACIN:

001i

MOVX

(A)

((Ri))

MOVX A,@DPTR
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
1110
OPERACIN:

0000

MOVX

(A)

((DPTR))

MOVX @Ri,A
BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
1111
OPERACIN:

001i

MOVX
((Ri))

(A)

MOVX @DPTR,A

Manual del Microcontrolador 8051

81

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
1111
OPERACIN:

0000

MOVX

(DPTR)

(A)

MUL AB multiplica los ocho bits del acumulador y los del registro B. El byte de
bajo orden del producto de 16 bits, se almacena en el acumulador, y el byte de alto orden en
B. Si el producto es ms grande que 255 (0FFH) la bandera de sobreflujo es establecida, de lo
contrario es limpiada.
EJEMPLO :
Originalmente el acumulador contiene el valor 80 (50H). El registro B contiene el
valor 160 (0A0H). La instruccin, MUL AB dar el producto 12,800 (3200H), as B es
cambiado a 32H (00110010B) y el acumulador es limpiado. La bandera de sobreflujo es
colocada, el acarreo es limpiado.

BYTES: 1

CICLOS: 4

CDIGO DE OPERACIN:
1010
OPERACIN:

0100

MUL
(A)7-0

(A) X (B)

(B)15-8
NOP
No operacin

NOP. La ejecucin contina con la instruccin siguiente. No se afecta, ni el


contador del programa, ni registros o banderas.
EJEMPLO :
Se desea producir un pulso bajo en la terminal de salida del bit 7 del puerto 2,
exactamente durante los ltimos 5 ciclos. Una secuencia SETB/CLR generara un pulso de un
ciclo, de tal manera, que se necesitaran 4 ciclos adicionales. Esto puede realizarse de la
siguiente manera (se asume que no existen interrupciones):
CLR P2.7
NOP
NOP

Manual del Microcontrolador 8051

82

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

NOP
NOP
SETB P2.7
NOP
BYTES:

CICLOS: 1

CDIGO DE OPERACIN:
0000
OPERACIN:

0000

NOP
(PC)

(PC) + 1

ORL ejecuta la operacin OR lgica entre las variables indicadas, guardando el


resultado en el byte destino. Las banderas no son afectadas.
Los dos operandos permiten 6 combinaciones de modos de direccionamiento.
Cuando
el destino es el acumulador, la fuente puede provenir de los siguientes
direccionamientos; por registro, directo, registro indirecto, o direccionamiento inmediato;
cuando el destino es una direccin directa, la fuente puede ser el acumulador o dato
inmediato.
NOTA :
Cuando sta instruccin es usada para modificar un puerto de salida, el valor usado
como dato original, ser ledo del latch de salida del puerto y no de sus terminales.
EJEMPLO :
Si el acumulador contiene 0C3H (11000011B) y el R0 contiene 55H (01010101B)
entonces la instruccin, ORL A,R0 dejar el acumulador conteniendo el valor 0D7H
(11010111B).
Con el direccionamiento directo, la instruccin puede colocar combinaciones de
bits en cualquier localidad RAM interna o Registro. El patrn de bits que sern
establecidos es determinado por un byte mscara, el cual puede ser tambin un dato o valor
constante en la instruccin o una variable calculada en el acumulador. La instruccin, ORL
1,#00110010B colocar los bits 5, 4 y 1 del puerto de salida 1.
ORL A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0100

1rrr

Manual del Microcontrolador 8051

83

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

OPERACIN:

ORL
(A)

(A) V (Rn)

ORL A,directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0100
OPERACIN:

0101

direccin directa

ORL
(A)

(A) V (directo)

ORL A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0100

OPERACIN:

011i

direccin directa

ORL
(A)

(A) V ((Ri))

ORL A,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0100
OPERACIN:

0100

dato inmediato

ORL

(A)

(A) V #dato

ORL directo,A
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:

Manual del Microcontrolador 8051

84

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

0100
OPERACIN:

0010

direccin directa

ORL

(directo)

(directo) V (A)

ORL directo,#dato
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0100

OPERACIN:

0011

direccin directa

dato inmediato

ORL

(directo)

(directo) V #dato

ORL. Establece la bandera de acarreo si el valor Booleano es un 1 lgico; de otra


manera no lo cambia. Un slash (o/o) precediendo el operando en el lenguaje ensamblador,
indica que el complemento lgico del bit de direccionado es usado como el valor fuente,
pero el bit original no es afectado. Las banderas no son afectadas.

EJEMPLO :
Coloca la bandera de acarreo s y solo s P1.0 = 1, ACC.7 = 1, 0V = 0:
MOV
ORL
ORL

C,P1.0
C,ACC.7
C,/OV

;CARGA EL ACARREO CON LA TERMINAL DE ENTRADA P10


;O ACARREO CON EL ACC. BIT 7
;O ACARREO CON EL INVERSO DE OV.

ORL C,bit
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
0111
OPERACIN:

0010

bit de direccin

ORL
(C)

Manual del Microcontrolador 8051

(C) V (bit)

85

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

ORL C,/bit
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
10 10
OPERACIN:

0000

bit de direccin

ORL
(C)

(C) V /(bit)

POP. El contenido de la localidad de la RAM interna direccionada por el apuntador


de apilamiento es ledo, y el apuntador de apilamiento es decrementado por 1. El valor ledo
es transferido al byte indicado por el direccionamiento directo. Las banderas no son
afectadas.
EJEMPLO :
El apuntador de apilamiento originalmente contiene el valor 32H, y las localidades
de RAM interna de la 30H a la 32H contienen los valores 20H, 23H y 01H,
respectivamente. La instruccin secuencia,
POP DPH
POP DPL
dejar el apuntador de apilamiento igual al valor 30H y el apuntador de datos se
colocar a 0123H. En ste punto la instruccin, POP SP dejar el apuntador de
apilamiento colocado a 20H. Nota que en ste caso especial el apuntador de apilamiento
estaba decrementado a 2FH antes de ser cargado con el valor extrado (20H).

BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1101
OPERACIN:

0000

Direccin directa

POP
(directo)---((SP))
(SP)---(SP) - 1

PUSH directo
almacenamiento en la
pila.

Push. El apuntador de apilamiento es incrementado por 1. El contenido de la


variable indicada es luego almacenada en la localidad direccionada por el apuntador de
apilamiento en la RAM interna. Las banderas no son afectadas.
EJEMPLO :

Manual del Microcontrolador 8051

86

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

Al entrar en una rutina de interrupcin el apuntador de apilamiento contiene


09H. El dato apuntador contiene el valor 0123H. La instruccin secuencia,
PUSH
PUSH

DPL
DPH

dejar el apuntador de apilamiento colocado a 0BH y guarda 23H y 01H en las localidades
de la RAM interna 0AH y 0BH, respectivamente.
BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1100
OPERACIN:

0000

direccin directa

PUSH
(SP)
((SP))

(SP) + 1
(directo)

RET extrae de la pila los bytes de bajo y alto orden del PC, decrementando dos veces
el apuntador de apilamiento. Una vez que el PC es cargado con la nueva direccin,
contina con la ejecucin del programa principal, en la instruccin siguiente a la
instruccin que llam a la subrutina (ACALL o LCALL). Las banderas no son afectadas.
EJEMPLO :
El apuntador de apilamiento originalmente contiene el valor 0BH. Las localidades de
la RAM interna 0AH y 0BH contienen los valores 23H y 01H, respectivamente. La instruccin,
RET dejar el apuntador de apilamiento con el valor 09H. La ejecucin del programa
continuar en la localidad 0123H.

BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
0010
OPERACIN:

0010

RET
(PC15-8)
(SP)
(PC7-0)
(SP)

((SP))
(SP) - 1
((SP))
(SP) - 1
RETI
retorno de interrupcin.

Manual del Microcontrolador 8051

87

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

RETI extrae de la pila, los bytes de alto y bajo orden del PC y restablece la lgica
de Interrupcin que le permite aceptar interrupciones adicionales de la misma o menor
prioridad. El apuntador de apilamiento es decrementado dos veces. Los otros registros no
son afectados; el estado de pre-interrupcin del PSW no es automticamente resguardado. La
ejecucin del programa contina a la direccin resultante, que generalmente es la
instruccin siguiente al punto en el cual la interrupcin fue detectada.
NOTA :
Una interrupcin de ms alta prioridad puede interrumpir el servicio de
interrupcin de una de baja prioridad. Si una interrupcin de nivel bajo del mismo nivel
de prioridad est pendiente cuando la instruccin RETI es ejecutada entonces una instruccin
deber ser ejecutada antes de que dicha interrupcin pendiente sea procesada.
EJEMPLO :
El apuntador de apilamiento originalmente contiene el valor 0BH. Una interrupcin
fue detectada durante la instruccin finalizando en la localidad 0122H. La localidad de la
RAM interna 0AH y 0BH contienen el valor 23H y 01H, respectivamente. La instruccin,
RETI dejar el apuntador de apilamiento igual a 09H y regresar al programa ejecutando la
localidad 0123H.

BYTES: 1

CICLOS: 2

CDIGO DE OPERACIN:
0011
OPERACIN:

0010

RETI

(PC15-8)
(SP)
(PC7-0)
(SP)

((SP))
(SP) - 1
((SP))
(SP) - 1

RL. Los ocho bits en el acumulador son rotados un bit a la izquierda. El bit 7
es rotado a la posicin del bit 0. Las banderas no son afectadas.
EJEMPLO :
El acumulador contiene el valor 0C5H (11000101B). La instruccin, RLA deja
el acumulador conteniendo el valor 8BH (10001011B) con el acarreo no afectado.
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0010

0011

Manual del Microcontrolador 8051

88

Dr. Alejandro Vega S.

RL A

C-8051

Conjunto de instruciones

OPERACIN:

RL

(An + 1)
(A0)
a

(A7)

(An) n = 0 - 6

RLC. Los ocho bits en el acumulador y la bandera de acarreo son rotados un bit a la
izquierda. El bit 7 se mueve a la bandera de acarreo; el estado original de la bandera de
acarreo se mueve a la posicin del bit 0. Las banderas no son afectadas.
EJEMPLO :
El acumulador contiene el valor 0C5H (11000101B), y el acarreo es cero. La
instruccin, RLC A deja el acumulador conteniendo el valor 8AH (10001010B) con el
acarreo establecido.
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0011
OPERACIN:

0011

RLC

(An + 1)
(A0)
(C)
a

(An) n = 0 - 6
(C)
(A7)

RR. Los ocho bits en el acumulador son rotados un bit a la derecha. El bit 0 es
rotado a la posicin del bit 7. Las banderas no son afectadas.
EJEMPLO :
El acumulador contiene el valor 0C5H (11000101B). La instruccin, RR A
deja al acumulador conteniendo el valor 0E2H (11100010B) con el acarreo no afectado.
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0000
OPERACIN:

0011

RR
(An)
(A7)

(An + 1) n = 0 - 6
(A0)
RRC A rota el acumulador
a la derecha a travs de la
bandera de acarreo.

Manual del Microcontrolador 8051

89

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

RRC. Los ocho bits en el acumulador y la bandera de acarreo son rotados un bit a
la derecha. El bit 0 se mueve a la bandera de acarreo; el valor original de la bandera de
acarreo se mueve a la posicin del bit 7. Las otras banderas no son afectadas.
EJEMPLO :
El acumulador contiene el valor 0C5H (11000101B), el acarreo es cero. La
instruccin, RRC A deja al acumulador conteniendo el valor 62 (01100010B) con el
acarreo establecido.
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0001
OPERACIN:

0011

RRC
(An)
(A7)
(C)

(An + 1) n = 0 - 6
(C)
(A0)

SETB coloca el bit indicado en uno. SETB puede operar sobre la bandera de acarreo
cualquier bit direccionable directamente. Las otras banderas no son afectadas.
EJEMPLO :
La bandera de acarreo es limpiada. El puerto 1 de salida ha sido escrito con el valor
34H (00110100B). Las instrucciones,
SETB C
SETB P1.0
dejan la bandera de acarreo colocada a 1 y cambian el dato de salida en el puerto 1 a 35H
(00110101B).
SETB C
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1101
OPERACIN:

0011

SETB
(C)

SETB bit

Manual del Microcontrolador 8051

90

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1101
OPERACIN:

0010

bit de direccin

SETB
(bit)

SJMP. El programa de control salta incondicionalmente a la direccin


indicada. El destino del salto es calculado por la suma del desplazamiento REL, ms el
contenido del Contador del Programa PC incrementado. El rango de destinaciones permitido
es de 128 bytes hacia atrs y de 127 bytes hacia adelante.

EJEMPLO :
La etiqueta RELAD es asignado a una instruccin en la localidad del programa
de memoria 0123H. La instruccin,
0100 8021
102

SJMP
RELAD
EL PC APUNTA A ESTA LOCALIDAD

0123 7420

RELAD: MOV A,#20

NUEVA INSTRUCCIN A EJECUTAR

ensamblar en la localidad 0100H. Despus la instruccin es ejecutada, el PC contendr el


valor 0123H.
NOTA :
Por debajo o por arriba de las condiciones la instruccin siguiente SJMP estar en
102H. Adems, el byte de desplazamiento de la instruccin ser el offset relativo (0123H0102H) = 21H. De otra forma, un SJMP con un desplazamiento de 0FEH sera una
instruccin de lazo infinito.

BYTES: 2

CICLOS: 2

CDIGO DE OPERACIN:
1000

OPERACIN:

0000

direccin relativa

SJMP
(PC)

Manual del Microcontrolador 8051

(PC) + 2

91

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

(PC)

(PC) + rel

SUBB substrae la variable indicada y la bandera de acarreo juntas del acumulador,


dejando el resultado en el acumulador. SUBB establece la bandera de acarreo C, (borrow), si
un prstamo es necesitado por el bit 7, por otro lado limpia C. AC es establecido si es
necesitado un prstamo por el bit 3, de otra manera es limpiado. OV es establecido si es
necesitado un prstamo por el bit 6, pero no por el bit 7, o por el bit 7, pero no por el bit 6.
Cuando se substraen enteros signados la seal de OV, indica un nmero negativo
producido cuando un valor negativo es substrado de un valor positivo, o un resultado
positivo cuando un nmero positivo es substrado de un nmero negativo.
El operando fuente permite cuatro modos de direccionamiento: Por registro, directo,
registro-indirecto e inmediato.
EJEMPLO :
El acumulador contiene 0C9H (11001001B), el registro 2 contiene 54H
(01010100B), y la bandera de acarreo es establecida. La instruccin, SUBB A,R2 dejar el
valor 74H (01110100B) en el acumulador, con la bandera de acarreo y AC limpiados pero OV
establecido.
Note que 0C9H menos 54H es 75H. La diferencia entre ste y el resultado siguiente
es debido a la bandera de acarreo (borrow) que ha sido establecida antes de la operacin. Si el
estado del acarreo no es conocido antes de empezar un substraccin simple o de precisin
mltiple, l debe de ser limpiado por un instruccin CLR C.
SUBB A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1001
OPERACIN:

1rrr

SUBB
(A)

(A) - (C) - (Rn)

SUBB A,directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1001
OPERACIN:

0101

direccin directa

SUBB
(A)

Manual del Microcontrolador 8051

(A) - (C) - (directo)

92

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

SUBB A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1001
OPERACIN:

011i

SUBB
(A)

(A) - (C) - ((Ri))

SUBB A,#dato
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1001
OPERACIN:

0100

dato inmediato

SUBB
(A)

(A) - (C) - #dato

SWAP A intercambia los NIBBLES (campos de 4 bits) de alto y bajo orden del
acumulador (bits 3-0 y bits 7-4). La operacin puede tambin ser vista como una instruccin
de rotacin de 4 bits sin acarreo. Las banderas no son afectadas
.
EJEMPLO:
El acumulador contiene el valor 0C5H (11000101B). La instruccin, SWAP A
deja al acumulador conteniendo el valor 5CH (01011100B).
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1 1 00
OPERACIN:

SWAP
(A3-0)

0100

(A7-4)

XCH carga el acumulador con el contenido de la variable indicada, al mismo


tiempo que escribe el contenido original del acumulador a la variable indicada. El operando
fuente/destino puede usar direccionamiento por registro, directo, o registro indirecto.

Manual del Microcontrolador 8051

93

Dr. Alejandro Vega S.

SWAP A
intercambia la parte
alta y parte baja del
acumulador.

C-8051

Conjunto de instruciones

EJEMPLO:
R0 contiene la direccin 20H. El acumulador contiene el valor 3FH
(00111111B). La localidad de la RAM interna 20H contiene el valor 75H (01110101B). La
instruccin, XCH A,@R0 dejar la localidad 20H de la RAM conteniendo los valores 3FH
(001111111B) y 75H (01110101B) en el acumulador.
XCH A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1 1 00
OPERACIN:

1rrr

XCH
(A)

(Rn)

XCH A,directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
1100
OPERACIN:

0101

direccin directa

XCH
(A)

(directo)

XCH A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1100
OPERACIN:

011i

XCH
(A)

Manual del Microcontrolador 8051

((Ri))

94

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

XCHD intercambia el NIBBLE de bajo orden del acumulador (bits 3-0), con el
NIBBLE bajo del dato de la RAM interna indirectamente direccionada por el registro
especificado. Las banderas no son afectadas.

EJEMPLO:
R0 contiene la direccin 20H. El acumulador contiene el valor 36H (00110110B).
La localidad 20H de la RAM interna contiene el valor 75H (01110101B). La instruccin,
XCHD A,@R0 dejar la localidad 20H de la RAM conteniendo el valor 76H
(01110110B) y en el acumulador 35 (00110101B).

BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
1101
OPERACIN:

011i

XCHD
(A3-0)

((Ri3-0))

XRL ejecuta la operacin lgica OR-Exclusivo entre las variable indicadas,


guardando el resultado en el destino. Las banderas no son afectadas. Los dos operandos
permiten 6 combinaciones de modos de direccionamiento. Cuando el destino es el
acumulador, la fuente puede usar direccionamiento directo, por registro, por registro
indirecto, e inmediato; cuando el destino es una direccin directa, la fuente puede ser el
acumulador o un dato inmediato.
NOTA :
Cuando esta instruccin es usada para modificar un puerto de salida, el valor usado
como dato original del puerto ser ledo del latch de salida, no de la terminal de entrada.
EJEMPLO:
Si el acumulador contiene 0C3H (11000011B) y el registro 0 contiene 0AAH
(10101010B) entonces la instruccin, XRL A,R0 dejar al acumulador conteniendo el
valor 69H (01101001B).
Cuando el destino es un byte directamente direccionado, sta instruccin puede
complementar combinaciones de bits en cualquier localidad RAM interna o registro. El
patrn de bits que ser complementado es entonces determinado por un byte mscara, ya sea
una constante contenida en la instruccin o una variable calculada en el acumulador en
tiempo real .

Manual del Microcontrolador 8051

95

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

La instruccin, XRL P1,#00110001B deber complementar los bits 5, 4 y 0 del


puerto de salida 1.

XRL A,Rn
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0110
OPERACIN:

1rrr

XRL
(A)

(A) A (Rn)

XRL A,directo
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0110
OPERACIN:

0101

direccin directa

XRL

(A)

(A) A (directo)

XRL A,@Ri
BYTES: 1

CICLOS: 1

CDIGO DE OPERACIN:
0110
OPERACIN:

011i

XRL
(A)

(A) A ((Ri))

XRL A,#DATA
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:

Manual del Microcontrolador 8051

96

Dr. Alejandro Vega S.

C-8051

Conjunto de instruciones

0110
OPERACIN:

0100

dato inmediato

XRL
(A)

(A) A #dato

XRL directo,A
BYTES: 2

CICLOS: 1

CDIGO DE OPERACIN:
0110
OPERACIN:

0010

direccin directa

XRL

(directo)

(directo) A (A)

XRL directo,#dato
BYTES: 3

CICLOS: 2

CDIGO DE OPERACIN:
0110
OPERACIN:

0011

direccin directa

dato inmediato

XRL
(directo)

Manual del Microcontrolador 8051

(directo) A #dato.

97

Dr. Alejandro Vega S.

Transmisin serial

Perifricos

EJEMPLO DE TRANSMISIN DE DATOS EN SERIE (INTERFASE RS-232C), DEL


MICROCONTROLADOR 8051 HACIA UNA COMPUTADORA DEL TIPO PCCOMPATIBLE CON IBM.

Un parmetro importantsimo , que debe ser tomado en cuenta, al inicio de todos los
diseos, es la capacidad de almacenamiento de informacin de los dispositivos principalmente
en laos sistemas de adquisicin de datos, donde, el tratamiento, anlisi y clculo de resultados
es indispensable.
El almacenar datos en memoria RAM, es relativamente sencillo y fcil de realizar, la
rapidez de acceso de estos circuitos, permite procesar datos en tiempo real, ms sin embargo, su
capacidad de almacenamiento es relativamente limitada. Por otro lado, aunque de menor
velocidad de acceso, los discos flexibles y discos duros, ofrecen una capacidad mucho mayor de
almacenamiento.
Por tal motivo, en este ejemplo se plantea la transmisin de datos, de la memoria RAM
hacia una computadora del tipo IBM-PC compatible, haciendo uso del puerto serie del
microcontrolador y su interconexin a la interfase del tipo RS-232C.
El protocolo de transmisin de datos en serie, contempla lo siguiente:
El primer bit que se transmite es el bit de inicio (Start bit), el cual tiene la caracterstica
de ser siempre un 0 lgico.
Posteriormente los bits que le siguen son los 8 bits de datos, comenzando con el menos
significativo D0.
La transmisin termina con el envio de un ltimo bit, denominado bit de paro (Stop
bit), que siempre ser un 1 lgico.

El microcontrolador 8051, cuenta con 4 modos de transmisin de datos en serie, de los


cuales utilizaremos, el modo 1, es decir, con el Baud Rate variable dependiendo del valor
almacenado en TH1, con un reloj de 11.0592 MHz.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Regreso al
men principal

Transmisin serial

Perifricos

Las caractersticas de transmisin son las siguientes:


FRECUENCIA DE TRANSMISIN
NMERO DE BITS POR CARCTER
BITS DE INICIO
BITS DE PARO
SIN PARIDAD

9600 Hz.
8 BITS
1 BIT
1 BIT
1 BIT

El ICL-232 es un doble emisor/receptor, es decir contiene dos emisores que convierten


los niveles de entrada TTL/CMOS a niveles de salida RS-232C (-/+ 10V), y dos receptores que
efectuan la operacin inversa a niveles TTL/CMOS (0-5V). Su ventaja principal es que para su
funcionamiento requiere solamente de una fuente de alimentacin, (5V) ya que internamente
contiene dos convertidores de voltaje de CD/CD (fig. 2).

C1+

V+
C1-

Doblador de voltaje de
5 a 10 V +

16

Inversor de voltaje de
10+ a -10 V

15

Vcc
Gnd
T1salida

14

C2+

13

R1entrada

C2-

12

R1salida

V-

11

T1entrada

T2salida

10

T2entrada

R2 entrada

R2 salida

Fig. 2 ICL232 (de intel)


El ejemplo propone la adquisicin de datos por medio de un convertidor analgico digital el
ADC0801, el cual adquiere datos cada 3 segs. Y el microcontrolador los almacena en una
memoria RAM de 32k. Cada 24 horas los datos son enviados a la computadora va el puerto
serie, el nmero total de datos enviados es 28800 (20xmin * 60xhora * 24 horas).
El diagrama 1, muestra el interconexionado del microcontrolador 8051 con el C D/A
ADC0801, el circuito reforzador ICL232 o MAX-232 y la conexin con el puerto serie de la
computadora IBM-PC o compatible.

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Transmisin serial

Perifricos

BUS DE DATOS

31
33pF
19
5V

11.0592Mhz

18

33pF

10uF
RESET

12
13
14
15

100k
1N4148

1
2
3
4
5
6
7
8

EA/VP

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

X1
X2
RESET

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

INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

RD
WR
PSEN
ALE/P
TXD
RXD

39
38
37
36
35
34
33
32

3
4
7
8
13
14
17
18

21
22
23
24
25
26
27
28

1
11

D0
D1
D2
D3
D4
D5
D6
D7

2
5
6
9
12
15
16
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
27

OC
G
74LS373

17
16
29
30
11
10

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
1

VCC

11
12
13
15
16
17
18
19

O0
O1
O2
O3
O4
O5
O6
O7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
27

CE
OE
VPP

11
12
13
15
16
17
18
19

D0
D1
D2
D3
D4
D5
D6
D7

CE
RD
WR

27256

43256

8031
CONEXIONADO DEL
CONECTOR STANDARD
DEL PUERTO SERIE
DEL LA PC-IBM
1
14
2
15
3
16
4
17
5
18
6
19
7
20
8
21
9
22
10
23
11
24
12
25
13

18
17
16
15
14
13
12
11

22uF
TxD

8
7
6
5
4
3
2
1

RS232

RxD

RS232

RQS
CTS

22uF

TTL/CMOS
TTL/CMOS
RS232
RS232

1
2
3
5

22uF

DSR

ICL-232

2
3

GND
DTR
CD8

VI+

VICLKR

19

150pF
10K

CLK
CS
RD
WR
INTR

Ventrada
masa analog.

VCC
9

VREF

AGND

ADC0801
1

22uF
3.3K

RI

9
10
11
12
13
14
15
16

DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7

DTR
DSR

3.3K

1K

74HC08
A121
A132
A143

A
B
C

6
4
5

G1
G2A
G2B

CONNECTOR DB25

Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

15
14
13
12
11
10
9
7

2.5V
10K

74HC138
INTERCONEXIONADO DEL MICRCONTROLADOR PARA
LA TRANSMISION DE DATOS EN SERIE HACIA LA PC
Size
Document Number
SISTEMA MINIMO 5
A
Date:

April 29, 1998

Sheet

REV
of

PROGRAMA DE TRANSMISIN DE DATOS POR EL PUERTO SERIE

;********************************************
;***** PROGRAMA DE TRANSMISION DE DATOS ****
;* POR EL PUERTO SERIE DEL MICROCONTROLADOR *
;** CON EL CONVERTIDOR A/D SE TOMAN DATOS **
;** CADA 3 SEGUNDOS Y SE ALMACENAN EN RAM **
;** DURANTE 24 HORAS SE TIENEN 28800 DATOS **
;** DESPUES SON TRANSMITIDOS POR EL PUERTO **
;* SERIE. SE UTILIZA UN RELOJ DE 11.0592MHz *
;********************************************
0000
0000
0001
00E0
0000
0000 020100

BANDER:
BANTEM:
CAD:
MEMRAM:

ORG 00H
EQU 20H.0
EQU 20H.1
EQU 0E0H ;DIRECCION DEL C-A/D
EQU 0000H
LJMP TRANSMI

;********************************************

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Transmisin serial

0003
0003
0005
0006
0007

000B
000B
000E
0011
0013
0015
0017

Perifricos

D200
E2
F0
32

;******
RUTINA DE SERVICIO DE LA
*******
;******
INTERRUPCION 0
*******
;********************************************
ORG 03H
SETB BANDER
MOVX A,@R0 ;SE ADQUIERE EL DATO CA/D
MOVX @DPTR,A ;SE ALMACENA EL DATO RAM
RETI

758C1F
758A00
DC04
D201
7C30
32

;********************************************
;******
RUTINA DE SERVICIO DE LA
*******
;******
INTERRUPCION DEL TIMER 0
*******
;********************************************
ORG 0BH
MOV TH0,#01FH ;SE CARGA LA BASE DE
MOV TL0,#00H ;TIEMPO 62,500 uSeg.
DJNZ R4,SALE
SETB BANTEM
MOV R4,#30H ;30H=48
SALE:
RETI

0023
0023 E0
0024 A3
0025 32
0100
0100
0103
0105
0107
010A
010D
0110
0113
0116

75A0E0
7800
7C30
758DFD
758BFD
900000
758C1F
758A00
758921

0119
011C
011F
0121
0123
0126
0128
0129
012C
012E
012F

758851
75A883
7F70
7E80
3001FD
C201
E2
3000FD
C200
A3
DEF2

;********************************************
;******
RUTINA DE SERVICIO DE LA
********
;****** INTERRUPCION DEL PUERTO SERIE *******
;********************************************
ORG 23H
MOVX A,@DPTR
INC DPTR
RETI
ORG 100H
TRANSMI:MOV P2,#CAD
MOV R0,#00H
MOV R4,#30H
MOV TH1,#0FDH ;PARA GENERAR EL BAUD
MOV TL1,#0FDH ;RATE A 9600
REPIT: MOV DPTR,#MEMRAM
MOV TH0,#01FH ;SE CARGA LA BASE DE
MOV TL0,#00H
;TIEMPO 62,500 uSeg.
MOV TMOD,#21H ;CON RELOJ DE 11.059
;SE ACTIVA EL T0 EN MODO 1 Y T1 EN MODO 2
MOV TCON,#51H ;INT0 POR TRANSCIENTE
MOV IE,#83H ;SE PERMITE LA INT T0
MOV R7,#70H ;R7R6 CONTADORES DE
LAZ0:
MOV R6,#80H ;28800 DATOS
TIAD:
JNB BANTEM,TIAD ;TIEMPO DE ADQUIS.
CLR BANTEM
;DE 3 seg.
MOVX A,@R0
;COMIENZA LA CONVERSI.
TICONV: JNB BANDER,TICONV ;TIEMPO DE CONVER.
CLR BANDER
INC DPTR
DJNZ R6,TIAD

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

Transmisin serial

0131 DFEE
0133 C2A8
0135 C2A9

0137
013A
013C
013F
0140
0142
0144
0146
0149
014B
014D

759840
D2AC
900000
E0
7F70
7E80
F599
3099FD
C299
DEF7
DFF3

014F 80BC
0000

Perifricos

DJNZ R7,LAZ0
CLR IE.0 ;DESACTIVA LAS INTERRUP.
CLR IE.1 ;DEL T0 Y INT0
;SE TERMINA LA ADQUISICION DE DATOS Y
;COMIENZA LA TRANSMISION DE DATOS.
MOV SCON,#40H ;MODO1 DE TRANSMISION
SETB IE.4
;SE PERMITE INTERRUPCION
MOV DPTR,#MEMRAM ;DEL PUERTO SERIE
MOVX A,@DPTR ;SE CARGA 1er.DATO
MOV R7,#70H ;SE RECARGAN LOS CONTADS.
LAZ2:
MOV R6,#80H ;CON 28800
LAZ3:
MOV SBUF,A ;SE TRANSMITE EL DATO
ESPTR: JNB SCON.1,ESPTR
CLR SCON.1
DJNZ R6,LAZ3
DJNZ R7,LAZ2
;EL CICLO SE VUELVE A REPETIR INDEFINIDAMENTE
SJMP REPIT
END

Manual del Microcontrolador 8051

Dr. Alejandro Vega S.

INTERCONEXIN DE UN EXHIBIDOR ALFANUMRICO, DE CRISTAL LIQUIDO


DE 2 LINEAS POR 16 CARACTERES, AL MICROCONTROLADOR 8051
En la mayora de los sistemas a desarrollar, resulta indispensable el uso de un
exhibidor, el cual, nos muestre mediante mensajes escritos, las demandas del aparato, los
requerimientos, los mandatos externos, las sealizaciones, las alarmas, etc. El uso de un
exhibidor alfanumrico nos proporciona la solucin a esta necesidad, facilitando el manejo
y aprendizaje del aparato o dispositivo que ha sido implementado.
En esta seccin se propone utilizar el Modulo de cristal lquido de 2 lneas por 16
caracteres por lnea, el cual es fabricado por diversas compaas, tales como, Philips, Sharp,
AND y algunas otras.
Este exhibidor puede interconectarse directamente, con el bus de datos de cualquier
microprocesador o microcontrolador, gracias a que tiene un bus de datos con tres estados.
Adems contiene una memoria RAM que le permite almacenar hasta 128 caracteres y una
memoria ROM con 160 caracteres matriciales de 5x7 puntos, y 30 caracteres de 5x10 puntos.
La ventana del exhibidor permite ver 32 caracteres a la vez, en 2 lneas de 16 caracteres cada
una.

EXHIBIDOR ALFANUMRICO DE 2 LINEAS X 16 CARACTERES

14 13 12 11 10 .... 3 2 1

ASIGNACION DE LAS TERMINALES


TERMINAL
1
2
3
4

SEAL
GND
VDD
Vo
RS

R/W

DB0

8
9-13
14

DB1
DB2
DB7

FUNCION
TIERRA 0 Volts.
5 Volts
VOLTAJE DE CONTRASTE
RS=1 ENTRADA DE DATO, RS=0
ENTRADA DE CONTROL
R/W=1 LECTURA
R/W=0 ESCRITURA
SEAL DE HABILITACION DEL
CIRCUITO
BIT MENOS SIGNIFICATIVO DEL
BUS DE DATOS
BUS DE DATOS 8 BITS
BIT MS SIGNIFICATIVO DEL
BUS DE DATOS

El procedimiento para inicializar el exhibidor es el siguiente:

Regreso
al
Men principal
men principal

Manejo de un Exhibidor y Teclado

Interconexin de Perifricos

1. _ Primeramente se establece el tipo de interfase a la cual el exhibidor se va a conectar, en


nuestro caso, se trata de un microcontrolador con un bus de datos de 8 bits, el cual
se conecta directamente.
La primera palabra de control que se enva al exhibidor es el nmero 38H, el cual
significa lo siguiente:
Cdigo
38H

RS
0

R/W
0

DB7
0

DB6
0

DB5
1

DB4
1

DB3
1

DB2
0

DB1
0

DB0
0

Se enva la palabra de control al exhibidor (RS=0 y R/W=0), los bits DB5 y DB4
especifican el tamao del bus, y el bit DB3 el nmero de lneas del exhibidor.
Se espera un lapso de tiempo de 40 s antes de enviar la siguiente instruccin.
NOTA: Cada instruccin, toma un cierto tiempo de ejecucin que va de 40 s a 1.64 ms. (Ver
tiempos de ejecucin en la Tabla1.)

2. - Se limpia toda la memoria del exhibidor y se regresa la pantalla del exhibidor a su


posicin inicial.

Cdigo
01H

RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
0

DB2
0

DB1
0

DB0
1

Esta instruccin toma un tiempo de 1.64 ms,

3. -Se establece el movimiento del cursor hacia la derecha, la pantalla del exhibidor
permanece fija con la entrada de los caracteres.

Cdigo
06H

RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
0

DB2
1

DB1
1

DB0
0

Esta instruccin toma un tiempo de 40 s.


4.-Se prende la pantalla del exhibidor, se activa el cursor sealando la
prximo caracter de entrada y se desactiva el parpadeo.

Cdigo
0EH

RS
0

R/W
0

DB7
0

DB6
0

DB5
0

DB4
0

DB3
1

DB2
1

posicin

DB1
1

del

DB0
0

5._Se posiciona el cursor en el primer caracter y la primera lnea.

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

Cdigo
80H

RS
0

R/W
1

DB7
0

Interconexin de Perifricos

DB6
0

DB5
0

DB4
0

DB3
0

DB2
0

DB1
0

DB0
0

Esta instruccin toma un tiempo de 40 s

__

6.-A partir de aqu se puede comenzar a enviar los caracteres que se desean exhibir
dejando un tiempo entre cada uno de ellos de 40 s. mnimo, y con RS=1
Por ejemplo se enviar n las letras A y B, por lo tanto se escribir
cdigo ASCII para la letra A, el cual se ejecuta en 40 s.
Cdigo
41H
A

RS
1

R/W
0

DB7
0

DB6
1

DB5
0

el siguiente

DB4
0

DB3
0

DB2
0

DB1
0

DB0
1

DB4
0

DB3
0

DB2
0

DB1
1

DB0
0

__

Ahora se enva el cdigo respectivo de la letra B.


Cdigo
42H

RS
1

R/W
0

DB7
0

DB6
1

DB5
0

Se escribe la letra B y se incrementa el cursor.


A
B
__

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

Interconexin de Perifricos

BUS DE DATOS

33pF

31
19

11.05592MHz
VCC
18
10uF
RESET

EA/VP

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

X1
X2

33pF
9

100K

12
13
14
15
1
2
3
4
5
6
7
8

1N4148

RESET
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7

INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

39
38
37
36
35
34
33
32

3
4
7
8
13
14
17
18

21
22
23
24
25
26
27
28

1
11

D0
D1
D2
D3
D4
D5
D6
D7

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

2
5
6
9
12
15
16
19

10
9
8
7
6
5
4
3
25
24
21
23
2
26
27

OC
G
74LS373

17
16
29
30
11
10

RD
WR
PSEN
ALE/P
TXD
RXD

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
1

5V

O0
O1
O2
O3
O4
O5
O6
O7

11
12
13
15
16
17
18
19

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
27

CE
OE
VPP

D0
D1
D2
D3
D4
D5
D6
D7

11
12
13
15
16
17
18
19

CE
RD
WR

27256

43256

BUS DE DATOS

8031

EXHIBIDOR
LM 16256

14

1 6

5V
100K
D
13

Vcc

11

17
16
15
14

12
74HC08

A12

D0
D1
D2
D3

A14
6
4
5

A
B
C

Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

G1
G2A
G2B

15
14
13
12
11
10
9
7

0.01uF

0.1uF
12
13

VCC
Y1
Y2
Y3
Y4
X1
X2
X3
X4

5 OSC
1
2
3

1
1
2
3
4
11
10
8
7

10K

6 KEYB
DA
/OE
GND
9

RESET DEL 8031


INTERCONEXIONADO DEL MICROCONTROLADOR
8051 CON EL TECLADO Y EL EXHIBIDOR
Size
Document Number

74HC138

REV

SISTEMA MINIMO2

Date:

March 25, 1998

Sheet

of

PROGRAMA PARA MANEJO DEL EXHIBIDOR ALFANUMRICO


; ESTE PROGRAMA COMIENZA A PARTIR DE LA LOCALIDAD 4000H POR
; SER LA LOCALIDAD DE INICIODEL EMULADOR, PERO PUEDE COMENZAR
; A PARTIR DE CUALQUIER LOCALIDAD.

4000
4000
4000
4000
4000

4000
4003
4005
4008
400B

ORG 4000H
;LAS DIRECCIONES DEL EXHIBIDOR SON
;LA 8000H PARA CONTROL DEL EXHIBIDOR
;LA 8001H PARA EXHIBICI`N DEL CARACTER
;APUNTADAS POR LOS REGISTROS R0 Y P2.

904075
7800
75A050
124046

EXHIBE: MOV DPTR,#CONTEX


MOV R0,#00H
MOV P2,#80h
LCALL XCBDOR

;CONTROL DEL
;EXHIBIDOR

;ENVIA LOS CARACTERES DE


:CONTROL AL EXHIB

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

400B
400B A3
400C 124046

INC DPTR
LCALL XCBDOR

400F
400F
400F

;SE ENVIA EL CARACTER 01 DE CONTROL


;(LIMPIA PANTALLA), EL CUAL REQUIERE
;1.64MsEG. PARA SU EJECUCION.

400F 124056

LCALL LIMPIA

4012

;CARGA EL APUNTADOR CON EL PRIMER


;MENSAJE

4012 90407D
4015
4015

BIEN:

MOV DPTR,#BIENV
;SE ENVIA A LA RUTINA QUE EXHIBE
;EN DOS LINEAS EN UNA VEZ.

4015 124030
4018 124064
401B
401B
401B

LCALL DOBLEX
LCALL TIME
;SE ENVIA EL CARACTER 01 DE CONTROL
;(LIMPIA PANTALLA), EL CUAL REQUIERE
;1.64MsEG. PARA SU EJECUCION.

401B 7800
401D 124056
4020
4020
4020
4023
4025
4028
402B

Interconexin de Perifricos

MOV R0,#00
LCALL LIMPIA
;SE ENVIA UN SOLO MENSAJE A LA PRIMERA
;LINEA A PARTIR DE LA COLUMNA 5.

90409F
7485
12403A
124064
124056

402E 80E2

4030
4030
4030
4030

MOV DPTR,#MEDIO
MOV A,#85H
;ESCRIBE EN LA 1era
LCALL COEXH ;LINEA (5ta. COLUMNA)
LCALL TIME
LCALL LIMPIA
TEREXH: SJMP BIEN

;************************************
;**** SUBRUTINA DE CONTROL Y PRE-****
;**** SENTACION DEL EXHIBIDOR
****
;************************************

4030
4032
4034
4035
4037
4039
403A
403C
403F
4040
4042
4043
4045

7450
113A
A3
74C0
113A
22
7800
75A080
F2
1151
08
1146
22

DOBLEX: MOV A,#80


;ESCRIBE EN LA 1era.
ACALL COEXH ;LINEA (1era. COLUMNA)
INC DPTR
MOV A,#0C0H
;ESCRIBE EN LA 2da.
ACALL COEXH ;LINEA (1era. COLUMNA)
FEXH:
RET
COEXH: MOV R0,#00H
MOV P2,#80H
MOVX @R0,A
ACALL QARNTA
INC R0
ACALL XCBDOR
RET

4046
4047
4048
404A

E4
93
6006
F2

XCBDOR: CLR A
MOVC A,@A+DPTR
JZ TERMIN
MOVX @R0,A

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

404B
404D
404E
4050

1151
A3
80F6
22

ACALL QARNTA
INC DPTR
SJMP XCBDOR
TERMIN: RET

4051
4051
4051
4051 7F14
4053 DFFE
4055 22

Interconexin de Perifricos

;TIEMPO 40uSEGS

;****************************************
;**** SUBRUTINA DE TIEMPO DE 40uSEGS ****
;****************************************
QARNTA: MOV R7,#20
TIEMPO: DJNZ R7,TIEMPO
RET

4056
;******************************************
;** SUBRUTINA QUE ENVIA EL CARACTER
***
;**
01 DE CONTROL, Y ADEMAS CONSUME
***
;** LOS 1.64 mSEGS PARA SU EJECUCION
***
;******************************************

4056
4056
4056
4056
4059
405C
405E
4061
4063
4064
4064
4064
4064

90407B
124046
7E28
124051
DEFB
22

4064
4066
4068
406A
406C
406E
4070
4072
4074

7902
785A
7E63
7F32
DFFE
DEFA
D8F6
D9F2
22

LIMPIA: MOV DPTR,#CLEAR


LCALL XCBDOR
MOV R6,#40
TI1600: LCALL QARNTA
;TIEMPO DE 40uSEGS
DJNZ R6,TI1600
RET
;****************************************
;**** SUBRUTINA DE TIEMPO DE 2 SEGS ****
;****************************************

4075
4075
4075

TIME:
E2:
E3:
E4:
WAIT:

MOV R1,#02
MOV R0,#90
MOV R6,#99
MOV R7,#50
DJNZ R7,WAIT
DJNZ R6,E4
DJNZ R0,E3
DJNZ R1,E2
RET

;*****************************************
;**** TABLA DE MENSAJES DEL EXHIBIDOR ****
;*****************************************

4075
4076
4077
4078
4079
407A
407B
407C

38
00
06
0E
80
00
01
00

CONTEX: DB
DB
DB
DB
INIEXH: DB
DB
CLEAR: DB
DB

407D
408D
408E
409E
409F
40A6
0000

20424945
00
20534953
00
454E4D45
00

BIENV:

MEDIO

38H
00H
06H
0EH
80H
00H
01H
00H

DB ' BIENVENIDOS AL '


DB 00H
DB ' SISTEMA 200000 '
DB 00H
DB 'ENMEDIO'
DB 00H
END

---- TABLA SIMBOL ---

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

BIEN
QARNTA
E2
WAIT
LIMPIA
COEXH
TI1600
P2

4012
4051
4066
406C
4056
403A
405E
00A0

DOBLEX
TIME
INIEXH
CLEAR
TERMIN
E4
CONTEX
TIEMPO

Interconexin de Perifricos

4030
4064
4079
407B
4050
406A
4075
4053

FEXH
BIENV
TEREXH
E3
XCBDOR
MEDIO
EXHIBE

4039
407D
402E
4068
4046
409F
4000

INTERCONEXIONANDO DEL MICROCONTROLADOR CON UN TECLADO


MATRICIAL DE 12 TECLAS
La utilizacin de un teclado para seleccionar una accin de control o para introducir las
variables solicitadas por el sistema, es siempre indispensable.
Existen dos tipos de teclado los denominados matriciales y los que tienen un punto en
comn con todas las teclas. En este ejemplo se trabajar con uno del tipo matricial de 3
columnas por 4 renglones.
Cada vez que se oprime una tecla existen los denominados rebotes, los cuales son
indeseables, debido a que se genera varias veces la demanda de la tecla oprimida. Lo cual
ocasiona que el mismo valor de la tecla sea ledo varias veces.
En algunos sistemas este inconveniente es anulado mediante un programa que verifica
los valores eliminando los rebotes, en otros sistemas se realiza mediante circuitera. En este
ejemplo haremos uso del circuito 74C922 que tiene la ventaja de eliminar internamente los
rebotes, ayudado por dos capacitores que se le conectan externamente.
Este circuito tiene adems la caracterstica de poder manejar hasta un teclado matricial
de 16 teclas (el 74C923 es de 20 teclas), y de conectarse directamente al bus de datos del
microcontrolador microprocesador. Asimismo, mediante una seal de activacin DA, nos
indica cuando el dato est estable guardndolo durante todo el tiempo que as se requiera en
fijadores internos.
El diagrama que muestra su conexionado con el microcontrolador se presenta
conjuntamente con el del exhibidor.
A continuacin se muestra un pequeo programa que toma datos del teclado y los
enva al exhibidor.

PROGRAMA PARA MANEJO DE TECLADO


;********************************************
;** PROGRAMA PARA TOMAR DATOS DEL TECLADO **
;** Y ENVIARLOS AL EXHIBIDOR
**
;**
DIRECCIONES DEL EXHIBIDOR
**
;**
8000H = CONTROL DEL EXHIBIDOR
**
;**
8001H = EXHIBICION DEL DATO
**
;**
DIRECCION DEL TECLADO = 9000H
**
;**
EL DA ACTIVA LA INT0 DE MICROCONTR. **

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

Interconexin de Perifricos

;********************************************
0000
ORG 00H
9000
TEC:
EQU 9000H
8000
EXHI:
EQU 8000H
0000 020064
LJMP TECLAD
0003
ORG 03H
0003 D200
SETB 20H.0
0005 909000
MOV DPTR,#TEC
0008 E0
MOVX A,@DPTR
0009 540F
ANL A,#0FH
000B 2430
ADD A,#30H ;VALOR ASCII
000D 32
RETI
;********************************************
;*****
PROGRAMA PRINCIPAL
********
;********************************************
0064
ORG 100
0064 758801
TECLAD: MOV TCON,#01H
0067 9000AE
MOV DPTR,#CONTRL
006A 7800
MOV R0,#00H
006C 1191
ACALL SUBEXH
006E 9000B6
MOV DPTR,#TEXTO
0071 118F
ACALL SUBEX1
0073 74C0
MOV A,#0C0H
0075 11A5
ACALL POSCUR
0077 9000C7
MOV DPTR,#TEXT1
007A 118F
ACALL SUBEX1
007C 3000FD
ESPTEC: JNB 20H.0,ESPTEC
007F C200
CLR 20H.0
0081 908001
MOV DPTR,#8001H
0084 F0
MOVX @DPTR,A
0085 7F20
MOV R7,#20H
0087 DFFE
TEX:
DJNZ R7,TEX

0089 7410
008B 11A5
008D 80ED

MOV A,#10H ; MUEVE EL CURSOR A LA


IZQ.
ACALL POSCUR
;SE REPITE EL DATO CONTINUAMENTE
SJMP ESPTEC

;*********************************************
;****** SUBRUTINA DE
EXHIBICION
********
;*********************************************
008F 7801
SUBEX1: MOV R0,#01H
0091 75A080
SUBEXH: MOV P2,#80H
0094 E4
SUBEX: CLR A
0095 93
MOVC A,@A+DPTR
0096 600C
JZ FINEXH
0098 F2
MOVX @R0,A
0099 7A10
MOV R2,#10H
009B 79FF
LAZEX2: MOV R1,#0FFH
009D D9FE
LAZEXH: DJNZ R1,LAZEXH
009F DAFA
DJNZ R2,LAZEX2
00A1 A3
INC DPTR
00A2 80ED
SJMP SUBEXH
00A4 22
FINEXH: RET
00A5
00A8
00A9
00AB
00AD

908000
F0
79FF
D9FE
22

POSCUR: MOV DPTR,#EXHI


MOVX @DPTR,A
MOV R1,#0FFH
LAZPOS: DJNZ R1,LAZPOS
RET
;********************************************

Aplicaciones del Microcontrolador 8051

Dr. Alejandro Vega S.

Manejo de un Exhibidor y Teclado

Interconexin de Perifricos

;***********
TEXTOS
**********
;********************************************
00AE 38010206 CONTRL: DB 38H,01H,02H,06H,0FH,80H,00H
00B5 00
DB 00H
00B6 4F505249 TEXTO: DB 'OPRIMA UNA TECLA'
00C6 00
DB 00H
00C7 5445434C TEXT1: DB 'TECLA --> '
00D1 00
DB 00H
0000
END
---- TABLA SIMBOL ---CONTRL
0088
SUBEX
8000
FINEXH
0087

00AE
TEXT1
0094
LAZPOS
00A4

LAZEX2
00C7
TEC
00AB
P2

009B
ESPTEC
9000
SUBEX1
00A0

Aplicaciones del Microcontrolador 8051

POSCUR
007C
TEXTO
008F
SUBEXH

00A5
LAZEXH
00B6
TECLAD
0091

TCON
009D
EXHI
0064
TEX

Dr. Alejandro Vega S.

Manejo de un Motor de Pasos

Perifricos

Regreso al
men principal
INTERCONEXIONANDO UN MOTOR DE PASOS CON EL
MICROCONTROLADOR 8051
En
muchas
aplicaciones de Control Automtico, es necesario el
accionamiento de vlvulas o sistemas de engranes con una exactitud y precisin muy
alta. En Robtica, son indispensables stas caractersticas, donde las manos y brazos
mecnicos deben de ejecutar movimientos de gran precisin. Existen muchas otras
ramas de la electrnica donde la utilizacin de dispositivos de posicionamiento mecnico
son indispensables.
Un motor de pasos resuelve en gran medida este problema, ya que su principio
de funcionamiento le permite realizar pequeos movimientos (pasos), con gran exactitud
y repetibilidad.
El motor de pasos es un motor elctrico cuyo eje gira una cantidad especfica por cada
pulso de entrada que recibe, lo cual permite el control de posicin, velocidad, y sentido
(direccin).
Existen diferentes tipos de motores de pasos, de los cuales veremos
funcionamiento de uno ellos, el Motor de Magneto Permanente.

el

En la figura 1 , se muestra un diagrama del Motor de pasos de Magneto Permanente,


el cual est construido de un rotor que incluye polos magnticos de polaridad
contraria colocados uno junto al otro. El estator contiene bobinas alineadas de tal
forma
que sus energizacin secuencial provoca que el rotor se desplace a las
posiciones de mnima reluctancia magntica.

Manual del Microprocesador 8051

Dr. Alejandro Vega

Manejo de un Motor de Pasos

Perifricos

El nmero de pasos vara segn sea la aplicacin que se requiera. Existen


en el mercado desde, 0.1 a 120 grados. Los ngulos ms comunes son de 1.8, 2.0,
2.5, 5.0, 15 y 30 grados, que respectivamente dan 200, 180, 144,72, 24 y 12
pasos/revolucin. Los motores de pasos son alimentados con fuentes de corriente
directa y manejados con
circuitera lgica.
PRINCIPIO DE OPERACIN DEL MOTOR.
Su diagrama se muestra en la figura 2, y su principio de funcionamiento es el
siguiente:
A

on
2

S
N
S

on
N

N
S N

on

N
S
N

on

A on
3
N
S
N

on
S

N S

S
N

S
on
A
Fig. 2 Principio de funcionamiento de un motor de pasos

Manual del Microprocesador 8051

Dr. Alejandro Vega

on
B

Manejo de un Motor de Pasos

Perifricos

Consideremos primeramente, la bobina A-A la cual se energiza haciendo


circular la corriente de A hacia A por lo cual el polo inferior se polariza positivamente,
atrayendo al polo sur del rotor (parte inferior del rotor), y el superior negativamente el
cual atrae, al polo norte del rotor, (parte superior del rotor), de tal manera que se realiza
el primer paso .
Para que realice un segundo paso en el mismo sentido consideremos, ahora, la
desactivacin de la bobina A-A y la activacin de las bobinas B-B, al circular la
corriente la bobina B polariza negativamente lo que atrae al polo positivo del rotor (N) y
la bobina B se polariza positivamente atrayendo al polo negativo (S) del rotor. Esto hace
que gire un otro paso.
Para que gire un tercer paso, desenergizamos las bobinas B-B y ahora
volvemos a activar las bobinas A-A, pero ahora haciendo circular la corriente de A
hacia A por lo cual el polo superior se polariza positivamente, atrayendo al polo sur del
rotor (parte inferior del rotor), y el inferior negativamente, el cual atrae, al polo norte del
rotor (parte superior del rotor).
Siguiendo con un cuarto paso en el mismo sentido, sea la bobina B-B, ahora
alimentada en sentido contrario, es decir haciendo circular la corriente de B hacia B,
con la bobina A-A desactivada. El polo de la derecha se polariza positivamente
atrayendo al polo sur del rotor (parte inferior del rotor), y el de la izquierda
negativamente, el cual atrae, al polo norte del rotor, (parte superior del rotor).
Por ltimo para completar el ciclo, volvamos a conectar las cuatro bobinas como
al inicio por lo cual el rotor girar un cuarto de paso. Si el ciclo se vuelve repetitivo
podremos observar el movimiento del rotor en sentido de las manecillas del reloj. La
velocidad depender de la activacin y desactivacin de las bobinas. Como podemos
observar 4 pasos fueron necesarios para que el motor girara 90 grados de su posicin
original, si quisiramos que el motor girara una vuelta completa tendramos que darle 12
pasos, es decir repetir el ciclo 4 veces.
De aqu se observa que, el nmero de pasos de un motor est condicionado al
nmero de polos del imn permanente (rotor), o bien al nmero de bobinas, (estator). V.
gr. para un motor de 2 bobinas y 200 pasos, se requiere que el rotor tenga 50 polos.

Manual del Microprocesador 8051

Dr. Alejandro Vega

Manejo de un Motor de Pasos

Perifricos

Como cada una de las bobinas deben ser energizadas en los dos sentidos,
(fig. 3).

Un circuito que se propone para la activacin de estas bobinas es la figura 4.

VCC

Rc

Rb
NPN DAR

BOBINA DEL MOTOR

Rb
PNP DAR
SECUENCIA DE ENERGIZACION

Rc

-VCC

FIG.4 BOBINA CONECTADA A LOS TRANSISTORES

Size

Document Number

REV

A
Date:

May 13, 1998

Sheet

of

Cuando el transistor 1, es activado la parte A de la bobina queda energizada


positivamente y la A negativamente. Cuando el transistor 1 se desactiva y el transistor
2, se activa, la parte A se energiza negativamente y la A positivamente, de esta manera
se invierten las polaridades. Este circuito se presenta para cada una de las bobinas.

Manual del Microprocesador 8051

Dr. Alejandro Vega

Manejo de un Motor de Pasos

Perifricos

El arreglo en general del circuito se presenta en la figura 4, en donde, se puede


apreciar el circuito 74194 el cual es un registro de corrimiento de 4 bits con su siguiente
lgica de control:

Ahora interconectaremos el microcontrolador 8051 al circuito de control del


motor de pasos (fig. 5), como podemos apreciar se utilizan las lneas de P1.0 a P1.3, para
poder controlar el CLR, S0, S1 y CLK respectivamente. La primera lnea, CLR,
desactiva el circuito, es decir, ninguna de las dos bobinas se encuentran energizadas.
Mediante S0=1, S1=1 y un transiente positivo por el CLK, el dato paralelo es cargado.
Un 1 es cargado en una sola de las lneas de salida y las dems con 0 con el fin de
que solo sea energizada una bobina por paso y en un solo sentido. El sentido de giro del
motor se debe al valor de de S0 y S1.

VCC
VCC
R13
VCC

3
R1

R9
2

NPN DAR
1
2

R2
VCC
VCC

-VCC
VCC
R3

B
7

R10
1

PNP DAR

6
2
3
4
5
6
7
11
9
10
1

SR
A
B
C
D
SL

R4
QA
QB
QC
QD

R14

15
14
13
12

VCC

VCC

-VCC

R15

VCC

VCC

C
R5

R11
14

CLK
S0
S1
CLR

R6

74194

NPN DAR

-VCC

VCC

VCC

R7

D
11

R12

Q?
PNP DAR

13
10
R8

LM339
R16
-VCC

VCC

P1.4 DEL 8031


P1.3 DEL 8031
ETAPA DE ENERGIZACION DE BOBINAS
DEL MOTOR DE PASOS
Document Number

P1.7 DEL 8031

Size

REV

A
Date:

Manual del Microprocesador 8051

March 27, 1998

Sheet

of

Dr. Alejandro Vega

Manejo de un Motor de Pasos

Perifricos

BUS DE DATOS

33pF

31
19

11.05592MHz
VCC
18
10uF
RESET

EA/VP

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

X1
X2

33pF
9
12
13
14
15

100K

1
2
3
4
5
6
7
8

1N4148

RESET
P2.0
P2.1
P2.2
P2.3
P2.4
P2.5
P2.6
P2.7

INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

RD
WR
PSEN
ALE/P
TXD
RXD

8031

39
38
37
36
35
34
33
32

3
4
7
8
13
14
17
18

21
22
23
24
25
26
27
28

1
11

D0
D1
D2
D3
D4
D5
D6
D7

2
5
6
9
12
15
16
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
27

OC
G
74LS373

17
16
29
30
11
10

20
22
1

5V

VCC

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

O0
O1
O2
O3
O4
O5
O6
O7

11
12
13
15
16
17
18
19

VCC

CE
OE
VPP

2 OHMS
10 WATTS

27256
A

3
5

VCC

TIP120

4
1.2K
10k
1
10
9
11

VCC

7
6
5
4
3
2

1
2

CLR
S1
S0
CLK
SL
D
C
B
A
SR

BOBINA 1 DEL MOTOR

B
VSS
10K
QD
QC
QB
QA

7
1

12
13
14
15

TIP125

6
1.2K

VCC
2 OHMS
2 OHMS

VSS

74HC194

10 WATTS

10 WATTS

9
14

TIP120

8
1.2K

BOBINA 2
D
DEL MOTOR

TIP125

11
13

VSS

10
1.2K

2 OHMS

10 WATTS

LM339

Size

INTERCONEXIONADO DEL MICROCONTROLADOR


A UN MOTOR DE PASOS
Document Number

A
Date:

REV

SISTEMA MINIMO2
March 30, 1998

Sheet

of

PROGRAMA DE CONTROL DE MOTORES A PASOS


;*********************************************
;* PROGRAMA PARA CONTROL DE MOTORES DE PASOS**
;*** Se utiliza el T0 como base de tiempo ****
;***
T0 = 10,000 mseg.
****
;*** 100 pasos por segundo, 1 Revol.= 2seg****
;*** Primero girara durante 10 segundos a ****
;** la derecha,despues parara durante 2seg ***
;*a continuaci"n, girara hacia la izquierda*
;** Repetira la secuencia indefinidamente ***
;*** P1.0 = SEAL DE CONTROL DEL CLK
******
;*** P1.1 = CONTROL DE LA SEAL S1
******
;*** P1.2 = CONTROL DE LA SEAL S0
******
;*** P1.3 = CONTROL DE LA SEAL DE CLR ******
;*********************************************
0000
0000
000B
000B
000E
0011
0012
0015
0018
001A
001C
001E

020012
758CD8
758AF0
32
758CD8
758AF0
C293
D293
C290
D290

MOTOR:

ORG 00H
LJMP MOTOR
ORG 0BH
MOV TH0,#0D8H
MOV TL0,#0F0H
RETI
MOV TH0,#0D8H
MOV TL0,#0F0H
CLR P1.3
SETB P1.3
CLR P1.0
SETB P1.0

;SE
;SE
;SE
;DE

; SE RECARGA EL T0 CON
;LA BASE DE T=-10,000
; SE CARGA CON LA BASE
;DE TIEMPO =
;10000useg.
DESACTIVA EL MOTOR
VUELVE ACTIVAR
CARGA EL VALOR INICIAL
CORRIMIENTO "0001"

;********************************************
;**EL MOVIMIENTO SE REALIZARA A LA DERECHA **
;*********
S0=1 y S1=0
***********
;********************************************
0020 758901
MOV TMOD,#01H ;SE ESTABLECE T0 COMO

Manual del Microprocesador 8051

Dr. Alejandro Vega

Manejo de un Motor de Pasos

0023 758810
0026 75A882
0029 C291

Perifricos

MOV TCON,#10H ;TEMPORIZADOR EN MODO 1


MOV IE,#82H
;SE PERMITE LA INTER.T0
REPITE: CLR P1.1

002B D292

SETB P1.2

002D 113B

ACALL PSS

002F 114B
0031

ACALL PARO

;S1=0
;S0=1
;SE LLAMA A LA RUTINA DE ;PASOS
;SE LLAMA A LA RUTINA DE PARO

;********************************************
;* EL MOVIMIENTO SE REALIZARA A LA IZQUIERDA*
;*********
S0=0 y S1=1
**********
;********************************************
0031 C292
CLR P1.2 ;S0=0
0033 D291
SETB P1.1 ;S1=1
;SE LLAMA A LA RUTINA DE PASOS
0035 113B
ACALL PSS
;SE LLAMA A LA RUTINA DE PARO
0037 114B
ACALL PARO
;SE REPITE LA SECUENCIA DE MANERA INDEFINIDA
0039 80EE
SJMP REPITE
;*********************************************
;*** RUTINA DE MOVIMIENTO DEL MOTOR
********
;*********************************************
003B
003D
003F
0042
0044
0046
0048
004A

7B07
7AD0
308DFD
C290
D290
DAF7
DBF3
22

PSS:
PAS1:
PASO:

MOV R3,#07H
;R2R3 COMO CONTADORES DE
MOV R2,#0D0H ;2000 PASOS=10 VUELTAS
JNB TCON.5,PASO ; ESPERA 10 mseg.
CLR P1.0
;SE ENVIA UN PULSO DE
SETB P1.0
;RELOJ "CLK"
DJNZ R2,PASO
DJNZ R3,PAS1
RET

;*********************************************
;******* RUTINA DE PARO DEL MOTOR
*********
;*********************************************
004B
004D
004F
0051
0053
0055
0057
0059
005B
005D
005F
0000

C293
7C14
7D00
7E00
DEFE
DDFC
DCFA
D293
C290
D290
22

PARO:

CLR P1.3
; SE DESACTIVA EL MOTOR
MOV R4,#20
; CONTADORES PARA 2 SEG.
MOV R5,#00
; DE PARO TOTAL DEL
MOV R6,#00
; MOTOR.
TIEMPO: DJNZ R6,TIEMPO
DJNZ R5,TIEMPO
DJNZ R4,TIEMPO
SETB P1.3
;SE VUELVE ACTIVAR EL M.
CLR P1.0 ;SE CARGA EL VALOR INICIAL
SETB P1.0 ;DE CORRIMIENTO "0001"
RET
END

Manual del Microprocesador 8051

Dr. Alejandro Vega

Convertidores Analgico Digitales y Digitales Analgicos

Perifricos

INTERCONEXIONANDO EL MICROCONTROLADOR 8051 CON


CONVERTIDORES ANALGICOS-DIGITALES
Y DIGITALES-ANALGICOS.

En todos los sistemas de control, un dispositivo que resulta esencial es el convertidor


analgico/Digital, el cual nos permite pasar seales del mundo Analgico al mundo Digital.
Existen en el mercado aproximadamente 60 diferentes tipos de convertidores
Analgicos - Digitales, que van desde los de 8 bits hasta los de 18 bits, con fijadores
internos, de aproximaciones sucesivas, con salidas en 3er. estado, etc., etc., etc. La
seleccin de tal o cual convertidor, va de acuerdo a las necesidades y requerimientos
particulares de nuestro sistema propuesto.
De la misma manera, para recuperar una seal que ha sido digitalizada, se tiene el
convertidor digital - analgico, el cual consiste de un juego de resistencias, que son
alimentadas ya sea con un voltaje de referencia conocido, o bien, puestas a tierra
aterrizadas, lo cual depende directamente de un circuito de interruptores internos, que se
abren o cierran dependiendo la seal digital proporcionada (fig. 1).

El voltaje de salida del convertidor D/A est dado por la expresin siguiente:
Eo = Vff (a1 2-1 + a2 2-2 + a3 2-3 + .......+ an 2-n )
Donde:
Vr es el voltaje analgico de referencia.
a1, a2 ,..., an pueden ser los valores digitales 0 1.
Vr/2 , es el voltaje proporcionado por el bit ms significativo.
Vr/2 , es el voltaje proporcionado por el bit menos significativo.

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Regreso al
men principal

Convertidores Analgico Digitales y Digitales Analgicos

Perifricos

El voltaje mximo de salida (cuando todos los bits son iguales a 1) es igual a:
Eo = Vr (1/2 + 1/4 + 1/8 +....+ 1/2n ), Lo cual se aproxima a
Eo= Vr (1-2-n)

Por ejemplo para Vr=10 Volts, con un convertidor de :


a) 8 bits Eo = 10(1-2-8 ) = 9.96 V
b) 12 bits Eo = 10(1-2-12 ) = 9. 99 V

Como se puede apreciar el voltaje de salida se aproxima como mximo al voltaje de


referencia, a medida que crece el nmero de bits del convertidor.
Las caractersticas para seleccionar un convertidor D/A son las siguientes:
-Rapidez
-Linearidad
-Voltaje de salida y baja impedancia.
-Resolucin 8,10,12,14,16 y 18 bits
-Facilidad de ser controlado por Ps.
-Exactitud absoluta.
-No-linearidad.
-Monotonicidad.(Un valor de salida corresponde siempre a un
valor de entrada.)
-Estabilidad (tiempo, temperatura)
En el siguiente ejemplo se trabaja con dos convertidores uno D/A el DAC0830 y
el otro A/D el ADC0801 ambos de 8 bits. Mediante el A/D se adquieren datos de manera
continua (cada 100s aprox.) de una seal analgica de entrada. Estos datos se
almacenan en una memoria RAM. Mediante el microcontrolador extrae los datos de la
RAM y los enva directamente al C-D/A el cual los presentados a la salida recuperando de
esta forma la seal analgica. La finalidad de esta accin de adquisicin, almacenado y
presentacin de datos, es poder "congelar" la ltima seal que fue adquirida y es mostrada en
determinado momento.
La cantidad de seal que puede ser congelada, representa, los ltimos 10,000
datos que fueron adquiridos, es decir los datos tomados durante el ltimo segundo, debido
a que el convertidor A/D, tiene un tiempo de adquisicin de datos de aproximadamente
10s (10,000 datos x segundo).
Como el C-D/A, tiene una velocidad de conversin muy superior a la del CA/D, (aproximadamente 1 micros), la presentacin de datos es ms rpida que su
muestreo. En nuestro caso particular, se presentan datos nuevos aproximadamente cada 20
micros, es decir, por cada 5 mostrados existe 1 dato adquirido.

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Convertidores Analgico Digitales y Digitales Analgicos

Perifricos

Si partimos de la base de que una pantalla completa del osciloscopio o monitor


es llenada por una seal analgica conformada de 10,000 puntos, y que el C-D/A, muestra
los 10,000 datos en .2seg, podemos deducir que en 5 barridos de la pantalla completa, el CA/D, habr adquirido 10,000 datos nuevos.
Dicho de otra manera, en cada barrido completo de la pantalla (presentacin
de 10,000 datos por el C-D/A), se habrn adquirido 2000 datos nuevos por el C-A/D, que
sern presentados en el siguiente barrido de la pantalla, perdindose los primeros 2000 datos
adquiridos.
Por tal motivo, se requerirn de dos apuntadores, uno apuntando los datos
adquiridos por el C-A/D y el otro los datos mostrados por el C-D/A. Una vez que se ha
llenado la primera tabla de 10,000 datos el apuntador del C-D/A se incrementar en 2000,
cada vez que haga un barrido completo de la pantalla. Produciendo de esta manera la
eliminacin de los primeros 2000 datos tomados y exhibicin de los ltimos 2000 datos
adquiridos al final del barrido de la pantalla, creando la simulacin de una seal que se recorre
cada .2 segs. un 1/5 de la pantalla.
La seal parecer que se mueve hacia la izquierda con una velocidad de una
pantalla por segundo. Esta velocidad se puede variar, aumentando el tiempo de adquisicin
y presentacin de datos, lo cual har que la seal se mueva ms lenta.

BUS DE DATOS

31

EA/VP

33pF
19
11.0592Mhz

5V

33pF

18

X2

RESET

10uF
RESET
100k
1N4148

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

X1

12
13
14
15

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

INT0
INT1
T0
T1

1
2
3
4
5
6
7
8

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

RD
WR
PSEN
ALE/P
TXD
RXD

39
38
37
36
35
34
33
32

3
4
7
8
13
14
17
18

21
22
23
24
25
26
27
28

1
11

D0
D1
D2
D3
D4
D5
D6
D7

2
5
6
9
12
15
16
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
27

OC
G
74LS373

17
16
29
30
11
10

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
1

VCC

O0
O1
O2
O3
O4
O5
O6
O7

11
12
13
15
16
17
18
19

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
27

CE
OE
VPP

11
12
13
15
16
17
18
19

D0
D1
D2
D3
D4
D5
D6
D7

CE
RD
WR

27256

43256

8031
BUS DE DATOS

VCC

6
7

7
6
5
4

10k
16
15
14
13

CONGELA LA IMAGEN
VCC

19

CAP

1
2
18
17

D0
D1
D2
D3
D4
D5
D6
D7

Vref
D
A
C
0
8
3
0

ILE
CS
WR1
WR2
XFER

Iout1

11

VCC

Iout2

12

Vsal

VCC
R1b

DGND

AGND

10

VCC

20

6
7

6
5

7
5

Vref+
Vref5V

5V

13
11
12
18
17
16
15
14
13
12
11

74HC08

U?
A12
A13
A14

1
2
3
6
4
5

A
B
C
G1
G2A
G2B

Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7

15
14
13
12
11
10
9
7

1
2
3
5

DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7

VI+
VICLKR

VREF
AGND

MASA ANALOGICA

19

10k
2.5V

9
8
Size
A
Date:

Manual del microcontrolador 8051

150 pf

ADC0801

74HC138

1k

VOLTAJE DE ENTRADA

10k
CLK

CS
RD
WR
INTR

INTERCONEXIONADO DEL MICROCONTROLADOR


CON CONVERTIDORES D/A Y A/D
Document Number
SISTEMA MINIMO 3
April 15, 1998

Sheet

Dr. Alejandro Vega S.

REV
of

Convertidores Analgico Digitales y Digitales Analgicos

Perifricos

Programa para el interconexionado y manejo del microcontrolador 8031


con los convertidores A/D y D/A
;*******************************************
;* PROGRAMA PARA MANEJAR LOS CONVERTIDORES *
;* ANA-DIGI Y DIGI-ANA, PARA CONGELAR UNA *
;* IMAGEN EN EL OSCILOSCOPIO
*
;*******************************************

0000
0000
0000
0003
0005
0007
0009
000B
000D
000E
000F
0010

BANDERA: EQU 20H.0


020100
C082
C083
8E82
8F83
05A0
E2
F0
A3
8004

0013
0013 B2A8
0015 32
0016
0018
001A
001C
001E
0020
0022
0024
0027
002A
002D
0030
0033
0034
0036
0037
0038
003A
003B
003D
003F
0041
0043
0045
0047

E583
7006
D200
8A82
8B83
AE82
AF83
D5211A
D52217
7521D0
752207
30000E
EC
2421
FC
ED
3422
FD
7004
AC02
AD03
15A0
D083
D082
32

0100 758805
0103 C200

NT0:

NT1:

ORG 00H
LJMP CONVER
PUSH DPL
PUSH DPH
MOV DPL,R6
MOV DPH,R7
INC P2
MOVX A,@R0
MOVX @DPTR,A
INC DPTR
SJMP CONT0

;R7R6==>APUNTADOR ANALO
;APUNTA C-A/D
;ADQUIERE EL DATO
;ALMACENA EL DATO

ORG 13H
CPL IE.0
RETI

CONT0:

MOV A,DPH
JNZ COINT0
SETB BANDERA
MOV DPL,R2
;VUELVE A CARGAR EL
MOV DPH,R3
;APUNTADOR ANAL`GICO
COINT0: MOV R6,DPL
;ALMACENA EL VALOR DEL
MOV R7,DPH
;APUNTADOR ANAL`GICO
DJNZ 21H,BRIN
DJNZ 22H,BRIN
MOV 21H,#0D0H
;SE VUELVE A CARGAR
MOV 22H,#07H
;EL CONTADOR DE 2000
JNB BANDERA,BRIN
MOV A,R4
ADD A,#21H
;SE INCREMENTA EL APUNTA
MOV R4,A
;DOR DIGITAL 2000 DATOS
MOV A,R5
ADDC A,#22H
MOV R5,A
JNZ BRIN
MOV R4,02H
MOV R5,03H
BRIN:
DEC P2
POP DPH
POP DPL
RETI
CONVER: MOV TCON,#05H
CLR BANDERA

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Convertidores Analgico Digitales y Digitales Analgicos

Perifricos

;**********************************************
;* SE INICIAN LOS APUNTADORES EN LA LOCALIDAD *
;*
D8F0H ==> -10000 EN LA PARTE SUPERIOR
*
;*****
DE LA MEMORIA RAM
*****
;**********************************************
0105
0107
0109
010B
010D
010F
0111
0114
0117
011A
011D
0120

7AF0
7BD8
AC02
AD03
AE02
AF03
7521D0
752207
7523D0
752407
75A885
75A077

MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV

R2,#0F0H
R3,#0D8H
R4,02H
R5,03H
R6,02H
R7,03H
21H,#0D0H
22H,#07H
23H,#0D0H
24H,#07H
IE,#85H
P2,#77H

;R3R2 ==>APUNTADOR
;
INICIAL.
;R5R4 ==>APUNTADOR
;
DIGITAL
;R7R6 ==>APUNTADOR
;
ANA-DIG
;22H21H==>CONTADOR
;
DE 2000 DATOS
;24H23H==>CONTADOR
;
DE 1000 DATOS
;INT0 Y INT1 PERMITIDAS
;PARTE ALTA DEL C-D/A

;**********************************************
;****
RUTINAS DE EXHIBICI`N DE DATOS
****
;****
POR EL CONVERTIDOR DIGITAL-ANALO *****
;**********************************************
0123 8A82
0125 8B83

BRINC0: MOV DPL,R2


MOV DPH,R3

0127
0128
0129
012C
012F
0132
0135
0137
0139
013A
013C
013E
0000

BRINC1: MOVX A,@DPTR


;SE TOMA EL DATO DE LA
MOVX @R0,A
;MEMORIA Y SE ENVVA
DJNZ 23H,BRINC2
DJNZ 24H,BRINC2
MOV 23H,#10H
MOV 24H,#27H
MOV DPL,R4
MOV DPH,R5
BRINC2: INC DPTR
MOV A,DPH
JZ BRINC0
SJMP BRINC1
END

E0
F2
D5230D
D5240A
752310
752427
8C82
8D83
A3
E583
60E5
80E7

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Impresion de Datos hacia una impresora

Perifricos

IMPRESIN DE DATOS MEDIANTE EL MICROCONTROLADOR 8051,


HACIENDO USO DE LA INTERFASE PARALELO TIPO CENTRONICS
En muchos sistemas de adquisicin y control de procesos es necesario tener por escrito una
hoja de resultados, que nos indique los valores de las variables medidas o caractersticas
del proceso, v.gr., si hubo algn artefacto o nivel sobrepasado, el tiempo en que se realiz
tal o tal evento, el nmero de muestras, etc.
Por tal motivo una solucin, es el envo de los resultados obtenidos por nuestro sistema, hacia
una computadora, en la cual mediante un programa especfico, adecue la informacin, para
posteriormente ser enviada hacia una impresora obtenindose la hoja deseada.
Desafortunadamente, el tiempo que se pierde en enviar los datos hacia la computadora,
aunado a la necesidad de tener una computadora libre cada vez que se requieran imprimir
los resultados, hace de esto, un medio tedioso y algunas veces molesto para los usuarios.
Por tal motivo, en ste proyecto se propone interfasar directamente
sistema basado en el micro- controlador 8051.

la impresora al

En la tabla 1 se puede apreciar las seales caractersticas de la interfase paralelo del tipo
Centronics: Asimismo en la fig. 1 se puede apreciar las seales que se activan en el momento
de la impresin de datos.

Terminal
1
2
3
4
5
6
7
8
9
10

Nombre
Stro
D0
D1
D2
D3
D4
D5
D6
D7
ACKN

Funcin
Pasa de alto a bajo (>.5
s) cuando se activa
Dato 0 del bus de datos
Dato 1 del bus de datos
Dato 2 del bus de datos
Dato 3 del bus de datos
Dato 4 del bus de datos
Dato 5 del bus de datos
Dato 6 del bus de datos
Dato 7 del bus de datos
Pulso de reconocimiento de dato 5
s bajo

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Regreso al
men principal

Impresion de Datos hacia una impresora

11

Perifricos

BUSY

Seal de ocupada Baja si la impresora est


lista
12
P.E.
Alto cuando no existe papel (Paper End)
13
SELE
Alto cuando la impresora est en lnea
14
AUTO
Autoalimentacin, slo en algunas impresoras
15
ERRO
Seal de error. La impresora no puede
continuar
16
INIT
Cuando se baja se inicializa la impresora
17
SELE
Seleccin. Alta si la impresora est en lnea
18
GND
Tierra
19-25
GND
Tierra
Tabla 1. Terminales del conector paralelo.

A continuacin se muestra el diagrama de interconexionado del puerto paralelo tipo


Centronics, con el microcontrolador 8031, al igual que cada una de sus terminales.
Posteriormente, se muestra el programa para imprimir tres letreros, utilizando control de carro
CR, alimentadores de lnea, as como tabuladores horizontales.

BUS DE DATOS

31
33pF
19
5V

11.0592Mhz

33pF

18
9

10uF
RESET

12
13
14
15

100k

1
2
3
4
5
6
7
8

1N4148

EA/VP
X1
X2

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

RESET
INT0
INT1
T0
T1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7

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

39
38
37
36
35
34
33
32

3
4
7
8
13
14
17
18

21
22
23
24
25
26
27
28

1
11

D0
D1
D2
D3
D4
D5
D6
D7

2
5
6
9
12
15
16
19

Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
27

OC
G
74LS373

17
16
29
30
11
10

VCC

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

20
22
1

11
12
13
15
16
17
18
19

O0
O1
O2
O3
O4
O5
O6
O7

10
9
8
7
6
5
4
3
25
24
21
23
2
26
1
20
22
27

CE
OE
VPP
27256

A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14

11
12
13
15
16
17
18
19

D0
D1
D2
D3
D4
D5
D6
D7

CE
RD
WR
43256

8031

1
7408

13
25
12
24
11
23
10
22
9
21
8
20
7
19
6
18
5
17
4
16
3
15
2
14
1

SELECT IN
GND
PAPER END
GND
BUSY
GND
ACKN
GND
D7
GND
D6
GND
D5
GND
D4
GND
D3
D2
D1
D0
STROBE

CLK
OC
19
16
15
12
9
6
5
2

Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0

D7
D6
D5
D4
D3
D2
D1
D0

7
9
10
11
12
13
14
15

11
1
18
17
14
13
8
7
4
3

74LS374

G2B
G2A
G1
C
B
A

5
4
6
3
2
1

A14
A13
A12

74HC138

INTERCONEXIONADO DEL MICROCONTROLADOR 8051


A LA INTERFASE DEL TIPO CENTRONICS
Document Number
SISTEMA MINIMO 5
A

Size

CONECTOR PARALELO TIPO CENTRONICS DE LA PC-IBM

Date:

Manual del microcontrolador 8051

Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0

April 22, 1998

Sheet

REV
of

Dr. Alejandro Vega S.

Impresion de Datos hacia una impresora

Perifricos

PROGRAMA PARA IMPRESIN DE DATOS

;********************************************
;**** PROGRAMA PARA IMPRESIN DE DATOS *****
;**** UTILIZANDO UN CONECTOR PARALELO
*****
;****
TIPO CENTRONICS
*****
;**** UTILIZA CUATRO TERMINALES DE P1
*****
;**** Y UN FIJADOR (74374) COMO PERIFE- *****
;**** RICO DE SALIDA DE DATOS. DIR=C000H*****
;****
P1.0 = SELECTOR
*****
;****
P1.1 = PAPER END (NO HAY PAPEL *****
;****
P1.2 = BUSY (OCUPADO)
*****
;****
P1.3 = STROBE (VALIDACION)
*****
;****
INT0 = ACKNOLEDGE (RECONOCIM) *****
;********************************************
0000
ORG 00H
0000 010B
AJMP IMPRES
0003
ORG 03H
0003 D200
0005 F2
0006 C293

SETB 20H.0
MOVX @R0,A
CLR P1.3
;SE ESTABLECE EL

0008 D293
000A 32

SETB P1.3
RETI

STROBE

;*******************************************
;** ESTE PROGRAMA CONTROLARA LA IMPRESORA **
;** PRIMERO SALTARA 4 LINEAS, DESPUS ES- **
;** CRIBIR "BIENVENIDOS AL SISTEMA 2000 **
;** VOLVER A SALTAR 2 LINEAS DARA UN TAB **
;** Y ESCRIBIRA "ESTA ES UNA PRUEBA DE
**
;** IMPRESIN DE DATOS", VOLVER A SALTAR **
;** 2 LINEAS DARA UN TAB Y ESCRIBIRA "PARA**
;** IMPRIMIR LOS CARACTERES HAY QUE ENVIAR**
;** SU CDIGO ASCII", POR LTIMO SALTAR 2**
;** LNEAS DARA UN TAB Y ESCRIBIRA
**
;** "123456789"
**
;*******************************************
000B 901000
000E 75A0C0
0011 1140
0013 1140
0015 1140
0017 1140
0019 1152
001B 1164
001D 1140
001F 1140

IMPRES: MOV DPTR,#TABLA


MOV P2,#0C0H
ACALL LF
ACALL LF
ACALL LF
ACALL LF
ACALL HT
ACALL IPRE
ACALL LF
ACALL LF

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

Impresion de Datos hacia una impresora

Perifricos

0021 90101C
0024 1152
0026 1164
0028 1140
002A 1140
002C 1152
002E 901044
0031 1164
0033 1140
0035 1140
0037 1152
039 90107F
003C 1164
003E 80FE

MOV DPTR,#PRLE
ACALL HT
ACALL IPRE
ACALL LF
ACALL LF
ACALL HT
MOV DPTR,#SELE
ACALL IPRE
ACALL LF
ACALL LF
ACALL HT
MOV DPTR,#NUMER
ACALL IPRE
TERMIN: SJMP TERMIN

0040
0042
0043
0045
0047
0049
004C
004F
0051

740D
F2
C293
D293
740A
2092FD
3000FD
C200
22

LF:

0052
0054
0055
0057
0059
005B
005E
0061
0063

740D
F2
C293
D293
7409
2092FD
3000FD
C200
22

HT:

0064
0065
0067
0068
006A
006C

E0
6017
F2
C293
D293
3090FD

IPRE:

006F 2091FD
0072 2092FD
0075 3000FD
0078 C200
007A A3
007B E0
007C 70EE
007E 22
007F

OCUP0:
REC0:

OCUP:
REC:

MOV A,#0DH
MOVX @R0,A
CLR P1.3
;SE ESTABLECE EL STROBE
SETB P1.3
MOV A,#0AH
JB P1.2,OCUP0 ;OCUPADA LA IMPRESORA
JNB 20H.0,REC0 ;ESPERA RECONOCIMIENTO
CLR 20H.0
RET
MOV A,#0DH
MOVX @R0,A
CLR P1.3
;SE ESTABLECE EL STROBE
SETB P1.3
MOV A,#09H
JB P1.2,OCUP
;OCUPADA LA IMPRESORA
JNB 20H.0,REC ;ESPERA RECONOCIMIENTO
CLR 20H.0
RET

MOVX A,@DPTR
JZ FIN
CARGA: MOVX @R0,A
CLR P1.3
;SE ESTABLECE EL STROBE
SETB P1.3
ESPLIN: JNB P1.0,ESPLIN ;ESPERA QUE SE PONGA
;EN LINEA LA IMPRESORA
NHPAP:
OCUPA:
RECO:

FIN:

Manual del microcontrolador 8051

JB P1.1,NHPAP
;NO HAY PAPEL
JB P1.2,OCUPA
;OCUPADA LA IMPRESORA
JNB 20H.0,RECO ;ESPERA RECONOCIMIENTO
CLR 20H.0
INC DPTR
MOVX A,@DPTR
JNZ ESPLIN
RET

Dr. Alejandro Vega S.

Impresion de Datos hacia una impresora

1000
1000
101B
101C
103B
1043
1044
1064
107E
107F
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
0000

4249454E
00
45535441
44452044
00
50415241
51554520
00
30
31
32
33
34
35
36
37
38
39
00

Perifricos

ORG 1000H
DB 'BIENVENIDOS AL SISTEMA 2000'
DB 00H
PRLE:
DB 'ESTA ES UNA PRUEBA DE IMPRESIN'
DB 'DE DATOS'
DB 00H
SELE:
DB 'PARA IMPRIMIR LOS CARACTERES HAY'
DB 'QUE ENVIAR SU CDIGO ASCII'
DB 00H
NUMER: DB 30H
DB 31H
DB 32H
DB 33H
DB 34H
DB 35H
DB 36H
DB 37H
DB 38H
DB 39H
DB 00H
END
TABLA:

Manual del microcontrolador 8051

Dr. Alejandro Vega S.

CURSO DE MICROCONTROLADORES
PROGRAMACION E INTERCONEXIONADO DEL C-8051

* INTRODUCCION
* CARACTERISTICAS DEL 8051
* ARQUITECTURA DEL 8051
* TERMINALES DEL 8051
* REGISTROS INTERNOS DEL 8051
* MODOS DE DIRECCIONAMIENTO DEL 8051
* INSTRUCCIONES DEL 8051
* INTERCONEXIONADO CON CIRC PERIFRICOS
* MANEJO DEL SIMULADOR DEL 8051

2/22/2000

Dr. Alejandro Vega Salinas

QUE

ES

UN
MICROCONTROLADOR?
2/22/2000

Dr. Alejandro Vega Salinas

Memorias Pasivas
para programas
de aplicacin(ROM,
PROM, EPROM)

Microprocesador
(P)

Programas
de aplicacin

Memorias de
acceso aleatorio
para datos (RAM)

Bus
Microcomputadora
(MC)

Mdulos
de entrada/
salida
Lgica
adicional

Periferia
(memorias perifricas y
equipos de entrada/salida)
Hardware
Software
Estructura de un sistema
de microcomputadoras (MCS)
2/22/2000

Dr. Alejandro Vega Salinas

Demanda HOLD

Microprocesador

Interrupt

ROM

RAM

Bus de datos

Bus de control

Bus de direccionamiento

Mdulo perifrico
de entrada/salida
(programable)

Conexin de

Interrupcin del
programa por
prioridades

La periferia del usuario

Configuracin tcnica de los mdulos en una microcomputadora completa


2/22/2000

Dr. Alejandro Vega Salinas

Acumulador

Registro
intermedio

Registro
de instrucciones
Flipflops
de condicin

Unidad
aritmtica/
lgica

Decodificador
de instrucciones
y control del
ciclo de
mquina

Indicador
de posicin
Contador
de programa

Bloque de registros

Control para
E/S en serie
Bus de datos interno, 8 bits

Control de interrupcin

Contador progresivo/
regresivo
Memoria de direcciones

Alimentacin
Control de tiempo y de ejecucin

Buffer de direccin

Bffer de datos

Bus de
direccionamiento

Bus de datos

Estructura de un microprocesador tomado como ejemplo el P 8085


2/22/2000

Dr. Alejandro Vega Salinas

Bobina o cuarzo

Impulso
reloj

Corriente de reposo

Memoria de
programas
de 2Kbytes

Memoria
de datos
de 128 bytesb

Procesador
central
de 8 bits

Contador/
temporizador
de 8 bits

E/S
programables

Tensin
de referencia

Puerta
de E/S
en paralelo

Entradas
analgicas

Convertidor
A/D
de 8 bits

Regulacin
dela
luminosidad

Generador
MUX

Salida de la
matriz de
indicacin y
del teclado

Entradas
de computo

Contadores
de 4, 8 y
12 bits

Memoria de
indicacin

Codificador
de 7
segmentos

Salida de los
segmentos
de indicacin

Desde
la matriz
del teclado

Entrada
de teclas

Cronmetro
Horas
Minuto

Memoria
de salida

Salida de la
matriz
de indicacin

Reloj
Horas
Minuto

Equipo de
advertencia
Horas
Minuto

2/22/2000
Esquema de bloques lgico SAP 80215

Seal
de conexin

Dr. Alejandro Vega Salinas

Decodificador
de direcciones

Bus de direccionamiento
CS

MP
(microprocesador)

RAM
(random
access memory)

CS
ROM
read-only
memory)

CS
Mdulo
perifrico
de entrada/
salida

Bus de datos
Bus de control
Funcionamiento de la microcomputadora
y su estructura bus

2/22/2000

Dr. Alejandro Vega Salinas

Procesador
central
de 8 bits
Procesador
booleando
de 1 bit

Memoria
de programas
de 4 Kbytes

Memoria
de datos
de 128 bytes

Logica
de interrupcin

Entrada/ salida
en paralelo
4 x 8 bits
8

2 controladores/
temporizadores
de 16 bits

Entrada/ salida
en serie

Esquemas de bloques P 8051


2/22/2000

Dr. Alejandro Vega Salinas

Reloj

Memoria
de programas

Memoria
de datos

Procesador
central

Contador/
temporizador

Circuitos
de entrada/salida

Sistema de microcomputadora en un chip


2/22/2000

Dr. Alejandro Vega Salinas

TECHNOLOGY
Model

ram

rom
bytes

addr

SI/O

PI/O

C/T

int.

width

ADVENACED MICROSYSTEM
80C521
256 8K

64K

32 2,16bit

DALLAS SEMICONDUCTOR
DS6000T
8-54K
4K

128K

32 2,16bit

HITACHI EUROPE LTD


63L05F1
96 4K
HD647180
512 16K
H8/532
1K
32K

1M
1M

3
1

20 1,8bit
54 3,16bit
57 5,8bit

6
15
7

8
8
16

INMOS-LTD
IMST245
4K
IMST222
4K
IMSM212
2K

4G
64K
64K

4,links
4,links
4

2,32bit
2,16bit
2,16bit

2
2
2

32
1
16

INTEL CORPORATION (UK) LTD


80C512
256 8K
80196KA
232 8K
80C51BH
128 4K
87C51
128 4K
8096BH
232 8K
80C1196KB
232 8K

128K
64K
64K
64K
64K
64K

1, uart
1, uart
uart
uart
uart
uart

2,16bit
4,16bit
2,16bit
2,16bit
6,16bit
6,16bit

2
16
2
2
8
16

8
16
8
8
16
16

MITSUBISHI ELECTRONIC (UK) LTD


M50747
256 8K
M3700M4A 2K
32K

64K
16M

56 3,8bit
68 8,16bit

6
7

8
16

2/22/2000

4K

56
40
32
2
40
40

1
3

10

Dr. Alejandro Vega Salinas

MOTOROLA LTD
68HC05B6
68HC11E9
6804P3
146805G2
68HC05L6
68HC11

176
512
124
112
176
256

6K
12K
1.7K
2K
6K
8K

8K
64K

1
2
0
0
1
2

8K
8K
64K

NATIONAL SEMICONDUCTOR (UK) LTD


COP420
64 1K
digits
COP888CG
192 4K
32K
HPC16083
256 8K
64K

4,16bit
8,16bit
1,8bit
1,8bit
4,16bit
8,16bit

4
17
1
3
4
17

8
8
8
8

8 1,10bit

40 3,16bit
52 8,16bit

14
8

8
16

16

uart

32
40
20
32
58
40

NEC ELECTRONICS UK
78214
512 16K
78322
640 16K

64K
64K

1
1

60 1,16bit
55 1,16bit
1,12bit

18 *
19

ROCKWELL INTERNATIONAL
R6501
192 36500/15
192 4K

64K
16K

1
1

32 2,16bit
32 2,16bit

10
10

8
8

15
82 2,8bit

1
48

8
8

2
3

2
2
2

8
8
8

6
8
8

8
8
8

SGS THOMSON MICROELECTRONICS


ST6041
84
64 3,8K
Z86E21
240 8K

TEXAS INSTRUMENTS LTD


TMS370
256 4K
TMS70C48
256 4K
TMS7000
128 4K

112K
64K
to 64K

2
1
0

55
54
16 -

ZILOG UK LTD
Z86E21
Z8800
Z86C11

120K
128K
to 120K

1
1

32 2,14bit
40 2,16bit
82 2,0bit

2/22/2000

256 8K
352 8K
128 4K

uart

11

Dr. Alejandro Vega Salinas

FAMILIA DEL 68HC11


NUMERO
68HC11A8
68HC11A1
68HC11A0
68HC11B8
68HC11B1
68HC11B0
68HC11E9
68HC11E1
68HC11E0
68HC811E2
68HC11D3
68HC11F1

2/22/2000

ROM
8K
0
0
8K
0
0
12K
0
0
0
4K
0

EPROM

RAM

CONF

512
512
0
512
512
0
512
512
0
2K
0
512

256
256
256
256
256
256
512
512
512
256
192
1K

$0F
$0D
$0C
$0F
$0D
$0C
$0F
$0D
$0C
$FF
N/A
$FF

12

Dr. Alejandro Vega Salinas

FAMILIA DEL 8051


4K
8K
4K
8K
8K
2K
2K
2/22/2000

ROM

S-EPROM E PROM

8051
8052
83C451
83C552
83C652
83C751
83C752

8031
8032
80C451
83C552
83C652

13

87C51
87C451
83C552
83C652
83C751
83C752
Dr. Alejandro Vega Salinas

32k ROM
In 8XC528
16K ROM
In 8XC054,

512 RAM
In 8XC528
256 RAM
In 8052,
8XC52
8XC552,
8XC562,
8XC652,
8XC654

8XC654
8K ROM
In 8052,
8XC52

4k

8XC053
8XC552
8XC562

128

8XC652

Interrupt
Control

ROM

Timer 2
Capture/
Compare
Array
(8XC552,
8XC562
Timer 2
(8052,
8XC52,
8Xc528)

Counter
Inputs

Timer 1

2k ROM
In 83C751,
83C752J

64 RAM
In 83C751,
83C752

RAM

Timer 0

256 EEPROM
83C851
A/D
(8XC550,
8XCC552,
8XCC562,
8XC752)

CPU

Osc

Bus
Control

I/O
Port

Four I/O Ports

SCL I2c
Serial

Serial
Ports

SDA Port

TXD RXD
Watchdog
Timer
(8XC528,
8XC550,
8XC552,
8XC562)

Fixed Rate
Timer
(83c751/2)

2/22/2000

P0

P2

P1

P3 P4-P5-P6

PWM System
(8XC552,
8XC562,
8XC752)

Address/Data
NOTES:
P0-P3 for 8051, 8052, 8XC652, 8XC528, 8XC52,
8XC654, 8XCL410, 8XC551
P0-P5 for 8XC552, 8XC562, 8XC592
P0-P6 for 8XC451
Part of P0, AND P1, P3 for 8XC751 and 8XC752

14

Dr. Alejandro Vega Salinas

CARACTERISTICAS DEL C-8051


* UN CPU DE 8 BITS
* CAPACIDAD DE PROCESAR LAS FUNCIONES
* BOOLEANAS POR BIT
* 32 LINEAS DE ENTRADA/SALIDA
* 128 BYTES DE MEMORIA RAM
* 2 CONTADORES/TEMPORIZADORES DE 16B
* UN UART FULL DUPLEX
* 5 ESTRUCTURAS DE INTERRUPCIN
* UN OSCILADOR INTEGRADO
* 64KB DE ESPACIO DE PROGRAMA
* 64KB DE ESPACIO DE DATOS
* 4KB EN ROM (SOLO EN EL 8051)
2/22/2000

15

Dr. Alejandro Vega Salinas

VCC

39

P0.0

38

P0.1

37

P0.2

36

P0.3

35

P0.4

34

P0.5

33

P0.6

32

P0.7

31

VPP/EA

30

PROG/ALE

29

PSEN

28

P2.7

27

P2.6

26

P2.5

25

P2.4

24

P2.3

23

P2.2

22

P2.1

21

P2.0

P1.1
P1.2
P1.3
P1.4
P1.5

2/22/2000

40

P1.0

P1.6

P1.7

RST

P3.0-RxD

10

Tx

11

INTO

12

INTI

13

T O

14

T 1

15

WR

16

P3.7 R D

17

X TAL 2

18

X TAL 1

19

VSS

20

8051
8031
8751

16

Dr. Alejandro Vega Salinas

Leer el registro de salida


+5V

Pin del
Bus interno

1
Q

1
D

T1

&
Pin E/S

T2

1
Q

Impulso
de inscripcin
de salida
Acceso de bus

CLK

Leer el pin

Circuito de salida de la puerta bidireccional


(esquema)
2/22/2000

17

Dr. Alejandro Vega Salinas

Leer el registro de salida


+5V

Pin del

Bus interno

1
Q

1
D

T1

&

Pin E/S

T2

Q
1
Impulso
de inscripcin
de salida

1...4 k

CLK

Refuerzo
del flanco
BAJO ALTO

Leer el pin

Circuito de salida de las puertas cuasibidireccionales


1, 2, 3, (esquema)
2/22/2000

18

Dr. Alejandro Vega Salinas

BUS DE DATOS

8051 P0
EA

ALE

LATCH

DIRECCION
BAJA

A0
A7

DIRECCION ALTA
P2
P SEN
RD

RAM

E PROM

A8

A8

A15

A15

OE

WR

RD

WR

EJECUTANDO PROGRAMAS EXTERNOS

2/22/2000

19

Dr. Alejandro Vega Salinas

Bus de datos
P1

RAM

P0

Vcc

LATCH

EA

ALE

C-8051

P2

Bus de direcciones altas

2/22/2000

A7
A8
A9
A10

P SEN
RD

Direcc. Bajas

A0

WR

RD

20

WR

Dr. Alejandro Vega Salinas

Relacin de reas de almacenamiento en el P 8051

65535

65535

Externa
496
495
255
Interna
o externa

128
127

Memoria
de programas

2/22/2000

Registros SFR

Memoria
de datos interna

21

Memoria
de datos externa

Dr. Alejandro Vega Salinas

Registros de funciones especiales (SFR)

Memoria
RAM no
disponible en
el 8031

F8
F0
E8
E0
D8
D0
C8
C0
B8
B0
A8
A0
98
90
88
80

B
ACC
PSW

IP
P3
IE
P2
SCON SBUF
P1
TCON TMOD TL0 TL1 TH0 TH1
P0
SP
DPL DPH

FF
F7
EF
E7
DF
D7
CF
C7
BF
B7
AF
A7
9F
97
8F
PCON 87

Stack

Funciones de la
memoria de datos
interna C-8051

Memoria de datos
utilizable discrecionalmente
Area direccionable por bits
(128 posiciones binarias)
Banco de registros 3(R0-R7)
Banco de registros 2(R0-R7)
Banco de registros 1(R0-R7)
Banco de registros 0(R0-R7)

2/22/2000

22

Dr. Alejandro Vega Salinas

B
7F
77
6F
67
5F
57
4F
47
3F
37
2F
27
1F
17
0F
7

7C
74
6C
64
5C
54
4C
44
3C
34
2C
24
1C
16 15 14 13 12 11
0E 0D 0C 0B 0A 9
6
5
4
3
2
1
BANCO
3
BANCO
2
BANCO
1
BANCO
0
RAM
INTERNA

2/22/2000

30
78 2FH ACC
70
68
PSW
60
58
IP
50 2AH
48
P3
40 28H
38
IE
30
28
P2
20
18
SCON
10 22H
8 21H P1
0 20H
TCON

F7

F6

F5

F4

F3

F2

F1

F0

F0H
50 EDA

D0

DOH
B8H
B0H
A8H
A0H

9F

9E

9D

9C

9B

9A

99

97
8F

23

90H
8E

87

P0

98 98H

8D
86

8C
85

84
SFR

8B

8A
83

82

89

88 88H

81

80 80H

Dr. Alejandro Vega Salinas

MODOS DE DIRECCIONAMIENTO
DEL MICROPROCESADOR 8051.
a) DIRECCIONAMIENTO INMEDIATO
b) DIRECCIONAMIENTO DIRECTO
c) DIRECCIONAMIENTO INDIRECTO
d) DIRECCIONAMIENTO INDEXADO
e) DIRECCIONAMIENTO POR REGISTRO
f) DIRECCIONAMIENTO POR BIT
2/22/2000

24

Dr. Alejandro Vega Salinas

DIRECCIONAMIENTO INMEDIATO
EL VALOR DE UNA CONSTANTE SIGUE AL CODIGO DE OPERACIN
EN LA MEMORIA DEL PROGRAMA.
MOV A, #64H

; CARGA EL Acc CON 64hex

MOV DPTR, #1234H

; CARGA EL APUNTADOR

ADD A, #120

; SUMA EL VALOR 120 decimal.

DIRECCIONAMIENTO DIRECTO
EL OPERANDO ES ESPECIFICADO POR UNA DIRECCION DE 8 BITS
EN DONDE SE ENCUENTRA EL DATO CON EL QUE SE DESEA
HACER LA OPERACIN. (SOLO EN RAM int. Y SFR).
MOV A, 2EH

; EL ACC. SE CARGA CON EL -DATO QUE SE


ENCUENTRA EN LA DIREC. 2EH.

MOV 3DH, 4EH


ADD A, 7FH
2/22/2000

25

Dr. Alejandro Vega Salinas

DIRECCIONAMIENTO INDIRECTO
SE UTILIZA UN REGISTRO EN DONDE SE ENCUENTRA LA
DIRECCIN DEL DATO CON EL QUE SE DESEA REALIZAR
LA OPERACIN.
SE UTILIZAN LOS REGISTROS R0, R1 Y SP, PARA EL
DIRECCIONAMIENTO DE 8 BITS.
PARA LAS DIRECCIONES DE 16 BITS SE UTILIZA EL DPTR. TANTO
RAM int COMO ext. PUEDEN SER DIRECCIONADAS INDIR.
ADD A, @RO

; SUMA AL ACC EL DATO APUNTADO POR R0.

MOV A, @R1

; CARGA EL ACC. CON DATO APUNTADO R0

MOVX @DPTR, A ; CARGA ACC EN MEM. RAM EXTERNA


MOVX A, @R0

2/22/2000

26

Dr. Alejandro Vega Salinas

DIRECCIONAMIENTO POR REGISTRO


SON LAS INSTRUCCIONES QUE UTILIZAN
CUALQUIERA DE LOS REGISTROS, PARA
REALIZAR LA OPERACIN.
ADD A, R5
MOV R7, A

2/22/2000

27

Dr. Alejandro Vega Salinas

TRANSFERENCIA DE DATOS
RAM INTERNA
MOV <Destino>, <fuente>
MOV A, <fuente>

;A

MOV <Destino> A

; <Destino>

MOV DPTR, #DATO

; DPTR

PUSH <fuente>

; INC SP, <@SP> <--f.

POP <Dest>

; <Dest> <- @SP>, DEC SP.

XCH A; <byte>

; ACC <--> <byte>.

XCHD A, @R1

; ACC <--> @R1 NIBBLES BAJOS.

2/22/2000

<fuente>.
A.
16 bits.

28

Dr. Alejandro Vega Salinas

DIRECCIONAMIENTO DE TABLAS

RAM EXTERNA
MOVX A, @R1

; A <-- <@Ri>.

MOVX @R1, A

; <@Ri> <--A.

MOVX A, @DPTR ; A <-- <@DPTR>


MOVX @DPTR, A ; <@DPTR> <--A

MEMORIA DEL PROGRAMA


MOVC A, @A+DPTR
MOVC A, @A+PC
2/22/2000

29

Dr. Alejandro Vega Salinas

INSTRUCCIONES BOOLEANAS
ANL C, bit

; C <-- C. AND. Bit

ANL C, /bit

; C <-- C. AND. NOT.bit

ORL C, bit

; C <-- C. OR. Bit

ORL C, /bit

; C <-- C. OR..NOT. Bit

MOV C, bit

; C <-- bit

CLR C

; C <-- 0

CLR bit

; bit <--0

SETB C

; C <--1

SETB bit

; bit <--1

CPL C

; C <-- NOT.C

CPL bit

; BIT <-- NOT.bit

JC REL

; SI C=1 BRINCA A REL.

JB bit, REL

; SI bit=1, BRINCA A REL.

JBC bit, REL

; SI bit=1, BRINCA Y LIMPIA

2/22/2000

30

Dr. Alejandro Vega Salinas

Ejemplo del Procesador booleano C-8051

P1.1
P2.2

P2.5

&

2H.

&

21H.3

P3.3

P1.6
MOV

C,P2.2

;Introducir P2.2 en el acarreo

ORL

C,P2.5

;Relacin O con P2.5

ANL

C,P1.1

;Relacin Y con P1.1

CPL

;Invertir el resultado

MOV

F, C

; Almacenar transitoriamente el resultado

MOV

C,2H.

;Introducir el bit 2H. en el acarreo

ANL

C,/21H.3

;Relacin Y con el bit 21H.3 invertido

ORL

C,F

;Relacin O con el bit F

ORL

C,/P1.6

;Relacin O con el bit P1.6 invertido

MOV

P3.3, C

;Transferir a P3.3 el resultado final

2/22/2000

31

Dr. Alejandro Vega Salinas

REGISTROS INTERNOS DE CONTROL DEL 8051


PSW (Palabra del estado del programa)
CY

AC

F0

RS1

RS0

OV

CY

PSW.7

ACARREO

AC

PSW.6

ACARREO AUX.

FO

PSW.5

USOS GENERALES

RS1

PSW.4

SEL 1 DEL B. DE REG.

RS0

PSW.3

SEL 0. DEL B. DE REG.

OV

PSW.2

OVERFLOW

PSW.1

INDEFINIDA

PSW.0

PARIDAD*

Si el #s de bits en el Acc = 1, es Impar P=1, sino P=0


2/22/2000

32

Dr. Alejandro Vega Salinas

PCON (CONTROL DE POTENCIA)


SMOD

GF1

GF0

PD

IDL

SMOD

Dobla el baud rate en la Transmisin


serial cuando se utiliza el timer 1

GF1

Propsitos generales

GF2

Propsitos generales

PD

Bajo consumo de energa


80C51BH

IDL

Bajo consumo de energa


CMOS

2/22/2000

33

Dr. Alejandro Vega Salinas

IE REG. HABILITADOR DE INTERRUPCIONES


EA

ET2

ES

ET1

EX1

EA

IE.7

DESACTIVA INTER.

ET2

IE.5

PERMITE INT. DEL TIMER2

ES

IE.4

PERMITE INT. PTO. SERIAL

ET1

IE.3

PERMITE INT. DEL TIMER1

EX1

IE.2

PERMITE INTER EXTER.1

ET0

IE.1

PERMITE INT. DEL TIMER0

EX0

IE.0

PERMITE INTER. EXTER.0

ET0 EX0

IP REGISTRO DE PRIORIDAD DE INTERRUPCIONES

PT2

PS

PT1

PX1

PT0 PX0

PT2

IP.5

ALTA PRIORIDAD PARA T2

PS

IP.4

ALTA PRIORIDAD INTERSERIAL

PT1

IP.3

ALTA PRIORIDAD PARA T1

PX1

IP.2

ALTA PRIORIDAD PARA INT 1

PT0

IP.1

ALTA PRIORIDAD PARA T0

PX0

IP.0

ALTA PRIORIDAD PARA INT 0

2/22/2000

34

Dr. Alejandro Vega Salinas

TCON REGISTRO DE CONTROL DE


TEMPORIZADORES Y CONTADORES

TF1

TR1

TF0

TRO IE1

IT1

IE0

IE1

TF1

TCON.7

Sobreflujo del Timer 1

TR1

TCON.6

Bit de arranque Timer1

TF0

TCON.5

Sobreflujo del Timer0

TR0

TCON.4

Bit de arranque Timer0

IE1

TCON.3

Bit de Transicin de INT1

IT1

TCON.2

Control del modo de control de la INT1

IE1

TCON.1

Bit de Transicin de INT0

IT0

TCON.0

Control del modo de control de la


INTO

2/22/2000

35

Dr. Alejandro Vega Salinas

Vectores de Interrupcin
T2
RI/TI

002BH
0023H

T1

001BH

INT1
T0

Memoria
de
programa

INT0
RESET

REGISTRO
IE
INT0

0013H
000BH
0003H
0000H

REGISTRO
IP

BAJA
PRIORIDAD

IT0 IE0
ALTA
PRIORIDAD

TF0
INT1

8 Bytes

IT1 IE1
Secuencia
de
servicio
de
interrup.

TF1
RI
TI
Desactivador
general --> EA

SISTEMA DE CONTROL DE INTERRUPCIONES

TMOD Modo de Control de los


Temporizadores y Contadores

GATE1 C/T1 M1

M0 GATE0 C/T0

M1 M0

Si Gate=1 y TR=1 el C/T funciona s la lnea de


INT est en alto (control por hardware).
Si Gate=0 el C/T funciona solo si TR=1. (C.S)
C/T Selecciona el Contador o Temporizador
M1
0
0
1
1

M0
0
1
0
1

Modos de Operacin.
Modo 0 Timer de 13 bits
Modo 1 Timer de 16bits
Modo 2 Recargable de 8 bits
Modo 3 TL0 como contador o
temporizador
TH0 solo como temporizador

OSC

12
C|T=0

T1 (Terminal)

C|T=1

TLI
5 bits

THI
8 bits

TFI

INTER

CONTROL

TR1
GATE

MODO 0

INT 1 (Term.)
OSC

TIMER de 13 bits

12
INTER

C|T=0

TLI
8 bits

C|T=1

T1 (Terminal)

TFI

CONTROL
RECARGA

TR1

THI
8 bits

GATE

MODO 2 de 8 bits Recargable

INT 1 (Term.)

OSC
OSC
12
T 0 (PATA)

12
C / T=0
C / T=1

TL0
8 bits
CONTROL

TF0

TR0
GATE
INT 0 (Term.)

OSC
12
TR1

TH0
8 bits

MODO 3 ( 2 timers )

TFI

INTER

OSC

12
C|T=0

TLI
5 bits
TI (PATA)

C|T=1

THI
8 bits

TFI
iNTER

CONTROL

TRI
GATE

MODO 0

INT I (PATA)

OSC

TIMER

13BITS

12
C|T=0

TLI
8 bits
TI (PATA)

C|T=1

TFI
iNTER
RECARGA

CONTROL

TRI

THI
8 bits

GATE

MODO 2

INT I (PATA)

OSC

8 BITS

RECARGAR

12

OSC
12

C T=0

T 0 (PATA)

C T=1

TL0
8 bits

TF0

TH0
8 bits

TFI

iNTER

CONTROL

TR0
GATE

INT 0 (PATA)

OSC
12

TRI

MODO 3

(2(TIMERS)

Direccin 02
Arranque

TB8 Parada
Address
information
TB 8 = 1

SAP 8051
Computadora
de control
Caja

SAP 8051
Surtidor 1
SM2=1

Indicadores,
conmutadores

Lmparas,
rels

SAP 8051
Surtidor 2
SM2 = 0
SM 2 =

Contactos,
sensores

SAP 8051
Surtidor 3
SM 2 = 1

Emisor
de caudal

8 bits de informacin
Arranque

TB8 Parada
Infromacin
de dato:
TB 8 =

Intercambio de datos en un sistema


multicomputadora SAP 8051

SCON REGISTRO DE CONTROL


DEL PUERTO SERIAL
SMO

SM 0
0
0
1
1

SM1

SM1
0
1
0
1

SM2

REN TB8 RB8

T1

R1

MODO DE TRANSMISIN
Registro de corrimiento fosc/12
UART 8nits, frecuencia variable
UART 9bits, fosc/32 fosc/64
UART 9bits, frecuencia variable

Si SM2=1, Para los modos 2 y 4, RI no se activa si el


9eno. Bit de datos recibidos es =0(RB8).
En modo 1, RI no se activa si no hay bit de stop.
En modo 0, no tiene accin

RI se activa si:
RI=0 y SM2=0 o Bit de Stop=1 o bit 9no.=1
REN
Se establece para permitir la recepcin
TB8
Es el 9no. Bit que se transmite en m. 2 y 3
RB8
Es el 9no. Bit que se recibe en modo 2 y 3
TI
Se establece cuando se transmite el dato.
IR
Se establece cuando se recibe el dato.

MODOS DE TRANSMISIN
MODO 0 Los datos que entran y salen de los
registros RxD y TxD, se realizan mediante
corrimientos de 8 bits. El baud rate se fija a 1/12
de la frecuencia de oscilacin
MODO 1 Se transmiten (TxD) o se reciben
(RxD) 10 bits, un bit de inicio (strat=0) 8 bits de
datos (primero D0) y un bit de paro (stop=1). En
recepcin el bit de paro (STOP) se va a RB8 de
SCON si SM2=0, el baud rate es variable.
MODO 2 Se transmiten (TxD) o se reciben
(RxD) 11 bits, un bit de inicio (strat=0) 8 bits
dedatos (primero D0), el 9 bit es TB8 eb la
transmisin y RB8 en la recepcin un bit de paro
(Stop=1). En recepcin el bit de paro (STOP)
se va a RB8 si SM2=0 de SCON, el baud rate es
fijo al 1/32 o 1/64 de la frecuencia de reloj.
MODO 3 Se transmiten (TxD) o se reciben
(RxD) 11 bits, semejante al modo 2 excepto que el
baud rate es variable

La transmisin es inicializada cuando SBUF es


cargado con el dato

Generacin del BAUD RATE


(Frecuencia de transmisin)
FORMULA
2SMOD x Frecuencia de Oscilacin
B.R. =
32 x 12 x (256 - TH1)

SMOD
2
x Frecuencia de Oscilacin
TH1= 256 384 x BAUD RATE

B. RATE

62.5K
19.2K
9600
4800
2400
1200

FOSC

12Mhz
11.05M
11.05M
11.05M
11.05M
11.05M

SMOD C/T

1
1
0
0
0
0

0
0
0
0
0
0

MODO

2
2
2
2
2
2

TH1

FF
FD
FD
FA
F4
E8

8051 INTERNAL BUS

WRITE
TO
SBUF

S
CL

RxD
P3.0 ALT
PUTPUT
FUNCTION

SBUF

ZERO DETECTION

START
S6

SHIFT

TX CLOCK

TX CONTROL
T1

SEND

SERIAL
PORT
INTERRUPT
RX CLOCK

SHIFT
CLOCK

RECEIVE
RX CONTROL

REN
RI

START

SHIFT
RxD
P3.0 ALT
INPUT
FUNCTION

INPUT SHIFT REG.


SHIFT

LOAD
SBUF

TxD
P3.1 ALT
OUTPUT
FUNCTION

SBUF
READ
SBUF

8051 INTERNAL BUS

ALE
WRITE TO SBUF
S6P2
SEND
SHIFT
RxD (DATA OUT)
D0

D1

D2

D3

D4

D5

D6

D7

TxD (SHIFT CLOCK)

TRANSMITE
S3P1

S6P1

T1

WRITE TO SCON (CLEAR R1)

R1

RECEIVE
RECEIVE
SHIFT

RxD (DATA IN)

D0

D1

D2

D3

D4

85P2
TxD (SHIFT CLOCK)

Serail Port Mode 0

D5

D6

D7

8051 INTERNAL BUS

Timer 1
Overflow
WRITE
TO
SBUF

+2
D

SMOD = 1
SMOD = 0

S
CL

TxD

SBUF

ZERO DETECTION

Date

START
TX CONTROL

+ 16

TX CLOCK

Send

T1

SERIAL
PORT
INTERRUPT

+ 16

RX CLOCK RI
1 to 0
Transition
Detector

RECEIVE

RX CONTROL

1FFF

START

SHIFT

Bit Detector
INPUT SHIFT REGISTRER
(9BITS)

RxD

SHIFT
LOAD
SBUF

SBUF
READ
SBUF

8051 INTERNAL BUS


TX
Clock

WRITE TO SBUF
Send
Data

S1P1

TRANSMITE

Shift
TxD

Start Bit

D0

D1

D2

D3

D4

D5

D6

D7

Stop Bit

T1

RX
Clock
RxD

16 Reset

Start Bit

D0

D1

D2

D3

D4

D5

D6

D7

Stop Bit

RECEIVE

Bit Detector
Sample Times
SHIFT
R1

Serail Port Mode1

8051 INTERNAL BUS

WRITE
TO
SBUF

S
CL

TxD

SBUF

ZERO DETECTION

Phase 2 Clock
(1/2 fosc)

SMOD = 1
Date

START
TX CONTROL

SMOD = 1

+ 16

TX CLOCK

Send

T1

SERIAL
PORT
INTERRUPT

+2

+ 16

RX CLOCK RI
1 to 0
Transition
Detector

RECEIVE

RX CONTROL

1FFF

START

SHIFT

Bit Detector
INPUT SHIFT REGISTRER
(9BITS)

RxD

SHIFT
LOAD
SBUF

SBUF
READ
SBUF

8051 INTERNAL BUS

TX
Clock

WRITE TO SBUF
Send
S1P1

Start Bit

RX
Clock
RxD

TRANSMITE

D0

D1

D2

D3

D4

D5

D6

D7

TB8

Stop Bit

16 Reset

Start Bit

D0

D1

D2

D3

D4

D5

Bit Detector
Sample Times

D6

D7

TB8

Stop Bit

RECEIVE

SHIFT
R1

Serail Port Mode2