Está en la página 1de 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
TIMERS

ROM

RAM

PUERTOS
E/S

REGISTROS

BUS DE DATOS
BUS DE CONTROL

DRIVERS P0
(P0.0-P0.7)
R. DIR.
RAM

RAM

LATCH
P0
EPROM/
ARQUITECTURA
DEL
MICROCONTROLADOR
ROM
8051

DRIVERS P2
(P2.0-P2.7)
LATCH P1
PCON
REG.
B

TMP2 ACC

SCON TMOD

T2CON TH0
TMP1

TL1
RCAP2L*

TL0

TH2* TL2*
SBUF

IE

TCON

R. DIR.
PROGRAMA

TH1

P. PILA
CAP2N*

CP

IP

UAL
REG. TIMERS, INTERRUPCIONES
Y P. SERIE

BUFFER

PSW
INC. PC

U.C

REG.
INSTRUC
CIONES

DPTR

LATCH P.1

LATCH P.3

OSCILADOR

DRIVERS P1
(P1.0-P1.7)

DRIVERS P3
(P3.0-P3.7)

* SLO 8052

EL MICROCONTROLADOR

8051

Caractersticas

Patillaje
P1.0

C de 8 bits.
RAM usuario de 128bytes (256 para el 8052).
RAM SFR de 128bytes (128 para el 8052).
4K ROM (8K para el 8052).
32 lneas E/S (4 puertos de 8bits).
P1.7
1 interface serie.
RESET
RXD/ P3.0
2 timer de 16 bits (3 para el 8052).
TXD/ P3.1
1 oscilador interno.
INT0/ P3.2
64K de memoria para programa externo.
INT1/ P3.3
64K para datos externos.
T0/ P3.4
T1/ P3.5
Frecuencia 12 MHz.
WR/ P3.6
Alimentacin +5v.
RD/ P3.7
111 instrucciones, de 1 a 3bytes.
XTAL2
XTAL1
Ciclo instruccin de 12 ciclos
VSS
de reloj.
6 fuentes de interrupcin (2 externas, 3 timers, 1 serie).

1
2
3

40
39
38
4
37
36 6
35
34 8

5
7
9

VCC
P0.0/ AD0
P0.1/ AD1

33
8051
32 10

11
13
15
25
24
18
22
21

31
30 12
29
28 14
27
26 16
17
23 19
20

P0.7/ AD7
EA
ALE
PSEN
P2.7/ A15

P2.0/ A8

DESCRIPCIN DEL PATILLAJE DEL C 8051


PX.X
RESET
RXD
TXD
____
INTX
TX
___ ___
WR / RD
XTAL1-2
ADX
__
EA
ALE
_____
PSEN
AX

Lneas de entrada/salida de los puertos


Entrada de inicializacin 1
Entrada puerto serie
Salida del puerto serie
Entrada para interrupcin externa X
Entrada de conteo para el timer X
Salidas de escritura y lectura a memoria externa
Entrada y salida del oscilador
Bus de datos y parte baja del de direcciones
Entrada activa por 0 que permite ejecutar programas desde la memoria
externa (1 memoria interna)
Salida para multiplexar el bus de direcciones (ALE=0 datos)
Salida 0 para acceder a la memoria externa
Parte alta del bus de direcciones

HARDWARE DE LOS PUERTOS DEL C 8051

EL MAPA DE MEMORIA DEL C 8051

MEMORIA DE PROGRAMA (64k)


FFFFH

MEMORIA DE DATOS
FFFFH

64K

FFFFH

___
WR

0000H

FFH
SFR SLO
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)


0023H PUERTO SERIE

20H

001BH
0013H
000BH

18H

0003H
0000H

BANCO 3 (R0-7)

TIMER1
INTR.. EXTERNA 1
TIMER 0
INTRR. EXTERNA 0
RESET__

EA=1

10H

OOOOH
EA=0

____
PSEN

08H
00H

BANCO 2 (R0-7)
BANCO 1 (R0-7)
BANCO 0 (RO-7)

__
RD

USO DE LA MEMORIA DEL C 8051


MEMORIA DE DATOS
8051
E/S

RAM

P0

DATOS

P1
___
EA

