MANUAL DEL
MICROCONTROLADOR 8051
Regreso al
men principal
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
11
11
11
12
14
2.1
2.2
2.3
2.4
20
26
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
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
.
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
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,
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
MANUAL DEL
MICROCONTROLADOR 8051
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
11
11
11
12
14
2.1
2.2
2.3
2.4
20
26
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
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
.
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
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,
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 1
CARACTERSTICAS GENERALES DEL
MICROCONTROLADOR 8051
Men principal
men principal
Captulo 1
Captulo 1
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
Captulo 1
Descripcin de conexiones.
Nemnico Conex
Tipo
Vss
ENT
Tierra 0V referencia.
P0.0-P0.7 39-32
E/S
P1.0-P1.7 1-8
E/S
P2.0-P2.7 21-28
E/S
P3.0-P3.7 10-17
E/S
E
S
20
10
11
Nombre y funcin
Captulo 1
12
13
14
15
16
E
E
E
E
S
17
RST
ALE
30
E/S
PSEN
29
EA
31
XTAL1
19
XTAL2
18
Captulo 1
1.3.1
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
VECTOR DE DIRECCIONES
0003H
000BH
0013H
001BH
0023H
002BH
Tabla 1. Interrupciones
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.
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.
P0
Captulo 1
BUS DE DATOS
CONTROLADOR
8051
LATCH
Sujeta
la dir.baja
EA
ALE
P2
EPROM
Dir. Baja
Direccin Alta
PSEN
OE
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.
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
08H
07H
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.
10
Captulo 2
CAPITULO 2
REGISTROS DE FUNCIONES ESPECIALES (SFR)
Regreso al
men principal
14
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
15
Captulo 2
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
AC
F0
RS1
RS0
OV
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3
PSW.2
PSW.1
PSW.0
16
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:
SMOD
GF1
GF0
PD
IDL
SMOD
GF1
GF0
PD
IDL
17
Captulo 2
REGISTRO
IE
0
INT0
IT0
IED
BAJA
PRIORIDAD
TF0
0
INT1
IT1
IED
SECUENCIA
DE
TF1
SERVICIO
DE
RI
INTERRUPCIN
TI
ACCIN
INDIVIDUAL
DESHABILITADOR
GENERAL
18
Captulo 2
ET2
ES
ET1
EX1
ET0
EX0
IE.7
IE.5
IE.4
IE.3
IE.2
IE.1
IE.0
PT2
PS
PT1
PX1
PT0
PX0
IP.5
IP.4
IP.3
IP.2
IP.1
IP.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.
19
CAPITULO 3
MANEJO DE LOS TEMPORIZADORES
Y CONTADORES
Regreso al
Men principal
men principal
Temporizadores y Contadores
Captulo 3
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Temporizadores y Contadores
Captulo 3
del
para
timer
colocar
0.
el
3.3
REGISTRO
DE
TIMER/CONTADOR
MODO
DE
CONTROL
DEL
GATE
C/T
M1
M0
TIMER 1
GATE
C/T
M1
M0
TIMER 0
Temporizadores y Contadores
C/T
Captulo 3
M1
M0
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 )
OSC
1/12
0
TL1
5 BITS
C/T
1
ENTRADA T1
TH1
8 BITS
TF1
Inter
TR1
GATE
ENTRADA
INT1
Temporizadores y Contadores
Captulo 3
OSC
1/12
0
TL1
8 BITS
C/T
1
ENTRADA T1
TH1
8 BITS
TF1
TR1
GATE
ENTRADA
INT1
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
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
Temporizadores y Contadores
Captulo 3
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
CAPITULO 4
CONTROL DEL PUERTO SERIAL
Regreso al
men principal
Men principal
Puerto Serial
Captulo 4
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
27
Puerto Serial
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.
28
Puerto Serial
Captulo 4
la
29
Puerto Serial
Captulo 4
30
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.
31
Puerto Serial
Captulo 4
32
Puerto Serial
Captulo 4
33
Puerto Serial
Captulo 4
34
Puerto Serial
Captulo 4
35
Puerto Serial
Captulo 4
36
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.
37
CAPITULO 5
MODOS DE DIRECCIONAMIENTO
Regreso al
Men principal
men principal
Modos de Direccionamiento
Captulo 5
de
direccionamiento
que
A,7FH
MOV
A,2EH
MOV
A,@R0
MOV
A,@R0
Modos de Direccionamiento
MOVX @DPTR,A
Captulo 5
A,#64H
ADD
A,#120
MOV
es
cargado
Modos de Direccionamiento
Captulo 5
A,R7
DEC
R0
;
;
;
;
;
;
;
;
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.
Modos de Direccionamiento
Captulo 5
MOVX A, @Ri
MOVX @Ri,A
MOVX A,@DPTR
MOVX @DPTR,A
;
;
;
;
A
<@Ri>
A
<@DPTR>
<@Ri>
A
<@DPTR>
A
MOVC A, @A + DPTR ;
programa
MOVC A, @A + PC
;
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
bit2
bit1
0
1
1
0
0
0
1
1
0
1
0
1
MOV C,bit 1
JNB bit 2,conti:
CPL C
Modos de Direccionamiento
conti: RET
Captulo 5
;Regresa al programa
;
;
;
;
;
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
CONTADOR,#10 ; N = 10
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
Modos de Direccionamiento
Captulo 5
CONJUNTO DE INSTRUCCIONES
DEL MICROCONTROLADOR 8051
Regreso
al men
Menu Principal
principal
C-8051
Conjunto de instruciones
ACALL direccin 11
(llamada absoluta)
(SP)
((SP))
(SP)
((SP))
(PC)+2
(SP)+1
(PC7-0)
(SP)+1
(PC15-8)
(PC10-8)
(PC7-0)
(PC15-11 INCREMENTADO)
(OP CODE 15-13) # de la pg.
(OP CODE 7-0) direc. en la pg.
EJEMPLO:
ORG 00H
0000 5100
0002 E8
LAZ02 :
0003 C6
0004 E9
0005 22
0006 02 0200
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.
44
C-8051
Conjunto de instruciones
PCINC = 0204
OPCODE = 1102
B
A
PC FINAL =
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.
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 .
45
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
ADD A, directo
46
C-8051
Conjunto de instruciones
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
0010
OPERACIN:
0101
direccin directa
ADD
(A)
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
47
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
48
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)
CICLOS: 2
CDIGO DE OPERACIN:
a10 a9 a8 0 0 0 0 1
a7
49
a6
a5
a4
a3
a1
a1
AJMP direccin 11
(salto absoluto)
C-8051
Conjunto de instruciones
OPERACIN:
AJMP
(PC)
(PC)+2
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
50
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
51
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
52
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.
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,
53
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
CICLOS: 2
CDIGO DE OPERACIN:
1011
OPERACIN:
(PC)
0101
direccin directa
direccin relativa
(PC) + 3
De lo contrario:
(C)
1
0
54
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
Entonces:
(C)
Adems:
(C)
CICLOS: 2
CDIGO DE OPERACIN:
1011
OPERACIN:
1rrr
dato inmediato
direccin relativa
CJNE
(PC)
(PC) + 3
55
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
De lo contrario:
(C)
CLR A
Limpia el acumulador
CICLOS: 1
CDIGO DE OPERACIN:
1110
OPERACIN:
0100
CLR
(A)
CLR bit
limpia el bit.
56
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
CLR
(bit)
57
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
CICLOS: 1
CDIGO DE OPERACIN:
1011
0011
58
C-8051
Conjunto de instruciones
OPERACIN:
CPL
(C)
/(C)
CPL bit
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
1011
0010
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:
59
DA A
Ajuste decimal del
acumulador por
adicin
C-8051
Conjunto de instruciones
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
CICLOS: 1
CODIGO DE OPERACIN:
1101
OPERACIN:
0100
DA
Los contenidos del acumulador estn contenidos en BCD
SI
SI
60
(A7-4) + 6
C-8051
Conjunto de instruciones
@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)
61
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
BYTES: 1
CICLOS: 4
62
C-8051
Conjunto de instruciones
CODIGO DE OPERACIN:
1000
0100
OPERACIN: DIV
(A)15-8
(A) / (B)
(B))7-0
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.
63
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
64
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
65
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
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
66
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 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
67
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 relativa
JBC
(PC)
(C) + 3
(bit)
(PC)
0
(PC) + rel
Si (bit) = 1
Entonces:
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.
68
C-8051
Conjunto de instruciones
JMP_TBL:
MOV
DPTR,#JMP_TBL
JMP
@A+DPTR
AJMP ETIQTA0
AJMP ETIQTA1
AJMP ETIQTA2
AJMP ETIQTA3
CICLOS: 2
CDIGO DE OPERACIN:
0111
OPERACIN:
0011
JMP
(PC)
(A) + (DPTR)
69
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
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
70
C-8051
Conjunto de instruciones
EJEMPLO :
El acumulador originalmente contiene 00H. La secuencia de instrucciones,
JNZ
INC
JNZ
ETIQUETA1
A
ETIQUETA2
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
direccin relativa
71
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
72
C-8051
Conjunto de instruciones
0156 021145
LJMP SALTO
1145 7827
CICLOS: 2
CDIGO DE OPERACIN:
0000
OPERACIN:
0010
LJMP
(PC)
direc.15-0
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:
73
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)
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
74
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
75
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
76
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
77
MOV
<bit destino>
<bit fuente>
movimiento de bit
C-8051
Conjunto de instruciones
MOV C,bit
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
1010
OPERACIN:
0010
MOV
(C)
(bit)
MOV bit,C
BYTES: 2
CICLOS: 2
CDIGO DE OPERACIN:
10 01
OPERACIN:
MOV
(bit)
MOV DPTR,#DATO 16
carga al apuntador de datos
con una constante de 16 bits.
0010
(C)
BYTES: 3
CICLOS: 2
78
C-8051
Conjunto de instruciones
CDIGO DE OPERACIN:
10 01
OPERACIN:
0000
E
MA
MOV
DPH
DPL
#dato15-8
#dato7-0
INC
MOVC
RET
DB
DB
DB
DB
A
A,@A + PC
66H
77H
88H
99H
CICLOS: 2
CDIGO DE OPERACIN:
10 01
OPERACIN:
0011
MOVC
(A)
((A) + (DPTR))
MOVC A,@A + PC
79
C-8051
Conjunto de instruciones
BYTES: 1
CICLOS: 2
CDIGO DE OPERACIN:
10 00
OPERACIN:
0011
MOVC
(PC)
(A)
(PC) + 1
((A) + (PC))
80
C-8051
Conjunto de instruciones
A,@R1
@R0,A
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
81
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
82
C-8051
Conjunto de instruciones
NOP
NOP
SETB P2.7
NOP
BYTES:
CICLOS: 1
CDIGO DE OPERACIN:
0000
OPERACIN:
0000
NOP
(PC)
(PC) + 1
CICLOS: 1
CDIGO DE OPERACIN:
0100
1rrr
83
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:
84
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
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
ORL C,bit
BYTES: 2
CICLOS: 2
CDIGO DE OPERACIN:
0111
OPERACIN:
0010
bit de direccin
ORL
(C)
(C) V (bit)
85
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)
BYTES: 2
CICLOS: 2
CDIGO DE OPERACIN:
1101
OPERACIN:
0000
Direccin directa
POP
(directo)---((SP))
(SP)---(SP) - 1
PUSH directo
almacenamiento en la
pila.
86
C-8051
Conjunto de instruciones
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.
87
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
88
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.
89
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
90
C-8051
Conjunto de instruciones
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
1101
OPERACIN:
0010
bit de direccin
SETB
(bit)
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
BYTES: 2
CICLOS: 2
CDIGO DE OPERACIN:
1000
OPERACIN:
0000
direccin relativa
SJMP
(PC)
(PC) + 2
91
C-8051
Conjunto de instruciones
(PC)
(PC) + rel
CICLOS: 1
CDIGO DE OPERACIN:
1001
OPERACIN:
1rrr
SUBB
(A)
SUBB A,directo
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
1001
OPERACIN:
0101
direccin directa
SUBB
(A)
92
C-8051
Conjunto de instruciones
SUBB A,@Ri
BYTES: 1
CICLOS: 1
CDIGO DE OPERACIN:
1001
OPERACIN:
011i
SUBB
(A)
SUBB A,#dato
BYTES: 2
CICLOS: 1
CDIGO DE OPERACIN:
1001
OPERACIN:
0100
dato inmediato
SUBB
(A)
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)
93
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)
((Ri))
94
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))
95
C-8051
Conjunto de instruciones
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:
96
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)
(directo) A #dato.
97
Transmisin serial
Perifricos
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.
Regreso al
men principal
Transmisin serial
Perifricos
9600 Hz.
8 BITS
1 BIT
1 BIT
1 BIT
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
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:
Sheet
REV
of
;********************************************
;***** 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
;********************************************
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
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
14 13 12 11 10 .... 3 2 1
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
Regreso
al
Men principal
men principal
Interconexin de Perifricos
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.)
Cdigo
01H
RS
0
R/W
0
DB7
0
DB6
0
DB5
0
DB4
0
DB3
0
DB2
0
DB1
0
DB0
1
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
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
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
__
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
__
RS
1
R/W
0
DB7
0
DB6
1
DB5
0
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
74HC138
REV
SISTEMA MINIMO2
Date:
Sheet
of
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
;CONTROL DEL
;EXHIBIDOR
400B
400B A3
400C 124046
INC DPTR
LCALL XCBDOR
400F
400F
400F
400F 124056
LCALL LIMPIA
4012
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
4046
4047
4048
404A
E4
93
6006
F2
XCBDOR: CLR A
MOVC A,@A+DPTR
JZ TERMIN
MOVX @R0,A
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
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
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
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
;*********************************************
;****** 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
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
POSCUR
007C
TEXTO
008F
SUBEXH
00A5
LAZEXH
00B6
TECLAD
0091
TCON
009D
EXHI
0064
TEX
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
Perifricos
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
on
B
Perifricos
Perifricos
Como cada una de las bobinas deben ser energizadas en los dos sentidos,
(fig. 3).
VCC
Rc
Rb
NPN DAR
Rb
PNP DAR
SECUENCIA DE ENERGIZACION
Rc
-VCC
Size
Document Number
REV
A
Date:
Sheet
of
Perifricos
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
Size
REV
A
Date:
Sheet
of
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
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
A
Date:
REV
SISTEMA MINIMO2
March 30, 1998
Sheet
of
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
0023 758810
0026 75A882
0029 C291
Perifricos
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
Perifricos
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.
Regreso al
men principal
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)
Perifricos
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:
150 pf
ADC0801
74HC138
1k
VOLTAJE DE ENTRADA
10k
CLK
CS
RD
WR
INTR
Sheet
REV
of
Perifricos
0000
0000
0000
0003
0005
0007
0009
000B
000D
000E
000F
0010
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
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
0127
0128
0129
012C
012F
0132
0135
0137
0139
013A
013C
013E
0000
E0
F2
D5230D
D5240A
752310
752427
8C82
8D83
A3
E583
60E5
80E7
Perifricos
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
Regreso al
men principal
11
Perifricos
BUSY
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
Size
Date:
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
Sheet
REV
of
Perifricos
;********************************************
;**** 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
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:
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
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:
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
QUE
ES
UN
MICROCONTROLADOR?
2/22/2000
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
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
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
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
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
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
Reloj
Memoria
de programas
Memoria
de datos
Procesador
central
Contador/
temporizador
Circuitos
de entrada/salida
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
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
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
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
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
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
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
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
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
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
15
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
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
17
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
18
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
2/22/2000
19
Bus de datos
P1
RAM
P0
Vcc
LATCH
EA
ALE
C-8051
P2
2/22/2000
A7
A8
A9
A10
P SEN
RD
Direcc. Bajas
A0
WR
RD
20
WR
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
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
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
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
DIRECCIONAMIENTO INMEDIATO
EL VALOR DE UNA CONSTANTE SIGUE AL CODIGO DE OPERACIN
EN LA MEMORIA DEL PROGRAMA.
MOV A, #64H
; CARGA EL APUNTADOR
ADD A, #120
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
25
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
MOV A, @R1
2/22/2000
26
2/22/2000
27
TRANSFERENCIA DE DATOS
RAM INTERNA
MOV <Destino>, <fuente>
MOV A, <fuente>
;A
MOV <Destino> A
; <Destino>
; DPTR
PUSH <fuente>
POP <Dest>
XCH A; <byte>
XCHD A, @R1
2/22/2000
<fuente>.
A.
16 bits.
28
DIRECCIONAMIENTO DE TABLAS
RAM EXTERNA
MOVX A, @R1
; A <-- <@Ri>.
MOVX @R1, A
; <@Ri> <--A.
29
INSTRUCCIONES BOOLEANAS
ANL C, bit
ANL C, /bit
ORL C, bit
ORL C, /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
JC REL
JB bit, REL
2/22/2000
30
P1.1
P2.2
P2.5
&
2H.
&
21H.3
P3.3
P1.6
MOV
C,P2.2
ORL
C,P2.5
ANL
C,P1.1
CPL
;Invertir el resultado
MOV
F, C
MOV
C,2H.
ANL
C,/21H.3
ORL
C,F
ORL
C,/P1.6
MOV
P3.3, C
2/22/2000
31
AC
F0
RS1
RS0
OV
CY
PSW.7
ACARREO
AC
PSW.6
ACARREO AUX.
FO
PSW.5
USOS GENERALES
RS1
PSW.4
RS0
PSW.3
OV
PSW.2
OVERFLOW
PSW.1
INDEFINIDA
PSW.0
PARIDAD*
32
GF1
GF0
PD
IDL
SMOD
GF1
Propsitos generales
GF2
Propsitos generales
PD
IDL
2/22/2000
33
ET2
ES
ET1
EX1
EA
IE.7
DESACTIVA INTER.
ET2
IE.5
ES
IE.4
ET1
IE.3
EX1
IE.2
ET0
IE.1
EX0
IE.0
ET0 EX0
PT2
PS
PT1
PX1
PT0 PX0
PT2
IP.5
PS
IP.4
PT1
IP.3
PX1
IP.2
PT0
IP.1
PX0
IP.0
2/22/2000
34
TF1
TR1
TF0
TRO IE1
IT1
IE0
IE1
TF1
TCON.7
TR1
TCON.6
TF0
TCON.5
TR0
TCON.4
IE1
TCON.3
IT1
TCON.2
IE1
TCON.1
IT0
TCON.0
2/22/2000
35
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
GATE1 C/T1 M1
M0 GATE0 C/T0
M1 M0
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
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 =
SM 0
0
0
1
1
SM1
SM1
0
1
0
1
SM2
T1
R1
MODO DE TRANSMISIN
Registro de corrimiento fosc/12
UART 8nits, frecuencia variable
UART 9bits, fosc/32 fosc/64
UART 9bits, frecuencia variable
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
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
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
LOAD
SBUF
TxD
P3.1 ALT
OUTPUT
FUNCTION
SBUF
READ
SBUF
ALE
WRITE TO SBUF
S6P2
SEND
SHIFT
RxD (DATA OUT)
D0
D1
D2
D3
D4
D5
D6
D7
TRANSMITE
S3P1
S6P1
T1
R1
RECEIVE
RECEIVE
SHIFT
D0
D1
D2
D3
D4
85P2
TxD (SHIFT CLOCK)
D5
D6
D7
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
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
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
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