Você está na página 1de 39

1.

Prctica 1: Introduccin al 8051

Prctica 1 : INTRODUCCIN 8051

ARQUITECTURA

1.

Organizacin microcontrolador 8051

Tema 1: Introduccin al 8051

RAM
256 Bytes

T0

PUERTO 0 PUERTO 1 PUERTO 2 PUERTO 3

E/S E/S E/S E/S

MEMORIA PASIVA
(OPCIONAL)

8051
(8 bits)

T1 PUERTO SERIE

HASTA 4KBytes

MEMORIA RAM INTERNA: ORGANIZACIN

1.

IRAM (Internal RAM)

Tema 1: Introduccin al 8051

FF SFR 80 7F RAM 00

MEMORIA RAM INTERNA: ORGANIZACIN

1.

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). Tema 1: Introduccin al 8051

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

SFR (Special Function Registers)

1.

128 Bytes (parte alta de la memoria):

Tema 1: Introduccin al 8051

SFR DE PUERTOS DE ENTRADA/SALIDA SFR DE CONTROL OTROS SFRs

1.

Tema 1: Introduccin al 8051

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

SFR

1.

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

Tema 1: Introduccin al 8051

PSW (Program Status Word):


C AC F0 RS1 RSO Bit de acarreo Bit de acarreo auxiliar para operaciones en BCD Flag de propsito general
0 0 1 1 0 1 0 1
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 F1 P

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

MEMORIA PASIVA INTERNA

1.

Tema 1: Introduccin al 8051

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.

MEMORIA EXTERNA: ARQUITECTURA HARVARD

1.

Arquitectura Harvard (distincin entre memoria externa de datos y de programa):


Tema 1: Introduccin al 8051

PSEN 80C537 RD WR

Memoria Programa

Memoria Datos

PSEN (Program Store Enable)

1.1

Bus de datos y direcciones

Tema 1: Introduccin al 8051

RAM
256 Bytes

T0

PUERTO 0 PUERTO 1

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

MEMORIA PASIVA
(OPCIONAL)

8051
(8 bits)

T1

HASTA 4KBytes

PUERTO PUERTO 2 SERIE PUERTO 3

AB[15:8]

MEMORIA EXTERNA

MODOS DE DIRECCIONAMIENTO (I)

1.1

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

Tema 1: Introduccin al 8051

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

MODOS DE DIRECCIONAMIENTO (II)

1.1

Direccionamiento indirecto:
El cdigo de instruccin especifica un registro que contiene la direccin del operando:
Tema 1: Introduccin al 8051 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

JUEGO DE INSTRUCCIONES

1.1

Instrucciones y modos de direccionamiento orientadas al bit que permiten realizar controladores lgicos.
Tema 1: Introduccin al 8051

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


Mnemnico Resultado de la instruccin (A) = (src) (des) = (A) (Rn) = (src) (direc) = (src) ((Ri)) = (src) (DPTR) = constante 16 bits. INC SP; MOV @SP, src MOV des,@SP; DEC SP intercambia contenido de A y des intercambia los 4 bits de menor peso del contenido de A y el apuntado por Ri X X X X X X DIR X X X X X X X IND X X REG X X

1.1
Modos direccionamiento INM X

MOV A, src MOV des, A

Tema 1: Introduccin al 8051

MOV Rn, scr MOV direc,src MOV @Ri,src MOV DPTR, #dato16 PUSH src POP des XCH A,des XCHD A, @Ri

X X X X

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

Transferencia datos sobre IRAM (Ejemplos 1)

1.1

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

Conjunto de instrucciones

onjunto de instruccionesIntroduccin al 8051 Tema 1:

2F7AH 2A 5F A4 3

dato 25H R1 R0

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

DPTR 26(1AH) 25H R0 A 5FH A


2F7A 1C 2A 03 F5 1C 2A F5

5FH
B3

MOV C,P3.1

C
0

P3.1
1

C
1

P3.1
1

Transferencia datos sobre IRAM (Ejemplos 2)

1.1

Ejemplo:
PUSH ACC POP ACC SP
3A 39 51 50
RAM interna

Tema 1: Introduccin al 8051

+
1
3AH 51H

255

A
06 45 BF

BF 06

Posici inicial

Transferencia datos sobre XRAM

1.1

Mnemnico

Resultado (A) = ((Ri)) ((Ri)) = (A) (A) = ((DPTR)) ((DPTR)) = (A)

Espacio direcciones 8 bits 8 bits 16 bits 16 bits

MOVX A, @Ri

Tema 1: Introduccin al 8051

MOVX @Ri, A MOVX A, @DPTR MOVX @DPTR, A


Ri=R0 o R1 del banco de registros seleccionado.

1.1

Ejemplo:
DPTR R0 MOVX A,@R0 MOVX @DPTR,A
A5 03A5
03A5H A5H

RAM Externa Datos


65535 255

rogramacin de Tema 1: Introduccin al 8051 un microprocesador

A
39 84 6F

BF 6F 39
0

Transferencia datos desde memoria de programa

1.1

Tema 1: Introduccin al 8051

Mnemnico:

Resultado instruccin: (A) = ((A) + (DPTR)) (A) = ((A) + (PC))

MOVC A, @A + DPTR MOVC A, @A + PC


PC: contador de programa

1.2

Ejemplo: MOVC A,@A+DPTR MOVC A,@A+PC


