Está en la página 1de 39

SISTEMAS DIGITALES PROGRAMABLES I.

CURSO 04/05
Prctica 1: Introduccin al 8051

1.1

Prctica 1 : INTRODUCCIN 8051

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

ARQUITECTURA

1.2

Organizacin microcontrolador 8051

RAM
256 Bytes

MEMORIA
PASIVA
(OPCIONAL)

HASTA 4KBytes

8051
(8 bits)

T0

PUERTO 0

E/S

T1

PUERTO 1

E/S

PUERTO 2

E/S

PUERTO 3

E/S

PUERTO
SERIE

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MEMORIA RAM INTERNA: ORGANIZACIN

IRAM (Internal RAM)

FF
SFR
80
7F
RAM
00

1.3

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MEMORIA RAM INTERNA: ORGANIZACIN

128 Bytes (parte baja de la memoria):


16 posiciones accesibles bit a bit
4 bancos de 8 registros R0-R7, seleccin
desde PSW (Program Status Word).

BANCO 3
BANCO 2
BANCO 1
BANCO 0

R7
R7
R7
R7

R6
R6
R6
R6

R5
R5
R5
R5

R4
R4
R4
R4

R3
R3
R3
R3

R2
R2
R2
R2

R1
R1
R1
R1

R0
R0
R0
R0

18H
10H
08H
00H

1.4

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

SFR (Special Function Registers)

128 Bytes (parte alta de la memoria):

SFR DE PUERTOS DE ENTRADA/SALIDA


SFR DE CONTROL
OTROS SFRs

Direccionables bit a bit los situados en las posiciones divisibles por 8.

1.5

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

1.6

ACC: acumulador.
B: registro B, acumulador adicional.
DPTR: puntero de datos (16 bits: DPH+DPL).
IE : habilitacin de interrupciones.
IP: prioridad de interrupciones.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

SFR

SP (Stack Pointer):
Tamao 8 bits. Despus de reset apunta a la direccin 07h.
Se incrementa antes de PUSH.
Se decrementa despus de POP.

PSW (Program Status Word):


C

Bit de acarreo

AC

Bit de acarreo auxiliar para operaciones en BCD

F0

Flag de propsito general

RS1 RSO

Seleccin del banco de registros 0

Seleccin del banco de registros 1

Seleccin del banco de registros 2

Seleccin del banco de registros 3

OV

Flag de desbordamiento

F1

Flag de propsito general

Flag de paridad, indica un nmero par/impar de unos en el acumulador

1.7

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MEMORIA PASIVA INTERNA

1.8

La memoria pasiva (los datos permanecen al quitar la


alimentacin) puede ser de tipo ROM, EPROM o FLASH y
contiene el programa a ejecutar por el 8051. Puede tener
hasta 4 Kbytes de memoria de cdigo interna.
Es posible utilizar combinaciones de memoria interna y
externa. Un ejemplo tpico es el que utiliza los 4Kbytes de
ROM en el chip y el resto hasta completar como mximo los
64Kbytes en chips de memoria EPROM.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MEMORIA EXTERNA: ARQUITECTURA HARVARD

Arquitectura Harvard (distincin entre memoria externa de


datos y de programa):
PSEN

Memoria
Programa

80C537
RD
WR

PSEN (Program Store Enable)

Memoria
Datos

1.9

1.10

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Bus de datos y direcciones

RAM
256 Bytes

MEMORIA
PASIVA
(OPCIONAL)

HASTA 4KBytes

8051
(8 bits)

T0

PUERTO 0

T1

PUERTO 1

PUERTO PUERTO 2
SERIE
PUERTO 3

AB[7:0]/D[7:0]

AB[15:8]

MEMORIA
EXTERNA

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MODOS DE DIRECCIONAMIENTO (I)

1.11

Direccionamiento directo:
La direccin del operando se especificada en el cdigo de
instruccin.
Tamao del campo de direccin: 8 bits Espacio de memoria
direccionable: 256 bytes.
Ejemplo: ADD A,30h

Direccionamiento inmediato:
EL operando se indica mediante una constante
Ejemplo: ADD A,#10

Direccionamiento por registro:


El operando es el contenido de un registro que se especifica en el
cdigo de instruccin.
Ejemplo: ADD A,R0

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

MODOS DE DIRECCIONAMIENTO (II)

1.12

Direccionamiento indirecto:
El cdigo de instruccin especifica un registro que contiene la
direccin del operando:
R0,R1 (del banco seleccionado): 8 bits
DPTR: 16 bits.

