Академический Документы
Профессиональный Документы
Культура Документы
BUS DE DIRECCIONES
UNIDAD CENTRAL
DE PROCESO C.P.U
INTERFAZ
SERIE
UNIDAD DE
CONTROL U.A.L
BUS DE DATOS
BUS DE CONTROL
ARQUITECTURA DEL
MICROCONTROLADOR 8051
DRIVERS P0 DRIVERS P2
(P0.0-P0.7) (P2.0-P2.7)
RAM R. DIR.
RAM
LATCH P0 LATCH P1 EPROM/
ROM
P. PILA
ACC
R. DIR.
PROGRAMA
PCON SCON TMOD TCON
RCAP2L* SBUF IE IP
UAL
BUFFER
REG. TIMERS,
INTERRUPCIONES Y P. SERIE
PSW
INC. PC
REG.
U.C INSTRUC
CIONES DPTR
DRIVERS P1 DRIVERS P3
(P1.0-P1.7) (P3.0-P3.7)
* SÓLO 8052
EL MICROCONTROLADOR 8051
Características Patillaje
P1.0 1 40 VCC
µC de 8 bits. 2 39 P0.0/ AD0
RAM usuario de 128bytes (256 para el 8052). 3 38 P0.1/ AD1
RAM SFR de 128bytes (128 para el 8052). 4 37
5 36
4K ROM (8K para el 8052). 6 35
32 líneas E/S (4 puertos de 8bits). 7 34
1 interface serie. P1.7 8
8051 33
RESET 9 32 P0.7/ AD7
2 timer de 16 bits (3 para el 8052). RXD/ P3.0 10 31 EA
1 oscilador interno. TXD/ P3.1
11 30 ALE
64K de memoria para programa externo. INT0/ P3.2 12 29 PSEN
13 28
64K para datos externos. INT1/ P3.3
T0/ P3.4 14 27
P2.7/ A15
FFH
SFR SÓLO
DIRECTO (EN
EL 8052 IND.)
7FH
1FFFH 80 BYTES USO
GENERAL
HASTA 8K 8052 DIR.DIRECTO
E INDIRECTO
0000H 30H
4K PARA EL 8051
DIREC. DE BIT
8051 RAM
P0 DATOS
E/S
P1
___
EA Vcc LATCH
___
ALE DIRECC.
P2
E/S __
OE
P3 __
WE
E/S
REGISTROS ESPECIALES
F8H FFH
F0H B F7H
E8H EFH
E0H ACC E7H
D8H DFH
D0H PSW D7H
C8H T2CON* RCAP2L* RCAP2H* TL2* TH2* CFH
COH C7H
B8H IP BFH
B0H PS B7H
A8H IE AFH
A0H P2 A7H
98H SCON SBUF 9FH
90H P1 97H
88H TCON TMOD TL0 TL1 TH0 TH1 8FH
80H P0 SP DPL DPH PCON 87H
* SÓLO 8251
RESET: ACC=B=PSW=DPTR=TMOD=TCON=THX=TLX=SCON= 00H
SP= 07H
P0-3= 0FFH
IP= XXX00000B
IE= 0XX00000B
PCON= 0XXX0000B
CICLO DE LECTURA EN EL µC 8051
CLK
T1 T2 T3 T4 T5 T6 T1 T2 T3 T4 T5 T6
ALE
_____
PSEN
___
RD
PCH DIR. A8 / A15 ( DPH ) PCH
P2
PCL A0-7 PCL
P1
ARITMÉTICAS
ADD A,Rn Suma un registro al acumulador
ADD A,direct Suma el contenido de una dirección al acumulador
ADD A,@Ri Suma el contenido de la dirección apuntada por Ri(R0 ó R1 de cualquier banco) al acumulador
ADD a,#dato Suma el dato inmediato al acumulador
DAC A,Rn Suma un registro al acumulador más el acarreo (todas las anteriores instrucciones de
suma también existen con el carry)
SUBB a,Rn Resta un registro al acumulador (igual que las anteriores)
INC A Incrementa el contenido del acumulador
INC Rn Incrementa el contenido del registro indicado
INC direct Incrementa el contenido de la dirección indicada
INC @Ri Incrementa el contenido de la dirección apuntada por Ri
INC DPTR Incrementa el contenido del registro puntero DPTR
DEC A Decrementa el contenido del acumulador (todas como en incremento, excepto DPTR)
MUL AB Multiplica los contenidos de los registros A y B ( en A queda la parte alta y en B la baja)
DIV AB Divide los contenidos de los registros A y B
DA A Ajusta a decimal el contenido del acumulador, siempre que A ≠ 00H
LÓGICAS
ANL A,Rn Operación lógica AND del acumulador con el registro indicado (todas como en sumas)
ANL direct,A Operación lógica AND del contenido de una dirección con el acumulador.
ANL direct,#dato Operación lógica AND del contenido de una dirección con un dato inmediato
ORL A,Rn Operación lógica OR del acumulador con un registro (todas igual que en AND)
XRL A,Rn Operación lógica OR-X del acumulador con un registro (todas igual que en AND)
CLR A Pone a cero el acumulador
CPL A Complementa bit a bit el acumulador
RL A Rota a izquierdas el acumulador ( RLC A, igual con carry)
RR A Rota a derechas el acumulador (RRC A, igual con carry)
SWAP A Intercambia los bits de mayor peso con los de menor peso en el acumulador
TRANSFERENCIA DE DATOS
MOV A,Rn Mueve el contenido del registro indicado al acumulador (*=también al contrario)
MOV A,direct Mueve el contenido de la dirección al acumulador (*, y MOV Rx,direct)
MOV A,Ri Mueve el contenido de la dirección indicada por Ri al acumulador (*)
MOV A,#dato Mueve el dato indicado al acumulador (* y MOV Rx,#dato)
MOV direct,direct Mueve el contenido de una dirección a otra (también MOV direct,Rx)
MOV DPTR,#dato16 Mueve al puntero DPTR un dato inmediato de 16 bits
MOVC A,@A+DPTR Mueve al acumulador el contenido de la dirección ROM apuntada por DPTR+A
MOVC A,@A+PC Mueve al acumulador el contenido de la dirección ROM apuntada por PC+A
MOVX A,@Ri Mueve al acumulador el contenido de la dirección de memoria externa indicada (*)
MOVX A,@DPTR Mueve al acumulador el contenido de la dirección de memoria externa indicada (*)
PUSH direct Guarda el contenido de una dirección o registro en la pila
POP direct Recupera el contenido guardado en una dirección de la pila
XCH A,Rn Intercambia los contenidos (también con direct y Ri)
XCHD A,@Ri Intercambia el contenido de la parte baja de la dirección apuntada por Ri con A
SET DE INSTRUCCIONES(yII) DEL µC 8051
BOOLEANAS
CLR C Pone a cero el bit de acarreo del registro PSW
CLR bit Pone a cero el bit indicado (CLR P2.7, CLR A.0, CLR OV)
SETB C Pone a uno el bit de acarreo
SETB bit Pone a uno el bit indicado
CPL C Complementa el bit de acarreo
CPL bit Complementa el bit indicado
ANL C,bit Operación lógica AND entre carry y un bit
ANL C,/bit Operación lógica AND entre carry y el complemento a uno de un bit (estas dos
instrucciones también existen con ORL y MOV)
DE CONTROL DE PROGRAMA
ACALL direcc11 Llamada absoluta a subrutina (hasta 2K, en memoria interna)
LCALL direcc16 Llamada larga a subrutina (+de 2K, memoria externa)
RET Retorno de subrutina
RETI Retorno de interrupción
AJMP direcc11 Salto absoluto incondicional (2K)
LJMP direcc16 Salto largo incondicional (+2K)
SJMP rel Salto relativo (+-128bytes de la instrucción)
JMP @A+DPTR Salto indirecto relativo al DPTR
JZ rel Salto si el contenido del acumulador es cero
JNZ rel Salto si el contenido del acumulador es distinto de cero
JC rel Salto si el acarreo es uno (**=se miran los bits de PSW)
JNC rel0 Salto si el acarreo es cero (**)
JB bit, rel Salto si el bit indicado es uno
JNB bit, rel Salto si el bit indicado es cero
JBC bit,rel Salto si el bit indicado es uno y borra el bit
CJNE A,direcc,rel Compara y salta a una dirección relativa si el acumulador no es igual al contenido de
una dirección (existe también con Rn y Ri)
DJNZ Rn,rel Decrementa y salta a una dirección relativa si no es cero el contenido del registro
DJNZ direcc,rel Lo mismo pero con el contenido de una dirección
NOP No realiza operación (se pierde un ciclo)
EL REGISTRO PSW
TMOD
GATE C/T M1 M0 GATE C/T M1 M0
TIMER 1 TIMER 0
TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
PCON
SMOD --- --- --- GF1 GF0 PD IDL
Modo Irregular:
- La señal de reloj no llega a la CPU.
- La señal de reloj llega a Timers, puerto serie e interrupciones.
- Los estados de la CPU son mantenidos.
- Los terminales de los puertos mantienen sus niveles.
- ALE y PSEN, estarán a nivel alto.
- Se sale mediante una interrupción o un Reset.
SCON
SM0 SM1 SM2 REN TB8 RB8 TI RI
Modos de funcionamiento:
SM1-SM0
00 Modo 0, registro de desplazamiento. F= fos/12.
Los datos entran y salen por RXD. TXD es reloj para el desplazamiento.
El bit menos significativo es el primero en transmitirse (8bits).
La emisión comienza al cargar SBUF y acaba cuando TI=”1”.
La recepción comienza estando REM=”1” y RI=”0”. Acaba al poner
RI=”1”.
01 Modo 1, UART de 8 bits. Frecuencia variable (Timer 1).
Los datos se transmiten por TXD y se reciben por RXD.
10 bits= 1 arranque (“0”)+ 8 datos + 1 parada (“1”).
10 Modo 2, UART de 9 bits. F= fos/32 ó F= fos/64 .
Los datos se transmiten por TXD y se reciben por RXD.
11 bits= 1 arranque (“0”)+ 8 datos + 1 bit programable+ 1 parada (“1”).
11 Modo 3, UART de 9 bits. Frecuencia variable (Timer 1).
Los datos se transmiten por TXD y se reciben por RXD.
11 bits= 1 arranque (“0”)+ 8 datos + 1 bit programable+ 1 parada (“1”).
PROGRAMANDO EL µC 8051
DIRECTIVAS
EJEMPLO DE PROGRAMACIÓN
$MOD51
$TITLE(OPERAR CON MEMORIA)
END