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.