Ejemplo: ADD A,@R0

Direccionamiento indexado:
El cdigo de instruccin se obtiene de la suma de un registro base
(DPTR/PC) y un registro ndice (ACC).
Facilita el acceso a tablas de datos.
Ejemplo: MOVC A,@ A + DPTR

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

JUEGO DE INSTRUCCIONES

1.13

Instrucciones y modos de direccionamiento orientadas al bit


que permiten realizar controladores lgicos.
Instrucciones aritmticas en BCD.
Acceso a memoria externa a travs de punteros para
facilitar manejo de tablas y reducir el tamao de programa.

Transferencia datos sobre IRAM

1.14

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Modos direccionamiento
Mnemnico

Resultado de la instruccin

DIR

IND

REG

INM

MOV A, src

(A) = (src)

MOV des, A

(des) = (A)

MOV Rn, scr

(Rn) = (src)

MOV direc,src

(direc) = (src)

MOV @Ri,src

((Ri)) = (src)

MOV DPTR, #dato16

(DPTR) = constante 16 bits.

PUSH src

INC SP; MOV @SP, src

POP des

MOV des,@SP; DEC SP

XCH A,des

intercambia contenido de A y des

XCHD A, @Ri

intercambia los 4 bits de menor peso del


contenido de A y el apuntado por Ri

() indica contenido
Ri=R0 o R1 del banco de registros seleccionado.
DIR: direc. Directo; IND: direc. Indirecto; REG: direc. Registro; INM: direc. Inmediato

X
X

X
X
X

X
X

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Conjunto de instrucciones
Tema 1: Introduccin al 8051

Transferencia datos sobre IRAM (Ejemplos 1)

Ejemplos:
MOV A,R0
MOV @R1,A
MOV A,#3
MOV 25H,26
MOV DPTR,#2F7AH

MOV C,P3.1

1.15

Conjunto de instrucciones

dato
25H
R0
R1

2F7AH
2A
5F
A4
3

26(1AH)
DPTR
A
9AC8
1C
F5

DPTR
25H
R0
A 26(1AH)
5FH
A
2F7A
1C
2A
03
F5

1C
2A
F5

5FH
B3

C
0

P3.1
1

C
1

P3.1
1

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Transferencia datos sobre IRAM (Ejemplos 2)

1.16

Ejemplo:
PUSH ACC
POP ACC

RAM interna

SP
3A
39
51
50

A
06
45
BF

255

+1

3AH
51H

BF
06
Posicin
inicial

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Transferencia datos sobre XRAM

1.17

Mnemnico

Resultado

Espacio direcciones

MOVX A, @Ri

(A) = ((Ri))

8 bits

MOVX @Ri, A

((Ri)) = (A)

8 bits

MOVX A, @DPTR

(A) = ((DPTR))

16 bits

MOVX @DPTR, A

((DPTR)) = (A)

16 bits

Ri=R0 o R1 del banco de registros seleccionado.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Programacin de Tema
un microprocesador
1: Introduccin al 8051

1.18

Ejemplo:
DPTR
R0

MOVX A,@R0
MOVX @DPTR,A
A

39
84
6F

RAM Externa Datos

A5
03A5

65535
255

03A5H
A5H

BF
6F
39
0

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Transferencia datos desde memoria de programa

Mnemnico:

Resultado instruccin:

MOVC A, @A + DPTR

(A) = ((A) + (DPTR))

MOVC A, @A + PC

(A) = ((A) + (PC))

PC: contador de programa

1.19

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

1.20

Ejemplo:
MOVC A,@A+DPTR
MOVC A,@A+PC
RAM
Memoria
Externa
programa
Datos

DPTR
PC

65535
65535

E12A
B4B0

A
03
18
9C
C2

E12DH
B4C8H

9C
C2
00

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones lgicas

1.21

Mnemnico:

Resultado de la instruccin:

CLR A

pone a cero el acumulador

CPL A

complementa el acumulador (cambia 0 por 1 y viceversa)

RL A

rota 1 bit a la izquierda el acumulador de forma circular (el bit 7 pasa a ser el bit 0)

RLC A

rota 1 bit a la izquierda el acumulador de forma circular a travs del bit acarreo (el bit 7
pasa a ser el acarreo y el acarreo pasa a ser el bit 0)

RR A

rota 1 bit a la derecha el acumulador de forma circular (el bit 0 pasa a ser el bit 7)

