Struktur Memori Mikrokontroler AT89C51

program internal ini dijalankan pada saat mikrokontroler mendapat sumber catu daya, dan sumber detak. Memori program ini hanya dapat dibaca tidak bisa ditulisi karena disimpan dalam EPROM. Selain menggunakan memori program internal, mikrokontroler juga dapat dioperasikan dengan memori program eksternal. Sinyal yang membolehkan pembacaan dari memori program eksternal adalah dari pena program store enable PSEN. Setelah reset, CPU akan mengeksekusi mulai pada alamat 0000H. Setiap interupsi mempunyai lokasi tetap dalam memori program. Interupsi akan menyebabkan CPU melompat ke lokasi tersebut, pada lokasi tersebut terdapat sub rutin yang harus dilaksanakan. Memori data terletak pada ruang alamat terpisah dari memori program RAM eksternal 64 Kbyte dapat dialamati dalam ruang memori data eksternal CPU menghasilkan sinyal read dan write selama menghubungi memori data eksternal. Untuk melaksanakan pembacaan atau penulisan, mikrokontroler akan mengirimkan sinyal RD dan WR. RAM yang digunakan mempunyai kapasitas 8 Kbyte. Ruang memorinya dibagi menjadi tiga blok, yaitu sebagai lower 128, upper 128 dan 128 byte SFR Special Function Register. Tiga puluh dua byte paling bawah dikelompokkan dalam 4 bank 8 register yaitu R0-R7. Dua bit dalam Program Status Word PSW memilih register bank yang digunakan. Sedangkan ruang special function register space yang berisi panahan port port latch, pewaktu timer, pengontrol peripheral, dan lain-lain. Register-register ini hanya dapat dihubungi dengan pengalamatan langsung.

2.1.4. Register Mikrokontroler AT89C51

Register-register pada mikrokontroler AT89C51 dapat digolongkan menjadi dua register, yaitu register serbaguna General Purpose Register dan register dengan fungsi khusus Special Function Register [1]. Register serbaguna adalah register yang berfungsi untuk menyimpan data sementara untuk diolah oleh CPU baik operasi logika maupun aritmatika. Register serbaguna hanya dapat berfungsi sebagai nilai operan kedua pada perhitungan aritmatika ataupun operasi logika dengan operan utama register akumulator. Register serbaguna tidak memiliki fungsi-fungsi khusus. Mikrokontroler AT89C51 memiliki register serbaguna 8 bit yang terdiri dari R0-R7 yang mempunyai 4 bank alamat lokasi RAM internal. Register - register khusus SFR yang dimiliki oleh mikrokontroler. AT89C51 menempati alamat pada RAM internal 128. Mikrokontroler AT89C51 mempunyai 21 special function register yang terletak pada antara alamat 80H hingga FFH. Beberapa dari register-register ini juga mampu dialamati dengan pengalamatan bit sehingga dapat dioperasikan seperti yang ada pada RAM yang lokasinya dapat dialamati dengan pengalamatan bit. Adapun register- register tersebut adalah sebagai berikut: 1. Akumulator Register ini terletak pada alamat E0H. Hampir semua operasi aritmatik dan operasi logika selalu menggunakan register ini. Untuk proses pengambilan dan pengiriman data ke memori eksternal juga diperlukan register ini. 2. Port Mikrokontroler AT89C51 mempunyai empat buah port, yaitu Port 0, Port 1, Port 2 dan Port 3 yang terletak pada alamat 80H, 90H, A0H dan B0H. Namun, jika digunakan eksternal memori ataupun fungsi-fungsi spesial, seperti external interrupt. Serial ataupun external timer, port 0, port 2 dan port 3 tidak dapat digunakan sebagai port dengan fungsi umum. Untuk itu disediakan port 1 yang dikhususkan untuk port dengan fungsi umum. Semua port ini dapat diakses dengan pengalamatan secara bit sehingga dapat dilakukan perubahan output pada tiap-tiap pin dari port ini tanpa mempengaruhi pin - pin yang lainnya. 3. Register B Register B digunakan bersama akumulator untuk proses aritmatik selain dapat juga difungsikan sebagai register biasa. Register ini juga bersifat bit addressable. 4. Register penyimpan status Program Status Word: PSW yaitu register 8 bit yang berfungsi sebagai penanda status status flag sebagai akibat pelaksanaan suatu instruksi. Register ini meliputi bit-bit: carry CY , auxiliary AC , zero flag FO , pemilih register bank RS0 dan RS1 , over flow OV , dan parity flag P . Flag CY, AC dan OV keluaran dari suatu proses aritmatika yang dilakukan di akumulator. Flag P merupakan parity dari isi register akumulator. Flag C digunakan juga sebagai akumulator operasi bit. RS0 dan RS1 digunakan untuk memilih register bank yang aktif pada saat itu. 5. Stack Pointer Stack pointer merupakan sebuah register 8 bit yang terletak di alamat 81 H. Isi dari stack pointer ini merupakan alamat dari data yang disimpan di stack. Stack pointer dapat diedit atau dibiarkan saja mengikuti standart sesudah terjadi reset. Jika stack pointer diisi data 5FH, area untuk proses penyimpan dan pengambilan data dari dan ke stack adalah sebesar 32 byte, yaitu antara 60H hingga 7FH karena 89C51 mempunyai internal RAM sebesar 128 byte. 6. Data Pointer Data pointer atau DPTR merupakan register 16 bit dan terletak pada alamat 82H untuk DPL dan 83H untuk DPH. DPTR biasa digunakan untuk mengakses source code ataupun data yang terletak di memori eksternal. 7. Register Timer AT89C51 mempunyai dua buah 16 bit timercounter, yaitu timer 0 dan timer 1. Timer 0 terletak di alamat 8AH untuk TL0 dan 8CH untuk TH0 dan timer 1 terletak di alamat 8BH untuk TL1 dan 8DH untuk TH1. 8. Register Port Serial AT89C51 mempunyai sebuah on chip serial port yang dapat digunakan untuk berkomunikasi dengan peralatan lain yang menggunakan serial port juga seperti modem, shift register dan lain-lain. Buffer penyangga untuk proses pengiriman maupun pengambilan data terletak pada register SBUF, yaitu pada alamat 99H. Sedangkan untuk mengatur mode serial dapat dilakukan dengan mengubah isi dari SCON yang terletak pada alamat 98H.