Вы находитесь на странице: 1из 15

DIAGRAMA DE BLOQUES DE UN MICROCONTROLADOR

BUS DE DIRECCIONES

UNIDAD CENTRAL
DE PROCESO C.P.U
INTERFAZ
SERIE

UNIDAD DE
CONTROL U.A.L

ROM RAM PUERTOS


TIMERS E/S
REGISTROS

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

REG. TMP2 TMP1 T2CON TH0 TL0 TH1


B
TL1 TH2* TL2* CP
CAP2N*

RCAP2L* SBUF IE IP
UAL
BUFFER
REG. TIMERS,
INTERRUPCIONES Y P. SERIE
PSW
INC. PC

REG.
U.C INSTRUC
CIONES DPTR

LATCH P.1 LATCH P.3


OSCILADOR

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

 Frecuencia 12 MHz. T1/ P3.5 15 26


 Alimentación +5v. WR/ P3.6 16 25
17 24
 111 instrucciones, de 1 a 3bytes. RD/ P3.7
XTAL2 18 23
 Ciclo instrucción de 12 ciclos XTAL1 19 22
VSS
de reloj. 20 21 P2.0/ A8
 6 fuentes de interrupción (2 externas, 3 timers, 1 serie).
DESCRIPCIÓN DEL PATILLAJE DEL µC 8051

PX.X Líneas de entrada/salida de los puertos


RESET Entrada de inicialización “1”
RXD Entrada puerto serie
TXD Salida del puerto serie
____
INTX Entrada para interrupción externa X
TX Entrada de conteo para el timer X
___ ___
WR / RD Salidas de escritura y lectura a memoria externa
XTAL1-2 Entrada y salida del oscilador
ADX Bus de datos y parte baja del de direcciones
__ Entrada activa por “0” que permite ejecutar programas desde la
EA memoria externa (“1” memoria interna)
ALE Salida para multiplexar el bus de direcciones (ALE=0 datos)
_____
PSEN Salida “0” para acceder a la memoria externa
AX Parte alta del bus de direcciones
HARDWARE DE LOS PUERTOS DEL µC 8051
EL MAPA DE MEMORIA DEL µC 8051
MEMORIA DE PROGRAMA (64k) MEMORIA DE DATOS

FFFFH FFFFH 64K FFFFH

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

002BH TIMER 2 (8052) 20H


0023H PUERTO SERIE BANCO 3 (R0-7)
001BH TIMER1 18H
0013H INTR.. EXTERNA 1 BANCO 2 (R0-7)
000BH TIMER 0 10H
INTRR. EXTERNA 0 BANCO 1 (R0-7)
0003H
RESET
0000H __ OOOOH 08H
BANCO 0 (RO-7)

EA=1 EA=0 ____ 00H __ ___ 0000H


PSEN RD WR
USO DE LA MEMORIA DEL µC 8051
MEMORIA DE DATOS

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

Instrucción Código Dir. Válida Dato leído Dir. C.P.


SET DE INSTRUCCIONES (I) DEL µC 8051

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

CY AC F0 RS1 RS0 OV --- P

CY.... bit de acarreo.


AC.... indicador de acarreo en el cuarto bit.
F0..... sin función, disponible para usuario.
RS1 y RS2... selección de los bancos de registros (00-banco 0, 11-banco3).
OV.... indicador de desbordamiento.
P........ indicador de paridad.
INTERRUPCIONES DEL µC 8051
 5 niveles de Interrupción (6 para el 8052):
 2 externas: INT0, INT1.
 2 Timers: T0, T1. (T2 para el 8052).
 1 serie: RXD (TXD).
 Las interrupciones son escrutadas en cada ciclo máquina y son atendidas al finalizar la instrucción
en curso, excepto en el caso de estar atendiéndose una de ,mayor prioridad.

 Registro de habilitación de Interrupciones IE (0A8H de SFR):

EA X ET2* ES ET1 EX1 ET0 EX0

EX0 “0” “ “ (TCON) habilita la externa INT0 0003H “0” auto


ET0 “1” habilita la del Timer0 (rebose) 000BH “0” auto
EX1 “0” ” “ (TCON) habilita la externa INT1 0013H “0” auto
ET1 “1” habilita la del Timer1(rebose) 001BH “0” auto
ES “1” habilita la del puerto serie 0023H “0” softw
ET2* “1” habilita la del Timer2 002BH “0”softw
EA “1” habilita todas la interrupciones a “1”
“0” no reconoce ninguna interrupción.

 Registro de Niveles de Prioridad IP (0B8 de SFR):

X X PT2 PS PT1 PX1 PT0 PX0

PX0 “1” alta prioridad INT0 Orden normal Prioridad


PT0 “1” alta prioridad TIMER0 INT0 (mayor)
PX1 “1” alta prioridad INT1 TIMER0
PT1 “1” alta prioridad Timer1 INT1
PS “1” alta prioridad puerto serie TIMER1
PT2* “1” alta prioridad Timer2 P. SERIE

 Proceso de Software para las interrupciones:

Habilitar las interrupciones IE

Programar IP para dar prioridades

Programar TCON para las externas


TIMERS / COUNTERS DEL µC 8051
 Cada Timer está dotado de un contador de 16 bits. Son accesibles en forma de registros de 8
bits:
TH0 -TL0.... Timer 0.
TH1 -TL1.… Timer 1.
 Se configuran mediante los registros TMOD y TCON.

TMOD
GATE C/T M1 M0 GATE C/T M1 M0

TIMER 1 TIMER 0

GATE “1” habilita Timer x, si INTx=”1” y TRx=”1” (TCON).


