Documente Academic
Documente Profesional
Documente Cultură
Tema 1
Departamento de Informtica de Sistemas y Computadores
Pedro Yuste
ndice
Repaso de la arquitectura del 8051
Programacin de microcontroladores en
lenguajes de alto nivel
Acceso a puertos
Diseo de sistemas de memoria
Acceso a dispositivos de E/S mapeados en
memoria
Arquitectura
Divisin memoria programa / datos en el MCS-51
Organizacin:
Programa
Hasta 64 Kbytes de memoria ROM:
Datos:
128 o 256 bytes internos
Hasta 64 Kbytes de memoria RAM externa
Arquitectura
Dentro de la memoria interna se reservan
algunas posiciones como registros de
funciones especiales, (SFR) para la gestin
de perifricos
Memoria interna
128 bytes de datos iniciales
Memoria interna
128 bytes en el rea SFR
Acceso indirecto
255
RAM
interna
adicional
255
rea
SFR
127
127
RAM
interna
0
Memoria interna
Detalles de la
RAM interna:
127
47 b120
Direcciones
byte
33
32
31
7
0
... b127
...
b8 b9 ... b15
b0 b1 ... b7
Zona
direccionable
bit a bit
Banco 3
Banco 2
Banco 1
R7
...
R0
Banco 0
Memoria interna
rea SFR
Puertos E/S
Direccionables
bit a bit (128 a 255)
Acceso a
RAM externa
Control
energa
Memoria externa
Acceso indirecto ( registro DPTR o PC )
Bus multiplexado datos / parte baja dir.
.c
.obj
Compilador
Ejecutable
libreras.lib
libreras.h
C_Startup
Linker
C8051f310.h
/* BYTE Registers */
sfr P0
= 0x80; /* PORT 0 */
sfr P1
= 0x90; /* PORT 1 */
sfr PCON = 0x87; /* POWER CONTROL */
sfr TCON = 0x88; /* TIMER CONTROL */
sfr TMOD = 0x89; /* TIMER MODE
*/
sfr TL0
= 0x8A; /* TIMER 0 - LOW BYTE /*
*/ BIT Registers */
sfr TL1
= 0x8B; /* TIMER 1 - LOW BYTE */
/* TCON 0x88 */
sbit IT0 = TCON ^ 0;
sbit IE0 = TCON ^ 1;
sbit IT1 = TCON ^ 2;
sbit IE1 = TCON ^ 3;
sbit TR0 = TCON ^ 4;
sbit TF0 = TCON ^ 5;
sbit TR1 = TCON ^ 6;
sbit TF1 = TCON ^ 7;
.c
.obj
Compilador
Ejecutable
libreras.lib
libreras.h
C_Startup
Linker
Datos
Memoria de
Programa y Datos
P0
/OE
/EA
DATOS
80C51
LATCH
EPROM
ALE
Bus Dir.
(P. Baja)
P2
/WR
/RD
DIR
P0
DATOS
80C51
LATCH
DIR
ALE
RAM
Bus Dir. (P. Alta)
P2
/WR
/RD
/WR
/RD
/PSEN
P0
/EA
Bus Dir.
(P. Baja)
DATOS /OE
DATOS
LATCH
80C51
EPROM
DIR
ALE
RAM
Bus Dir. (P. Alta)
DIR
P2
/WR
/RD
/WR
/RD
/WR + /CS
Bus datos
D Q
/WR
Q D
/RD
/WR
/CS
/RD
/WR
Memoria 0
/RD + /CS
/WR + /CS
Memoria 1
Bus direcciones
Circuito
decodificador
/CS0
/CS1
Q D
/RD
/WR
/CS
/RD + /CS
D Q
/WR
/RD
/WR
Q D
/RD
/WR
/CS
/RD + /CS
/WR + /CS
Memoria 1
Bus direcciones
Circuito
/CS0
decodificador
/CS1
Q D
/RD
/WR
/CS
/RD + /CS
/WR + /CS
Bus datos
D Q
/WR
/RD
/WR
Memoria 0
Q D
/RD
/WR
/CS
/RD + /CS
/WR + /CS
Memoria 1
Bus direcciones
Circuito
decodificador
/CS0
/CS1
Q D
/RD
/WR
/CS
/RD + /CS
D Q
/WR
/RD
/WR
Q D
/RD
/WR
/CS
/RD + /CS
El mismo dato se
escribe en las dos
(b) 1
/WR + /CSmemorias!
Memoria
Bus direcciones
Circuito
decodificador
El decodificador activa
las dos memorias! (a)
/CS0
/CS1
Q D
/RD
/WR
/CS
/RD + /CS
D Q
/WR
/RD
/WR
Q D
/RD
/WR
/CS
/RD + /CS
/WR + /CS
Memoria 1
Bus direcciones
Circuito
decodificador
El decodificador activa
las dos memorias! (a)
/CS0
/CS1
Q D
/RD
/WR
/CS
/RD + /CS
Sistemas de decodificacin
Parte del diseo de un sistema consiste en
incorporar memorias (programa y/o datos)
Sistemas de decodificacin
Sistema segregado simple
El consumo es alto
Las memorias que no ests siendo accedidas tambin estn
activadas (su /CS = 0)
Sistemas de decodificacin
Sistema segregado simple mejorado
El consumo se reduce
Slo est activa la memoria que se est usando
Sistemas de decodificacin
Sistemas complejos: En general, habr ms
de un dispositivo en cada zona de memoria
(programa, datos)
Circuito de decodificacin o seleccin
Sistemas de decodificacin
Tabla de memoria
Sistemas de decodificacin
Ejemplo: ROM 64K + RAM 32K + RAM 32K
Memoria Segregada
A15
x
A14
x
A13
x
A12
x
A11
x
A15
0
1
A14
x
x
A13
x
x
A12
x
x
A11
x
x
0/1: Lnea
utilizada por el
circuito de
decodificacin
Memoria de programa
A10 A9
...
A2
x
x
...
x
Memoria de datos
A10 A9
...
A2
x
x
...
x
x
x
...
x
A1
x
A0
x
Dispositivo
ROM 64K
A1
x
x
A0
x
x
Dispositivo
RAM 32K-1
RAM 32K-2
Memoria Programa:
x: Lnea
No necesita circuito de decodificacin
utilizada
Memoria Datos:
internamente
A15 = 0 selecciona la RAM 32K-1
por el dispositivo
A15 = 1 selecciona la RAM 32K-2
Sistemas de decodificacin
Ejemplo: ROM 32K + RAM 32K, memoria
combinada
A15
0
1
A14
x
x
A13
x
x
A12
x
x
A1
x
x
A0
x
x
Dispositivo
ROM 32K-1
RAM 32K-2
DATOS
DIR
DIR
ROM
/CS
/RD*
DATOS
/RD
RAM
/CS
/WR
/RD
Sistemas de decodificacin
Ejemplo: ROM 32K + ROM 8K + ROM 8K
+ RAM 16K + RAM 16K + RAM 8K,
memoria (necesariamente) segregada
A15
0
1
1
1
A15
0
0
1
1
1
A14
x
0
0
1
A14
0
1
0
0
1
A13
x
0
1
x
A13
x
x
0
1
x
A12
x
x
x
x
A12
x
x
x
x
x
A11
x
x
x
x
Memoria de programa
A10 A9
...
A2
x
x
...
x
x
x
...
x
x
x
...
x
x
x
...
x
A1
x
x
x
x
A0
x
x
x
x
Dispositivo
ROM 32K
ROM 8K-1
ROM 8K-2
Libre (16K)
A11
x
x
x
x
x
Memoria de datos
A10 A9
...
x
x
...
x
x
...
x
x
...
x
x
...
x
x
...
A1
x
x
x
x
x
A0
x
x
x
x
x
Dispositivo
RAM 16K-1
RAM 16K-2
RAM 8K
Libre (8K)
Libre (16K)
A2
x
x
x
x
x
Sistemas de decodificacin
completa
Circuito de decodificacin completa del
ejemplo anterior
Memoria de datos
/CSRAM16K-1 = A15 OR A14,
/CSRAM16K-2 = A15 OR /A14,
/CSRAM8K = /A15 OR A14 OR A13
Sistemas de decodificacin
incompleta
Circuito de decodificacin incompleta
Sistemas de decodificacin
incompleta
Circuito de decodificacin incompleta del
ejemplo anterior
Memoria de datos
/CSRAM16K-1 = A15 OR A14,
/CSRAM16K-2 = A15 OR /A14,
/CSRAM8K = /A15 OR A14 OR A13 = /A15
Sistemas de decodificacin
incompleta
Tabla de direcciones del circuito anterior...
A15
0
1
1
A15
0
0
1
A14
x
0
0
A14
0
1
0
A13
x
0
1
A13
x
x
0
A12
x
x
x
A12
x
x
x
A11
x
x
x
Memoria de programa
A10 A9
...
A2
x
x
...
x
x
x
...
x
x
x
...
x
A1
x
x
x
A0
x
x
x
Dispositivo
ROM 32K
ROM 8K-1
ROM 8K-2
A11
x
x
x
Memoria de datos
A10 A9
...
x
x
...
x
x
...
x
x
...
A1
x
x
x
A0
x
x
x
Dispositivo
RAM 16K-1
RAM 16K-2
RAM 8K
A2
x
x
x
Sistemas de decodificacin
incompleta
Rplicas de las memorias del circuito anterior...
111111
111000
110111
110000
101111
101000
100111
100000
ROM 8K-2
Rplica
ROM 8K-1
Rplica
ROM 8K-2
ROM 8K-1
111111
111000
110111
110000
101111
101000
100111
100000
RAM 8K
Rplica
RAM 8K
Rplica
RAM 8K
Rplica
RAM 8K
011111
011111
RAM 16K-2
ROM 32K
010000
001111
RAM 16K-1
000000
000000
Memoria
Decodificacin completa
Decodificacin incompleta
Decodificacin
Segregada Combinada
Completa
Incompleta
A15
0
A13
x
A12
x
A11
x
Memoria de programa
A10 A9
...
A2
x
x
...
x
A1
x
A0
x
Dispositivo
ROM 16K
A1
x
x
A0
x
x
Dispositivo
RAM 16K
RAM 1K
A14
0
1
A13
x
0
A12
x
0
A11
x
0
Memoria de datos
A10 A9
...
A2
x
x
...
x
0
x
...
x
A15
-
A14
0
A12
x
A11
x
Memoria de programa
A10 A9
...
A2
x
x
...
x
A1
x
A0
x
Dispositivo
ROM 16K
A14
0
1
A13
x
-
A12
x
-
A11
x
-
Memoria de datos
A10 A9
...
A2
x
x
...
x
x
...
x
/CSRAM16K = A14
/CSRAM1K = /A14
A1
x
x
A0
x
x
Dispositivo
RAM 16K
RAM 1K
A15
0
0
1
A13
x
x
0
A12
x
x
0
A1
x
x
x
A0
x
x
x
A14
0
1
0
A13
x
x
0
A12
x
x
0
A1
x
x
x
A0
x
x
x
Dispositivo
ROM 16K
RAM 16K
RAM 1K
pero no
Dispositivo
RAM 16K
ROM 16K
RAM 1K
A15
0
0
1
A14
0
1
0
A12
x
x
-
A1
x
x
x
A0
x
x
x
Dispositivo
ROM 16K
RAM 16K
RAM 1K
A14
0
1
A13
x
x
-
A12
x
x
-
A1
x
x
x
A0
x
x
x
Dispositivo
ROM 16K
RAM 16K
RAM 1K
DATOS
DIR
PPI 8255
/CS
/WR
/RD
8
2
DATOS
DIR
HBEN
Conv. A/D
/CS
/RD
E7-E0
DATOS
A15-A0uC
8
Circuito
Decodif.
/CS244
/RDuC
/WRuC
DIR
RAM-1
/CS
/RD
/WR
DATOS
DIR
RAM-2
/CS
/RD
/WR
S0
4
S1
4
S2
Latch
Latch
Latch
LE
CSS1
LE
LE
CSS2
DIR
RAM-1
/CS
A15-A0uC
CSS0
Circuito
Decodif.
Activas a nivel
alto (como LE)
DATOS
/RDuC
/WRuC
/RD
/WR
DATOS
DIR
RAM-2
/CS
/RD
/WR
*/
*/
*/