RRC A

rota 1 bit a la derecha el acumulador de forma circular a travs del bit acarreo (el bit 0 pasa
a ser el acarreo y el acarreo pasa a ser el bit 7).

SWAP A

intercambia los nibbles (4 bits) bajo y alto del acumulador. Es igual a una rotacin de 4
bits (RL o RR)

Modos de direccionamiento:
Mnemnico:

Resultado :

DIR

IND

REG

INM

ANL A, op

(A)=(A) AND (op)

ORL A, op

(A)=(A) OR (op)

XRL A, op

(A)= (A) (op)

DIR: direc. Directo; IND: direc. Indirecto; REG: direc. Registro; INM: direc. Inmediato

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones de manejo de bits


Mnemnico:

Resultado de la instruccin:

Operando:

CLR bit

pone a cero el bit

C o cualquier bit

SETB bit

pone a uno el bit

C o cualquier bit

CPL bit

complementa el bit

C o cualquier bit

1.22

C: bit de acarreo

Mnemnico:

Resultado:

bit

ANL C, bit

(C) = (C) AND (bit)

cualquier bit

ORL C. bit

(C) = (C) OR (bit)

cualquier bit

MOV C, bit

(C) = (bit)

cualquier bit

MOV bit, C

(bit) = (C)

cualquier bit

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones de salto condicional

Mnemnico:

Condicin:

Resultado

JB bit , rel

si bit = 1

salta a la direccin(PC) + rel

JBC bit , rel

si bit = 1

salta a la direccin(PC) + rel


y desactiva el bit

JNB bit , rel

si bit = 0

salta a la direccin(PC) + rel

JC rel

si C = 1

salta a la direccin(PC) + rel

JNC rel

si C = 0

salta a la direccin(PC) + rel

"rel" es un entero de 8 bits con signo (-128 a 127)

1.23

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones artimticas

1.24
DIR

IND

REG

INM

suma aritmtica de byte con el acumulador guardando el resultado en este


ltimo. Los bits C y OV se ven afectados. Si se suman enteros sin
signo el desbordamiento se indica con C=1 mientras que si se suman
enteros con signo se indica mediante OV=1

ADDC A,
byte

realiza la suma aritmtica del operando2 con el acumulador y con el


acarreo (C) guardando el resultado en el acumulador. C y OV se ven
afectadas de igual forma que en ADD

DA A

corrige el resultado de una suma almacenado en el acumulador para


ponerlo en BCD, aadiendo 0110 si el resultado del dgito BCD es
mayor que 9

DEC byte

decrementa en 1 el byte indicado. Si decrementamos 00H obtendremos


FFH

DIV AB

divide el acumulador (A) entre el registro B (ambos enteros sin signo). La


parte entera del cociente se guarda en A y el resto entero se guarda
en B. Una divisin por cero pone OV=1

INC byte

incrementa en 1 el byte indicado. Si incrementamos FFH obtendremos 00H

INC DPTR

incrementa en 1 el puntero de datos (16 bits)

MUL AB

multiplica el acumulador y el registro B (ambos enteros sin signo). El byte


bajo del resultado se guarda en A y el byte alto en B

SUBB A,
byte

resta el byte y el acarreo (C) del acumulador y guarda el resultado en este


ltimo. El acarreo de la resta (C) se pone a 1 cuando el resultado es
negativo. Esto permite hacer restas de mayor precisin (16 bits, etc.).
El desbordamiento se indica mediante OV=1

Mnemnico

Resultado

ADD A, byte

DIR: direc. Directo; IND: direc. Indirecto; REG: direc. Registro; INM: direc. Inmediato

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones de salto incondicional

Mnemnico

Direccin de salto

SJMP rel

(PC) = (PC) + rel

LJMP addr16

(PC) = addr16

AJMP addr11

(PC) = addr11

JMP @A + DPTR

(PC)= (A) + (DPTR)

LCALL addr16

(PC) = addr16

Guarda PC en la pila (*)

ACALL addr11

(PC) = addr11

Guarda PC en la pila (*)

RET

(PC) = ((SP))

Repone el PC de la pila

RETI

(PC) = ((SP))

Repone el PC de la pila

(*) -128 rel +127


(**) Primero se almacena el byte de menor peso y despus el de mayor peso

Operaciones adicionales

1.25

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

Instrucciones de salto condicional

1.26

Mnemnico

Condicin

