Peta memori (memory map) dapat memberikan informasi kepada kita dengan lebih jelas, apa diletakkan dimana. Pada sebuah mikrokontroler, peta memori dibagi menjadi dua, yaitu peta memori program dan peta memori data.
Peta memori program 89x51
Peta memori program 89x51
Peta memori program menggunakan skema "atau". Artinya Anda hanya boleh memilih salah satu skema. Skema pertama (gambar di atas sebelah kiri) membuat mikrokontroler mengambil instruksi awal pada alamat 0000h dari ROM internal, setelah alamat ke 0FFFh maka mikrokontroler akan mengambil instruksi dari ROM eksternal. Alamat dari 0000h sampai 0FFFh adalah sebanyak 1000h atau 4096 atau 4Kilo-byte. Skema kedua (gambar di atas sebelah kanan) membuat mikrokontroler mengambil semua instruksi dari ROM eksternal. Bagaimana cara memilih skema tersebut? Mikrokontroler menyediakan pin kontrol yang bernama EA (External Access). Apabila pin ini diaktifkan maka skema kedua akan terpilih. Pin ini hanya dibaca mikrokontroler sesaat setelah kondisi reset .

Peta memori data ditunjukkan oleh gambar di bawah. Peta memori data menggunakan skema "dan". Artinya Anda disediakan dua skema yang dapat digunakan bersama¬sama. Perhatikan gambar di bawah. Terlihat bahwa RAM internal mempunyai alamat yang sama dengan RAM eksternal, bagaimana cara mengaksesnya? Mikrokontroler menyediakan instruksi untuk mengakses masing-masing RAM yang akan kita bahas pada bab tiga.
Peta memori data
Peta memori data
Total memori program yang dapat dijangkau oleh mikrokontroler adalah sebanyak 64Kilo-byte atau dari alamat terendah 0000h sampai alamat tertinggi FFFFh. Menghubungkan memori eksternal, baik itu ROM atau RAM, menggunakan cara tersendiri. Cara tersebut ditunjukkan oleh kedua gambar di bawah.
Menghubungkan memori program eksternal dengan skema kedua: seluruh instruksi diambil dari memori eksternal
Menghubungkan memori program eksternal
dengan skema kedua: seluruh instruksi diambil dari memori eksternal

Menghubungkan memori data eksternal mengakses 2k RAM dengan memori program pada skema pertama
Menghubungkan memori data eksternal
mengakses 2k RAM dengan memori program pada skema pertama
Memori data (RAM) Internal

Ada yang menarik pada bagian RAM internal. Untuk mikrokontroler 89C51 disediakan 256 byte RAM internal yang terbagi menjadi dua bagian. Bagian pertama kita sebut dengan user area sebanyak 128-byte bagian bawah (lower) dan bagian kedua disebut dengan Special Function Register (SFR) sebanyak 128-byte bagian atas (upper).
Organisasi RAM internal 89x51
Organisasi RAM internal 89x51
Pada 128-byte bagian bawah,perhatikan gambar di bawah, 32-byte pertama (00h — 1Fh) dikelompokkan menjadi 4 bank dari 8 register. Instruksi pada program mengenalnya dengan sebutan R0 sampai R7. Dua bit pada Program Status Word (PSW) digunakan untuk memilih bank register yang digunakan. Penggunaan instruksi yang mengakses register akan menghemat kode mesin dibandingkan dengan instruksi yang mengakses lokasi secara langsung (direct addressing).
128-byte RAM internal bagian bawah (lower)
128-byte RAM internal bagian bawah (lower)
16-byte diatas bank register yaitu pada alamat 20h sampai 2Fh merupakan daerah yang dapat dialamati secara bit. Alamat bit-bit pada daerah ini adalah 00h sampai 7Fh. Pendek kata, untuk RAM internal 128-byte bagian bawah, 32-byte pertama dapat digunakan sebagai bank register, 16-byte berikutnya dapat dialamati per bit, dan sisanya 80-byte dapat digunakan seperti biasa.

RAM internal 128-byte bagian atas merupakan tempat register fungsi khusus (SFR). Gambar di bawah menunjukkan SFR untuk mikrokontroler seri 89C51. SFR ini meliputi alamat port, bit status dan kontrol, timer, register, stack pointer, akumulator dan lainnya. Bagian-bagian yang kosong digunakan untuk pengembangan divais mikrokontroler selanjutnya. Pada mikrokontroler seri 89C52 atau 89S51, beberapa bagian yang kosong tersebut ditempati oleh register-register tertentu. SFR dengan alamat berakhiran 0h atau 8h dapat dialamati secara bit dengan alamat mulai dari 80h sampai FFh .
128-byte RAM internal bagian atas
128-byte RAM internal bagian atas
Stack Pointer

Register SP (Stack Pointer) mempunyai lebar 8-bit. Nilai dari register SP akan bertambah sebelum data disimpan selama menjalankan instruksi PUSH atau CALL. Karena nilai register SP dapat berada sembarang di 128-byte RAM internal bagian bawah maka setelah kondisi reset nilai register SP akan diisi 07h. Hal ini menyebabkan lokasi stack berada mulai dialamat 08h. Selama program berjalan, yakinkan bila stack pointer tidak menabrak data anda atau tidak melebihi 7Fh .

Semoga Bermanfaat...!!!

0 comments:

Post a Comment

 
Top