DPTR PC
E12A B4B0
RAM Externa Datos Memoria programa
65535 65535

Tema 1: Introduccin al 8051

A
03 18 9C C2

E12DH B4C8H

9C C2
0 0

Instrucciones lgicas
Mnemnico: CLR A CPL A RL A RLC A Resultado de la instruccin: pone a cero el acumulador complementa el acumulador (cambia 0 por 1 y viceversa) rota 1 bit a la izquierda el acumulador de forma circular (el bit 7 pasa a ser el bit 0) 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) rota 1 bit a la derecha el acumulador de forma circular (el bit 0 pasa a ser el bit 7)

1.2

Tema 1: Introduccin al 8051

RR A RRC A SWAP 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). 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 : (A)=(A) AND (op) (A)=(A) OR (op) (A)= (A) (op) DIR x x x IND x x x REG x x x INM x x x

ANL A, op ORL A, op XRL A, op

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

Instrucciones de manejo de bits


Mnemnico: Resultado de la instruccin: pone a cero el bit Operando: C o cualquier bit

1.2

CLR bit SETB bit

pone a uno el bit complementa el bit

C o cualquier bit C o cualquier bit

Tema 1: Introduccin al 8051

CPL bit
C: bit de acarreo

Mnemnico:

Resultado: (C) = (C) AND (bit) (C) = (C) OR (bit) (C) = (bit) (bit) = (C)

bit cualquier bit cualquier bit cualquier bit cualquier bit

ANL C, bit ORL C. bit MOV C, bit MOV bit, C

Instrucciones de salto condicional

1.2

Mnemnico:

Condicin: si bit = 1 si bit = 1 si bit = 0 si C = 1 si C = 0

Resultado salta a la direccin(PC) + rel salta a la direccin(PC) + rel y desactiva el bit salta a la direccin(PC) + rel salta a la direccin(PC) + rel salta a la direccin(PC) + rel

JB bit , rel JBC bit , rel

Tema 1: Introduccin al 8051

JNB bit , rel JC rel JNC rel

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

Instrucciones artimticas
Mnemnico ADD A, byte Resultado
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 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 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 decrementa en 1 el byte indicado. Si decrementamos 00H obtendremos FFH 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 incrementa en 1 el byte indicado. Si incrementamos FFH obtendremos 00H A DIR IND REG

1.2

IN

ADDC A, byte

Tema 1: Introduccin al 8051

DA A DEC byte DIV AB

INC byte INC DPTR MUL AB SUBB A, byte

incrementa en 1 el puntero de datos (16 bits)

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

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

Instrucciones de salto incondicional

1.2

Mnemnico

Direccin de salto (PC) = (PC) + rel (PC) = addr16 (PC) = addr11 (PC)= (A) + (DPTR) (PC) = addr16 (PC) = addr11 (PC) = ((SP)) (PC) = ((SP))

Operaciones adicionales

SJMP rel

Tema 1: Introduccin al 8051

LJMP addr16 AJMP addr11 JMP @A + DPTR LCALL addr16 ACALL addr11 RET RETI

Guarda PC en la pila (*) Guarda PC en la pila (*) Repone el PC de la pila Repone el PC de la pila

(*) -128 rel +127 (**) Primero se almacena el byte de menor peso y despus el de mayor peso

Instrucciones de salto condicional

1.2

Mnemnico

Condicin

Direccin de salto

DIR

IND

REG

INM

JZ rel

Salto si (A) = 0

(PC) = (PC) + rel

Tema 1: Introduccin al 8051

JNZ rel

Salto si (A) 0

(PC) = (PC) + rel

DJNZ byte,rel

Decrementa (byte) y salta si (byte) 0 Salto si (A) (byte)

(PC) = (PC) + rel

CJNE A,byte,rel

(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

CPU: CICLO MQUINA

1.2

Tema 1: Introduccin al 8051

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.

Tema 1: Introduccin al 8051

1.2

CDIGO/CICLOS OPERACIONES ARITMTICAS

1.2

Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES LGICAS

1.3

Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES TRANSFERENCIA

1.3

Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES BOOLEANAS

1.3

Tema 1: Introduccin al 8051

CDIGO/CICLOS OPERACIONES DE SALTO

1.3

Tema 1: Introduccin al 8051

PUERTOS DE ENTRDA/SALIDA

1.3

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

Tema 1: Introduccin al 8051

INICIALIZACIN PUERTOS DE E/S

1.3

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.

Tema 1: Introduccin al 8051

ENTORNO UVI-51 FUENTE (.src) ENSAMBLADOR INTEL Tema 1: Introduccin al 8051 M. objeto (.obj) ENLAZADOR CONVERSOR Intel-hex (.hex) SIMULADOR UVI51 DEPURADOR UVI51 INFORME (.LST)

1.3

DIRECTIVAS ASM51 de INTEL (I)

1.3

Tema 1: Introduccin al 8051

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.

DIRECTIVAS ASM51 de INTEL (II)

1.3

Tema 1: Introduccin al 8051

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.

ESTRUCTURA DE PROGRAMA

1.3

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

; Definicin de etiquetas

Tema 1: Introduccin al 8051

; Posicin inicial despus RESET ; Espacio para vectores interrup. ;Comienzo de instrucciones ; Programa cclico.

; Fin de programa

Você também pode gostar