Está en la página 1de 27

SED. Resumen 80537 A.1.

Resumen 80537

1. Diagrama de Bloques.
2. Organización de memoria.
3. Juego de Instrucciones.
4. Ensamblador.
5. E/S.
SED. Resumen 80537 A.1.2

1. Diagrama de bloques
MICROCONTROLADOR
Tecnología ACMOS.
CPU 8 bits.

Arquitectura VON NEUMANN


256 bytes RAM interna.
64 Kbytes de memoria de programa externa.
64 Kbytes de memoria de datos externa.

PERIFERICOS
2 Temporizador/Contador 16 bits.
2 canales serie "full duplex".
56 lineas E/S, 12 E
Diagrama de bloques

Gestión de interrupciones.

Unidad de Captura/Comparación 16 bits.


Convertidor A/D 8 bits.
Estados de bajo consumo.
Unidad de vigilancia.
Unidad Multiplicación y división.
SED. Resumen 80537 A.1.3

2. Organización de memoria
– Dos áreas de memoria separadas:
• Memoria de Programa:
– 64 Kbytes Memoria de Programa (no volátil).
– Hasta 8KBytes pueden estar en la pieza.
– El terminal /EA indica la configuración.
• Memoria de Datos:
– 64 Kbytes Memoria de Datos externa al microcontrolador.
– Las 256 primeras posiciones se solapan con la memoria de datos interna al
µC.
Organización de memoria
SED. Resumen 80537 A.1.4

• Memoria de Datos interna.


– 256 Bytes RAM interna dividida en 2 bloques:
• 128 Bytes más Bajos:
– 4 bancos de 8 registros R0-R7, selección desde PSW(Program Status
Word).
– 16 posiciones accesibles bit a bit.
– Direccionables de forma directa e indirecta.

• 128 Bytes más Altos con 2 áreas con direcciones solapadas:


– 128 Bytes de RAM direccionables de forma indirecta
– Registros especiales (SFR) direccionables de forma directa.
Organización de memoria
SED. Resumen 80537 A.1.5

• Registros especiales (SFR).


Conjunto de Posiciones de memoria interna con misión especifica:
– Registros de auxiliares de CPU:
• REGISTRO DE ESTADO (PSW).

• REGISTROS OPERACIONES ARITMÉTICAS:


– Acumulador (ACC)
– B-registro (B).
Organización de memoria

• REGISTROS PUNTEROS DE POSICIONES DE MEMORIA:


– Puntero de pila (Stack Pointer - SP).
– Selección Puntero de datos (DPSEL).
– Puntero de datos (DPH, DPL).

– Registros de interfase con periféricos integrados:


• Programación de modo de funcionamiento.
• Intercambio de datos.
• La estructura básica del 8051 dispone de 20 SFRs, el 80537 tiene 81.
SED. Resumen 80537 A.1.6

• Registros especiales (SFR).


F8 P5 P6 FF
F0 B CML6 CMH6 CML7 CMH7 CMEN CMSEL F7
E8 P4 MD0 MD1 MD2 MD3 MD4 MD5 ARCON EF
E0 ACC CTCON CML3 CMH3 CML4 CMH4 CML5 CMH5 E7
D8 ADCON ADDAT DAPR P7 P8 CTRELL CTRELH DF
D0 PSW CML0 CMH0 CML1 CMH1 CML2 CMH2 D7
C8 T2CON CC4EN CRCL CRCH TL2 TH2 CCL4 CCH4 CF
C0 IRCON CCEN CCL1 CCH1 CCL2 CCH2 CCL3 CCH3 C7
B8 IEN1 IP1 BF
B0 P3 B7
Organización de memoria

A8 IEN0 IP0 AF
A0 P2 A7
98 S0CON S0BUF IEN2 S1CON S1BUF S1REL 9F
90 P1 DPSEL 97
88 TCON TMOD TL0 TL1 TH0 TH1 8F
80 P0 SP DPL DPH WDTREL PCON 87
SED. Resumen 80537 A.1.7

3. Juego de Instrucciones
• 111 instrucciones para realizar 54 operaciones básicas.

• Según el tamaño: 49 de 1 byte, 45 de 2 bytes y 17 de 3 bytes.

• Juego de instrucciones orientado al control de procesos:


– Instrucciones y modos de direccionamiento orientadas al bit que permiten
realizar controladores lógicos.
– Instrucciones aritméticas en BCD.
– Acceso a memoria externa a través de punteros para facilitar manejo de tablas.
Juego de Instrucciones

85 90 20

P1 20H
SED. Resumen 80537 A.1.8

