Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Microprocesadores 8051
Microprocesadores 8051
Microcontroladores.
Unidad 1
Contenido:
1 Portada.
2 Temario.
3 Manual del Curso.
4 Anexos
Curso de Microcontroladores I
Objetivos del Curso
q
Tiempo aproximado
q
40 Horas
Nmero de prcticas
q
q
Teora: 25 hrs.
Prctica: 15 hrs.
Practicas
q
q
q
q
q
q
q
q
Prctica 1
Prctica 2
Practica 3
Practica 4
Practica 5
Practica 6
Practica 7
Practica 8
Indice General
Capitulo 1. Introduccin a los Microprocesadores.
1.1.
La Evolucion de los Microprocesadores.
1.2.
Caractersticas de los Microcontroladores
1.3.
Pinout de los Microcontroladores Intel
Capitulo 2. Configuracin de la memoria en el Microcontrolador
2.1.
Memoria de p rograma y datos.
2.2.
Memoria de programa.
2.3.
Memoria de datos.
2.4.
Area de direccionamiento slo indirecto.
2.5.
Area de direccionamiento directo e indirecto.
2.6.
Area de registros o funciones especiales
2.7.
Operacin Reset.
Capitulo 3. Programacin de los Microcontroladores
3.1.
Introduccin
3.2.
Modos de direccionamiento
3.3.
Ciclo de instruccin
3.4.
Tipo de instrucciones
3.5.
Instrucciones aritmticas.
3.6.
Instrucciones lgicas.
3.7.
Instrucciones de transferencia movimiento de datos.
3.7.1.
Transferencia de datos sobre la RAM interna
3.7.2.
Transferencia de datos sobre la RAM externa.
3.7.3.
Memoria de programas para el tratamiento de tablas
3.8.
Instrucciones Booleanas
3.9.
Instrucciones de salto.
3.9.1.
Instrucciones de salto incondicional.
3.9.2.
Instrucciones de salto condicional.
3.10.
<<SET>> de instrucciones de la familia MCS-51
Presentacin del software y equipo para el desarrollo de aplicaciones
Introduccin
El Macroensamblador:
Operaciones del editor.
Operaciones de ensamblado.
Operaciones de Encadenado.
Operaciones de Simulacin
Ejecucin y estudio de programas en el Macroensamblador.
Contro l de puertos de Entrada/Salida.
Introduccin
El Microcontrolador como Microprocesador.
Operaciones de escritura en los puertos del Microcontrolador.
El puerto P0 en modo salida.
Operaciones de lectura en los puertos.
Control de procesos Industriales bsicos .
Control del LCD.
Control del Teclado.
Adquisicin de datos mediante ADC
Interrupciones.
Introduccin.
Tipos de Interrupciones.
Proceso de interrupcin en los Microcontroladores.
Niveles de prioridad.
Interrupciones externas. (INT0 ) e (INT1 )
Interrupciones internas producidas por Timer 0 y1.
Temporizadores y Contadores.
Introduccin
Timer 0 (T0) y Timer 1 (T1).
Temporizador/Contador de 13 y 16 bit, arranque por software.
Programas.
Unidad 1
1.1 INTRODUCCIN A LOS MICROPROCESADORES
LA EVOLUCION DEL MICROPROCESADORES
Antes de comenzar a analizar los microprocesadores modernos, se debe primero
entender qu fue lo que paso con estos dispositivos en los primeros aos.
La historia dice que se construyeron gigantescas mquinas computadoras en las
dcadas de 1940 y 1950, construidas con relevadores y tubos de vaco (bulbos).
La primera computadora digital electrnica fue construida por un equipo dirigido por los
ingenieros John Mauchly y John Eckert, de la universidad de Pennsylvania, en 1946. Esta
mquina electrnica fue llamada ENIAC (Electronic Numerical Integrator and Computer), tena
ms de 18000 bulbos y consuma 200 Kw.
Tiempo despus, cuando se integr a este equipo el Ing. y matemtico Hngaro,
naturalizado norteamericano, John Von Neumann fue diseada una nueva computadora
llamada EDVAC (Electronic Discrete Variable Automatic Computer). Las ideas de Von Neumann
resultaron tan fundamentales para su desarrollo, que es considerado el padre de las
computadoras.
El microprocesador de 4 bits
En 1969, Intel Corporation y el talento creativo de Marcian E. Hoff lanzaron el primer
microprocesador: el 4004, de 4 bits. Este microprocesador, programable en un solo
encapsulado era insuficiente, segn las normas actuales, porque slo direccionaba 4096
localidades de 4 bits en la memoria. El 4004 contena un conjunto de instrucciones que
ofrecan slo 45 instrucciones diferentes. Como consecuencia, el 4004 slo se poda emplear
en aplicaciones limitadas, como en los primeros juegos de vdeo y en controladores
pequeos basados en microprocesadores. Cuando surgieron aplicaciones ms complejas
para el microprocesador, el 4004 result inadecuado.
El microprocesador de 8 bits
Ms tarde, en 1971, al percatarse que el microprocesador era un producto, viable
para comercializacin, Intel Corporation produjo el 8008, el primer microprocesador de 8
bits. El tamao ampliado, de la memoria (16K * 8) y las instrucciones adicionales (un total
de 48). Con este nuevo microprocesador se lograron aplicaciones ms avanzadas (1K es
igual a 1024 y un byte es un nmero de 8 bits).
Conforme
los
ingenieros
desarrollaban
usos
ms
demandantes
para
el
otras
empresas
empezaron
lanzar
sus
propias
versiones
de
los
MICRO
COMENTARIOS
1969
Intel 4004
1971
Intel 8008
1973
Intel 8080
1974
Motorola 6800
1975
Zilog Z80
1976
1978
Motorola 6809
como
sistema
mnimo.
este
nuevo
circuito
MICROCONTROLADOR.
Figura 1.8
integrado
se
le
denomin
CPU
Memory Rom
In/Out Port.
Memory Ram
Figura 1.1
(1)
Acumulador. (ACC)
Reg de Instruccin.
Contador del Programa
Decodificador
de Instruccion
(4)
Timing and
Control.
(3)
(2)
Unidad
Aritmetica.
y Logica.
(ALU)
Sin embargo, a veces el trmino es usado (aunque incorrectamente), para inclur todo lo
que est dentro de la caja, incluyendo el disco duro, el CD ROM, la fuente y el motherboard.
(1) Los Registros: Son localizaciones que sirven para almacenar temporalmente datos,
pueden ser de 8 o de 16 bits. Los tres registros ms usados son, el acumulador para
propsito general, el contador de programa y el registro de instrucciones que son de
propsito
especfico.
El
acumulador
almacena
temporalmente
el
resultado
de
las
(2)
La
unidad
aritmtico-lgica
(ALU,
Arithmetic-logic
unit):
es
una
red
combinacional. Acepta dos palabras de datos y una palabra de control que especifica el tipo
de operacin que ha de ejecutarse con los datos. El bus de datos del sistema o cualquiera
de los registros internos del procesador pueden proporcionar palabras de datos. La palabra
de control se define por la unidad de control. La ALU realiza la operacin especificada y
genera una palabra de salida que representa el resultado de la operacin aritmtica o lgica
y un conjunto de seales de estado que indican, por ejemplo, si se produjo un acarreo o
desbordamiento aritmtico. La palabra resultado se puede dirigir a cualquiera, de los
registros internos o al bus de datos. El destino especfico se define por la unidad de control,
dependiendo de la naturaleza de la Operacin que se esta realizando. Las seales de estado
se dirigen a un registro interno especfico del procesador para almacenamiento, denominado
registro de cdigos de condicin.
(3) El Circuito de temporizador y control: Es una red secuencial que acepta un cdigo
que define la operacin que se va a ejecutar y luego prosigue a travs de una secuencia de
estados, generando una correspondiente secuencia de seales de control. Estas seales de
control incluyen el control de lectura - escritura y seales de direccin de memoria vlida en
el bus de control del sistema. Otras seales generadas por el controlador se conectan a la
unidad aritmtica - lgica y a los registros internos del procesador para regular el flujo de
informacin en el procesador y a, y desde, los buses de direccin y de datos del sistema.
C P U ( P)
Memory Rom
In Port.
Out Port.
Amplificador
and
A/D Converter.
Drive
Circuit.
Memory Ram
(C) MEMORIA:
La memoria es una porcin de la computadora que almacena el programa y los datos
mientras estos son necesarios. En esencia la memoria es un grupo de celdas de
almacenamiento. Cada celda puede almacenar un bit de informacin el cual puede ser 1 0.
Por ejemplo la sig. Figura muestra un grupo de 8 celdas o bit almacenados como un patrn
binario que representa la letra P.
0
1 celda.
Otras letras otros tipos de informacin requieren otros tipos de combinacin. La
mayora de los microprocesadores almacenan instrucciones y datos en grupos de 8 bits (1
Byte). Para almacenar ms de una letra es necesario ms de un byte.
0
0
0
1
1
1
0
0
0
0
1
0
1
0
1
0
1
1
0
0
1
Add.
1
0
0
=I
=T
=N
105
106
107
Cada byte almacenado en memoria tiene una direccin. Por ejemplo ITN puede estar
almacenado en las direcciones 105 a 107. Los P son capaces de direccionar 65,536 bytes.
El Acumulador: almacena datos para ser procesados por la ALU. Suelen tener el
mismo nmero de bits que el bus de datos. El acumulador se utiliza con el bus de datos y la
ALU en el proceso aritmertico y logico de los datos. Por ejemplo, dos palabras binarias se
pueden sumar, cargando la primera en el acumulador A y sumandola a la segunda,
cargando el resultado en el acumulador y despus transfiriendo los resultados desde el
Acumulador, a la memoria. Durante la transferencia de los primeros datos, el bus de datos
sirve como una entrada al Acumulador. Durante la segunda, la ALU realiza una suma en la
que el bus de datos proporciona una entrada y el acumulador A la otra; la salida de la ALU
se conecta a la entrada del acumulador A para almacenar el resultado. Durante la tercera
operacin, la salida del Acumulador se conecta al bus de datos, de modo que los resultados
se transfieren a memoria.
dato
su
contenido
se
incrementa
decrementa
automticamente.
En
los
Fig. 1.5
El registro de cdigos de condicin: (PSW) (CCR) Almacena la informacin
que describe los resultados de operaciones anteriores. Esta informacin se almacena
asignando un bit en el registro. En algunos microprocesadores, el registro del cdigo de
condicin. Contiene ocho bits, El bit menos significativo es el bit de acarreo, o bit C, que se
pone a 1 cuando se produce un acarreo aritmtico. El bit de desbordamiento, o bit V, se
pone a 1 si se produce un desbordamiento. El bit cero, o bit Z, el tercer bit en el registro de
cdigos de condicin se pone a 1 cuando se produce el resultado cero. El bit negativo, o bit
N, se pone a 1 cuando el resultado es negativo. El bit de semi acarreo, o bit H, se pone a 1
cuando se produce un acarreo desde el bit 3. El bit H se utiliza con clculos aritmticos con
datos codificados en BCD. Los bits C, V, Z, N y H se ponen a 1, o a 0, automticamente por
el procesador, dependiendo de la naturaleza de la operacin que se est ejecutando y el
resultado de est operacin, adems, los bits C, V e I pueden ser puestos a 1, o a 0, por el
programador utilizando instrucciones especiales para cada bit.
Sin ROM
con EPROM
ROM
RAM
8048AH
8040AH
P8748H
1K
8049AH
8039AHL
P8749H
8050AH
8035AHL
8051
8031
TIMER
TECNOLO
64
HMOS
2K
128
HMOS
No Existen
4K
256
HMOS
8751
4K
128
HMOS
8051AH
8031AH
8751H
4K
128
HMOS
8052AH
8032AH
8752BH
8K
256
HMOS
80C51BH
80C31B
87C51
4K
128
CMOS
TABLA 1.2
Figura 1.9
Figura 1.10
Figura 1.11
Descrip
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
Funciones
RXD (Entrada puerto Serie)
TXD (Salida puerto serie)
INTO (Interrupcin 0. Externa)
INT1 (Interrupcin 1. Externa)
T0 (Entrada externa. Timer 0)
T1 (Entrada externa. Timer 1)
WR (Autorizacin escritura de datos)
RD (Autorizacin escritura de datos)
Neg.
Neg
Neg.
Neg.
TABLA 2.2
RESET: Seal de inicializacin del sistema. Un reset interno al sistema se produce cuando
se pone el pin RST a un nivel alto durante un cierto tiempo, esto se logra de modo
automtico conectando el pin RST a Vcc mediante un capacitor de 10 F y a tierra medinte
una resistencia de 8.2 k .
Figura 1.12
La memoria de programa slo puede ser leda y tiene como mximo 64K byte
externos. (Internamente el 8751 es de 4K byte). La seal de autorizacin de lectura en la
memoria de programa externa es PSEN. El pin EA del MICROCONTROLADOR puesto a Vcc
(+5V) indica que el puntero de programa busca direcciones desde la posicin de memoria
0000H hasta la 0FFFH de la memoria interna y de la 1000H a la FFFFH, en la memoria
externa. Si el pin EA es puesto a Vss (0v), la bsqueda de direcciones del programa se
dirige a la memoria externa en todo momento.
PSEN est a nivel bajo, siendo el resto de las lneas de direccin las que establecen la
posicin de menoria exacta del byte de instruccin u operando que ha de ser ledo.
Si el usuario escribe en el Puerto P0 durante el ciclo de bsqueda en la memoria
externa, el byte de cdigo puede ser modificado. Se recomienda no escribir en el Puerto P0
si es utilizada para leer en la memoria de programa externa.
A la memoria de programas externa se accede bajo dos condiciones:
1. Cuando el pin EA es activo (0), caso de la Figura 1.13
2. Cuando el contador de programa (PC) contiene un nmero ms grande que 0FFFH para
el 8051 o para el 8052.
FUENTE DE INTERRUPCION
RI Y TI
TF1
IE1
TF0
IE0
RESET
0023H...PUERTO SERIE
001BH...INT TIMER 1
0013H... INT EXTERIOR 1
000BH...INT TIMER 0
0003H...INT EXTERIOR 0
0000H... RESET
Tabla 1.4
ha
sido
permitida,
(estableciendo
el
registro de control IE), en el momento que exista una activacin de la interrupcin (estado
bajo en la lnea INT0) el PC se cargar con 0003 y saltar a esa localidad para comenzar a
ejecutar la rutina de servicio.
Como se puede observar en la Tabla 1.4 Anterior el intervalo fsico entre dos
interrupciones es de 8 bytes, espacio capaz de albergar una pequea rutina, pero si ste no
fuera suficiente se desviara el contador del programa (PC) mediante una instruccin de
salto (JMP) a una zona amplia de la memoria de programa capaz de contener dicha rutina.
Como se ha dicho la memoria de programa puede ser interna (en el propio micro)
externa (en otro chip). La seleccin se realiza por hardware, con la seal EA (External
Access). Conectado a Vcc Vss respectivamente.
El hardware de configuracin del Microcontrolador como Microprocesador utilizando
memoria de programa externa se muestra en la Fig 1. 12
Se puede observar en al Figura 1.14 que las 16 lneas de direccin corresponden al
Puerto 0 y al Puerto 2, que estn dedicadas como bus de direcciones; aun ms el Puerto 0
sirve como bus de direcciones y bus de datos multiplexado en el tiempo. Esta operacin
caracterstica de la familia de Microprocesadores Intel, se realiza de la forma siguiente.
Figura 1.14
El Puerto P0 emite el <<byte bajo>> del contador del programa PC (PCL). Una vez
estabilizada la seal sobre P0, la seal ALE (Address Latch Enable) introduce esta
direccin dentro del circuito integrado latch 74LS373, que pasa a apuntar la direccin de
la memoria externa de programas. Al mismo tiempo que el Microcontrolador emite el
PCL por P0, la parte alta del contador del programa (PCH) se emite por P2. Entonces
PSEN autoriza la lectura al Microcontrolador del cdigo de instruccin a travs del Puerto
P0.
Para un mejor entendimiento y seguimiento de los diagramas de tiempos, en la
figura 1.13 se dibuja un circuito esquematico en el que aparece el microcontrolador
comandando una memoria RAM (6116) y una memoria EEPROM (2816).
Figura 1.13
En las siguiente Fig. Se muestra el funcionamiento y diagramas de tiempos de esta
operacin.
Figura 1..15
CICLO MAQUINA:
Un ciclo maquina, para esta familia de Microcontroladores, consiste en una secuencia
de 6 <<estados>>, nombrados S1 a S6. Cada estado esta formado dos periodos de la seal
de reloj que se denominan <<fases>> (fase 1 y fase 2). Teniendo en cuenta que cada ciclo
maquina tiene 12 periodos (6 estados por 2 fases), si el oscilador genera una seal de reloj
de una frecuencia de 12 Mhz, la duracin del ciclo maquina ser de 1 segundo.
Figura 3.4
FFFF
FF
80
7F
SFR
Solo Directo.
64 KBytes
Memoria Externa
Directo
Indirecto
00
0000
RD
WR
FIG. 3.5
Banco 0
Banco 1
Banco 2
Banco 3
Direccin Final
07H
0FH
17H
1FH
27H
2FH
notas de rpido acceso, pero de escasa capacidad. Ocupa las posiciones de memoria 30H a
7FH 80 Bytes. Es la memoria de trabajo RAM del usuario.
30H
40H
50H
60H
70H
3FH
4FH
5FH
6FH
7FH
Smbolo
*ACC
*B
*PSW
SP
DPTR
DPL
DPH
*P0
*P1
*P2
*P3
*IP
*IE
TMOD
*TCON
TH0
TL0
TH1
TL1
*SCON
SBUF
PCON
Nombre
Acumulador
Registro B
Program Status Word
Stack Pointer
Data Pointer 2 Bytes
Low Byte del DPTR
High Byte del DPTR
Port 0
Port 1
Port 2
Port 3
Interrupt Priori ty Control
Interrupt Enable Control
Timer/Counter Mode Control
Timer/Counter Control
Timer/Counter 0 High Byte
Timer/Counter 0 Low Byte
Timer/Counter 1 High Byte
Timer/Counter 1 Low Byte
Serial Control
Serial Data Buffer
Power Contol
Acumulador.
Registro B.
Palabra de Estado del Programa.
Puntero de la memoria de la PILA.
Apuntador de datos.
Byte bajo.
Byte alto.
Puerto 0
Puerto 1
Puerto 2
Puerto 3
Control de prioridad de interrupciones.
Control de autorizacin de Interrupciones.
Control Modo Temporizador/Contador.
Control Temporiza dor/Contador.
Byte alto temporizador/Contador 0
Byte bajo temporizador/Contador. 0
Byte alto temporizador/Contador 1
Byte bajo temporizador/Contador. 1
Control de comunicacin serie.
Buffer de datos de comunicacin serie.
Control de consumo de potencia.
Direccin
0E0H
0F0H
0D0H
81H
------82H
83H
80H
90H
0A0H
0B0H
0B8H
0A8H
89H
8CH
88H
8AH
8DH
8BH
98H
99H
87H
Tabla 3.2
SP: Stack Pointer: es un registro de 8 bits, este es incrementado antes de que el dato sea
almacenado, con un Push o Call. El Stack puede recidir en cualquier lugar de la RAM. El
Stack Pointer es inicializado a 07H despus de un reset, esto hace que el Stack empiece en
la localidad 08H.
DPL y DPH: Data Pointer: Este registro puede ser manipulado como un registro de 16 bits o
como dos registros de 8 bits.
PSW: Program Status Word: Contiene informacin del estado del CPU en cada ciclo de
instruccin.
b7
CY
b6
AC
BIT
b0
b5
F0
b4
RS1
b2
OV
b1
-
b0
P
NOMBRE Y COMENTARIO
P: bandera de paridad del Acumulador (ACC).
-
b1
b2
b3-b4
b3
RS0
- 0 Banco 0 (00-07H)
- 0 Banco 1 (08-0FH)
0 - 1 Banco 2 (10-17H)
1 - 1 Banco 3 (18-1FH)
b5
b6
b7
C: Bandera de Acarreo.
INSTRUCCIONES EJECUTABLES:
Cada
instruccin
ejecutable
en
lenguaje
ensamblador
es
una
representacin
Campo Operacin
Campo Operando
; Campo Comentario
00101111B 2FH.
En ensamblador ADD A, R7
Instrucciones aritmticas.
Instrucciones lgicas.
Instrucciones Booleanas.
Instrucciones de salto.
Direccionamiento Directo.
En este direccionamiento el operando se especifica en la instruccin por un campo de
direccin de 8 bits. Slo la RAM interna de datos (primeros 128 bytes) y la zona de SFR se
pueden direccionar de esta forma.
Ejemplo:
ADD A, 4CH
MOV
3DH, 4EH
Direccionamiento Indirecto:
La instruccin especfica un registro que contiene la direccin del operando. Tanto la
MOVX @DPTR, A
el DPTR.
del PSW, y cada banco de registros tiene ocho registros del R0 al R7. El propio cdigo de
operacin de la instruccin especifica con qu registro se opera; es decir, cuando la
instruccin es ejecutada se accede a uno de los 8 registros del banco seleccionado y en la
mayora de los casos son ms rpidas.
Ejemplo:
MOV Rn,A
Cdigo:
1111
1 r r r
0111
1 r r r
Direccionamiento Implcito.
En estas instrucciones se especifica, implcitamente, el registro sobre el que van a
DPTR (DPTR) + 1
Direccionamiento Inmediato
ADD A, #120
MOV DPTR, #1245H ;El DPTR es cargado con el dato 1245H en forma inmediata.
Direccionamiento Indexado
Este direccionamiento slo es posible en la memoria de programas y slo permite la
lectura. Es utilizado para la lectura de tablas. Un registro base de 16 bits (el DPTR o el
Por ejemplo, la instruccin INC A (figura 3.1 A) tiene 1 de byte de instruccin y requiere
1 ciclo mquina, la instruccin INC DPTR, tambin, de 1 byte de instruccin requiere de 2
ciclos mquina (figura 3.1C) y la instruccin MUL AB requiere de 4 ciclos mquina para su
total ejecucin y ocupa 1 byte en la memoria.
b) El nmero de bytes
Por ejemplo, la instruccin MOV A, # data tiene 2 bytes de instruccin y requiere de 1
ciclo mquina (figura 3.1B). En cambio la instruccin MOV direct, # data al constar de 3
bytes necesita de 2 ciclos mquina. Esto no ocurre siempre, es decir, a ms bytes ms
ciclos mquina, como puede verse en la figura 3.1 B correspondiente a la instruccin, MOV
A, # data y en la figura 3.1D MOVX A,@Ri. La primera instruccin tiene 2 bytes y la
segunda slo 1, en cambio la primera requiere 1 ciclo mquina y la segunda 2.
Ante la imposibilidad de establecer una norma o regla que facilite el conocimiento del
nmero de bytes y ciclo de instruccin se ha editado la tabla 4.5 con el set completo de
instrucciones.
Cabe destacar tambin en la figura 3.1 que en cada ciclo mquina se producen 2
accesos a la memoria. El primero, si es comienzo de ciclo de instruccin, siempre leer el
cdigo de operacin, el segundo que normalmente se descarta. Se utiliza para leer el
segundo byte, operando de la instruccin, como ocurre en la figura 3.1B.
Figura 1.14
Figura 1.15
Por esto la activacin de estas seales depende del formato de la instruccin. Para la
operacin de ESCRITURA en el puerto, la instruccin ms habitual es la siguiente:
MOV PX, <DATO>
Instrucciones aritmticas,
Instrucciones lgicas.
Instrucciones booleanas.
Instrucciones de salto.
Las instrucciones aritmticas, lgicas, de transferencia y de salto son comunes en la
Segn el modo de
direccionamiento
direct
@Ri
Rr
# data
Significado
Direccionamiento directo. Se refiere a una posmem.
Direccionamiento indirecto a travs del registro R0 y R1.
Direccionamiento por registro.
Direccionamiento inmediato. Constante de 8 o 16 bits
En las tablas simplificadas tambin se indica el posible flag (C= Carry, OV=
overflow, AC= Auxiliar Carry) afectado por la instruccin segn el siguiente cdigo:
No es afectado....................................
S es afectado......................................
Afectado ponindolo a ......................
Afectado ponindolo a........................
X
0
1
En algunas tablas no son afectados los flags, y esto se indica con un mensaje en la
parte inferior de las mismas.
Los tiempos de ejecucin Se han tomado utilizando como referencia una frecuencia
de reloj de 12 MHz.
INSTRUCCIONES ARITMETICAS
En la tabla 4.2. Se muestra el men de las instrucciones aritmticas. Se indican en la
tabla los modos de direccionamiento que permite la instruccin y los flags afectados.
Los tiempos de ejecucin que se indican en la tabla estn evaluados sobre una
frecuencia de reloj de 12 MHz.
Tabla 4.2
=Si
=No
Una de las instrucciones INC opera sobre los 16 bits del puntero de datos (DPTR).
Ejemplo:
A = 5FH
DIV AB
B = 0AH
1001 A
1010
0101 1111
0101 B
Entonces
(A3-0) (A3-0) + 6
Y si
Entonces
(A7-4 )
(A7-4) + 6
INSTRUCCIONES LOGICAS
La
tabla
4.3
muestra
la
lista
de
instrucciones
lgicas
los
modelos
Las primeras instrucciones corresponden a las operaciones AND, OR, EXOR y NOT.
Ejemplo:
ANL <byte>, # 3F
Si <byte> = (3A) = 0011 1010
# 3F = 0000 1111
0000 1010 = 0AH
(<byte> se refiere, en este caso, a una posicin de memoria.)
Nemnico
Operacin
Modos de direccionamiento
Tiempo de
Dir
Ind
Reg
Imm
Ejecucin
s
ANL A,<byte>
A=A.AND.<byte>
ANL <byte>,A
<byte>=<byte>.A
ANL <byte>,#data
<byte>=<byte>.And.
ORL A,<byte>
A=A.OR. <byte>
ORL <byte>, A
<byte>=<byte>.OR.A
<byte>=<byte>.OR.# data
XRL A,<byte>
A =A.XOR.<byte>
Flag afectados
C
OV
AC
de
XRL <byte>, A
<byte>=<byte> .XOR. A
CLR A
A=00H
Accumulator only
CPL A
A=.NOT.A
Accumulator only
RL
Accumulator only
RLC A
Accumulator only
RR
Accumulator only
RRC A
Accumulator only
SWAP A
Swap Nibbles in A
Accumulator only
Tabla 4.3
=Si
=No
b7
ACC
b0
B7
ACC
B0
Ejemplo:
(A)
SWAP A
A 0011 0000 (despus)
MOV
A,P0
SWAP
MOV
P0,A
AJMP
START
END
En la lnea 1, se hace la lectura del Puerto P0 y su contenido pasa al acumulador,
En la lnea 2, se intercambian los nibbles.
En la lnea 3, el contenido del acumulador se carga en el puerto P0, con lo que la lectura del
nibbles bajo pasar al nivel alto del puerto P0, y viceversa.
La lnea 4 es un salto incondicional al comienzo del programa.
La RAM interna.
La RAM externa.
Modos de direc.
Nemnico
Operacin
Dir
MOV A,<src>
A=<src>
MOV <dest>, A
<dest> = A
<dest> = <src>
MOV
DPTR, #data 16
Tiempo de
ejecucin (s)
1
1
PUSH <src>
POP <dest>
XCH
A,<byte>
XCHD A, @Ri
1
1
Despus de ejecutarla:
(3A)= 78H : (3D) = 78H
La instruccin MOV DPTR.# data 16 bits, permite transferir datos de 16 bits para
inicializar el DPTR (Data pointer = puntero de datos) en el tratamiento de tablas en la
memoria de programas o para acceder a los datos de la memoria externa.
En
resumen,
stas
son
las
operaciones
que
realiza
la
unidad
de
control
del
microcontrolador.
PUSH <src>
(SP) (SP) +1
((SP)) <src>
POP <dest>
<dest> ((SP))
(SP) (SP) 1
La instruccin XCH A,<bite>, intercambia los datos del acumulador y del byte
direccionando. La instruccin XCHD A,@Ri es similar a la anterior, pero slo implica en el
intercambio el nibble bajo; es una instruccin especializada en la manipulacin de datos
en el cdigo BCD.
Ejemplos:
Antes de ejecutar la instruccin:
(A)= 37H y (2D) = 23H
XCH A, 2DH
Despus de ejecutarla:
(A) = 23H y (2D) = 37H
Antes de ejecutar la instruccin:
XCHD A, @R0
INSTRUCCIONES BOOLEANAS
La
familia
de
microcontroladores
51
concretamente
los
microcontroladores
El conjunto de instrucciones que permiten este tipo de procesos, tan interesante para
las aplicaciones industriales, se encuentran relacionado en la siguiente tabla
Nemnico
Operacin
ANL C, Bit
C = C . AND. Bit
ANL C./bit
ORL C.bit
C=C .OR.bit
ORL C./bit
C=C .OR..NOT.bit
MOV C.bit
C = bit
MOV bit.C
bit = C
CLR C
C=0
CLR bit
bit = 0
SETB C
C=1
SETB bit
Bit = 1
CPL C
C = .NOT.C
CPL bit
JC
Jump jf C = 1
JNC rel
Jump if C =0
JB bit. rel
Jump if bit = 1
Jump if bit = 0
rel
=SI:
Tabla 4.8
OV
AC
= No
Las instrucciones que aparecen en las tablas son: MOVE, SET, CLEAR, NOT, OR y AND.
Se observa cmo en casi todas las instrucciones se hace referencia al flag Carry (C).
Se podra decir que cumple todas las caractersticas que tiene el acumulador en el
procesamiento de palabras. El flag Carry se direcciona directamente dentro de la palabra de
estado PSW, en la posicin <<bit7>>.
B7
C
b5
F0
b0
Todos los bits del PSW son direccionables bit a bit, como todos los registros
sealados del SRF. Es importante resear la presencia del flag F0 (b5 del PSW) de propsito
general, disponible como flag del usuario. Por qu no utilizarlo como indicador, en las
operaciones aritmticas de signo (flag N)?
Comentario aparte exige el tratamiento de las instrucciones booleanas de salto. Hay
instrucciones que producen el salto cuando el bit direccionado est en estado <<1>>, como
son las instrucciones JC,JB y JBC; tambin estn las que producen el salto cuando el bit
direccionado est puesto <<0>>, como son las instrucciones JNC, y JNB. JBC Produce el
salto si el bit direccionado es <<1>> y pone a <<0>>este bit, siendo la nica instruccin
que detecta y pone a <<0>> el bit direccionado.
Secuencias de operaciones:
JC rel
JNC rel
(PC) (PC) +2
(PC) (PC) + 2
Si (C) = 1
Si (C) = 0
Entonces
entonces
JB bit, rel
--------------------(PC) (PC) + 3
Si (bit) = 1
Entonces
(PC) (PC) + rel
Si (bit) = 0
Si (bit) = 1
Entonces
Entonces
(bit) 0
(PC) (PC) + rel
Ejemplos:
A) poner el Carry a set (1) si el bit0 del puerto 1 es <<1>> (P1,0 = 1), el bit7 del
acumulador es <<1>> (A.7=1) y el flag OV = 0.
Programa:
MOV C, P1. 0
ANL C, A . 7
ANL C,/OV
B) Realizar la operacin EXOR bit a bit, entre el b0 del puerto 0 (P0.0) y el b1 del puerto 1
(p1.1). depositando el resultado en el b7 del puerto2.
Para realizar la operacin EXOR, el usuario debe crear un algoritmo, puesto que la
instruccin EXOR no la tienen implementada los microcontroladores de la familia 51.
La operacin a realizarse es:
P2.7 P0.0 .EXOR. P1.1
Programa:
MOV C,P0.0
SALTA:
CPL C
MOV P7.2,C
SALTO1:
SALTO2:
RETARDO:
SALTO3:
DEFSEG ROTAR,ABSOLUTE
SEG ROTA
ORG 0
MOV A,#00H
;Limpia Acumulador
SETB C
RLC A
MOV P0,A
CALL RETARDO
JNB ACC.7,SALTO1
RRC A
MOV P0,A
CALL RETARDO
JNB ACC.0, SALTO2
JMP SALTO1
NOP
MOV R1,#40H
MOV R2,#0FFH
DJNZ R2,$
DJNZ R1,SALTO3
RET
La tabla 3.9 muestra la lista resumida de los saltos incondicionales. Aunque slo figure la
instruccin <<JMP addr>>, de hecho hay tres tipos: SJMP. LMP, y AJMP, que difieren en el
formato de la direccin de salto.
Tabla 3.9
Nemnico
Operacin
JMP addr
JMP @A + DPTR
CALL addr
RET
RETI
NOP
No son afectados las banderas.
Jump to addr
Jump to A + DPTR
Call subroutine at addr
Return from subroutine
Return from interrupt
No operation
2
2
2
2
2
1
SJMP rel : (short jump). La direccin destino del salto viene dada por un <<offset
relativo>>, igual que en las instrucciones de salto booleanas. La instruccin tiene dos bytes,
correspondientes al cdigo de operacin y al byte de offset relativo. El rango del salto est
limitado a 128 y + 127 byte relativos. al primer byte siguiente a la instruccin de salto.
(PC) (PC) +2
CPC) (PC) +
LJMP addr 16: ( Long jump). La direccin destino del salto viene dad por una constante de
16 bits. La instruccin est formada por 3 bytes, 1 byte para el cdigo de operacin y 2
para la direccin del salto. Por tanto, la direccin de destino est ubicada dentro del rea de
los 64K de la memoria de programa.
PC addr 16
AJMP addr 11: (Absolute jump). La direccin destino del salto viene dada por una constante
de 11 bits. La instruccin tiene 2 bytes, uno para el cdigo de operacin que tambin
contiene en s misma 3 de los 11 bits de direcciones, y otro byte que contiene los 8 bits
bajos de la direccin de destino. El cdigo de la instruccin y el operando es :
a10 a9 a8 0
0 0 0 1
A7 a6 a5
CODIGO DE OPERACIN
a4
A3 a2 a1 a0
OPERANDO
Por tanto, el destino del salto tiene que estar comprendido dentro del bloque de los 2
K bytes referenciado respecto a la siguiente instruccin a la del salto.
PC (PC) + 2
(PC 10-0) direccin de la pgina
Programa:
MOV
MOV A, INDI
RL
JMP
@A +DPTR
LCALL addr 16 : utiliza un formato de 16 bits para direccionar la subrutina y esa rea de
direccionamiento es el mximo de 64 Kbytes de la memoria de programas.
Secuencia de operaciones:
(PC) (PC) + 3
(SP) (SP) + 1
((SP)) (PC 7-0 )
(SP) (SP) + 1
((SP)) (PC15-8 )
(PC) addr15-0
ACALL addr 11: utiliza un formato de direccionamiento de 11 bits, por lo que la subrutina
debe estar dentro del rea de los 2 Kbytes, a partir de la siguiente instruccin.
Secuencia de operaciones:
(PC) (PC) +2
(SP) (SP) + 1
((SP)) (PC7-0 )
(SP) (SP) + 1
((SP)) (PC15-8)
(PC10-0) direccin de la pgina
Lo mismo que se indic en los saltos incondicionales, el programador cuando trabaja en
ensamblador slo debe preocuparse de colocar la etiqueta; el programador ensamblador
determiner la longitud del salto y el formato que debe dar al cdigo de instruccin segn la
longitud del salto.
RET: Las subrutinas terminan su ejecucin con la instruccin RET, que es la instruccin que
indica la vuelta al programa principal, justo en la direccin de memoria de la instruccin
siguiente a la instruccin CALL.
Secuencia de operaciones:
(PC15-8) ((SP))
(SP) (SP) 1
(PC7-0) ((SP))
(SP) (SP) 1
RETI: Utilizada para retornar de las rutinas del servicio de interrupciones. Las interrupciones
se estudian de forma especial en el capitulo 10.
Secuencias de operaciones:
(PC15-8) ((SP))
(SP) (SP) 1
(PC7-0) ((SP))
(SP) (SP) 1
4.2.2 INSTRUCCIONES DE SALTO CONDICIONAL
La tabla 3.10 muestra la lista de las instrucciones de salto condicional. Estas
instrucciones son las que van a permitir al microcontrolador tomar decisiones (siguiendo
secuencialmente una parte del programa u otra) ante una propuesta binaria. Que en el
lenguaje coloquial se contesta c on una afirmacin o negacin 1 propuesta de bifurcacin de
la secuencia del programa se halla implcita dentro del cdigo de operacin y es el operando
el que seala la direccin del salto en el formato de <<offset relativo>>, por lo que la
distancia del salto est limitada a 128 y +127 bytes referida a la instruccin siguiente a la
del salto condicional. Trabajando con el programa ensamblador es suficiente sealar con
una etiqueta la direccin del salto o con una constante de 16 bits.
Nemnico
Operacin
Modos de
direccionamiento
Dir
JZ rel
Jump if A=0
JNZ rel
Jump if A<>0
DJNZ <byte>,rel
CJNE A,<byte>,rel
CJNE <byte>,#data,rel
=Si
Ind
Reg
Tiempo de
Imm
Ejecucin s
Accumulator only
Accumulator only
OV
AC
2
X
Flag afectados
=No
Nota: en la tabla 3.10 se sealara como posible operando <byte>, pudiendo ser <byte>:
a) El acumulador.
b) Los registros R0 a R7 con direccionamiento directo.
Los registros R0 y R1 con direccionamiento indirecto.
JZ y JNZ:
Salta si es cero y salta si no es cero. Para determinar si cumple las condiciones de las
instrucciones JZ, y JNZ, la CPU no pasa revista al registro de estado como ocurre en otros
micros, sino que directamente el registro acumulador, pues este microcontrolador no tiene
<< flag cero >> en el registro de estado.
Secuencias de operaciones:
JZ rel
JNZ rel
(PC) (PC) + 2
(PC) (PC) + 2
Si (A) = 0
Si (A)<> 0
entonces
entonces
DJNZ:
Decrementa y salta si no es cero. Esta instruccin est especializada en lazos de control.
Para que ejecute un lazo n veces se carga un
ejecute el contenido del lazo, el contador decrementa una unidad, saliendo del lazo cuando
el contenido del contador sea cero.
(PC)(PC) + 2
(<byte>) (<byte>) 1
Si (<byte>)> 0 o (<byte>)< 0
Entonces
(PC) (PC) + rel
Ejemlpo:
Ejecutar el lazo 10 veces.
MOV CONTADOR, # 10
LAZO: (comienzo del lazo)
-------------------------------------------------
(PC) (PC) + 3
Entonces
(PC) (PC) + rel
Si (A) < (<byte>)
Entonces
(C) 1
sino
(C) 0
Ejemplo:
Ejecuta las instrucciones que hay dentro del lazo hasta que la lectura del perifrico a
travs del puerto 0 (P0), se corresponda con el valor de la posmen 7FH.
MOV A, P0
LAZO: ------------------------------------CJNE A,7F, LAZO
CASO 2. MODELO CJNE <byte>, # dato, salto relativo
Otra aplicacin de estas instrucciones es la comp aracin <<mayor que>> y <<menor
que>>. Si de los dos bytes del campo de operandos el primero es menor que el segundo,
entonces e <<flag CARRY>> del PSW se pone a <<uno>>. Si el primero byte es mayor o
igual que el segundo, entonces el <<flag CARRY>> es <<c ero>>. Estos y otros aspectos
estn aclarados en el Apndice A.
Secuencia de operaciones:
Segn
se
trate
de
direccionamiento
indirecto
(registros
R0
R1
(@Ri)
Nemnico
Operacin
8 bits
MOVX A, @Ri
8 bits
MOVX @Ri,A
16 bits
MOVX A, @ DPTR
16 bits
MOVX @DPTR,A
Tabla 3.5
3AH
85H
?
Antes : (A) = 3AH y (R0) = 85H
MOVX @R0,A ejecucin: (R0) (A)
R1
F3H
R0
85H
Tabla 4.6
Nemnico
Operacin
MOVC A, @ A + DPTR
MOVC A, @ A + PC
A ((A) + (DPTR))
La segunda instruccin es similar a la primera, salvo que el program counter (PC) el que
acta como indicador de la direccin base de la tabla.
PC (PC) + 1
MOVC A, @A+PC
A ((A) + (PC))
Se presenta esta instruccin dentro de una subrutina, estando la tabla de
informacin despus de la instruccin de retorno de la subrutina (RET).
Ejemplo:
Se trata de demostrar el funcionamiento sobre una tabla de 4 datos. A la izquierda
aparece el mapa de memoria del programa
90H
MOV
91H
#01H
92H
CALL
93H
Dire, rutina
A0H
INC A
A1H
MOVC A, @A+PC
A2H
RET
A3H
20H
A4H
21H
A5H
22H
A6H
23H
MOV A, #01H
CALL TABLA
TABLA:
INC A
MOVC A. @A+PC
RET
DATO0
DATO1
DATO2
DATO3
------ (A) +1
02H ------01H + 1
En la instruccin MOVC A, @A+PC el valor del acumulador es 02 y el PC apunta a la
instruccin RET, por lo que la suma A2H + A4H, luego:
A(A4H)
(A) = 21H
PROCESO
Se trata de controla el nivel de lquido de un depsito, utilizando tres sensores
detectores de niveles A,B y C, Y DOS BOMBAS B1 Y B2 (Figura 5.9)
He aqu una descripcin del proceso, desde el punto de vista de su relacin con el mundo
exterior, segn los tres tipos de seales principales:
1. Sensores (entradas)
El sensor A seala el nivel mnimo de agua. Por debajo de este nivel, se indicar
<<VACIO>> en el cuadro de INDICADORES.
El sensor B seala el nivel ptimo y cuando se alcance se indicar <<LLENO>>.
El sensor C seala el nivel peligroso e indica <<REBOSE>>.
Los sensores sern ledos por el microcontrolador a travs del Puerto P3
P3.0 A
P3.1 B
P3.2 C
2. ACTUADORES (salidas)
Cuando ninguno de los sensores estn mojados, se entiende que el depsito est vaco y
los actuadores activarn las dos bombas B1 y B2 (P1.0 y P1.1).
Cuando el nivel del lquido toque la sonda B, se desactivar la bomba B2
(P1,00).quedando la bomba B1 activada en modo mantenimiento.
Si el nivel de lquido moja la sonda C (rebose), se desactivar la bomba B1, quedando
las dos bombas, de momento, fuera de servicio.
3. INDICADORES (salidas)
La sealizacin utiliza el puerto P1.
P1.2 VACIO
P1.3 LLENO
P1.4 REBOSE
Y cuando se produce un fallo (mal funcionamiento) en las sondas de entrada. Por ejemplo,
que el sensor B (P3.1) se active cuando el sensor A (P3.0) no lo est, se excita en el cuadro
de indicadores de seal de ALARMA.
P1.5 ALARMA
La figura 5.10 muestra la disposicin de los actuadores, indicadores y sondas.
DEFSEG CONTROL, ABSOLUTE
SEG CONTROL
ORG
0H
MOV
DPTR,#0100H
;Inicializacin puntero de TABLA
LEER: MOV
A, P3
;LEE puerto P 3
ANL
A, #07H
;Enmascara
MOVC
A, @A+DPTR
; Direcciona y captura dato
MOV
P1, A
; Acta mandando los datos al P1
JMP
LEER
ORG
0100H
DB
07H, 07H, 20H, 09H 20H, 20H, 20H, 10H
END
El segundo bloque lee la informacin de las sondas a travs del Puerto P0.
El tercer bloque enmascara la informacin del puerto P0, dejando solamente los tres
primeros bits tiles de P0.
Es decir, si el estado de las sondas seala A=1, B=1 y C=0 (03H), se realiza el siguiente
acceso a la tabla de datos:
A @A+DPTR, es decir, A (03H + 0100H)
El contenido de la posmem 0103H para el acumulador.
El quinto bloque escribe la informacin leda de la tabla en el Puerto P1.
El contenido de la tabla, segn las directrices dictadas por el algoritmo de control de la
planta, es el siguiente:
0100H
0101H
0102H
0103H
0104H
0105H
0106H
0107
ENTRADAS
P3.2
P3.1
P3.0
C
B
A
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
1
0
1
1
1
0
1
1
1
07H
07H
20H
09H
20H
20H
20H
10H
P1.7
N.C
0
0
0
0
0
0
0
0
;
;
;
;
;
;
;
;
P1.6
N.C
0
0
0
0
0
0
0
0
P1.5
AL
0
0
1
0
1
1
1
0
SALIDAS
P1.4
P1.3
RE
LL
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
P1.2
V
1
1
0
0
0
0
0
0
P1.1
B2
1
1
0
0
0
0
0
0
P1.0
B1
1
1
0
1
0
0
0
0
(CS)Chip Select: Una entrada baja en este pin habilita la comunicacin entre el 8255 y el
Micro.
(RD)Read: Una entrada baja en este pin habilita el 8255 para leer datos del puerto
especificado a la Computadora.
(WR)Write: Una entrada baja en esta pin habilita al 8255 para escribir informacin del
Micro a un puerto o al registro de control.
(A0 y A1): Estas entradas de seal en unin con las seales (RD) y (WR) controlan la
seleccin de uno de los tres puertos o del registro de control. Estas seales son
normalmente conectadas a los bits menos significativos de del bus de direcciones
(A0 y A1) del Microprocesador.
RESET: Una entrada alta en este pin limpia el registro de control y todos los puertos son
puestos en modo de entrada.
OPERACIN BASICA DE LOS PINES A0, A1, RD y WR
A1
0
0
1
A0
0
1
0
RD
0
0
0
WR
1
1
1
CS
0
0
0
0
0
1
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
0
0
X
1
X
X
1
X
X
0
1
X
1
1
1
0
0
OPERACIONES DE LECTURA
Del Puerto A --> Al bus de Datos
Del Puerto B --> Al bus de Datos
Del Puerto C--> Al bus de Datos
OPERACIONES DE ESCRITURA
Del bus de Datos--> Al Puerto A
Del bus de Datos--> Al puerto B
Del bus de Datos--> Al puerto C
Del bus de Datos-> Reg. de Control
FUNCIONES DE 3 ESTADOS
Bus de Datos--> 3 Estados.
CONDICION ILEGAL.
Bus de Datos --> 3 Estados
TABLA 1. 6
El grupo de control A se refiere al puerto A y a los cuatro bit superiores del puerto C.
El grupo de control B se refiere al puerto B y a los cuatro bits inferiores del puerto C.
PUERTO A, B Y C.
El 8255 contiene tres puertos de 8 bits, puerto (A, B y C). Todos cuentan con buffer
en la entrada y salida y pueden ser configurados con variadas caractersticas de
funcionamiento por medio de software pero cada uno tiene su propia personalidad por lo
que el 8255 tiene mucha flexibilidad.
PUERTO A: Cuenta con latch/buffer de 8 bit de salida y solamente latch de entrada.
PUERTO B: Cuenta con un latch/buffer de 8 bit de entrada/salida.
PUERTO C: Cuenta con un latch/buffer de salida y un buffer de entrada. Este puerto puede
ser dividido en dos puertos de 4 bit.
MODO DE OPERACION 0
Esta forma de configuracin consta de operaciones de entrada y salida simples para
cada uno de los tres puertos. No requiere seal de Handshaking por que los datos son
simplemente escritos o ledos por el puerto especificado.
DEFINICION FUNCIONAL DEL MODO 0
CONFIGURACIONES EN MODO 0.
Ejemplo:
REGISTRO DE CONTROL
D7
D6
D5
1
0
0
PALBRA DE CONTROL 80H o 128D
D4
0
D3
0
D2
0
D1
0
D0
0
DEC
PUERTO A
PORT C SUP
PUERTO B
PORT C INF
80H
81H
82H
83H
88H
89H
8AH
8BH
90H
91H
92H
93H
98H
99H
9AH
9BH
128
129
130
131
136
137
138
139
144
145
146
147
152
153
154
155
salida
salida
salida
salida
salida
salida
salida
salida
entrada
entrada
entrada
entrada
entrada
entrada
entrada
entrada
salida
Salida
Salida
Salida
Entrada
Entrada
Entrada
Entrada
Salida
Salida
Salida
Salida
Entrada
Entrada
Entrada
Entrada
salida
salida
entrada
entrada
salida
salida
entrada
entrada
salida
salida
entrada
entrada
salida
salida
entrada
entrad
salida
entrada
salida
entrada
salida
entrada
salida
entrada
salida
entrada
salida
entrada
salida
entrada
salida
entrada
Tabla. 1.8
accin de lectura del puerto, lleva a IBF y a INTR a su estado inactivo hasta que haya un
nuevo dato en el puerto.
Seal
Vss
Vdd
Vo
RS
Nivel
Gnd.
Vcc.
5
6
7
8
9
10
11
12
13
14
R/W
E
DB0
DB1
DB2
DB3
DB4
DB5
DB6
DB7
H/L
H,H- >L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
H/L
Funcin
Tierra 0v Power Supply
5V Power Supply
Voltaje de Contraste.
RS=0 Entrada de Instrucciones,
RS=1 Entrada de Datos.
R/W=0:Data Read, R/W=1:Data Write
Enable, seal de Habilitacin
Bit menos significativo del Bus de Datos
Bus de Datos
Bus de Datos
Bus de Datos
Bus de Datos
Bus de Datos
Bus de Datos
Bit ms significativo del Bus de Datos
Tabla 1.1
EXHIBIDOR ALFANUMRICO
14
13
12
11
10
RS
0
R/W
0
DB7
0
DB6
0
DB5
1
DB4
1
DB3
1
DB2
0
DB1
0
DB0
0
BD5 debe estar a 1, DB4 especifica el tamao del bus (4 8 bits), y el DB3 el numero
de lneas del display. Se debe dar un retardo de 40S antes de enviar la siguiente
instruccin.
2. Se limpia toda la memoria del display y se regresa el cursor a la posicin inicial.
Cdigo
RS
R/W
DB7
DB6
DB5
01H
0
0
0
0
0
Esta instruccin toma un tiempo de 1.64 mS.
DB4
0
DB3
0
DB2
0
DB1
0
DB0
1
DB4
0
DB3
0
DB2
1
DB1
1
DB0
0
DB4
0
DB3
1
DB2
1
DB1
1
DB0
0
5. A partir de aqu se puede comenzar a enviar los caracteres que se desean mostrar
dejando un tiempo de 40S como mnimo y colocando RS=1. Por ejemplo se enviara la
palabra TECNOLOGICO por lo tanto se escribir el siguiente cdigo ASCII.
Primero el cdigo de la letra T
CODIGO
54H
RS
1
R/W
0
DB7
0
DB6
1
DB5
0
DB4
1
__
DB3
0
DB2
1
DB1
0
DB0
0
CODIGO
RS
1
R/W
0
DB7
0
DB6
1
DB5
0
DB4
0
DB3
0
DB2
1
DB1
0
DB0
1
DB7
0
DB6
1
DB5
0
DB4
0
DB3
0
DB2
0
DB1
1
DB0
1
45H
__
RS
1
R/W
0
__
REGISTROS.
El LCD tiene 2 registros de 8-bits, uno es el registro de instrucciones (IR) y otro el
registro de datos (DR).
para escribir una nueva direccin en el registro AC (Address Counter), que es el registro
encargado de apuntar, tanto a la DD RAM (RAM de Datos del Display) como a la CG RAM
(RAM Generador de Caracteres).
Permite la lectura del registro AC, del cual slo son vlidos los 7 bits de menos significativos
DB0-DB6, el bit de mayor peso, DB7 informa del estado del Busy Flag o indicador del
display Ocupado.
Escritura en el DR.
R/W
Operacin
Cuando se encuentra a 1 indica que el LCD est ocupado realizando operaciones internas
y no puede aceptar nuevas instrucciones. Hay que esperar que el Busy Flag valga 0 para
enviar la siguiente instruccin.
Indica la direccin donde sern ledos o escritos los datos sobre DD RAM o CG RAM. Este
registro puede modificarse realizando una escritura en el IR.
Adems, cuando se escriben o se leen datos en el DD RAM o CG RAM, el AC se incrementa o
decrementa de manera automtica de acuerdo con el Modo de Entrada (Entry Mode Set).
Tiene una capacidad de 80 bytes, 40 por cada lnea; lgicamente dependiendo del modelo
slo 16,32,40 80 caracteres podrn ser visualizados a la vez, aunque desplazando (shift)
el display podrn irse visualizando todos los caracteres escritos.
RS
0
0
0
0
0
0
0
0
0
1
1
R/
W
0
0
0
0
0
0
0
0
1
0
1
D7
D6
D5
D4
0
0
0
0
0
0
0
1
BF
0
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
DL
D3
D2
D1
0
0
0
0
0
1
0
1
I/D
1
D
C
S/C
R/L
*
N
F
*
ACG
ADD (Direccin del Cursor)
AC (Address Counter)
Escribir Datos
Leer Datos
Tabla 1.3
D
0
1
*
S
B
*
*
DESCRIPCIN
F = 1: 5x10 dots.
BF =1: operacin Interna.
F = 0: 5x7 dots.
BF =0: Puede aceptar operacin.
- Limpiar Display: Borra display, manda cursor al inicio, y pone el Modo de Entrada en
Incrementar.
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
0
DB1
0
DB6
0
DB5
DB4
0
0
*No Importa.
DB3
0
DB2
0
DB1
1
DB0
*
DB6
0
DB5
0
DB4
0
DB3
0
DB2
0
DB1
I/D
DB0
S
DB6
0
DB5
0
DB4
0
DB3
1
DB2
D
DB1
C
DB0
B
DB0
1
DB6
0
DB5
0
DB4
1
DB3
S/C
DB2
R/L
DB1
*
DB0
*
DB7
0
DB6
0
DB5
1
DB4
DL
DB3
N
DB2
F
DB1
*
DB0
*
DB6
1
DB5
CG5
DB4
CG4
DB3
CG3
DB2
CG2
DB1
CG1
DB0
CG0
DB6
DD6
DB5
DD5
DB4
DD4
DB3
DD3
DB2
DD2
DB1
DD1
DB0
DD0
apuntando, bien CG RAM o DD RAM, segn lo que hayamos seleccionado con anterioridad.
Adems, en el bit de mayor peso se recibe el estado del Busy Flag, indicando si est
ocupado o puede recibir un nuevo dato.
DB7
BF
DB6
AC6
DB5
AC5
DB4
AC4
DB3
AC3
DB2
AC2
DB1
AC1
DB0
AC0
DB6
DB5
DB4
DB3
DB2
DB1
DB0
DB2
DB1
DB0
DB6
DB5
DB4
DB3
RS
0
R/W
0
DB7
0
DB6
0
DB5
1
DB4
1
DB3
1
DB2
0
DB1
0
DB0
0
2.- Se prende la pantalla del display, se activa el cursor sealando la posicin del prximo
caracter de entrada y se desactiva el parpadeo.
CODIGO
0EH
RS
0
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
1
DB2
1
DB1
1
DB0
0
3.- Se establece el movimiento del cursor hacia la derecha, la pantalla del display
permanece fija con la entrada de los caracteres.
CODIGO
06H
RS
0
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
1
DB1
1
DB0
0
4.- A partir de aqu se pueden comenzar a enviar los caracteres que se desean exhibir
dejando un tiempo entre cada uno de ellos
de 40S. Mnimo, y con RS=1.
Por ejemplo para enviar las letras T,E y C se escribe el siguiente cdigo ASCII.
Primero el cdigo para la letra T
CODIGO
54H
RS
1
R/W
0
DB7
0
DB6
1
DB5
0
DB4
1
DB3
0
DB2
1
DB1
0
DB0
0
DB5
DB4
DB3
DB2
DB1
DB0
__
RS
R/W
DB7
DB6
45H
DB5
0
DB4
0
DB3
0
DB2
0
DB1
1
DB0
1
__
RS
1
R/W
0
DB7
0
DB6
1
__
BIBLIOGRAFIA
1. HITACHI DATABOOK.
C
X
X
X
0
0
X
X
X
1
OV
X
X
X
X
X
AC
X
X
X
Instruccin
CLR C
CPL C
ANL C, bit
ANL C,/bit
ORL C, bit
ORL C,/bit
MOV C, bit
CJNE
C
O
X
X
X
X
X
OV
AC
i.....................
Descripcin
Codificacin
Byte
Perodo de
oscilador
12
12
12
12
12
12
12
12
12
12
12
12
ADD
A,Rn
0010
1rrr
ADD
A,direct
0010
0101
ADD
A, @Ri
0010
011i
A DD
A, # data
0010
0100
ADDC
A,Rn
0011
1rrr
ADDC
A, direct
0011
0101
ADDC
A,@Ri
0011
011i
ADDC
A,# data
0011
0100
SUBB
A,Rn
1001
1rrr
SUBB
A, direct
1001
0101
SUBB
A,@Ri
1001
011i
SUBB
A, # data
1001
0100
INC
Increment Accumulador
0000
0100
12
INC
Rn
Increment regitrer
0000
1rrr
12
INC
Direct
0000
0101
12
INC
@Ri
0000
011i
12
DEC
Drecrement Accumulator
0001
0100
12
DEC
Rn
Decrenemt register
0001
1rrr
12
DEC
Direct
0001
0101
12
DEC
@Ri
0001
011i
12
INC
DPTR
1010
0011
24
MUL
AB
Multiply A&B
1010
0100
48
DIV
AB
Divide A by B
1000
0100
48
DA
1101
0100
12
Direct address
Dato I nmediato
Direct address
Immediate data
Direct address
Immediate data
Direct address
Direct address
A,Rn
0101
1rrr
ANL
A,direct
0101
0101
ANL
A,@Ri
0101
011i
ANL
A,# data
0101
0111
Immediate data
ANL
Direct,A
0101
0010
Direct address
ANL
Direct,# data
0101
0011
Direct address
ORL
A,Rn
OR register to Accumulator
0100
1rrr
ORL
A,direct
0111
0101
ORL
A,@Ri
0101
011i
ORL
A,#data
0100
0100
Immediate data
ORL
Direct,A
0100
0010
Direc address
ORL
Direct.#data
0100
0011
Direct address
XRL
A,Rn
0110
1rrr
XRL
A,direct
0110
0101
1
Direct address
2
1
Immediate data
3
1
Direct address
2
1
2
2
Immediate data
3
1
Directs address
XRL
A,@Ri
0110
011i
XRL
A.#dat
0110
0110
Immediate data
XRL
Direct,A
0110
0010
Direct address
XRL
Direct,# data
0110
0011
Direct address
CLR
Clear Acumulator
1111
0100
CPL
Complement Accumulator
1111
0111
RL
0010
0011
RLC
0011
0011
RR
0000
0011
RRC
0001
0011
SWAP
1100
0100
Inmediate data
A,Rn
1110
1rrr
MOV
A,direct
1110
0101
MOV
A,@Ri
1110
100i
MOV
A,#data
0111
0100
MOV
Rn, A
1111
1rrr
MOV
Rn,,direct
1010
1rrr
Direct address
MOV
Rn,#data
0111
1rrr
Immediate data
MOV
Direct,A
Move Accumulator
1111
0101
Direct address
MOV
Direct,Rn
1000
1rrr
Direct address
MOV
Direct,direct
1000
1010
MOV
Direct,@Ri
1000
011i
Direct address
MOV
Direct,# data
0111
0101
Direct address
MOV
@Ri,A
1111
011i
MOV
@Ri,direct
1010
011i
Direct address
MOV
@Ri,# data
0111
011i
I mmediate data
MOV
DPTR,#data 16
1001
0000
Immed. Data 15 -8 .
MOVC
A,@A+DPTR
1001
0011
MOVC
A,@A+PC
1000
0011
MOVX
A,@Ri
1110
001i
MOVX
A,@DPTR
1110
0000
MOVX
@Ri,A
1111
001i
MOVX
@DPTR,A
1111
0000
PUSH
Direct
1100
0000
Direct address
POP
Direct
1101
0000
Direct address
XCH
A,Rn
1100
1rrr
XCH
A,direct
1100
0101
XCH
A,@Ri
1100
011i
XCHD
A,@Ri
1101
011i
1
Direct address
2
1
Immediate data
1
1
2
Dir. Addr (dest)
3
2
Immediate data
3
1
Immed. Data 7 -0
1
Direct address
Clear Carry
1100
0011
12
CLR
Bit
1100
0010
12
SETB
Set Carry
1101
0011
12
SETB
Bit
1101
0010
CPL
Complement Carry
1011
0011
12
12
CPL
BiT
1011
0010
Bit address
12
ANL
C.bit
1000
0010
Bid address
24
ANL
C,/bit
ORL
C,bit
1011
0000
Bid address
24
0111
0010
Bid address
24
ORL
C,/bit
1010
0000
Bid address
24
MOV
C,bit
1010
0010
Bid address
12
MOV
Bit, C
1001
0010
Bit address
24
JC
Rel
0100
0000
Rel address
24
JNC
Rel
0101
0000
Rel address
24
JB
Bit,rel
0010
0000
Bit address
Rel, address
24
JNB
Bit,rel
0011
0000
Bit address
Rel, address
24
JBC
Bit,rel
0001
0000
Bit address
Rel, address
24
Bit address
Bit address
Addr 11
LCALL
Addr 16
RET
RETI
a 10 a 9 a 8 1
0001
a7 a6 a5 a4
a 3 a 2 a1 a 0
0001
0010
addr15- addr8
addr7 - addr0
0010
0010
0011
0010
a 10 a 9 a 8 0
0001
a 7 a 6 a 5 a4
a 3 a 2 a1 a 0
Long jump
0000
0010
addr15- addr8
addr7 - addr0
Rel
1000
0000
rel.address
JMP
@A+DPTR
0111
0011
JZ
Rel
0110
000
rel.address
JNZ
Rel
0111
0000
rel.address
CJNE
A,direct,rel
1011
0101
diret.address
rel.address
CJNE
A,#data , rel
not
1011
0100
immediate data
rel.address
CJNE
Rn,#data,rel
and jump if
1011
1rrr
immediate data
rel.address
CJNE
@R1,#data,rel
1011
010i
immediate data
rel.address
DJNZ
Rn,rel
1101
1rrr
rel.address
DJNZ
Direct,rel
1101
0101
No operation
0000
0000
AJMP
Addr 11
Absolute jump
LJMP
Addr 16
SJMP
NOP
2
1
direct address
2
rel.address
3
1
Las
libreras
(AVLIB)
colecta
mltiples
modules
objeto
para
simplificar
el
encadenamiento.
EL ENSAMBLADOR AVMAC51
El AVMAC51 es un programa, que acepta como entrada un archivo hecho en un
editor de texto, con cdigo fuente en lenguaje ensamblador del 8751, el cual tiene una
extensin .ASM
; Lo procesa y lo ensambla.
; Lo ensambla nicamente.
; Lo preprocesa nicamente.
; Genera un .XRF
EL ENCADNADOR AVLINK
El encadenador es un programa que acepta como entrada uno o varios mdulos
objeto, y produce un solo modulo de salida, encadenado, con cdigo relocalizado y listo
para ser cargado en memoria.
El
AVLINK
entrega
un
archivo
de
salida
en
formato
.HEX
(INTEL),
OF=MOT
;genera un .SYM
HEXFORM filename=filein.hex
-> .BIN
*****
-> .HEX
PSEUDO - OPS
*****
nombre_del_segmento_1
1
DEFSEG nombre_del_segmento_2
SEG
db
nombre_del_segmento_2
2
permite el uso de la palabra "ORG" (origen del inicio de direccin absoluta) dentro del
segmento.
DEFSEG NOMBRE_SEGMENTO, ABSOLUTE
SEG
NOMBRE_SEGMENTO
ORG
100H
db
ORG
db
200H
4
SEG_RELOC
5
ORG
db
300H
6
en mas de un modulo . . .
DEFSEG segol, OVERLAID
seg segol
db 55H
Uso del atributo "CLASS=" . . . Usted puede asignar cualesquier atributo clase aplicable
con la oracin "CLASS="
DEFSEG seg1code, CLASS=CODE
SEG
db
seg1code
8
seg1data
9
Algunos chips usan otras clases, por ocasiones la clase "PAGE0", con la cual coloca datos
en pagina0 . . .
;
SEG
db
segzero
1
Note que cualquier CLASS aplicable a un chip tiene un nombre de segmento predefinido
conocido para el ensamblador, por ejemplo:
SEG
db
SEG
db
CODE
0AH
DATA
0BH
Note que el campo de la direccin del file '.PRN' mostrara despus de la direccin:
& -> Para un segmento definido por el usuario
' -> Para un segmento predefinido como CODE
'' - >
segalign
0DH
Usted puede adems especificar el tamao del bloc de un segmento, usando "BLOCK="
donde el valor deber ser una potencia de 2 -DEFSEG segblock, BLOCK=200H
SEG
db
segblock
0EH
ops validos. Esos debern ser notados en las siguientes tres secciones.)
USO DE LOS pseudo-ops DS DB, DW, ...
DS es usado para reservar un cierto numero de espacio de BYTES sin inicializar . . .
DS
DEFS
123H
DEFW
100H, 256
FDB es como DW, excepto que adems permite dos o ms comas consecutivas previendo
un valor cero entre cada dos comas . . .
FDB
1,2,,3,,,4
DB
1,2,3
"hola, Tecnolgico"
1, 2, "hello"
DEFM
'world', 3
5,,6,7
FCC es un pseudo para definir un texto con dos sintaxis validas. En el primero un numero
decimal seguido por una coma, que indica que esta iniciando el
siguiente carcter
(diferente de espacio o tab), un texto del numero indicado de caracteres ser tomado.
FCC
4,string
FCC
10,string
recortado
cuando sea menor y se le agregaran espacios (caracteres) cuando sea mayor; el numero
mas alto permitido es 132.
En la segunda sintaxis permitida del
es
considerada el limite del texto; hasta que ese carcter sea visto, el texto continuara siendo
procesado.
FCC
/monday/
FCC
zmondayz
FCC
7monday7
FCC
&monday&
EQU
TEQ
TEQ
3
4
SET
labeltwo
ASET
labeltwo
DEFL
otherlabel
DB
Note que usando la opcion ALLPUBLIC har que todas las etiquetas usadas en el presente
modulo sean como PUBLIC.
Para tomar como referencia un smbolo que es definido en otro modulo, use el pseudo-op
EXTERN ...
EXTERN
outlabel
Usando la directiva EXTERN permite que la etiqueta sea usada en el presente modulo, aun
cuando no esta definida all.
Sinnimos de EXTERN incluyen EXT, EXTRN, EXTERNAL, y XREF.
Uso de PROCedures...
Usando PROC permite el uso local de smbolos, esto es, smbolos cual identidad es conocida
solamente entre lo que precede a PROC y antes de ENDPROC.
proclab
L?local
PROC
db
ENDPROC
proc2lab PROC
L?local
db
ENDPROC
Note que el smbolo 'L?local' no causa un
(el
Un CPU de 8 bit.
Ampliacin del set de instrucciones con algunas muy potentes para la adquisicin y
tratamiento de datos, tablas, multiplicacin, divisin, etc.
REGISTROS DE INTERRUPCIONES.
Las interrupciones son controladas mediante la escritura en los registros IE
(Interruption Enable) e IP (Interruption Priority) los cuales fsicamente son representados
en la Figura sig.
IE: Es un registro para habilitar las interrupciones, Permite que se atiendan todas las
interrupciones por el microcontrolador o slo las que el usuario considere aceptables.
REGISTRO IE (Interrupt Enable Register.)
b7
EA
BIT
b0
b1
b2
b3
b4
b5
b6
b7
B6
X
b5
X
b4
ES
b3
b2
b1
b0
ET1
EX1
ET0
EX0
NOMBRE Y COMENTARIO
EX0: Control de Interrupcin externa 0. (INT0).
- Si EX0 = 0 inhabilita la interrupcin externa INT0
- Si EX0 = 1 Habilita la interrupcin externa INT0
ET0: - Si ET0 = 1 habilita interrupcin del Timer0.
- Si ET0 = 0 inhabilita interrupcin del Timer0.
EX1: - Si EX1 = 1 habilita Interrupcin externa 1 (INT1).
- Si EX1 = 0 inhabilita Interrupcin externa 1 (INT1).
ET1: - Si ET1 = 1 habilita interrupcin del Timer1.
- Si ET1 = 0 inhabilita interrupcin del Timer1.
ES: - Si ES = 1 habilita interrupcin del puerto serie.
- Si ES = 0 inhabilita interrupcin del puerto serie.
Reservada.
Reservada.
EA: - Si EA = 1 habilita individualmente a todas las interrupciones que en este
registro estn a uno.
- Si EA = 0 no reconoce ninguna interrupcin.
BIT
b0
b1
b2
b3
b4
b5
b6
Reservada.
b7
Reservada.
b7
X
B6
X
Fuente de Interrupcin
Externa 0 INT0
Timer 0 TIMER0
Externa 1 INT1
Timer 1... TIMER1
Puerto Serie... R1
Puerto Serie T1
Direccin
0003H
000BH
0013H
001BH
0023H
0023H
START:
SALTO1:
SALTO2:
ORG 0H
JMP START
ORG 3H
JMP Tek_INTO
ORG 30H
MOV TCON,#01H
MOV IE,#081H
MOV A,#00H
SETB C
RLC A
MOV P0,A
CALL RETARDO
JNB ACC.7,SALTO1
RRC A
MOV P0,A
CALL RETARDO
Tek_INTO:
SALTO5:
END
MOV R1,#40H
MOV R2,#0FFH
DJNZ R2,$
DJNZ R1,SALTO3
RET
ORG 100H
MOV IE,#0
PUSH ACC
MOV A,PSW
PUSH ACC
MOV A,R0
PUSH ACC
MOV R0,#0AH
MOV P0,#0FFH
CALL RETARDO
MOV P0,#00H
CALL RETARDO
DJNZ R0, SALTO5
POP ACC
MOV R0,A
POP ACC
MOV PSW,A
POP ACC
MOV IE,#081
RETI
Los dos timer pueden ser configurados para que operen como temporizadores o
como contadores.
Cuando el dispositivo opera como timer, el registro contador se incrementa cada ciclo mquina
(la temporizacin se produce contando cada ciclo mquina hasta <<sobrepasar>> el valor prefijado). As,
se puede considerara que funciona como un contador de ciclos mquina, de tal forma que, como a cada
ciclo mquina le corresponden 12 perodos de reloj, la razn de contaje es 1/12 de la frecuencia del
oscilador.
En la funcin como counter (contador), el registro es incrementado en respuesta a la transicin
del nivel alto al nivel bajo (flanco decendente) de la seal externa aplicada al (pin 14) para el contador T0
y al (pin 15) para T1. La entrada externa es muestreada durante el estado 5 de la fase 2(s5p2) de cada
ciclo de mquina. El contador se incrementa cuando la muestra seala un nivel alto de la seal de
entrada en un ciclo y un nivel bajo en el siguiente ciclo. El nuevo valor de contaje aparece en el registro
correspondiente durante el estado 3 de la fase 1(s3p1) del siguiente ciclo en que la transicin ha sido
detectada. Puesto que necesita dos ciclos mquina (24 ciclos de reloj) para reconocer la transicin del
flanco decendente, la mxima razn de contaje es 1/24 de la frecuenia del oscilador.
Los Timer 0 y 1 tienen cuatro modos de operacin.
En la sig. Figura se observan cuatro bloques fundamentales que de izquierda a derecha se van a
exponer a continuacin:
En la parte superior izquierda aparece un dispositivo conmutador que selecciona la forma de efectuar
el <<contaje>>, mediante el oscilador del microcontrolador, o con un reloj externo. La primera opcin
establece aplicaciones generales de tipo timer (temporizador) y la segunda de tipo counter
(contador).
En la parte inferior izquierda se encuentra un circuito lgico que accona el interruptor que permite el
paso de los impulsos que incrementan los registros de contaje. Este circuito permite dos opciones:
activar el interruptor por software, para ello GATE=0 y TR1=1, que son bit de imagen pertenecientes
a los registros TMOD y TCON, o bien se acciona por hardware con las seales de nivel alto,
aplicadas al pin INT 1, estando GATE=1 y TR1=1.
En la parte central se encuentran los registros de contaje, que pueden ser de 8,13 16 bits. Segn el
modo de trabajo (TL1,TH1).
A la derecha de los contadores (TL y TH) se encuentra el bit de flag o bandera. TF1, que seala el
overflow o desbordamiento de los contadores.
TH0-TL0 y TH1-TL1: Timer Register: son pares de registros de 16 bits, que pueden actuar
como temporizadores o contadores.
La funcin como Timer como Counter es seleccionada por el bit de control C/T
perteneciente al registro TMOD (Timer/Counter Mode Control Register). El registro TMOD no
es direccionable <<bit a bit>>.
B7
GATE
B6
B5
C/T
M1
Timer 1
BIT
B0-B1
B2
REGISTRO TMOD
B4
B3
B2
M0
GATE
C/T
B1
M1
Timer 0
B0
M0
NOMBRE Y COMENTARIO
MODO
M1
M0
MODO DE OPERACIN
Temporizador de 13 bits.
Temporizador/Contador de 16 bits.
B3
B4-B5-B6-B7
B6
B5
B4
B3
B2
B1
B0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
BIT
B0
NOMBRE Y COMENTARIO
IT0: Control de Interrupcin externa 0. (INT0).
- Si IT0=0 entonces es activada por un nivel bajo.
- Si IT0=1 Entonces es activada por un flanco de bajada.
B1
B2
B3
B4
B5
B6
B7
La autorizacin para contar pulsos, procedentes del reloj interno o bien del pin 15
(T1) (actuando como contador), se produce en el Timer 1, cuando TR1=1 y las entradas
GATE=0 o INT1=1.
Una aplicacin podra ser, para medir el ancho de pulso a travs del pin INT1 INT0.
EJEMPLO No.1 Timer 1 en Modo 1 como temporizador de 16 bits. El bit 0 del puerto P1
(P1.0), prendera y se apagara en funcin de los valores de carga del Timer 1 (TH1+TL1).
;***** PROGRAMA PARA CONFIGURAR TIMER/COUNTER 1 EN MODO 1 (16 bits) *****
DEFSEG MODO1, ABSOLUTE
SEG MODO1
ORG 0
LJMP INICIO
INICIO:
ORG 30H
MOV
TMOD,#10H
;M0=1 de Timer1,GATE=0,C/T=0
SETB
CALL
CLR
CALL
JMP
TEMPO:
LEER:
MOV
MOV
MOV
MOV
ANL
JZ
RET
P1.0
TEMPO
P1.0
TEMPO
INICIO
;
;
;
;
;
TL1,#00
TH1,#00
TCON,#40H
A,TCON
A,#80H
LEER
END
EJEMPLO No.2 Timer 1 en Modo 1 como temporizador de 16 bits con arranque por hardware desde el
exterior. El bit 0 del puerto P1 (P1.0), prendera y se apagara en funcin de los valores de carga del Timer
1 (TH1+TL1) cuando se aplica un nivel alto por el pin exterior 13 (INT 1).
EJEMPLO No.3 Timer 1 en Modo 2 como temporizador de 8 bits con auto-recarga arranque por
hardware desde el exterior. El contenido de TL1 es enviado por el puerto P0, cuando se aplica un nivel
alto por el pin exterior 13 (INT 1).
SCON: Este registro se encarga de establecer los parmetros para la transmisin o recepcin de datos
en comunicacin serie; as si se trata de una transmisin o recepcin, formato de la palabra (bit de start,
bit de datos, bit de stop), Velocidad, etc.
b7
SM0
BIT
b0
B6
SM1
b5
SM2
REGISTRO SCON
b4
b3
b2
REN
TB8
RB8
b1
TI
b0
RI
NOMBRE Y COMENTARIO
RI: Bandera de interrupcin de recepcin.
Se activa por hardware al finalizar la recepcin del 8 bit en el modo 0 hacia la mitad
intervalo de tiempo del bit de sto p en los otros modos.
b1
b2
del
bit de stop
b3
b4
b5
B6-b7
SBUF : Serial Data Buffer: son dos registros buffer aparentemente separados, pero
fsicamente el mismo, buffer de transmisin y buffer de recepcin. Cuando un dato es
movido a SBUF, este va al buffer del transmisor, cuando un dato es movido de SBUF, este
viene del buffer del receptor.
PCON: Power Control Register: Para aplicaciones en donde la caracterstica de consumo sea
crtica, la versin CHMOS ofrece dos modos de trabajo de bajo consumo: el modo POWER
DOWN y el IDLE. Tambin ofrece, este registro, posibilidades de variar la velocidad de
comunicacin en el canal serie.
SMOD
SMOD
GF1
GF0
PD
IDL
Dobla el BAUD RATE para el puerto serie cuando se utiliza el timer para generar el BAUD RATE.
GF1
Propsito general.
GF0
Propsito general.
PD
IDL