Direccin de salto

JZ rel

Salto si (A) = 0

(PC) = (PC) + rel

JNZ rel

Salto si (A) 0

(PC) = (PC) + rel

DJNZ byte,rel

Decrementa (byte) y salta


si (byte) 0

(PC) = (PC) + rel

CJNE A,byte,rel

Salto si (A) (byte)

(PC) = (PC) + rel

CJNE byte,#dato,rel

Salto si (byte) dato

(PC) = (PC) + rel

DIR: direc. Directo; IND: direc. Indirecto; REG: direc. Registro; INM: direc. Inmediato
-128 rel +127

DIR

IND

REG

INM

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CPU: CICLO MQUINA

1.27

Ciclo mquina: 12 ciclos del oscilador (12MHz 1s)


Las instrucciones se ejecutan generalmente en 1 o 2 ciclos
mquina en funcin del nmero de bytes del cdigo de la
instruccin (1/2/3) y del tiempo de ejecucin.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

1.28

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES ARITMTICAS


1.29

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES LGICAS


1.30

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES TRANSFERENCIA


1.31

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES BOOLEANAS


1.32

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES DE SALTO


1.33

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

PUERTOS DE ENTRDA/SALIDA

1.34

Son direccionables de dos formas:


Completa (byte): cada puerto tiene asignada una direccin dentro
del conjunto de registros especiales (SFRs). Se accede a ellos
mediante una instruccin de transferencia de datos.
Bit a bit: se puede trabajar con cada bit de los puertos por
separado mediante las instrucciones de manejo de bits. Para
direccionar un bit la sintaxis es Px.y donde "x" es el nmero del
puerto e "y" el bit deseado (0 a 7).

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

INICIALIZACIN PUERTOS DE E/S

1.35

Durante la inicializacin del microcontrolador, el contenido de los


puertos de E/S es FFh. Esta situacin ha de tenerse en cuenta
siempre y cuando se utilice uno de los puertos como salida ya que la
salida estar en estado alto al menos todo el tiempo de la fase
"RESET" del microcontrolador y no pasar al estado deseado por el
usuario hasta que se ejecute una instruccin de escritura en el
registro correspondiente al puerto del que forma parte esa salida.
Por el contrario, cuando la lnea deba ser utilizada como entrada, este
estado inicial es indispensable para una buena recepcin de
informacin exterior. Si por el contrario se encuentra en estado bajo,
impedir los cambios de estado de la seal externa. Por tanto, para
utilizar una lnea de un puerto de entrada, es imprescindible
asegurarse de que el bit que le corresponde en el registro del puerto
est en estado 1, tal como habr sido puesto por la inicializacin de
controlador.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

ENTORNO UVI-51
FUENTE
(.src)
ENSAMBLADOR INTEL

INFORME
(.LST)

M. objeto
(.obj)
ENLAZADOR
CONVERSOR
Intel-hex
(.hex)
SIMULADOR UVI51

DEPURADOR UVI51

1.36

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

DIRECTIVAS ASM51 de INTEL (I)

ORG valor : actualiza contador de programa.


Smbolo EQU valor: Asocia smbolo con un valor numrico
u otro smbolo ya definido.
Smbolo BIT valor : Direccin de bit.
Smbolo DATA valor: Direccin dato en RAM interna con
direccionamiento directo.
Smbolo XDATA valor: Direccin dato en RAM externa.
Smbolo CODE valor: Direccin de cdigo.

1.37

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

DIRECTIVAS ASM51 de INTEL (II)

1.38

DB valor : genera el cdigo del valor indicado.


DB c: genera el ASCII del carcter entre comillas.
DB cadena: genera los cdigos correspondientes a la
cadena indicada.
DB c, valor, cadena: genera los cdigos correspondientes
a los parmetros separados mediante comas.
END : final del archivo.

SISTEMAS ELECTRNICOS DIGITALES. CURSO 04/05


Tema 1: Introduccin al 8051

ESTRUCTURA DE PROGRAMA

tabla XDATA 0
valor EQU 55h
direccin DATA 40h
ORG 0
AJMP inicio
ORG 100h
Inicio:
CLR A
MOV DPTR,#tabla
MOVX A,@DPTR
sjmp inicio
END

1.39

; Definicin de etiquetas

; Posicin inicial despus RESET


; Espacio para vectores interrup.
;Comienzo de instrucciones
; Programa cclico.

; Fin de programa

También podría gustarte