Sistemas Electrónicos con μP
Seminario 4-a
Familia MSC51: CPU
J. Soret
DIE-UVEG
26/2/07
1
Contenido
Un ejemplo de mP real, orientado a aplicación
Repaso sobre todo lo referente a la familia
MSC51
Arquitectura
Memoria
Juego de instrucciones
Periféricos, siguiente tema
Se presenta la gama de ATMEL
Muy recomendable: [Link]
2
Características
Memoria y periféricos en el mismo CI
Microcontrolador (mC): procesador de
aplicación específica (ASIP) orientado al
control (operaciones booleanas)
MSC-51: referente obligatorio en el mundo
de los mC
Arquitectura Harvard (memoria separada de
datos y programa)
3
Características
CPU de 8 bits.
Procesador booleano.
4 puertos bidireccionales de 8 bits.
128 bytes de RAM más 26 registros de funciones especiales (256
bytes en el 8052).
4 KB de memoria de programa interna (8 Kbytes en el 8052).
64 KB de espacio de memoria de programa externa.
64 KB de espacio de memoria de datos externa.
2 temporizadores/contadores de 16 bits (3 en el 8052).
Puerto serie full-duplex.
5 fuentes de interrupción (6 en el 8052).
Oscilador integrado.
4
Familias
Muchos fabricantes, muchas variantes
8051 8031 8751 80C31 87C51 8052 8032 8752 83C152 83C51 80C537 87C57
4KB 4KB 8KB 16KB
ROM 4KB 8KB 8KB 8KB
EPROM EPROM EPROM EPROM
RAM 128 128 128 128 128 256 256 256 256 256 256 256
XROM 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB
XRAM 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB 64KB
FREC 12MH 12MH 12MH 16MH 12MH 12MH 12MH 12MH 16MH 16MH 16MH 16MH
4 4 4
T/C 2 2 2 2 2 3 3 3 2
PCA PCA PCA
UART
SERIE UART UART UART UART UART UART UART UART CSMA/ UART UART UART
CD
I/O 32 16 32 16 32 32 16 32 40 32 68 32
INT 5 5 5 5 5 6 6 6 11 7 7 7
5
Familias
Muy interesante la gama de Atmel
6
Familias
Otros fabricantes
ST ([Link])
uPSD (uPSD32xx, uPSD33xx)
Analog Devices ([Link])
Microconverters (ADUC8xx)
Texas Instruments ([Link])
(MSC12xx)
7
Interfaz eléctrico
Pines Funciones
Puerto 0 (P0): Entrada/salida bidireccional, puede ponerse en alta impedancia.
(patillas 32 a 39) Direcciones bajas en acceso a memoria externa.
Datos en acceso a memoria externa.
Entrada/salida de código durante la programación.
Puerto 1 (P1): Entrada/salida bidireccional.
(patillas 1 a 8) Direcciones bajas durante la programación.
Puerto 2 (P2): Entrada/salida bidireccional.
(patillas 21 a 28) Direcciones altas en acceso a memoria externa.
Direcciones altas durante la programación.
Puerto 3 (P3): Entrada/salida bidireccional.
(patillas 10 a 17) P3.0 RXD entrada puerto serie.
P3.1 TXD salida puerto serie.
P3.2 INT0 interrupción externa 0.
P3.3 INT1 interrupción externa 1.
P3.4 T0 entrada temporizador 0.
P3.5 T1 entrada temporizador 1.
P3.6 WR escritura en memoria de datos externa.
P3.7 RD lectura en memoria de datos externa.
ALE/PROG: (Address Latch Enable)Enclavar direcciones bajas.
(patilla 30) Pulsos de programación de la EPROM.
PSEN: (Progam Store Enable) autoriza la lectura en memoria externa de
(patilla 29) programa.
EA/VPP: (External Access)
(patilla 31) '1' se ejecuta el programa de la EPROM para PC<0FFF.
'0' se ejecuta el programa en memoria externa (modo μP).
Tensión de programación de la EPROM.
RESET: Se inicializa el sistema si vale +5 V durante dos ciclos de máquina (24
(patilla 9) pulsos del reloj).
XTAL: Conexión del resonador del reloj.
(patillas 18 y 19) 8
8
Foto de familia: ¿quién es quién?
AT89C51 AT89C2051 AT89C52
9
Diagrama de bloques
10
10
Arquitectura
11
11
Estructura de la memoria
Espacios para datos y
programa, separados
Memoria de programa
(ROM):
Modo mP: EA= 0 ⇒
64kB externa
Modo mC: EA= 1 ⇒ 4kB
interna + 60kB externa
Memoria de datos
(RAM):
256B interna + 64kB
externa OJO!!!! Muy importante asimilar bien
la estructuración de la memoria
12
12
Estructura de la memoria
Reflexiones:
La dirección 8EH,
¿a que área de
memoria pertenece?
¿Cómo es posible
utilizar las mismas
direcciones en
distintas memorias?
OJO!!!! Muy importante asimilar bien
la estructuración de la memoria
13
13
Memoria de programa
Estructura predefinida: vectores de
interrupción (ver tema siguiente)
14
14
Acceso al programa en memoria externa
Funcionamiento como mP
(EA=0), implementa bus de
sistema:
Bus de datos: P0
Bus de direcciones P0 y P2
Bus de control: ALE, PSEN
Datos multiplexados con
parte baja del bus de
direcciones: usar latch
Programa en memoria
externa, normalmente
ROM: hasta 64Kb
15
15
Acceso a datos en memoria externa
Funcionamiento como mP,
implementa bus de sistema:
Bus de datos: P0
Bus de direcciones P0 y P2
Bus de control: RD, WR
Datos multiplexados con parte
baja del bus de direcciones:
usar latch
Acceso memoria RAM interna
o externa compatible, gracias
a modos de direccionamiento
y juego de instrucciones
¿Cuál es el tamaño de esta RAM?
16
16
Acceso a datos en memoria interna
Memoria de usuario:
128 bytes bajos,
direccionamiento dir/indir
Gama alta (8052, etc) 128
bytes altos,
direccionamiento sólo indir
Registros de funciones
especiales (SFR):
128 bytes altos,
direccionamiento sólo dir
Para control y estado de
registros y periféricos
17
17
Estructura de la memoria interna
Banco de registros (0-1Fh):
4 bancos x 8 registros
Banco activo seleccionable
en PSW
Nemotécnicos: R0..R7
R0 y R1, para dir. indirecto
Área direccionable bit a bit
(20h-2Fh)
Uso: control de eventos
Instrucciones de bit
También instrucciones de
byte
Área de trabajo (30-7Fh)
18
18
128 bytes más altos de RAM
SFR, si se accede con
direccionamiento directo:
Control de periféricos y
acceso a algunos registros
(Acc, etc.)
Los de configuración,
direccionables bit a bit
Para μC con 256b RAM
([Link]. 8052), si se accede
con direccionamiento
indirecto, área de uso
convencional.
19
19
PSW: palabra de estado del programa
Palabra de estado: contiene flags que indican la
calidad en el resultado de las operaciones de la ALU:
Paridad (P), Carry (CY), Aux. carry (AC), Overflow (OV)
Además, selección de banco de reg. activo (RB0,
RB1)
Resto, libres
20
20
Juego de instrucciones. Modos de
direccionamiento
Código CISC (69 instrucciones, 256 opcodes)
¿Cómo pasar los operandos al opcode?
Directo MOV A, 23h
Directo a registro MOV R1, 23h
Indirecto a registro MOV A, @R1
Inmediato MOV A, #23h
Implícito INC A
Indexado (mem. prog.) MOVC A, @A+DPTR
21
21
Operaciones lógicas
22
22
Operaciones aritméticas
Ejemplo: convertir a MOV B, # 10
DIV A, B
BCD SWAP A
ADD A, B
23
23
Operaciones de transferencia
Operaciones de transferencia con memoria interna
24
24
Operaciones de transferencia
Operaciones de
transferencia con memoria
externa:
Datos: MOVX y dir. indirecto
(8b ó 16b)
Programa: MOVC y dir.
indexado
Útil para búsqueda en tablas:
MOV A, ENTRY__NUMBER
CALL TABLE
(…..)
TABLE: MOVC A, @A + PC
RET
(¿Qué tamaño puede tener la “TABLE”?. O,
dicho de otro modo, ¿qué valores podría
tomar “ENTRY_NUMBER”?)
25
25
Operaciones booleanas
Típica herramienta μC
RAM 128 bits + SFR 128
bits direccionables
Ejemplos:
Mover flag a puerto:
MOV C, FLAG
MOV P1.0, C
C = [Link].bit2:
MOV C, bit1
JNB bit2, OVER
CPL C
OVER: (…….)
26
26
Saltos
Condicionales o incondicionales
Tres tipos:
Bytes Rango (ref. PC)
SJML 2 128,-127
LJMP 3 64K
AJML 2 2K sig.
27
27
Saltos
Ejemplos:
Implementar “case_of”:
MOV DPTR, # JUMP__TABLE ;Inicializa base
MOV A,INDEX__NUMBER ;Índice
RL A ;Multiplica INDEX por 2
JMP @A+ DPTR ;Salto al “case”
JUMP__TABLE:
AJMP CASE__0
AJMP CASE__1
AJMP CASE__2
Bucles autodecrementables:
MOV COUNTER,#10
LOOP: (begin loop)
(..)
(end loop)
DJNZ COUNTER, LOOP ;¿Cuántas iteraciones hace?
28
28
Temporización
Necesario una señal CLK que
haga evolucionar la máquina de
estados de la Unidad de Control
μC tiene oscilador interno,
necesita xtal de cuarzo o
resonador cerámico.
Puede funcionar con oscilador
externo
29
29
Ciclos máquina
EL fabricante define el ciclo
máquina como 6 estados
(S1..S6) de dos fases (P1,
P2)
Búsqueda opcode en S1
Búsqueda 2º byte en S4
Ejecución termina en S6
Total: 12 pulsos CLK
Ejemplos (en la figura):
INC A
ADD A,#data
INC DPTR
MOVX
30
30
Ciclos de bus, acceso a [Link].
Cronogramas para acceso a programa en memoria
externa
31
31
Recapitulando
Hemos repasado los aspectos más
relevantes de la CPU-51: arquitectura, mapa
de memoria y, juego de instrucciones
Falta ver los periféricos más frecuentes
Sin embargo ya podemos PRACTICAR:
[Link]
[Link]
[Link]
[Link]
…y muchos sitios más.
32
32