Sumber
:
Organisasi Memori
Program-program dan data-data pada komputer maupun
mikrokontroller disimpan pada memori. Memori yang diakses oleh mikrokontroller
ini terdiri dari RAM dan ROM. Perbedaan antara RAM dan ROM ini adalah RAM hanya
bisa ditulis dan dibaca, sedangkan ROM hanya bisa dibaca. RAM bersifat volatile
(isinya hilang jika power/sumber tegangan dihilangkan), sedangkan ROM bersifat
non-volatile (isinya tidak hilang jika power/sumber tegangan dihilangkan).
Semua divais 8051 mempunyai ruang alamat yang terpisah untuk
memori program dan memori data, seperti yang ditunjukkan pada gambar1.1 dan
gambar 1.2 Pemisahan secara logika dari memori program dan data, mengijinkan
memori data untuk diakses dengan pengalamatan 8 bit, yang dengan cepat dapat
disimpan dan dimanipulasi dengan CPU 8 bit. Selain itu, pengalamatan memori
data 16 bit dapat juga dibangkitkan melalui register DPTR. Memori program (
ROM, EPROM dan FLASH ) hanya dapat dibaca, tidak ditulis. Memori program dapat
mencapai sampai 64K byte. Pada 89S51, 4K byte memori program terdapat didalam
chip. Untuk membaca memori program eksternal mikrokontroller mengirim sinyal
PSEN (program store enable ).
Gambar
1.1 Diagram blok mikrokontroller 8051
Memori data ( RAM ) menempati ruang alamat yang terpisah
dari memori program. Pada keluarga 8051, 128 byte terendah dari memori data,
berada didalam chip. RAM eksternal (maksimal 64K byte). Dalam pengaksesan RAM
Eksternal, mikrokontroller mingirimkan sinyal RD ( baca ) dan WR ( tulis ).
Gambar
1.2 Arsitektur Memori Mikrokontroller 8051
Program Memory
Gambar 1.2 menunjukkan suatu peta bagian bawah dari memori
program. Setelah reset CPU mulai melakukan eksekusi dari lokasi 0000H.
Sebagaimana yang ditunjukkan pada gambar 1.3 setiap interupsi ditempatkan pada
suatu lokasi tertentu pada memori program. Interupsi menyebabkan CPU untuk
melompat ke lokasi dimana harus dilakukan suatu layanan tertentu. Interupsi Eksternal 0, sebagi contoh,
menempatai lokasi 0003H. Jika Interupsi Eksternal 0 akan digunakan, maka
layanan rutin harus dimulai pada lokasi 0003H. Jika interupsi ini tidak
digunakan, lokasi layanan ini dapat digunakan untuk berbagai keperluan sebagai
Memori Program.
Gambar
1.3 Peta Interupsi mikrokontroller 8051
Memory Data
Pada gambar 1.2 menunjukkan ruang memori data internal dan
eksternal pada keluarga 8051. CPU membangkitkan sinyal RD dan WR yang
diperlukan selama akses RAM eksternal. Memori data internal terpetakan seperti
pada gambar 1.2. Ruang memori dibagi menjadi tiga blok, yang diacukan sebagai
128 byte lower, 128 byte upper dan ruang SFR. Alamat memori data internal
selalu mempunyai lebar data satu byte. Pengalamatan langsung diatas 7Fh akan
mengakses satu alamat memori, dan pengalamatan tak langsung diatas 7Fh akan
mengakses satu alamat yang berbeda. Demikianlah pada gambar 1.4 menunjukkan 128
byte bagian atas dan ruang SFR menempati blok alamat yang sama, yaitu 80h
sampai dengan FFh, yang sebenarnya mereka terpisah secara fisik 128 byte RAM
bagian bawah dikelompokkan lagi menjadi beberapa blok, seperti yang ditunjukkan
pada gambar 1.5 32 byte RAM paling bawah, dikelompokkan menjadi 4 bank yang
masing-masing terdiri dari 8 register. Instruksi program untuk memanggil
register-register ini dinamai sebagai R0 sampai dengan R7. Dua bit pada Program
Status Word (PSW) dapat memilih register bank mana yang akan digunakan.
Penggunaan register R0 sampai dengan R7 ini akan membuat pemrograman lebih
efisien dan singkat, bila dibandingkan pengalamatan secara langsung.
Gambar
1.4 Memori data internal
Gambar
1.5 RAM internal 128 byte paling bawah
Semua pada lokasi RAM 128 byte paling bawah dapat diakses
baik dengan menggunakan pengalamatan langsung dan tak langsung. 128 byte paling
atas hanya dapat diakses dengan cara tak langsung, gambar 1.6.
Gambar
1.6 RAM internal 128 byte paling atas
Special Function Register
Sebuah peta memori yang disebut ruang special function
register (SFR) ditunjukkan pada gambar berikut. Perhatikan bahwa tidak semua
alamat-alamat tersebut ditempati, dan alamat-alamat yang tak ditempati tidak
diperkenankan untuk diimplementasikan. Akses baca untuk alamat ini akan
menghasilkan data random, dan akses tulis akan menghasilkan efek yang tak
jelas.
- Accumulator.
ACC adalah register akumulator. Mnemonik untuk instruksi spesifik
akumulator ini secara sederhana dapat disingkat sebagai A.
- Register
B. Register B digunakan pada saat opersi perkalian dan pembagian. Selain
untuk keperluan tersebut diatas, register ini dapat digunakan untuk
register bebas.
- Program
Status Word. Register PSW terdiri dari informasi status dari program yang
secara detail ditunjukkan pada Tabel 1.1.
- Stack
Pointer. Register Pointer stack
mempunyai lebar data 8 bit. Register ini akan bertambah sebelum data
disimpan selama eksekusi push dan call. Sementara stack dapat berada
disembarang tempat RAM. Pointer stack diawali di alamat 07h setelah reset.
Hal ini menyebabkan stack untuk memulai pada lokasi 08h.
- Data
Pointer. Pointer Data (DPTR) terdiri dari byte atas (DPH) dan byte bawah
(DPL). Fungsi ini ditujukan untuk menyimpan data 16 bit. Dapat
dimanipulasi sebagai register 16 bit atau dua 8 bit register yang berdiri
sendiri.
Gambar
1.7 Peta SFR
Ports 0, 1, 2 dan 3
P0, P1, P2 dan P3 adalah SFR yang ditempati oleh Port 0, 1,
2 dan 3. Menulis suatu logika 1 terhadap sebuah bit dari sebuah port SFR ( P0,
P1, P2 atau P3) menyebabkan pin output port yang bersesesuaian akan berada
dalam kondisi logika high ‘1’. Dan sebaliknya
Buffer Data Serial
Buffer serial sesungguhnya merupakan dua buah register yang
terpisah, buffer pemancar dan buffer penerima. Ketika data diisikan ke SBUF,
maka akan menuju ke buffer pemancar dan ditahan untuk proses transmisi. Ketika
data diambil dari SBUF, maka akan berasal dari buffer penerima.
Registers Timer
Pasangan register ( TH0, TL0) dan (TH1, TL1) adalah register
pencacah 16 bit untuk Timer/ Counter 0 dan 1, masing-masing.
Register Control
Registers IP, IE, TMOD, TCON, SCON, dan PCON terdiri dari
bit control dan status.
Program Status Word
PSW atau Program Status Word berisi bit-bit status yang
berkaitan dengan kondisi atau keadaan CPU mikrokontroler pada saat tersebut.
PSW berada dalam lokasi ruang SFR (dengan lokasi alamat D0h). Pada PSW ini kita
dapat memantau beberapa status yang meliputi: carry bit, auxiliary carry (untuk
operasi BCD), dua bit pemilih bank register, flag overflow, sebuah bit paritas
dan dua flag status yang bisa didifinisikan sendiri. Bit carry dapat juga anda
guakan pada keperluan operasi aritmatika, juga bisa digunakan sebagai universal
akumulator untuk beberapa operasi boolean.
Table
1.1 Program Status Word
MSB
|
|
LSB
|
CY
|
AC
|
F0
|
RS1
|
RS0
|
OV
|
-
|
P
|
|
|
|
|
|
|
|
|
BIT
|
SYMBOL
|
FUNCTION
|
PSW.7
|
CY
|
Carry flag.
|
PSW.6
|
AC
|
Auxilliary Carry flag. (For BCD
operations.)
|
PSW.5
|
F0
|
Flag 0. (Available to the user for
general purposes.)
|
PSW.4
|
RS1
|
Register bank select control bit
1.
Set/cleared by software to determine working register bank. (See Note.)
|
PSW.3
|
RS0
|
Register bank select control bit
0.
Set/cleared by software todetermine working register bank. (See Note.)
|
PSW.2
|
OV
|
Overflow flag.
|
PSW.1
|
-
|
User-definable flag.
|
PSW.0
|
P
|
Parity flag.
Set/cleared by hardware each instruction cycle to indicate an odd/even number
of “one” bits in the Accumulator, i.e., even parity.
|
Bit RS0 dan RS1 dapat digunakan untuk memilih satu dari
empat bank register sebagaimana ditunjukkan pada tabel 19.2. Bit paritas dapat
digunakan untuk mengetahuai jumlah logika '1' pada akumulator: P=1 bila pada
akumulator mempunyai logika '1' yang jumlahnya ganjil, dan P=0 jika akumulator
mempunyai logika '1' yang jumlahnya genap. Dua bit yang lain PSW1 dan PSW5
dapat digunakan untuk berbagai macam tujuan.
Tabel
1. 2 Alamat rekening bank
RS1
|
RS0
|
Bank
|
Address RAM
|
0
|
0
|
0
|
00 h - 07 h
|
0
|
1
|
1
|
08 h - 0F h
|
1
|
0
|
2
|
10 h - 17 h
|
1
|
1
|
3
|
18 h - 1F h
|