Vcc

LATCH

___
ALE

DIRECC.

P2
E/S
P3

__
OE
__
WE

E/S

REGISTROS ESPECIALES
F8H
F0H
B
E8H
E0H
ACC
D8H
D0H
PSW
C8H T2CON*
COH
B8H
IP
B0H
PS
A8H
IE
A0H
P2
98H
SCON
90H
P1
88H
TCON
80H
P0

RCAP2L* RCAP2H*

TL2*

TH2*

TH0

TH1

SBUF
TMOD
SP

TL0
DPL

TL1
DPH

* SLO 8251
RESET: ACC=B=PSW=DPTR=TMOD=TCON=THX=TLX=SCON= 00H
SP= 07H
P0-3= 0FFH
IP= XXX00000B
IE= 0XX00000B
PCON= 0XXX0000B

PCON

FFH
F7H
EFH
E7H
DFH
D7H
CFH
C7H
BFH
B7H
AFH
A7H
9FH
97H
8FH
87H

CICLO DE LECTURA EN EL C 8051


CLK
T1

T2

T3

T4

T5

T6

T1

T2

T3

T4

T5

T6

ALE
_____
PSEN
___
RD
P2

PCH

PCL

DIR. A8 / A15 ( DPH )

A0-7

PCH

PCL

P1
Instruccin

Cdigo Dir. Vlida

Dato ledo

Dir. C.P.

SET DE INSTRUCCIONES (I) DEL C 8051


ARITMTICAS
ADD A,Rn
ADD A,direct
ADD A,@Ri
ADD a,#dato
DAC A,Rn
SUBB a,Rn
INC A
INC Rn
INC direct
INC @Ri
INC DPTR
DEC A
MUL AB
DIV AB
DA A

Suma un registro al acumulador


Suma el contenido de una direccin al acumulador
Suma el contenido de la direccin apuntada por Ri(R0 R1 de cualquier banco) al acumulador

Suma el dato inmediato al acumulador


Suma un registro al acumulador ms el acarreo (todas las anteriores instrucciones de
suma tambin existen con el carry)
Resta un registro al acumulador (igual que las anteriores)
Incrementa el contenido del acumulador
Incrementa el contenido del registro indicado
Incrementa el contenido de la direccin indicada
Incrementa el contenido de la direccin apuntada por Ri
Incrementa el contenido del registro puntero DPTR
Decrementa el contenido del acumulador (todas como en incremento, excepto DPTR)
Multiplica los contenidos de los registros A y B ( en A queda la parte alta y en B la baja)

Divide los contenidos de los registros A y B


