Semua mikrokontroler dalam keluarga
MCS-51 memiliki pembagian ruang alamat (address space) untuk program dan
data. Pemisahan memori program dan memori data membolehkan memori data untuk
diakses oleh alamat 8 bit. Meskipun demikian, alamat data memori 16 bit dapat
dihasilkan melalui register DPTR (Data Pointer Register). Memori program hanya
dapat dibaca tidak bisa ditulis, karena disimpan dalam Flash Memori. Memori
program sebesar 64 Kbyte dapat dimasukkan dalam EPROM eksternal.
Sinyal yang membolehkan pembacaan
dari memori program eksternal adalah pin PSEN. Memori data yang terletak pada
ruang alamat terpisah dari memori program. RAM ekternal 64 Kbyte dapat dialamati
dalam ruang memori data eksternal. CPU menghasilkan sinyal read dan write
selama menghubungi memori data eksternal.
Mikrokontroler AT89S51
memiliki 5 buah ruang alamat, yaitu :
a. Ruang alamat kode (Code Address
Space) sebanyak 64 Kbyte, yang seluruhnya merupakan ruang alamat kode
eksternal.
b. Ruang alamat memori data internal
yang dapat dialamati secara langsung, yang terdiri atas :
1.
RAM sebanyak 128 byte.
2.
Hardware register sebanyak 128 byte
c. Ruang alamat memori data internal
yang dialamati secara tidak langsung sebanyak 128 byte, seluruhnya diakses
dengan pengalamatan tidak langsung.
d. Ruang alamat memori data eksternal
sebanyak 64 Kbyte yang dapat ditambahkan oleh pemakai.
e. Ruang alamat bit. Dapat diakses dengan pengalamatan
langsung.
AT89S51 memiliki ruang
pengalamatan memori data dan memori program yang terpisah. Gambar 2.3
memperlihatkan peta dari memori pada AT89S51 yang
terdiri dari 4K byte internal (0000H sampai 0FFFH) memori dan 60K byte
eksternal memori (1000H sampai FFFFH). Total 64K byte data memori eksternal
dapat dialamatkan langsung AT89S51 ke dalam chip.
AT89S51 memiliki 128
byte internal RAM ditambah alamat dari Special Function Register (SFR)
seperti yang diperlihatkan gambar 2.4.
Gambar 2.4 menunjukkan SFR dan pengalamatan langsung
(direct) RAM memiliki alamat yang sama, yaitu 80H sampai 0FFH. Akan
tetapi, keduanya berada pada daerah yang berlainan yang diakses dengan cara
yang berbeda pula.
Fungsi dan alamat SFR dapat
dilihat pada tabel 2.2 berikut ini.
Tabel 2.2. Alamat SFR
Simbol
|
Nama
|
Alamat
|
ACC
|
Accumulator
|
0E0H
|
B
|
Register B
|
0F0H
|
PSW
|
Program Status
Word
|
0D0H
|
SP
|
Stack Pointer
|
81H
|
DPTR
|
Data Pointer 2
Bytes
|
|
DPL
|
Low Byte
|
82H
|
DPH
|
High Byte
|
83H
|
P0
|
Port 0
|
80H
|
P1
|
Port 1
|
90H
|
P2
|
Port 2
|
0A0H
|
P3
|
Port 3
|
0B0H
|
IP
|
Interrupt
Priority Control
|
0B8H
|
IE
|
Interrupt
Enable Control
|
0A0H
|
TMOD
|
Timer/Counter
Mode Control
|
89H
|
TCON
|
Timer/Counter
Control
|
88H
|
TH0
|
Timer/Counter
0 High Byte
|
8CH
|
TL0
|
Timer/Control
0 Low Byte
|
8AH
|
TH1
|
Timer/Counter
1 High Byte
|
8DH
|
TL1
|
Timer/Counter
1 Low Byte
|
8BH
|
SCON
|
Serial Control
|
98H
|
SBUF
|
Serial Data
Buffer
|
99H
|
PCON
|
Power Control
|
87H
|
Sementara itu, 128 byte RAM pada AT89S51 dapat
diakses secara langsung (direct) atau tidak langsung (indirect).
Peta memori RAM dibagi menjadi tiga area seperti disebutkan di bawah ini.
1.
Register
Bank 0 – 3.
Memiliki
alamat dari 00H sampai 1FH (32 byte). Tiap register bank terdiri dari 8
register (R0 sampai R7). Untuk memilih register bank yang dipakai, bit
RS0 dan RS1 pada Program Status Word (PSW) dapat diatur. Bentuk dan isi
PSW dapat dideskripsikan seperti dalam gambar 2.5.
MSB
|
LSB
|
||||||
CY
|
AC
|
F0
|
RS1
|
RS0
|
OV
|
-
|
P
|
Gambar 2.5. Susunan bit register PSW
Fungsi-fungsi bit pada
PSW dapat dipaparkan sebagaimana dalam tabel 2.3 berikut ini.
Tabel 2.3. Fungsi – Fungsi
Bit pada PSW
Simbol
|
Alamat
Bit
|
Fungsi
|
CY
|
PSW.7
|
Carry flag
|
AC
|
PSW.6
|
Auxillary
carry flag
|
F0
|
PSW.5
|
User flag 0
|
RS1
|
PSW.4
|
Register bank selector
bit 1
|
RS0
|
PSW.3
|
Register bank selector
bit 0
|
OV
|
PSW.2
|
Overflow flag
|
-
|
PSW.1
|
Untuk perancangan tambahan
|
P
|
PSW.0
|
Parity flag
|
Sementara itu,
konfigurasi bit ketiga dan keempat, yaitu RS0 dan RS1, dapat dilihat pada tabel
2.4.
Tabel 2.4. Konfigurasi Bit RS0 dan RS1
RS1
|
RS0
|
Register Bank
|
Alamat
|
|
0
|
0
|
0
|
00H-07H
|
|
0
|
1
|
1
|
08H-0FH
|
|
1
|
0
|
2
|
10H-17H
|
|
1
|
1
|
3
|
18H-1FH
|
2.
Bit Addressable Area.
Terdapat 16 byte alamat dari 20H sampai
2FH yang membentuk total 128 alamat bit.
3.
Scrath Pad Area.
Byte
dari alamat 30H sampai 7FH digunakan sebagai data RAM.
Peta memori RAM yang
dibagi menjadi tiga area seperti disebutkan di atas dapat divisualisasikan
dalam gambar 2.6 pada halaman berikut ini.