“0” habilita Timerx, si TRx=”1”
__ “0” el timer actúa como temporizador.
C/T “1” el timer actúa como contador de los eventos de la entrada Tx.
M1 M0 0 0...contador 13 bits. Modo 0. tiempo= (213-valor de carga)/frec. Oscilador Hz.
El valor de carga viene dado por TLX(5bits)+THX(8bits).
0 1...contador 16 bits. Modo 1. Igual al modo 0 pero con 8 bits de TLX.
1 0...contador 8 bits. THx se carga en TLx al llegar a cero. Modo 2 (autorrecarga).
tiempo= (256-TH1)/frec. Oscilador Hz.
1 1...Timer0: TL0 actúa como contador de 8 bits controlado por
Timer 0. TH0 actúa como temporizador de 8 bits controlado
por Timer 1 (Gate, C/T, TR0, INT0 y TF0).
Timer1: permanece detenido.
Modo 3, igual al modo 2 (autocarga).
- Como temporizador el contador se incrementa automáticamente con cada ciclo
máquina.
- Como contador se incrementa al producirse una transición negativa en la entrada del
timer.

TCON
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

IT0 Indicador de evento para el disparo de INT0.


“0” interrupción por nivel “0”.
“1” interrupción por flanco de bajada
IE0 Indicador de transición de la fuente externa INT0.
Se pone a “1” al detectar una transición en el terminal INT0 . Al procesar la
información vuelve a cero.
IT1 Igual que IT0, pero para INT1.
IE1 Igual que IE0 pero para INT1.
TR0 Bit de arranque del Timer 0. Se programa por software “1” arranca, “0” para.
TF0 Indicador de desbordamiento del Timer 0. Se pone a “1” al llegar el contador a cero.
Si está permitida la interrupción, este indicador se pone a “0” al ejecutarse la
subrutina de interrupción.
TR1 Igual que TR0 para el Timer 1.
TF1 Igual a TF0 para el Timer 1.
MODO BAJO CONSUMO EN EL µC 8051
 Existen dos modos: Baja Potencia, Irregular o ralentizado.

 Se seleccionan mediante el registro PCON.

PCON
SMOD --- --- --- GF1 GF0 PD IDL

IDL Bit de control de modo irregular “1”.


PD Bit de control de modo baja Potencia “1”.
GF0 Bit de propósito general. Flag que puede indicar
que la interrupción ha ocurrido en modo irregular.
GF1 Bit de propósito general. Flag que puede indicar
que la interrupción ha ocurrido en modo irregular.
SMOD Bit de control de elocidad del puerto serie. “1”
duplica la elocidad del Timer1.

 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.

 Modo Baja Potencia:


- El reloj está parado.
- Todas las funciones están paradas.
- Se mantienen los valores de RAM, SFR y terminales de los puertos.
- ALE y PSEN, estarán a nivel bajo.
- Vcc puede reducirse hasta 2V, una vez se está en este modo.
- Se sale mediante un Reset.
COMUNICACIÓN SERIE EN EL µC 8051
 Se realiza utilizando los terminales RXD (entrada) y TXD (salida).
 Funciona en full duplex.
 Los registros de recepión y transmisión son el mismo y está en la posición 99H de Ram
interna y se denomina SBUF. Cuando se transmite se escribe y al recibir se lee.
 El control del puerto se realiza mediante el registro de la posición 98H, llamado SCON :

SCON
SM0 SM1 SM2 REN TB8 RB8 TI RI

RI Indicador de recepción. “1” cuando recibe el 8ºbit en modo cero, así


como el bit de stop en los otros modos. Se pondrá a cero por
programa.
TI Indicador de transmisión. “1” cuando se transmite el 8ºbit en modo
cero, así como el bit de stop en los otros modos. Se pondrá a cero por
programa.
RB8 Es el 9ºbit recibido en modo 2 ó 3. En modo 1, si SM2=0 entonces
RB8 es el bit de stop recibido.
TB8 Es el 9ºbit a transmitir en modo 2 ó 3.
REN “1” habilita la recepción serie.
SM2 “1” hace posible la comunicación multiprocesador en modos 2 y 3.
SM1-SM0 Seleccionan los modos de funcionamiento:

 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

ORG define el origen del programa y viene acompañado de una dirección


END define el final del programa
EQU asocia un valor a una constante
; define un texto
: define una etiqueta

EJEMPLO DE PROGRAMACIÓN

$MOD51
$TITLE(OPERAR CON MEMORIA)

ORG 0000H ;ORIGEN DE LA MEMORIA DE PROGRAMA


AJMP 100H ; SALTA A UNA POSICIÓN NO OCUPADA
ORG 100H

CLR C ;BORRA EL BIT DE ACARREO


MOV 70H,#05H ;CARGA LA POSICIÓN 70 DE RAM CON EL VALOR 05H
MOV A,39H ;MUEVE AL ACUMULADOR EL CONTENIDO DE LA POSICIÓN 39 DE RAM
SUBB A,38H ;RESTA DEL ACUMULADOR EL CONTENIDO DE LA POSICIÓN 38 DE RAM
JC SUMA ;SALTA SI EXISTE ACARREO EN LA RESTA A LA DIRECCIÓN SUMA
MOV 70H,A ;CARGA LA DIRECCIÓN 70H DE RAM CON LA RESTA
JMP FIN ;FINALIZA EL PROGRAMA
SUMA: MOV A,39H ;MUEVE AL ACUMULADOR EL CONTENIDO DE LA POSICIÓN 39 DE RAM
ADD A,70H ;SUMA EL CONTENIDO DEL ACUMULADOR CON EL DE LA DIRECCIÓN 70H
MOV 70H,A ;CARGA LA DIRECCIÓN 70H DE RAM CON LA SUMA
FIN:

END

Вам также может понравиться