Ajusta a decimal el contenido del acumulador, siempre que A 00H
LGICAS
ANL A,Rn
Operacin lgica AND del acumulador con el registro indicado (todas como en sumas)
ANL direct,A Operacin lgica AND del contenido de una direccin con el acumulador.
ANL direct,#dato Operacin lgica AND del contenido de una direccin con un dato inmediato
ORL A,Rn
Operacin lgica OR del acumulador con un registro (todas igual que en AND)
XRL A,Rn
Operacin lgica 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 (*=tambin al contrario)
MOV A,direct
Mueve el contenido de la direccin al acumulador (*, y MOV Rx,direct)
MOV A,Ri
Mueve el contenido de la direccin 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 direccin a otra (tambin 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 direccin ROM apuntada por DPTR+A
MOVC A,@A+PC
Mueve al acumulador el contenido de la direccin ROM apuntada por PC+A
MOVX A,@Ri
Mueve al acumulador el contenido de la direccin de memoria externa indicada (*)
MOVX A,@DPTR
Mueve al acumulador el contenido de la direccin de memoria externa indicada (*)
PUSH direct
Guarda el contenido de una direccin o registro en la pila
POP direct
Recupera el contenido guardado en una direccin de la pila
XCH A,Rn
Intercambia los contenidos (tambin con direct y Ri)
XCHD A,@Ri
Intercambia el contenido de la parte baja de la direccin apuntada por Ri con A

SET DE INSTRUCCIONES(yII) DEL C 8051


BOOLEANAS
Pone a cero el bit de acarreo del registro PSW
Pone a cero el bit indicado (CLR P2.7, CLR A.0, CLR OV)

CLR C
CLR bit
SETB C
SETB bit
CPL C
CPL bit
ANL C,bit
ANL C,/bit

Pone a uno el bit de acarreo

ACALL direcc11
LCALL direcc16
RET
RETI
AJMP direcc11
LJMP direcc16
SJMP rel
JMP @A+DPTR
JZ rel
JNZ rel
JC rel
JNC rel0
JB bit, rel
JNB bit, rel
JBC bit,rel
CJNE A,direcc,rel
DJNZ Rn,rel
DJNZ direcc,rel
NOP

Pone a uno el bit indicado


Complementa el bit de acarreo
Complementa el bit indicado
Operacin lgica AND entre carry y un bit
Operacin lgica AND entre carry y el complemento a uno de un bit (estas dos
instrucciones tambin existen con ORL y MOV)
DE CONTROL DE PROGRAMA
Llamada absoluta a subrutina (hasta 2K, en memoria interna)
Llamada larga a subrutina (+de 2K, memoria externa)
Retorno de subrutina
Retorno de interrupcin

Salto absoluto incondicional (2K)


Salto largo incondicional (+2K)
Salto relativo (+-128bytes de la instruccin)
Salto indirecto relativo al DPTR
Salto si el contenido del acumulador es cero
Salto si el contenido del acumulador es distinto de cero
Salto si el acarreo es uno (**=se miran los bits de PSW)
Salto si el acarreo es cero (**)
Salto si el bit indicado es uno
Salto si el bit indicado es cero
Salto si el bit indicado es uno y borra el bit
Compara y salta a una direccin relativa si el acumulador no es igual al contenido de
una direccin (existe tambin con Rn y Ri)
Decrementa y salta a una direccin relativa si no es cero el contenido del registro
Lo mismo pero con el contenido de una direccin
No realiza operacin (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 funcin, disponible para usuario.
RS1 y RS2... seleccin 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 Interrupcin (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 mquina y son atendidas al finalizar la instruccin
en curso, excepto en el caso de estar atendindose una de ,mayor prioridad.
Registro de habilitacin de Interrupciones IE (0A8H de SFR):
EA X

EX0
ET0
EX1
ET1
ES
ET2*
EA

ET2*

ES

ET1

EX1

ET0

0 (TCON) habilita la externa INT0


1 habilita la del Timer0 (rebose)
0 (TCON) habilita la externa INT1
1 habilita la del Timer1(rebose)
1 habilita la del puerto serie
1 habilita la del Timer2
1 habilita todas la interrupciones a 1
0 no reconoce ninguna interrupcin.

EX0

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

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


X

PX0
PT0
PX1
PT1
PS
PT2*

PT2

PS PT1

1 alta prioridad INT0


1 alta prioridad TIMER0
1 alta prioridad INT1
1 alta prioridad Timer1
1 alta prioridad puerto serie
1 alta prioridad Timer2

PX1

PT0

PX0

Orden normal Prioridad


INT0 (mayor)
TIMER0
INT1
TIMER1
P. SERIE

Proceso de Software para las interrupciones:

Habilitar las interrupciones IE

Programar IP para dar prioridades

Programar TCON para las externas

0 auto
0 auto
0 auto
0 auto
0 softw
0softw

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


TIMER 1

C/T

M1

M0

TIMER 0

GATE

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


0 habilita Timerx, si TRx=1
__
0 el timer acta como temporizador.
C/T
1 el timer acta 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 acta como contador de 8 bits controlado por
Timer 0. TH0 acta 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 automticamente con cada ciclo
mquina.
- Como contador se incrementa al producirse una transicin negativa en la entrada del
timer.
TCON

IT0
IE0
IT1
IE1
TR0
TF0
TR1
TF1

TF1

TR1

TF0 TR0

IE1

IT1

IE0

IT0

Indicador de evento para el disparo de INT0.


0 interrupcin por nivel 0.
1 interrupcin por flanco de bajada
Indicador de transicin de la fuente externa INT0.
Se pone a 1 al detectar una transicin en el terminal INT0 . Al procesar la
informacin vuelve a cero.
Igual que IT0, pero para INT1.
Igual que IE0 pero para INT1.
Bit de arranque del Timer 0. Se programa por software 1 arranca, 0 para.
Indicador de desbordamiento del Timer 0. Se pone a 1 al llegar el contador a cero.
Si est permitida la interrupcin, este indicador se pone a 0 al ejecutarse la
subrutina de interrupcin.
Igual que TR0 para el Timer 1.
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
PD
GF0

Bit de control de modo irregular 1.


Bit de control de modo baja Potencia 1.
Bit de propsito general. Flag que puede indicar
que la interrupcin ha ocurrido en modo irregular.
GF1
Bit de propsito general. Flag que puede indicar
que la interrupcin ha ocurrido en modo irregular.
SMOD Bit de control de 13elocidad del puerto serie. 1
duplica la 13elocidad del Timer1.
Modo Irregular:
- La seal de reloj no llega a la CPU.
- La seal 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, estarn a nivel alto.
- Se sale mediante una interrupcin o un Reset.
Modo Baja Potencia:
- El reloj est parado.
- Todas las funciones estn paradas.
- Se mantienen los valores de RAM, SFR y terminales de los puertos.
- ALE y PSEN, estarn a nivel bajo.
- Vcc puede reducirse hasta 2V, una vez se est en este modo.
- Se sale mediante un Reset.

COMUNICACIN SERIE EN EL C 8051


Se realiza utilizando los terminales RXD (entrada) y TXD (salida).
Funciona en full duplex.
Los registros de recepin y transmisin son el mismo y est en la posicin 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 posicin 98H, llamado SCON :
SCON
SM0 SM1 SM2 REN
RI
TI
RB8
TB8
REN
SM2
SM1-SM0

TB8

RB8

TI

RI

Indicador de recepcin. 1 cuando recibe el 8bit en modo cero, as


como el bit de stop en los otros modos. Se pondr a cero por
programa.
Indicador de transmisin. 1 cuando se transmite el 8bit en modo
cero, as como el bit de stop en los otros modos. Se pondr a cero por
programa.
Es el 9bit recibido en modo 2 3. En modo 1, si SM2=0 entonces
RB8 es el bit de stop recibido.
Es el 9bit a transmitir en modo 2 3.
1 habilita la recepcin serie.
1 hace posible la comunicacin multiprocesador en modos 2 y 3.
Seleccionan los modos de funcionamiento:

Modos de funcionamiento:
SM1-SM0

00

01
10
11

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 emisin comienza al cargar SBUF y acaba cuando TI=1.
La recepcin comienza estando REM=1 y RI=0. Acaba al poner
RI=1.
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).
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).
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
END
EQU
;
:

define el origen del programa y viene acompaado de una direccin


define el final del programa
asocia un valor a una constante
define un texto
define una etiqueta

EJEMPLO DE PROGRAMACIN
$MOD51
$TITLE(OPERAR CON MEMORIA)
ORG 0000H
AJMP 100H
ORG 100H

;ORIGEN DE LA MEMORIA DE PROGRAMA


; SALTA A UNA POSICIN NO OCUPADA

CLR C
;BORRA EL BIT DE ACARREO
MOV 70H,#05H
;CARGA LA POSICIN 70 DE RAM CON EL VALOR 05H
MOV A,39H
;MUEVE AL ACUMULADOR EL CONTENIDO DE LA POSICIN 39 DE
RAM

SUBB A,38H
JC SUMA
MOV 70H,A
JMP FIN
SUMA: MOV A,39H
ADD A,70H
MOV 70H,A
FIN:
END

;RESTA DEL ACUMULADOR EL CONTENIDO DE LA POSICIN 38 DE RAM

;SALTA SI EXISTE ACARREO EN LA RESTA A LA DIRECCIN SUMA


;CARGA LA DIRECCIN 70H DE RAM CON LA RESTA
;FINALIZA EL PROGRAMA
;MUEVE AL ACUMULADOR EL CONTENIDO DE LA POSICIN 39 DE RAM
;SUMA EL CONTENIDO DEL ACUMULADOR CON EL DE LA DIRECCIN 70H

;CARGA LA DIRECCIN 70H DE RAM CON LA SUMA

También podría gustarte