Modos de direccionamiento.
Modo de direccionamiento Zona de memoria
Registro (Register) Registros del banco Seleccionado R0-R7 ACC,
B, CY(bit), DPTR
Directo (Direct) Primeras 128 posiciones RAM interna
(Página 0) Registros Especiales SFR
Absoluto Memoria de Programa. Dirección de salto
Addr11
dentro de la página de 2K del 1º byte de la
(Página 2K) siguiente instrucción. (ACALL, AJMP).
Addr16 Memoria de Programa. Dirección de salto
( 64K ) (LCALL, LJMP)
Inmediato (Inmediate) Dato de 8 o 16 bits (#)
Desplazamiento de -128 a 127 relativo al PC
(1º byte de la siguiente instrucción)
Relativo (Relative) 8 bits con signo (complemento a 2).
Juego de Instrucciones

(SJMP , y Saltos condicionles)


RAM interna con @R1, @R0, @SP
Indirecto RAM Externa @R1 o @R0 en 256 bytes bajos ,
Indirecto @DPTR en 64K
Indirecto + Manejo de datos en Memoria de programa con
post-indexado @DPTR+ACC o @PC+ACC
Acceso al Bit RAM y SFR direccionables al Bit
SED. Resumen 80537 A.1.9

Modificación de la Palabra de Estado

Bits PSW Bits PSW


instrucción instrucción
CY OV AC CY OV AC
ADD x x x SETB C 1
ADDC x x x CLR C 0
SUBB x x x CPL C x
MUL 0 x ANL C,bit x
DIV 0 x ANL C,/bit x
DA x ORL C,bit x
RRC x MOV C,bit x
RLC x
Juego de Instrucciones

CJNE x

• P indica la paridad del acumulador


• El resto de bits se modifica según
la tabla.
SED. Resumen 80537 A.1.10

Juego de instrucciones Listado de instrucciones


SED. Resumen 80537 A.1.11

Juego de instrucciones
SED. Resumen 80537 A.1.12

Juego de instrucciones
SED. Resumen 80537 A.1.13

Juego de instrucciones
SED. Resumen 80537 A.1.14

Juego de instrucciones
SED. Resumen 80537 A.1.15

4. Ensamblador.
• Formato general de una línea:

[etiqueta:]mnemónico[operando][,operando][,operando][;comentario]

- Etiqueta : Identificador de Línea. Permite referirse una instrucción o


dato sin conocer la posición de memoria que ocupa.
Se especifica con “:”

- Mnemónico: Identificador del código de operación.

- Comentario: Texto que ayuda a interpretar la misión de la instrucción.


Se especifica con “;”.

- Operando: Dato que procesa la instrucción. El número de operandos


(entre 0 y 3) depende de la instrucción en particular.
Ensamblador

Separados por “,”.


SED. Resumen 80537 A.1.16

• En función del modo de direccionamiento el operando puede ser:


• Símbolo específico del ensamblador:
A AB C DPTR PC R0 R1 R2 R3 R4 R5 R6 R7
$ AR0, ... AR7
• Dirección indirecta.
“@” identifica direccionamiento indirecto ( MOV A,@R0 ).
• Dato inmediato.
“#” Indica una constante ( MOV A,#25 ).
• Direcciones de byte.
Dirección de un Byte ( MOV A,40H ) .
• Dirección de bit.
Dirección de dato de tipo bit ( SETB 20H ) .
• Dirección de salto.
Dirección de una instrucción. ( AJMP 346 ) .

Los datos numéricos pueden estar especificados en formato Decimal (por


defecto), Hexadecimal ( H ), Binario ( B) o Octal ( O ). No pueden empezar
Ensamblador

por una letra, ni ser mayores de 65535.

Las cadenas de caracteres se definen entre comillas simples. Se evalúan


con su equivalente ASCII. (A=65)
SED. Resumen 80537 A.1.17

Seudoinstrucciones.
• Especifican información para el proceso de traducción de instrucciones.
• No se traduce a código ejecutable.
• Pueden ser de :
- Definición de símbolos.
- Inicialización y reserva de espacio en memoria.
- Enlace.
- Estado
- Selección de segmento.
• Definición de símbolos
– Símbolo = Palabra asignada a una dirección, registro, periférico :
– Existen palabras reservadas que no pueden usar.
– ETIQUETA de linea (Símbolo :) Aqui: LCALL subrutina
– EQU ( nombre EQU expresión )
– SET (nombre SET expresión )
– BIT ( nombre BIT expresión ) motor BIT P1.0 ; marcha BIT 0 ; mayor BIT 20H.7
– DATA (nombre DATA expresión ) estado DATA 40H
Ensamblador

– IDATA (nombre IDATA expresión) estado IDATA 40H


– XDATA (nombre XDATA expresión) variable XDATA 2000H
– CODE (nombre CODE expresión) intext0 CODE 03H
SED. Resumen 80537 A.1.18

• Inicialización y reserva de espacio de memoria


– DS ( DS número de bytes)
– DBIT (DBIT número de bits)
– DB (DB valor1, valor2, valor3, ........ ) DB 50H; DB 20H, 46, 'A'; DB 'alarma‘
– DW (DW valor1, valor2, valor3, ........ ) DW 1400, 0FFFFh, 'AB', 'A'

• Directivas de estado
– ORG ( ORG dirección de memoria )
– END ( END )

• Selección de segmento
– Permite especificar el tipo de información de una zona de memoria.
• Los tipos de segmentos posibles:
CSEG Segmento de memoria de programa.
XSEG Segmento de memoria de datos externa.
DSEG Segmento de memoria de datos interna.
ISEG Segmento de memoria de datos interna con direccionamiento indirecto.
BSEG Segmento de memoria de datos con acceso a bit.
Ensamblador
SED. Resumen 80537 A.1.19

Especificación del proceso de ensamblado


• Palabras clave que determinan la forma en que opera el ensamblador.
(Casi todos se refieren a formato del archivo de salida LST).
• Se deben indicar precedidos del símbolo $.
Ensamblador
SED. Resumen 80537 A.1.20

Ensamblador
SED. Resumen 80537 A.1.21

Ensamblador
SED. Resumen 80537 A.1.22

Generación de código ejecutable.


Ensamblador
SED. Resumen 80537 A.1.23

;**************************************************************
; Parpadeo de un LED con temporizacion con T0
;**************************************************************
$INCLUDE(reg537.pdf)

origen CODE 0000H ;vector de reset


LED BIT P1.0 ;Salida de actuacion sobre LED
PULSA BIT P1.1 ;Entrada lectura del estado del pulsador
MAX_T EQU 65536 ;Temporizacion maxima
M0_T0 EQU 00000001B ;Valor para programar: Funcionamiento como temporizador, Modo cero del temporizador
PILA DATA 30H ;Posicion de la pila

ORG origen
JMP inicio ;Primera instruccion del programa

ORG origen+100H
inicio:
MOV SP,#pila ;Inicializacion del puntero de PILA
MOV TMOD,#M0_T0 ;Programacion del modo de funcionamiento de T0
SETB LED ;Activacion del LED
bucle:
CALL temp ;LLamada a la Subrutina de temporizacion
CPL LED ;Complementar el estado del LED
JMP bucle
temp: ;Subrutina de temporizacion
; Atiende por consulta el final de la temporizacion
MOV TL0,# LOW (MAX_T - 10000) ;Programacion de la temporizacion 10ms
Ensamblador

MOV TH0,# HIGH (MAX_T - 10000) ;Programacion de la temporizacion 10ms


SETB TCON.4 ;Permite la temporizacion
JNB TCON.5,$ ;Espera al final de la temporizacion
CLR TCON.5 ;Borrar el indicadro de fin de temporizacion
RET ;Retorno

END
SED. Resumen 80537 A.1.24

0000 88 origen CODE 0000H ;vector de reset


0090 89 LED BIT P1.0 ;Salida de actuacion sobre LED
0091 90 PULSA BIT P1.1 ;Entrada lectura del estado del pulsador
FFFF 91 MAX_T EQU 655355 ;Temporizacion maxima
0001 92 M0_T0 EQU 00000001B ;Valor para programar: Funcionamiento como temporizador, Modo cero del temporizador
0030 95 PILA DATA 30H ;Posicion de la pila
96
0000 97 ORG origen
0000 020100 99 JMP inicio ;Primera instruccion del programa
100
0100 101 ORG origen+100H
103 inicio:
0100 758130 104 MOV SP,#pila ;Inicializacion del puntero de PILA
0103 758901 105 MOV TMOD,#M0_T0 ;Programacion del modo de funcionamiento de T0
0106 D290 106 SETB LED ;Activacion del LED
107 bucle:
0108 12010F 108 CALL temp ;LLamada a la Subrutina de temporizacion
010B B290 109 CPL LED ;Complementar el estado del LED
010D 80F9 110 JMP bucle
111
112 temp: ;Subrutina de temporizacion
113 ; Atiende por consulta el final de la temporizacion
010F 758AEF 114 MOV TL0,# LOW (MAX_T - 10000) ;Programacion de la temporizacion 10ms
0112 758CD8 115 MOV TH0,# HIGH (MAX_T - 10000) ;Programacion de la temporizacion 10ms
0115 D28C 116 SETB TCON.4 ;Permite la temporizacion
0117 308DFD 117 JNB TCON.5,$ ;Espera al final de la temporizacion
Ensamblador

011A C28D 118 CLR TCON.5 ;Borrar el indicadro de fin de temporizacion


011C 22 119 RET ;Retorno
120
121 END
SED. Resumen 80537 A.1.25

5. Estructura externa
Estructura Externa
SED. Resumen 80537 A.1.26

• Terminales dedicados a E/S paralelo:

– P0, P1, P2, P3, P4, P5, P6 = Canales de entrada/salida de 8 bits.


– P7 = Canal de entrada de 8 bits.
– P8 = Canal de entrada de 4 bits.
Estructura Externa
SED. Resumen 80537 A.1.27

• Terminales dedicados a E/S paralelo:


– Amplificador de salida para P1 a P6.
• La carga activa está formada por:
– p1 aumenta la velocidad de transición 0-1 (I Extra durante dos ciclos).
– p2 activo cuando el terminal está a 1 (IOH=-10uA a -80uA)
(permite cortocircuito con gnd).
– p3 se activa si la tensión en el terminal es mayor de 1 a 1.5V.
Permite manejar cargas mayores como salida a 1 (ITL=-650uA max.)

entrada “0” -> solo activo p2


Entrada “1” -> activos p2 y (p3)
Salida “0” -> solo activo n1
Salida “1” -> Activos p1, p2 y (p3)
Estructura Externa