BAB II
TINJAUAN UMUM MIKROKONTROLER

2.1.	PERLENGKAPAN DASAR MIKROKONTROLER
Tidak seperti sistem komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk suatu aplikasi tertentu saja (hanya satu program saja yang bisa disimpan).
	Untuk mengetahui perbedaan antara mikrokomputer, mikroprosesor dan mikrokontroler adalah hal yang sangat penting. Mikroprosesor adalah bagian Central Processing Unit (CPU) dari sebuah komputer, tanpa memori, I/O dan periferal yang di butuhkan oleh suatu sistem lengkap. Untuk dapat bekerja mikroprosesor memerlukan perangkat pendukung yang berupa memori (RAM/ROM) dan I/O. Bila sebuah mikroprosesor dikombinasikan dengan I/O dan memori (RAM/ROM) akan dihasilkan sebuah mikrokomputer.
Perbedaan yang menonjol antara mikrokomputer dengan SCM (Single Chip  Microcontroller) adalah pada penggunaan perangkat masukan atau keluaran dan juga media penyimpanan program. Mikrokomputer menggunakan disket atau hardisk sebagai media penyimpan program, sementara mikrokontroler menggunakan EPROM sebagai media penyimpan programnya.
Diantara keuntungan pemakaian mikrokontroler dibandingkan dengan mikroprosesor adalah pada mikrokontroler sudah terdapat RAM dan peralatan I/O pendukung sehingga tidak perlu menambahkannya. Dari uraian di atas, maka dapat di simpulkan bahwa komponen-komponen utama dari mikrokontroler terdiri atas tiga bagian penting yaitu :
2.1.1.	CPU (Central Processing Unit)
Unit pengolah pusat (CPU terdiri atas dua bagian, yaitu unit kendali (control unit) serta aritmatika dan logika (ALU).
Fungsi utama unit pengendali adalah mengambil, mengkode dan melaksanakan urutan instruksi sebagai program yang tersimpan dalam sebuah memori. Unit pengendali mengatur urutan operasi seluruh sistem. Unit ini juga menghasilkan dan mengatur sinyal pengendali yang di perlukan untuk menyerempakkan operasi, juga aliran dan instruksi pada bus pengendali.
Untuk mengontrol pengendalian aliran informasi pada bus data dan bus alamat, dilanjutkan dengan menafsirkan dan mengatur sinyal yang terdapat pada bus pengendali.
a.	Bus Data
CPU pada mikrokontroler adalah prosessor 8 bit. Lebar bus data AT89C51 adalah 8 bit sehingga memerlukan 8 pin (D0…D7). Akan tetapi karena jumlah pin mikrokontroler terbatas, pin data ini tidak dikeluarkan, hanya didalam chip.
Dan jika ingin menggunakan bus data tersebut, dapat dilihat bahwa pin untuk bus data sudah termultipleks dengan alamat A0…A7 pada port 0. Karena itu, port 0 seringkali dituliskan sebagai AD0…AD7. Setiap bit data mempunyai bobot masing-masing, tergantung pada letaknya. 
b.	Bus Alamat
Apabila suatu alat akan dihubungkan dengan mikrokontroler, maka harus ditetapkan terlebih dahulu alamat (address) dari alat tersebut. Hal ini bertujuan untuk menghindarkan terjadinya dua alat yang bekerja secara bersamaan yang mungkin dapat menyebabkan kesalahan / kerusakan.
c.	Bus Pengendali
Selain bus data dan bus alamat, mokroprosessor atau mikrokontroler dilengkapi juga dengan bus pengendali (control bus). Guna isyarat pengendali ini adalah untuk menyerempakkan operasi mikroprosessor atau mikrokontroler dengan operasi rangkaian luar. Pada AT89C51 terdapat beberapa pin yang berguna untuk mengendalikan sistem, diantaranya adalah ALE, PSEN, WR, RD, Interrupsi dan lain-lain.
2.1.2.	Memori
Suatu sistem mikrokontroler maupun komputer memerlukan memori untuk tempat menyimpan program atau data. Pada mikrokontroler tempat menyimpan program adalah ROM atau EPROM. Ada beberapa tingkatan memori, diantaranya adalah register internal, memori utama dan memori massal (Mass Memory). 
Register internal adalah memori didalam ALU (Arithmetic Logic Unit). Waktu akses register sangat cepat, umumnya kurang dari 100 ns. Memori utama adalah memori suatu sistem. Memori massal di pakai untuk penyimpanan berkapasitas tinggi.
a.	ROM (Read Only Memory)
ROM merupakan memori yang hanya dapat dibaca. Data dalam ROM tidak akan terhapus meskipun catu daya dimatikan (bersifat non volatile), karena sifatnya yang demikian, ROM digunakan untuk menyimpan program.
Ada beberapa tipe ROM, diantaranya adalah PROM, EPROM, dan EAROM. ROM adalah memori yang sudah diprogram oleh pabrik pembuatnya. PROM dapat diprogram oleh pemakai, tetapi sekali diprogram tidak dapat diprogram ulang.
b.	EPROM (Erasable Programmable Read Only Memory)
EPROM merupakan peranti memori yang ideal, karena peranti ini bukan saja dapat menyimpan data yang relatif permanen, tetapi juga karena datanya dapat dihapus dan diprogram kembali jika diperlukan. Penghapusan data yang ada pada EPROM dapat memakai lampu ultraungu khusus, atau dapat menggunakan cahaya yang panjang gelombangnya kurang dari 400 nm.
2.1.3	Masukan / Keluaran (I/O)
Untuk melakukan hubungan dengan piranti di luar sistem, di butuhkan alat I/O (masukan atau keluaran). Sesuai dengan namanya, I/O dapat menerima data dari mikrokomputer atau mikrokontroler dan dapat pula memberi data ke mikroprosesor atau mikrokontroler.
Ada dua macam peralatan I/O yang di pakai, yaitu peranti untuk hubungan serial (UART) dan peranti untuk hubungan paralel (PIO).
UART adalah peralatan serial universal. UART (Universal Asynchronous Receiver Transsmiter) merupakan pengirim - penerima tak serempak universal. Kerja UART adalah mengubah masukan serial menjadi keluaran paralel dan mengubah masukan paralel menjadi keluaran serial.
PIO (Parallel Input Output) merupakan perantara hubungan data dalam format paralel. PIO adalah alat yang dapat di program dan menyediakan perantara masukan dan keluaran dasar untuk data paralel 8 bit.
2.2.	Keluarga MCS-51
Jika dilihat dari segi arsitekturnya, mikrokontroler keluarga MCS-51 dapat dibagi atas dua jenis, yaitu jenis mikrokontroler menggunakan EPROM dan mikrokontroler tanpa menggunakan EPROM. Untuk mikrokontroler yang tidak menggunakan ROM atau EPROM didalam, harus menambahkan EPROM luar yang dihubungkan dengan mikrokontroler tersebut melalui port paralel (port 0 dan port 2).
Tabel 2.1 dibawah ini memperlihatkan anggota keluarga mikrokontroler MCS-51 dan dari tabel tersebut dapat dilihat tipe mikrokontroler yang memiliki EPROM seperti mikrokontroler 8051 serta tipe mikrokontroler yang tidak memiliki EPROM seperti 8031.

Tabel 2.1. Tabel Keluarga Mikrokontroler MCS-51
Tipe	Tipe Tanpa EPROM	Tipe ber-EPROM	ROM	RAM
(byte)	I/O	
8051	8031	-	4K	128	4	
8051AH	8031AH	8751H	4K	128	4	
		8751BH				
8052AH	8032AH	8752BH	8K	256	4	
80C51BH	80C31BH	87C51	4K	128		
83C51FA	80C5FA	*89C51	4K	128	4	
83C51FB	80C51FB	87C51FA	8K	256	4	
		87C51FB	16K	256	5	

Persamaan tipe dari Mikrokontroler 89C51 adalah 87C51. Kedua tipe ini memiliki persamaan, yaitu berisi RAM, counter / timer, port paralel, dan port serial. Mikrokontroler 87C51 memiliki EPROM, sedangkan 89C51 menggunakan PEROM. Pada desain EPROM inilah perbedaan antar keduanya. Pada PEROM inilah program dapat ditulisi dan dihapus dan ditulisi kembali, sehingga lebih efisien karena tidak membutuhkan ROM eksternal. Sedangkan untuk tipe mikrokontroler 8031 tidak memiliki ROM/PEROM sehingga digunakan PEROM luar (ROM eksternal) untuk menyimpan programnya. 
Didalam pembuatan alat Proteksi Telepon ini digunakan mikrokontroler tipe AT89C51 yang memiliki PEROM didalamnya untuk mempermudah pemrograman, Program dapat diisikan kedalam PEROM dan bila ada kesalahan program tersebut dapat dihapus untuk diisi kembali program perbaikannya. Pengisian dan penghapusan PEROM dapat dilakukan dengan menggunakan alat yang bernama Universal Programmer. Karena memiliki PEROM tersebut di dalamnya berarti dari segi rangkaiannya akan lebih sederhana maka tidak perlu lagi digunakan jalur-jalur alamat dan data dalam rangkaian yang dibuat.
2.3.	MIKROKONTROLER AT89C51
AT89C51 ialah mikrokomputer 8 bit CMOS kemampuan tinggi dan daya yang rendah dengan 4 K bytes dari memori baca saja yang dapat di hapus dan dapat di program (PEROM). Komponen ini di produksi oleh atmel menggunakan teknologi memory nonvolatile dengan kemampuan yang tinggi dan instruksi yang sama dengan standar industri MCS-51. Pada AT89C51 di mungkinkan untuk melakukan pengisian program ke dalam memori dan juga dapat di program ulang, karena AT89C51 dengan flash memori dan dengan teknologi nonvolatile (data tidak hilang walaupun listrik di matikan). Dengan menggabungkan CPU 8 bit yang serbaguna dengan flash dalam chip yang monolitik, maka AT89C51 merupakan mikroprosesor yang berkemampuan tinggi dengan harga yang murah dan sangat fleksibel untuk aplikasi kontrol.
AT89C51 memberikan ciri-ciri standar yang berikut : 4 Kbytes dari flash, 128 bytes dari line I/O RAM 32, dua timer / counter 16 bit, lima vektor arsitektur interupsi dua tingkat, 1 port serial duplex penuh. Oscillator chip internal. AT89C51 di rancang dengan daya rendah (low power) sehingga dapat beroperasi pada frekuensi nol dan mendukung dua perangkat lunak model penyimpanan daya (power saving mode) yang bisa di pilih. Mode idle (istirahat) adalah menghentikan CPU sesaat untuk mengakses RAM, port serial dan sistem interupsi untuk di fungsikan. Mode power hemat (penghematan energi) melindungi isi RAM, tidak mengaktifkan oscillator (disabling oscillator) juga tidak memfungsikan semua komponen lainnya sampai reset hardware yang berikutnya.
2.4.	 ARSITEKTUR MIKROKONTROLER 89C51
Perusahaan ATMEL mendapatkan lissensi dari intel untuk mengembangkan mikrokontroler MCS-51. Ada dua jenis mikrokontroler sebelum AT89C51 dari keluarga MCS-51 diantaranya tipe 8031 dan 8751. Mikrokontroler tipe 8031 tidak memiliki EPROM, sedangkan mikrokontroler tipe 8751 memiliki EPROM. Salah satu yang di perkenalkan adalah tipe AT89C51 yang kompatibel dalam set instruksi dan tata letak pena dengan standar industri MCS-51. Untuk mikrokontroler AT89C51 tidak lagi menggunakan EPROM. Type AT89C51 menggunakan Flash Programmable Erasable Read Only Memory (PEROM). Selain itu dibandingkan mikrokontroler 87C51, mikrokontroler 89C51 lebih cepat karena proses perintah persiklus 1 milidetik dengan menggunakan frekuensi clock 24 MHz. Tipe flash PEROM seperti ini mempunyai banyak kepraktisan diantaranya adalah penghapusan data bisa dilangsungkan dengan cepat (serentak / mirip EPROM) dengan cara elektris (EPROM dengan Ultra Violet).
Pada mikrokontroler AT89C51 memiliki beberapa keunggulan dari pada mikrokontroler lain, keunggulan tersebut antara lain :
a.	Kompatibel dengan produk MCS-51.
b.	Memori program internal sebesar 4 KB, yang mampu untuk proses penulisan dan penghapusan sebanyak 1000 kali.
c.	Memiliki RAM data internal sebesar 128 X 8 bit.
d.	Memiliki 32 sistem pengalamatan sendiri dan dua arah untuk I/O.
e.	Memiliki 2 buah Timer / counter 16 bit.
f.	Memiliki 6 sumber / vektor (source) struktur interupsi dengan dua tingkat prioritas sama, terdiri atas 2 buah untuk perangkat keras dan 4 buah untuk perangkat lunak.
g.	Memiliki port serial yang dapat di program.
h.	Lebih efisien karena untuk mengaktifkan mikrokontroler tersebut hanya butuh daya kecil.

Dengan keunggulan-keunggulan tersebut maka proses pengaplikasian mikrokontroler AT89C51 ke dalam alat Proteksi Telepon menjadi lebih sederhana. Kotak digram mikrokontroler 89C51 dapat dilihat pada gambar  2.1:
Gambar 2.1. Arsitektur Mikrokontroler AT89C51
Untuk kotak interupsi, diperoleh dari iterupsi-interupsi eksternal. Sedangkan 4 port yang dimiliki oleh mikrokontroler 89C51, dua diantaranya dapat digunakan sebagai port alamat dan port data yaitu P0 dan P1. Timer 1 dan Timer 2 yang digunakan sebagai counter masukan.
Alamat awal layanan rutin interupsi dari setiap sumber interupsi adalah :
Tabel 2.2. Alamat awal layanan rutin interupsi 
Nama	Alamat	Alamat Interupsi	
Reset	00H	Power On Reset	
INT 0 	03H	INT 0	
Timer 0	0BH	Timer 0	
INT 1	13H	INT 1	
Timer 1	1BH	Timer 1	
Sint	23H	Port I/O Serial	

Susunan pin-pin yang dimiliki oleh mikrokontroler 89C51 diperlihatkan pada gambar 2.2:

Gambar 2.2. Pin-pin dari mikrokontroler 89C51

Pin-pin tersebut adalah sebagai berikut :
a.	Pin 1 sampai 8 (port 1) merupakan port paralel 8 bit dua arah yang dapat digunakan untuk keperluan.
b.	Pin 9 (Reset) adalah masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan mereset mikrokontroler AT89C51. Pin ini di hubungkan dengan rangkaian power on reset bila diperlukan.
c.	Pin 10 sampai 17 (port 3), port paralel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TXD (Transmit data), RXD ( Receive data ), INT 0 (Interrupt 0), INT 1 (Interrupt 1), T0 (Timer  0), T1 (Timer 1), WR (Write), RD (Read). Bila fungsi pengganti tidak di pakai, pin-pin tersebut dapat digunakan sebagai port paralel 8 bit serba guna.
d.	Pin 18 atau (XTAL1)  adalah pin masukan ke rangkaian osilator internal. Sebuah osilator kristal atau sumber osilator eksternal.
e.	Pin 19 atau (XTAL2) adalah pin keluaran ke rangkaian osilator internal. Pin ini dipakai bila menggunakan osilator kristal.
f.	Pin 20 atau Ground dihubungkan ke Vss atau Ground.
g.	Pin 21 sampai 28 adalah port paralel 2 selebar 8 bit dua arah. Port bertugas mengirim byte alamat bila dilakukan pengaksesan memori eksternal.
h.	Pin 29 pin PSEN (Program Store Enable) yang merupakan sinyal pengontrol yang membolehkan program memori eksternal masuk kedalam bus selama proses pemberian / pengambilan instruksi (Fetching).
i.	Pin 31 (EA). Bila pin ini diberi logika tinggi, mikrokontroler akan melaksanakan instruksi dari ROM / PEROM ketika isi program counter kurang dari 4096. Bila diberi logika rendah, mikrokontroler akan melaksanakan seluruh instruksi dari memori program luar.
j.	Pin 30 adalah ALE (Address Latch Enable) yang digunakan untuk menahan alamat memori eksternal selama pelaksanaan perintah.
k.	Pin 32 sampai 39 (port 0) merupakan port paralel 8 bit drain terbuka dua arah. Bila digunakan untuk mengakses memori eksternal, port ini akan memultipleks alamat memori dengan data.
l.	Pin 40 (Vcc) dihubungkan ke Vcc (+5 Volt).
2.5.	Organisasi Memori
Dalam keluaraga MCS-51 ruang alamat untuk memori data dan untuk memori program dibuat terpisah sebagaimana ditunjukan pada gambar 2.3. Pemisahan memoi program dan memori data tersebut memperbolehkan memori data untuk diakses oleh alamat 8 bit, sehingga dapat dengan cepat dan mudah disimpan dan dimanipulasi oleh CPU 8-bit. Walaupun demikian, alamat data memori 16 bit dapat dihasilkan melalui register DPTR (Data Pointer Register)
Memori program hanya bisa dibaca saja dan tidak bisa ditulisi karena disimpan didalam EPROM. Memori program sebesar 64K byte dapat dimasukkan dalam EPROM eksternal melalui sinyal PSEN (aktif rendah). Memori data menempati suatu alamat yang terpisah dari memori program. Memori eksternal dapat diakses secara langsung hingga 64K byte dalam ruang memori data eksternal. CPU akan memberikan sinyal baca dan tulis (RD dan WR) selama pengaksesan memori data eksternal, memori data eksternal dan memori program eksternal dapat dikombinasikan dengan cara menggabungkan sinyal RD dan PSEN melalui gerbang AND dan keluarannya sebagai tanda baca kememori data 

atau program eksternal.
Gambar 2.3. Struktur Memori AT89C51
2.5.1.	Memori Data
Mikrokontroler 89C51 mempunyai memori data internal yang ruang memorinya di bagi menjadi tiga blok, yaitu sebagai Lower 128, Upper 128, dan ruang SFR (Special Function Register). Ketiga bagian tersebut memiliki fungsi yang berbeda-beda . Untuk ruang alamat memori data internal bagian tinggi 128 byte digunakan hanya untuk proses pengalamatan langsung, ruang alamat tersebut dimulai dari 80H sampai FFH, sedangkan ruang alamat memori data internal bagian rendah 128 byte digunakan untuk mengakses data dengan pengalamatan langsung dan tidak langsung, lebar ruang alamat tersebut dimulai dari 00H sampai 7FH. Untuk kotak alamat terakhir, lebar ruang alamat tersbut sama dengan ruang alamat untuk pengalamatan langsung dan terletak pada daerah memori yang sama, yaitu berisikan status port, pengendali bit, timer, register, penunjuk stack, akumulator dan lain-lain. Ketiga kotak tersebut berkapasitas 128 byte. Untuk 

lebih jelasnya mengenai memori data internal dapat dilihat pada gambar 2.4 berikut ini:
Gambar 2.4. Memori Data Internal
Alamat memori data internal selalu 8-bit atau 1-byte, yang konsekuensinya hanya mampu mengalamati hingga 256 byte saja. Namun demikian, mode-mode pengalamatan RAM internal (faktanya) bisa mengakomodasi hingga 384 byte. Pengaksesan langsung (direct addresing) dengan alamat diatas 7Fh mengakses suatu memori, sedangkan pengaksesan tak langsung (indirect addresing) dengan alamat diatas 7Fh mengakses ruang memori lain yang berbeda sehingga dapat dilihat pada gambar 2.4 bahwa 128 UPPER dan  SFR menempati blok yang sama yaitu 80h hingga FFh, walaupun secara fisik terpisah.
Pada bagian bawah dari 128 byte RAM terdapat seperti pada gambar 2.5,  32 byte terbawah dikelompokkan menjadi 4 bank dan 8 register, yaitu R0 sampai R7. Dua bit dalam PSW (Program Status Word) yang digunakan untuk memilih register bank yang akan digunakan. Arsitektur ini membolehkan penggunaan ruang kode secara lebih efisien, karena instruksi-instruksi register lebih pendek daripada instruksi-instruksi yang menggunakan pengalamatan langsung

16 byte berikutnya, diatas bank-bank register membentuk suatu blok memori yang bisa teralamati per-bit(bit addressable)kumpulan instruksi mikrokontroler ini memiliki berbagai pilihan instruksi-instruksi bit-tunggal dan instruksi-instruksi ini mampu secara langsung mengalamati 128 bit dalam area ini (00H-7Fh)

Gambar 2.5. Bagian Bawah 128 Byte RAM Internal
SFR (Special Function Register) berisi penahan port (Port Latch), pewaktu (Timer), pengontrol periferal, dan lain-lain. Register ini hanya dapat diakses oleh pengalamatan langsung.

ACC

Port 3

Port 2

Port 1

Port 0

FFH
E0H

B0H

A0H

90H
			
80H

Gambar 2.6. Ruang SFR (Special Function Register)
2.5.2	Memori Program
Pada gambar 2.7 ditunjukkan pemetaan bagian bawah dari memori program setelah reset, CPU segera mengerjakan program yang dimulai dari lokasi 0000h. Sebagaimana ditunjukan pagambar dibawah ini, masing-masing interupsi disimpan pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menyebapkan CPU melompat kelokasi interupsi yang bersangkutan, yaitu letak dari subrutin layanan interupsi tersebut. Misalnya, eksternal intterupt 0 disimpan pada lokasi 0003h, jika interupsi ini digunakan, maka layanan rutin interupsi ini harus dituliskan pada lokasi ini, jika tidak, maka lokasi tersebut bisa dipakai sebagai memori program serbaguna (untuk keperluan lainnya).

Gambar 2.7. Memori Program
Lokasi-lokasi layanan interupsi tersebut menempati lokasi-lokasi dengan jarak 8-byte: 0003H untuk external interrupt 0, 000Bh untu timer 0,  0013h untuk external interrupt 1, 001Bh untuk timmer 1, dan seterusnya. Jika suatu rutin layanan interupsi sangat pendek (kurang dari 8 byet), maka seluruh rutin bisa disimpan pada lokasi yang bersangkutan (sesuai dengan interupsi yang digunakan). Jika terlalu panjang (lebih atau sama dengan 8 byet), maka harus digunakan suatu perintah lompat kelokasi rutin interupsi yang sebenarnya (dilokasi lain dalam memori program). Alamat memori program panjangnya selalu 16-bit, walaupun demikian, jumlah meori program yang digunakan bisa kurang dari 64K byte. Eksekusi program eksternal akan mengorban dua port 8-bit (P0 dan P2), karena kedua port tersebut berfungsi sebagai jalur pengalamatan dan/atau pengiriman instruksi dari memori eksternal. 
Mikrokontroler memiliki alamat sehingga alat yang akan dihubungkan dengan mikrokontroler terlebih dahulu harus ditetapkan alamat alat tersebut. Pengalamatan bertujuan untuk menghindari terjadinya 2 alat yang bekerja secara bersamaan dalam satu satuan waktu, sehingga memungkinkan terjadinya kesalahan atau kerusakan. Alat penyimpan data (memori), baik RAM maupun ROM, jika mempunyai alamat. RAM 8 Kbyte memiliki 8 x 1024 alamat, setiap alamat dapat diisi data 1 byte.
2.5.3.	Flash PEROM
AT89C51 mempunyai 4 Kb Flash PEROM (Programmable and Erasable Read Only Memory), yaitu ROM yang dapat ditulis ulang atau dihapus menggunakan sebuah perangkat programmer. Flash PEROM dalam AT89C51 menggunakan Atmel’s High-density Non Volatile Technology yang mempunyai kemampuan untuk ditulis ulang hingga 1000 kali dan berisikan perintah standard MCS51.
Program yang ada pada Flash PEROM akan dijalankan jika pada saat sistem di-reset, pin EA/VP berlogika satu sehingga mikrokontroler aktif berdasarkan program yang ada pada Flash PEROM-nya, Program yang ada pada Flash PEROM akan ditempatkan pada alamat 0000H sampai dengan 07FFH. Namun, jika pin EA/VP berlogika nol, mikrokontroler aktif berdasarkan program yang ada pada memori eksternal, program pada memori eksternal akan ditempatkan pada alamat 2000H sampai dengan 3FFFH.
Walaupun pada kaki EA berlogika 1 sehingga jalannya program dimulai dari alamat 0000H Flash PEROM, namun jika pada proses selanjutnya diperlukan menjalankan program yang ada pada memori eksternal, hal tersebut dapat dilakukan dengan perintah LCALL atau LJMP.
Untuk keamanan program yang ada dalam Flash PEROM, AT89C51 mempunyai fasilitas Lock Bit Protection yang terdiri atas:
a.	Lock Bit 1, intruksi MOVC yang dieksekusi dari memori eksternal untuk membaca isi Flash PEROM tidak dapat dilakukan.
b.	Lock Bit 2, sama dengan Lock Bit 1, tetapi isi dari Flash PEROM tidak dapat diverivy oleh AT89c51 Programmer.
c.	Lock Bit 3, sama dengan Lock Bit 2, tetapi akses kememori eksternal tidak dapat dilakukan.
2.6		PSW (Program Status Word)
Program Status Word (PSW) berisi beberapa bit status yang mencerminkan keadaan mikrokontroller saat itu, PSW berada didalam ruang SFR. Satatus yang tersimpan didalam PSW meliputi: carry bit, the auxiliary carry (untuk proses BCD), dua bit pemilih bank register, oferflow flag, sebuah bit paritas dan dua flag status yang bisa didefenisikan sendiri (user-definable). Bit-bit RS0 dan RS1 digunakan untuk memilih salah satu dari empat bank register, beberapa instruksi merujuk pada lokasi-lokasi RAM ini sebagai R0, R1, R2 hingga R7, status dari RS0 dan RS1 menentukan bank register mana yang digunakan selama eksekusi program bersangkutan.
Definisi dari bit-bit dalam PSW dijelaskan pada gambar 2.8 dan tabel 2.3 :
Alamat PSW = 0D0H
CY	AC	F0	RS1	RS0	0V	-	P	
Bit 7	6	5	4	3	2	1	0
Gambar 2.8. Register PSW dalam Mikrokontroler AT89C51
Tabel 2.3. Tabel Program Status Word (PSW)
Symbol	Posisi	Fungsi / Arti	
CY	PSW 7	Carry Flag	
AC	PSW 6	Auxiliary Carry Flag	
F0	PSW 5	Flag 0 untuk kegunaan umum	
RS1	PSW 4	Bit pemilih bank register	
RS0	PSW 3	Bit pemilih bank register	
0V	PSW 2	Overflow Flag	
-	PSW 1	Cadangan	
	PSW 0	Parity Flag. Set / Clear oleh perangkat keras setiap siklus instruksi untuk menunujukkan jumlah bit 1, dalam akumulator, ganjil atau genap.	

Bit paritas berfungsi untuk menentukan cacah logik ”1” dalam akumulator, jika cacah logic “1” ganjil maka bit paritasnya sama dengan satu (P=1), sebaliknya jika cacahnya genap maka bit paritasnya sama dengan nol (P=0). Dengan demikian cacah logic “1” dalam akumulator ditambah dengan bit paritas P hasilnya akan selalu berjumlah genap, maka bit paritas ini dinamakan sebagai bit paritas genap atau even parity. Dua bit sisanya yaitu PSW.1 dan PSW.5 tidak terikat serta dapat digunakan sebagai flag yang serba guna dan fleksibel.
Delapan buah register yang telah disebutkan sebagai perujuk lokasi RAM diatas merupakan register serbaguna. Lokasinya pada awal 32 byte RAM di dalamnya yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui simbol Assembler (R0, R1, R2, R3, R4, R5, R6, R7). Pemilihan bank register dapat dilihat pada tabel 2.4 berikut ini :
Tabel 2.4. Tabel Pemilihan Bank Register
RS1	RS0	Bank	Lokasi Memori	
0	0	0	00H - 07H	
0	1	1	10H - 0FH	
1	0	2	10H - 17H	
1	1	3	18H - 1FH	

Pada register R0 dan R1 dapat digunakan untuk pengalamatan tak langsung pada RAM didalam. Sisa register lainnya tidak dapat digunakan untuk pengalamatan tak langsung. 
2.7. 	Fasilitas Mikrokontroler AT89C51
2.7.1.	Port Masukan / Keluaran Paralel
Mikrokontroler AT89C51 (keluarga 51) mempunya 40 kaki, 32 kaki diantaranya adalah kaki untuk keperluan Port paralel. Satu Port paralel terdiri dari 8 kaki, dengan demikian ke 32 kaki tersebut membentuk 4 buah Port paralel, yang masing-masing dikenal sebagai Port 0, Port 1, Port 2 dan Port 3. Nomor masing-masing jalur (kaki) dari Port paralel dimulai dari 0 sampai dengan 7, dimana jalur kaki pertama dari Port 0 adalah P0.0 dan jalur kaki terakhirnya adalah P0.7 demikian juga dengan jalur kaki pada Port 1 jalur kakinya dimulai dari P1.0 sampai dengan P1.7 hingga jalur kaki untuk Port 3 adalah P3.0 hingga P3.7.
Port paralel digunakan sebagai Port masukan dan Port keluaran. Sebuah port digunakan sebagai port keluaran, data yang akan dikeluarkan diletakkan dalam SFR (Status Function Register) yang bersesuaian. Lebih khususnya nilai yang ditulis dalam SFR yang bersesuaian dikirim ke sebuah latch yang akan melanjutkannya untuk mengeluarkan sinyal atau tanda setelah operasi ditulis lengkap.
Sebuah port yang akan digunakan sebagai port masukan, nilai FFH harus pertama ditulis ke port. Kemudian beberapa masukan dari pena yang bertegangan rendah akan dikenal sebagai sebuah bilangan 0, dan port dapat melakukan pembacaan dari SFR yang bersesuaian. Berikut ini adalah ringkasan spesifikasi dari masing-masing Port
a.	Port P0
Port P0 merupakan Port keluaran atau masukan (I/O) bertipe open drain bidirectional (memiliki saluran keluaran yang terbuka),sebagai port keluaran, masing-masing kaki dapat menyerap arus delapan masukan TTL (sekitar 3,8 mA).pada saat port nol diberi nilai 1 (aktif tinggi) maka port ini akan berfungsi sebagai port masukan-masukan berimpedansi tinggi.
Prot 0 juga dapat dikonfigurasikan sebagai bus alamat/data bagian rendah (low byte) selama proses pengaksesan memori data dan program eksternal. Jika digunakan dalam mode ini Port 0 memiliki pullup internal. Port 0 juga menerima kode-kode yang dikirimkan kepadanya selama proses pemograman dan mengeluarkan kode-kode selama proses verifikasi program yang telah tersimpan dalam flash, dalam hal ini dibutuhkan pullup eksternal selama proses verivikasi program
b.	Port P1
Port P1 merupakan Port I/O dwi arah yang dilengkapi dengan Pullup internal. Penyangga keluaran Port 1 mampu memberikan atau menyerap arus empat masukan TTL (sekitar 1,6mA).
c.	Port P2
Port 2 merupakan Port I/O dwi-arah dengan dilengkapi pullup internal. Penyangga keluaran Port 2 mampu memberikan / menyerap arus empat masukan TTL (sekitar 1,6 mA).
Port 2 akan memberikan byte alamat bagian tinggi (high byte) selama pengambilan instruksi dari memori program eksternal dan selama pengaksesan memori data eksternal yang menggunakan perintah dengan alamat 16-bit (misalnya : MOVX @DPTR). Dalam aplikasi ini, jika mengirimkan T, maka digunakan pullup internal yang sudah disediakan. Selama pengaksesan memori data eksternal yang menggunakan perintah dengan alamat 8-bit (misalnya : MOVX  @Ri), Port 2 akan mengirimkan isi dari SFR P2. Port 2 juga menerima alamat bagian tinggi selama pemrograman dari vertikasi flash.

d.	Port P3
Port 3 merupakan Port I/O dwi-arah dengan dilengkapi pullup internal. Penyangga keluaran Port 3 mampu memberikan / menyerap arus empat masukan TTL (sekitar 1,6 mA).
2.7.2.	Pewaktuan CPU
Mikrokontroler tipe AT89C51 memiliki osilator internal (On Chip Oscilator) yang dapat digunakan sebagai sumber clock ke CPU. Untuk menggunakan osilator internal diperlukan sebuah kristal atau resonator keramik antara pin XTAL1 dan pin XTAL2 dan sebuah kapasitor yang dihubungkan ke ground. Jadi clock yang diperoleh CPU berasal dari signal yang diberikan oleh sebuah kristal.
Untuk kristal dapat digunakan frekuensi dari 6 MHz sampai 12 MHz, sedangkan untuk kapasitor dapat bernilai antara 27 pF sampai 33 pF. Bagan rangkaiannya adalah sebagai berikut :

Gambar 2.9. Hubungan dengan kristal                 Gambar 2.10. Pemberian Clock
2.7.3.	Serial Port
Mikrokontroler AT89C51 memiliki port serial on-chip yang dapat dioperasikan dalam beberapa modus operasi dan dalam range frekuensi yang lebar. Fungsi utama dari port serial sebenarnya adalah mengubah suatu data paralel ke deretan data serial yang sepadan dan sebaliknya mengubah deretan data serial yang diterima menjadi data paralel. Mikrokontroler menggunakan pena TXD dan RXD untuk melakukan komunikasi dengan peralatan lain. Letak dari pena tersebut adalah port 3 pena 11 (P3.1) untuk TXD dan port 3 pena nomor 10 (P3.0) untuk RXD.
SM0	SM1	SM2	REN	TB8	RB8	T1	R1	

Gambar 2.11. Susunan Bit dalam SCON

Tabel 2.5. Bit-Bit SCON (Serial Control)
Simbol	Posisi	Fungsi / Arti	
SM0	SCON.7	Pemilih mode port serial.	
SM1	SCON.6	Pemilih mode port serial.	
SM2	SCON.5	Membuat enable komunikasi multiprosesor dalam mode 2 dan 3.	
REN	SCON.4	Set/Clear oleh perangkat lunak untuk menjalankan / melumpuhkan penerimaan.	
TB8	SCON.3	Bit ke-9 yang akan dikirim dalam mode 2 dan 3. Set/Clear secara perangkat keras. 	
RD8	SCON.2	Dalam mode 2 dan 4 adalah bit data ke-9 yang diterima. Dalam mode 1 jika SM2 = 0, RD8 merupakan bit stop yang diterima. Dalam mode 0  RD8 tidak digunakan.   	
T1	SCON.1	Transmit interrupt Flag. Di-set oleh perangkat keras pada akhir waktu bit ke-8 dalam mode 0, atau pada permulaan dari bit stop dalam mode lainnya. Dibersihkan secara perangkat lunak.	
R1	SCON.0	Receive interrupt Flag. Di-set oleh perangkat keras pada akhir waktu bit ke-8 dalam mode 0. 	

Tabel 2.6. Pemilih Mode Port Serial.
SM0	SM1	Mode	Keterangan	Baud Rate	
0	0	0	Shift Register	Frekuensi Osilator / 12	
0	1	1	8 bit UART	Variabel	
1	0	2	9 bit UART	Frekuensi Oscilator / 64 atau
Frekuensi Oscilator / 32	
1	1	3	9 bit UART	Variabel	

Mode 0	Mode ini bekerja secara sinkron, data serial dikirim dan diterima melalui kaki  P3.0 (RxD), sedangkan kaki P3.1 (TxD) dipakai untuk menyalurkan detak pendorong data serial yang dibangkitkan AT89C51. Data dikirim / diterima 8 bit sekaligus, dimulai dari bit yang bobotnya paling kecil atau LSB (bit 0) dan diakhiri dengan bit yang bobotnya paling besar atau MSB (bit 7). Kecepatan pengiriman data (baudrate) adalah 1/12 frekuensi kristal yang digunakan.
Mode 1	Pada mode ini tetap yaitu, data dikirim melalui kakiP3.1 (TxD) dan diterima melalui kaki P3.0 (RxD), secara asinkron (juga mode 2 dan 3). Pada mode 1 data dikirim / diterima 10 bit sekaligus, diawali dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan bit 1 bit stop. Pada AT89C51/52 yang berfungsi sebagai penerima bit stop adalahRB8 dalam register SCON. Kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan. Mode inilah (mode 2 dan 3) yang umum dikenal sebagai UART (Universal Asynchronous Receiver/Transmitter).
Mode 2	Data dikirim / diterima 11 bit sekaligus, diawali dengan 1 bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada AT89C51/52 yang berfungsi sebagai pengirim, bit 9 tersebut berasal dari bit TB8 dalam register SCON. Pada AT89C51/52 yang berfungsi sebagai penerima , bit 9 ditampung pada bit RB8 dalam register SCON, sedangkan bit stop diabaikan tidak ditampung. Kecepatan pengiriman data (baud rate) bisa dipilih anatara 1/32 atau 1/64 frekuensi kristal yang digunakan.
Mode 3	Mode ini sama dengan mode 2, hanya saja kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan, seperti halnya Mode 1.
Pada mode asinkron (Mode 1, Mode 2 dan Mode 3), port serial AT89C51 bekerja secara full duplex. 
2.7.4.	Timer / Counter
Pewaktu (timer) adalah suatu deretan flip-flop terbagi dua yang menerima isyarat masukan. Pada mikrokontroler tipe AT89C51 memiliki dua buah timer / counter 16 bit yang diatur melalui perangkat lunak, yaitu timer / counter 0 dan timer / counter 1.
Apabila timer atau counter pada frekuensi kerja mikrokontroler 12 MHz, timer atau counter akan melakukan perhitungan waktu sekali setiap mikrodetik secara independen, tidak tergantung pada eksekusi suatu instruksi. Satu siklus pencacahan dalam waktu 1 mikrodetik. Bila di misalkan suatu urutan instruksi telah selesai dilaksanakan dalam waktu 5 mikrodetik, maka pada saat itu pula timer atau counter telah menunjukkan perioda waktu 5 mikrodetik.
Apabila periode waktu tertentu telah dilampaui, timer atau counter segera menginterupsi mikrokontroler untuk memberitahukan bahwa perhitungan perioda waktu telah selesai dilksanakan. Periode waktu timer atau counter secara umum di tentukan oleh persamaan berikut ini :
a.	Sebagai timer atau counter 8 bit.
T = (255 - TLx) * 1us
b.	Sebagai timer atau counter 16 bit.   
T = (65535 - THx TLx) * 1us
Keterangan :
THx = Isi register TH0 dan TH1
TLx = Isi register TL0 dan TL1
Delapan bit timer byte tinggi (THx) digandeng dengan 5 bit LSB dari timer byte rendah (TLx) untuk membentuk timer 13 bit. Tiga bit di atas dari TLx diabaikan, timer ini kompatibel penuh dengan timer generasi sebelumnya.
Pengontrolan kerja dari timer atau counter adalah sebuah register yang disebut dengan register Timer Control atau Timer Control (TCON). Definisi dari bit-bit pada timer control adalah sebagai berikut :
Alamat TCON = 88H
TF1	TR1	TF0	TR0	IE1	IT1	IE0	IT0	
Bit 7	6             5	         4	            3              2               1             0
Gambar 2.12. Susunan Bit dalam register TCON

Tabel 2.7. Timer Control.
Simbol	Posisi	Fungsi / Arti	
TF1	TCON.7	Timer 1 Overflow Flag. Di-set oleh perangkat keras saat timer / counter menghasilkan limpahan (overflow).	
TR1	TCON.6	Bit untuk menjalankan timer 1. Di-set / clear oleh perangkat lunak untuk membuat timer hidup atau mati.	
TF0	TCON.5	Timer 0 Overflow Flag. Di-set oleh perangkat keras.	
TR0	TCON.4	Bit untuk menjalankan timer 0. Di-set / clear oleh perangkat lunak untuk membuat timer hidup atau mati.	
IE1	TCON.3	External Interrupt 1 edge flag.	
IT1	TCON.2	Interrupt 1 type control byte. Set / clear oleh perangkat lunak untuk menspesifikasikan sisi turun / aras rendah trigger dari Interupsi External.	
IE0	TCON.1	External Interrupt 0 edge flag.	
IT0	TCON.0	Interrupt 0 type control bit.	

Pada pengontrol pemilih mode operasi timer / counter adalah register Timer Mode atau Timer Mode (TMOD). TMOD terdiri atas dua kelompok 4 bit untuk setting modus operasi timer 0 dan timer 1. TMOD bukan merupakan bit-addressable, namun secara umum hanya dipanggil sekali oleh software pada saat awal program inisialisasi modus timer. Selanjutnya timer bisa diakhiri (Stop), dimulai dan seterusnya dengan mengakses SFR timer. Definisi bit-bit TMOD adalah sebagai berikut :
Alamat TMOD = 39H
GATE	C/T	M1	M0	GATE	C/T	M1	M0	
	Bit7	6	5	4	3	2	1	0
Gambar 2.13. Susunan Bit dalam register TMOD
Tabel 2.8.  Bit Pada Timer Mode (TMOD).
Bit	Posisi	Fungsi / Arti	
7	GATE	Saat TRx dalam TCON diset 1 dan GATE = 1, timer / counter x akan berjalan ketika TRx = 1(Timer dikontrol oleh perangkat lunak).	
6	C/T	Pemilih fungsi timer / counter. Clear (0) untuk operasi timer dengan masukan dari system clock internal. Set (1) untuk operasi counter dengan masukan dari pena T0 dan T1.	
5	M1	Bit pemilih mode.	
4	M0	Bit pemilih mode. 	
3	GATE	Saat TRx dalam TCON diset 1 dan GATE = 1, timer / counter x akan berjalan ketika TRx = 1(Timer dikontrol oleh perangkat lunak).	
2	C/T	Pemilih fungsi timer / counter. Clear (0) untuk operasi timer dengan masukan dari system clock internal. Set (1) untuk operasi counter dengan masukan dari pena T0 dan T1.	
1	M1	Bit pemilih mode.	
0	M0	Bit pemilih mode.	

Kombinasi M0 dan M1 adalah sebagai berikut :
Tabel 2.9. Kombinasi M0 dan M1.
M1	M0	Mode	Operasi	
0	0	0	Timer 13 bit.	
0	1	1	Timer / counter 16 bit.	
1	0	2	Timer Auto Reload 8 bit
(pengisian otomatis).	
1	1	3	TL0 adalah timer/counter 8 bit yang dikontrol oleh kontrol bit standar timer 0. TH0 adalah timer 8 bit dan dikontrol oleh bit timer 1.	

2.7.5.	Siklus Mesin
Satu siklus mesin (machine cycle) berisi 6 urutan keadaan, diberi nomor S1 sampai S6. Setiap kedaan waktu adalah sepanjang 2 perioda osilator. Sehingga siklus mesin membutuhkan 12 perioda osilator atau 1 mikrodetik jika frekuensi osilator 12 MHz.
Eksekusi 1 siklus instruksi dimulai selama keadaan 1 (state 1) dari siklus mesin, saat kode operasi (Opcode) ditahan dalam register instruksi (IP, Instruction Register). Pengambilan kedua terjadi selama S4 pada siklus mesin yang sama. Eksekusi secara lengkap selesai pada akhir keadaan 6 dari siklus mesin.
Urutan eksekusi adalah sama untuk memori program eksternal maupun internal. Waktu eksekusi tidak tergantung pada memori program internal atau eksternal.
2.7.6.	Pengendali Interupsi
Interupsi adalah suatu keadaan yang terjadi ketika CPU diminta untuk menyela atau menghentikan proses yang sedang dilaksanakan supaya dapat mengerjakan perintah yang lain. Apabila CPU mendapat permintaan interupsi, program counter (PC) akan diisi alamat dari vektor interupsi. CPU kemudian melaksanakan rutin pelayanan interupsi mulai dari alamat tersebut. Bila rutin pelayanan interupsi selesai dilaksanakan, CPU 89C51 kembali ke program utama yang ditinggalkan, untuk lebih jelasnya mengenai proses pelaksanan interupsi dapat dilihat pada gambar 2.14.

Gambar2.14. Proses Interupsi
 Interupsi pada 89C51 terdapat 2 perbedaan yaitu :
1.	Maskable Interrupt (MI)
Interupsi yang dapat dihalangi oleh perangkat lunak Interupsi eksternal berasal dari jalur INT 0 dan INT 1, sedang interupsi internal berasal dari timer / counter 0 atau 1 dan interupsi dari port serial.
2.	Non Maskable Interrupt (NMI)
Interupsi yang tidak dapat dihalangi oleh perangkat lunak, misalnya adalah Reset. Interupsi RET1 (Return from Interrupt Routine) harus digunakan untuk kembali dari layanan interupsi. Perintah ini dipakai agar saluran interupsi dapat dipakai kembali Alamat awal layanan rutin interupsi dari setiap sumber interupsi terdapat pada tabel 2.2 yang telah dibahas sebelumnya.
Untuk kotak inetrupsi, diperoleh dari interupsi-interupsi eksternal. Sedangkan untuk port yang dimiliki oleh mikrokontroler 89C51, dua diantaranya dapat digunakan sebagai port alamat dan port data yaitu P0 dan P1. Timer 1 dan Timer 2 yang digunakan sebagai masukan counter. Mikrokontroler AT89C51 menyediakan 5 sumber interupsi, yaitu 2 interupsi internal, 2 interupsi timer, dan 1 interupsi port serial.
Interupsi flag timer dilakukan pada saat sebuah timer atau counter terjadi overflow, timer flag yang bersesuaian yakni TF0 dan TF1 akan di-set 1. Flag dapat diubah menjadi 0 kembali apabila interupsi terpanggil dan menjalankan subroutine timer di memori.
Interupsi port serial dilakukan jika suatu data serial diterima sebuah bit interupsi, R1 di-set 1 pada register SCON. Sebaliknya apabila sebuah data serial sudah terkirim, maka bit interupsi T1 di-set pada SCON.
Terdapat 2 buah register yang mengontrol interupsi, yaitu sebagai berikut :
1.	Interrupt Enable (IE)
Digunakan sebagai sumber interupsi yang dapat diaktifkan maupun dilumpuhkan secara individual dengan menatur 1 bit SFR (Special Function Register) yang bernama IE.

2.	Interrupt Priority (IP)
Digunakan sebagai sumber interupsi yang dapat diprogram secara individual (sendiri-sendiri) menjadi 1 atau 2 tingkat perioritas dengan mengatur bit pada SFR (Special Function Register) yang bernama IP. Interupsi dengan perioritas rendah (Low Priority) dapat diinterupsi oleh interupsi yang memiliki perioritas lebih tinggi (High Priority), tetapi tidak dapat diinterupsi oleh interupsi yang dimiliki perioritas lebih rendah. Interupsi yang dimiliki perioritas tertinggi tidak dapat diinterupsi oleh sumber interupsi lainnya.
Jika dua permintaan interupsi dengan tingkat perioritas yang berbeda diterima secara bersamaan, permintaan interupsi dengan perioritas tertinggi yang akan dilayani.
2.8.	Perangkat Lunak MCS-51
2.8.1.	Latar Belakang
Sebuah mikrokontroler tidak akan bekerja bila tidak diberikan program kepadanya. Program tersebut memberitahu kepada mikrokontroler apa yang harus dilakukan. Instruksi-instruksi perangkat lunak berbeda untuk masing-masing jenis mikrokontroler. Misalnya, mikrokontroler buatan Intel dengan mikrokontroler buatan Motorola memiliki perangkat instruksi yang berbeda. Instruksi-instruksi inilah yang dikenal sebagai bahasa pemrograman system mikrokontroler.
Instruksi Mikrokontroler keluarga MCS-51 dapat dikelompokkan kedalam instruksi ransfer data, manipulasi data dan pengendali program. Konsep penting dalam instruksi transfer data adalah mode pengalamatan. Mode pengalamatan menunjukkan jalan untuk byte sumber dan tujuan atau bit-bit untuk operasi data.
Contoh dalam operasi transfer data byte sumber boleh dalam sebuah register, dalam RAM internal, dalam program memori atau dalam memori data eksternal.
Alamat byte sumber boleh diberikan sebagai bagian dari instruksi ditempatkan dalam sebuah register. Instruksi 89C51 memiliki fasilitas mode pengalamatan, yaitu :
a.	Mode pengalamatan angka
b.	Mode pengalamatan langsung
c.	Mode pengalamatan register
d.	Mode pengalamatan tak langsung
e.	Mode pengalamatan berindex
Operand digunakan dalam instruksi mode pengalamatan. Beberapa operand dapat dijadikan sumber dan tujuan dalam instruksi mikrokontroler MCS-51, seperti instruksi MOV digunakan untuk memindahkan dan menyalin data nilai yang ada di operand dan disimpan pada operand tujuan. Operand-operand tersebut adalah :
1.	Rn, merupakan register yang terdiri dari R0 sampai R7 yang aktif dalam bank register.
2.	Direct, sebuah alamat 8 bit yang terletak pada lokasi RAM internal, mengandung bit alamat memori dan SFR.
3.	@Ri, menunjukkan register dengan mode pengalamatan tak langsung. Hanya R0 dan R1 yang aktif dalam register bank yang dapat digunakan dalam mode ini. R1 memegang alamat 8 bit pada lokasi RAM internal, memegang bit alamat memori dan SFR.
4.	# data, nilai 8 bit yang digunakan dalam mode pengalamatan angka (Immediate Addressing Mode). Data tersebut bukan kode tetapi berupa angka (nilai).
5.	Addrs 16, sebuah vektor 2 byte.
6.	Addrs 11, sebuah vektor 11 byte.
7.	Rel 1, sebuah byte offset dengan komplemen 2 digunakan dalam percabangan relatif, program boleh bercabang sejauh -128 lokasi atau +127 lokasi terhadap program counter.
8.	Bit, sebuah alamat 8 bit untuk bit pengalamatan RAM atau SFR.
Instruksi proses data dipisahkan ke dalam instruksi aritmatika dan logika. Perintah aritmatika, misalnya adalah penjumlahan, pengurangan, penambahan 1 (Increment), pengurangan 1 (Decrement), dan penggeseran (Shifting). Umumnya perintah penjumlahan dan pengurangan melibatkan register A (Akumulator) dan register lainnya atau lokasi memori. Operasi penambahan 1 (Increment) dan pengurangan 1 (Decrement) dapat dilakukan dalam berbagai register dan lokasi melalui penggunaan mode pengalamatan yang berbeda.
Operasi logika sering diterapkan pada data numerik. Perintah AND, OR, Exlusive-OR (XOR) adalah operasi nalar (logika) bit per bit antara dua kata 8-bit.
1.	Logika AND
Perintah logika AND melakukan operasi AND bit per bit antara isi register A (Akumulator) dengan data segera, isi register, atau lokasi memori, tergantung pada mode pengalamatan yang digunakan. Terdapat tabel Kebenaran fungsi AND adalah sebagai berikut :
Tabel 2.10. Kebenaran fungsi AND.
Bit 1	Bit 2	Bit 1 AND Bit 2	
1	1	0	
1	0	0	
0	1	0	
0	0	1	

2.	Logika OR
Merupakan operasi OR bit per bit antara akumulator dan byte yang dialamati. Hasilnya disimpan di akumulator. Tabel kebenaran fungsi OR dapat dilihat pada tabel 2.11.
Tabel 2.11. Kebenaran fungsi OR.
Bit 1	Bit 2	Bit 1 OR Bit 2	
0	0	0	
0	1	1	
1	0	1	
1	1	1	

3.	Operasi Exlusive-OR (XOR)
Pada operasi XOR jika 2 bit masukannya sama maka keluaran yang dihasilkan adalah 0. Operasi XOR sering digunakan untuk mendeteksi kesalahan dalam pengiriman data biner. Tabel kebenaran fungsi XOR dapat dilihat pada tabel 2.12.
Tabel 2.12. Kebenaran fungsi XOR.
Bit 1	Bit 2	Bit 1 XOR Bit 2	
1	1	0	
1	0	1	
0	1	1	
0	0	0	
Instruksi bercabang (Branching Instruction) adalah suatu instruksi dalam program yang menyebabkan program berpindah ke bagian lain dalam program.
Dua tipe instruksi bercabang yaitu :
1.	Instruksi Jump (Meloncat).
Merupakan penggantian isi PC (Program Counter) sebagai pemindahan alamat untuk instruksi berikutnya. Kondisi instruksi jump memodifikasi program counter jika flag tertentu di-set atau dibersihkan.
2.	Instruksi Call-Return (Panggil Kembali).
Suatu instruksi yang menyerahkan pengaturan kepada beberapa bagian program (subroutine), tetapi setelah selesai pelaksanaannya pengaturan akan kembali pada program yang memberikan instruksi.

2.8.2.	Perangkat Interupsi
Mikrokontroller MCS-51 memiliki 256 perangkat instruksi. Seluruh instruksi dapat dikelompokkan dalam 4 bagian dengan panjang instruksi 1 byte sampai 4 byte, yaitu instruksi transfer data, instruksi arithmatika, instruksi logika dan manipulasi bit dan instruksi percabangan. Apabila frekuensi clock mikrokontroler yang digunakan adalah 12 MHz, kecepatan pelaksanaan instruksi akan bervariasi dari 1 sampai 4 mikrodetik.
A.	 Instruksi Transfer Data.
Mikrokontroler MCS-51 banyak berisi kumpulan instruksi transfer data. byte dan bit instruksi MOV dikelompokkan sesuai mode pengalamatannya. Mode pengalamatan menyatakan cara pemilihan byte operand. Berikut ini adalah berbagai macam instruksi transfer data dan mode pengalamatan yang digunakan.
Berbagai mode pengalamatan dijelaskan sebagai berikut :
1.	Mode pengalamatan angka (Immediate Addressing mode).
Merupakan mode pengalamatan yang menggunakan nilai konstan.
Contoh : 
MOV A,#01H	; mengisi akumulator dengan bilangan 01H
MOV dptr,#19ABH	; mengisi register dptr dengan bilangan 19ABH
2.	Mode pengalamatan langsung (Direct Addressing Mode).
Menunjukkan pengalamatan yang memberikan nilai ke register secara langsung.
Contoh : 
MOV A,01H	; mengisi akumulator dengan bilangan 01H
MOV dptr, 19ABH	; mengisi register dptr dengan bilangan 19ABH
3.	Mode pengalamatan register (Register Addressing Mode).
Menunjukkan pada operand sumber atau tujuan dapat berupa register R0 sampai R7.
Contoh :
MOV R0,A	; memindahkan isi akumulator ke dalam register 0
MOV R7,B	; memindahkan isi register B ke dalam Register 7	
4.	Mode pengalamatan register khusus (Register Spesific Addressing Mode).
Beberapa instruksi menggunakan register khusus tanpa pengalamatan selanjutnya.
Contoh : 
MOV 0EH,#1	; memindahkan nilai 1 ke dalam alamat 0E
; (0E = alamat akumulator)
5.	Mode pengalamatan tak langsung (Register Indirect Addressing Mode).
Merupakan mode pengalamatan dengan operand yang menunjukkan pada lokasi alamat memori yang akan digunakan. Pengalamatan tak langsung digunakan simbol @.
Contoh : 
Add A,@R0	; tambahkan isi RAM
; yang lokasinya ditunjuk oleh Register 0 ke
	; Akumulator

Dec @R1	; Kurangi satu isi RAM yang alamatnya
	; ditunjuk oleh register R1
B.	Instruksi Arithmatika.
Mikrokontroler keluarga MCS-51memiliki fasilitas untuk melakukan operasi aritmatika. Instruksi terdiri dari penjumlahan, pengurangan, penambahan satu (increment), pengurangan satu (decrement), perkalian dan pembagian.
1.	Instruksi Penjumlahan Dan Pengurangan.
Ada dua jenis instruksi penjumlahan yaitu : Instruksi penjumlahan dengan carry (Addc) dan Instruksi penjumlahan tanpa carry (Add).
Kedua instruksi merupakan instruksi penjumlahan 2 byte. Penjumlahan dengan menggunakan carry akan menambah satu nilai, jika bit carry di-set.
Flag yang mempengaruhi dalam operasi penjumlahan adalah Carry Flag ( C ), Auxiliary Flag (AC), dan Over Flow (OF).
a.	Carry flag di-set jika operasi penjumlahan melebihi FFH. Carry flag digunakan untuk menandai sebuah bawaan dalam operasi pengurangan.
b.	Auxiliary flag di-set jika ada carry dari bawaan rendah ke bawaan tinggi, contohnya dari bit 4 ke bit 5. Carry Auxiliary berguna untuk penjumlahan BCD.
c.	Over flow flag di-set jika ada carry dari bit 7, tetapi bukan dari bit 6 atau carry bit 6 tetapi bukan dari bit 7. Over flow flag berguna untuk bekerja dalam bentuk komplemen dua.
Operasi penjumlahan berhubungan dengan akumulator. Operasi pengurangan menggunakan akumulator sebagai operand pertama. Akumulator dikurangi dengan operand sumber dan hasil pengurangan diletakkan  pada akumulator.
2.	Instruksi Increment Dan Decrement.
Instruksi penambahan 1 (Increment) dan pengurangan 1 (Decrement) pada kikrokontroller dapat menggunakan mode pengalamatan register khusus, mode pengalamatan register, mode pengalamatan langsung, dan mode pengalamatan tak langsung. Penambahan dan pengurangan 1 berguna dalam pengimplementasian program yang membutuhkan pencacah kalang atau penunjuk untuk data.
3.	Perkalian Dan Pembagian.
Mikrokontroler anggota keluarga MCS-51 memiliki interupsi perkalian dan pembagian. Interupsi perkalian dan pembagian ini mengambil waktu paling panjang, yaitu 4 kali siklus mesin. Perkalian dan pembagian menggunakan register khusus (SFR). Register yang digunakan pada instruksi ini adalah akumulator dan register B.
4.	Instruksi Pengaturan Desimal.
Instruksi pengaturan desimal digunakan untuk membetulkan hasil jumlahan bilangan BCD. Setiap bawaan dari angka BCD diubah ke bentuk digit desimal. Nilai sebuah bawaan berada dalam internal 0 sampai 9. Instruksi pengaturan desimal dapat dipandang sebagai penambahan 0H, 6H, 60H atau 66H pada akumulator.

C.	Instruksi Logika Dan Manipulasi Bit.
Instruksi-instruksi logika dan manipulasi bit adalah instruksi logika AND, OR, XOR, perbandingan, penggeseran dan komplemen 2. Operasi berhububungan logika biner.
1.	Instruksi AND, OR, dan Eksklusif-OR.
Memiliki mode pengalamatan yang sama. Operasi logika baik byte maupun registernya bekerja pada 8 bit. Operand tujuan pada register akumulator. Instruksi AND dan OR berguna dalam menutupi bit-bit khusus untuk mengendalikan register.
2.	Instruksi Komplemen dan Clear.
Perintah clear dan komplemen menggunakan register khusus, operasi bekerja pada akumulator.
a.	Instruksi clear adalah sebagai berikut :
CLR A	; clear akumulator
Membersihkan semua bit yang ada di akumulator. Instruksi dapat digambarkan dengan mengisi akumulator dengan nilai 0.
b.	Instruksi komplemen adalah sebagai berikut :
CPL A	; komplemen akumulator
Operasi CPL A mengkomplemenkan isi akumulator, misal isi akumulator 0AAH, setelah dilakukan komplemen, nilai akumulator berubah menjadi 055H. Hal tersebut terjadi karena AAH dalam biner 10101010 b, dan dikomplemenkan yang artinya mengubah logika 0 menjadi 1 dan logika 1 menjadi 0. Sehingga nilai berubah menjadi 01010101 b dalam heksadesimalnya adalah 055H.
3.	Instruksi-instruksi Rotasi.
Menggunakan register khusus, operasi hanya dikerjakan didalam akumulator. Operasi rotasi ini bisa dikatakan operasi penggeseran, karena bit-bit yang terdapat didalam akumulator digeser ke kanan atau ke kiri sesuai dengan permintaan, tetapi didalam operasi rotasi ini bit-bit tersebut tidak ada yang hilang, bit-bit tersebut hanya diputar.
4.	Instruksi Swap.
Pertukaran 2 nilai nibble akumulator. Instruksi swap dapat digambarkan dengan perputaran isi akumulator 4 bit. Instruksi ini berguna dalam mengkonversi 2 karakter ASCII ke sebuah byte.
D.	Instruksi Percabangan.
Instruksi ini mengubah urutan normal pelaksanaan suatu program. Dengan instruksi ini, program yang sedang dilaksanakan akan mencabag ke suatu alamat tertentu. Instruksi percabangan dibedakan atas percabangan bersyarat dan percabangan tidak bersyarat.
1.	Instruksi percabangan bersyarat.
Merupakan modifikasi pada program counter dan hanya melakukan loncatan atau percabangan jika kondisi telah terpenuhi.

Tabel 2.13. Instruksi percabangan bersyarat.
Mnemonics	Keterangan	
Jz <label>	Program akan meloncat kealamat yang ditunjuk label jika nilai dari akumulator sama dengan  0.	
'nz <label>	Program akan meloncat kealamat yang ditunjuk label jika nilai akumulator tidak sama dengan 0.	
Jc <label>	Program akan meloncat ke alamat yang di tunjuk label jika carry flag diset.	
Jnc <label>	Program akan meloncat ke alamat yang ditunjuk label jika carry flag tidak diset.	
Jb <bit>, <label>	Program akan menguji alamat bit, jika berisi 1 maka program akan meloncat kealamat yang ditunjuk oleh label jika tidak instruksi selanjutnya akan dikerjakan.	
Cjne
Reg,data,<label>	Instruksi akan membandingkan data dengan lokasi memori yang dialamati oleh register. Apabila tidak  sama program akan menuju alamat yang ditunjuk oleh label, tetapi jika sama maka program akan mengeksekusi instruksi selanjutnya.	
Djnz Reg,<label>	Instruksi ini akan mengisi isi register dengan 1 secara otomatis. Jika hasil pengurangan sudah 0, maka instruksi selanjutnya akan dieksekusi, tetapi jika belum maka program akan meloncat kealamat yang ditunjuk oleh label.	

Untuk informasi CJNE (Compare Jump Not Equal), memiliki beberapa bentuk atau jenis untuk format instruksi, antara lain :
a.	Cjne A,direct,<label>
Operand pertama adalah akumulator, Operand kedua adalah sebuah register internal, dan operand ketiga adalah sebuah alamat relatif. Program akan membandingkan, dan akan menuju alamat yang ditunjuk oleh label jika isi akumulator dan isi register internal tidak sama.		
b.	Cjne A,#data,<label>
Operand pertama adalah akumulator, Operand kedua adalah alamat konstanta, dan Operand ketiga adalah sebuah alamat relatif. Program akan membandingkan, dan akan menuju alamat yang ditunjuk oleh label jika isi operand pertama dan operand kedua tidak sama.
c.	Cjne @Ri,#data,<label>
Operand pertama adalah Register Ri yaitu (R0…R7), Operand kedua adalah alamat konstanta, dan Operand ketiga adalah sebuah alamat relatif. Program akan menuju alamat yang ditunjuk oleh label jika isi operand 1 dan operand 2 yang dibandingkan tidak sama. Pada instruksi DJNZ memiliki beberapa variasi format instruksi, yaitu untuk operand 1 dapat berupa Register Bank atau sebuah Register Internal. Sedangkan maksud dari perintah tidak mengalami perubahan, tetap mengurangkan isi Register sampai menjadi sama dengan Nol, kemudian meloncat ke alamat label yang ditunjuk.
2.	Instruksi percabangan tidak bersyarat.
Adalah instruksi yang tidak memerlukan kondisi apapun yang harus terpenuhi.
Tabel 2.14. Instruksi percabangan tidak bersyarat.
Mnemonics	Keterangan	
Sjmp <label>	Digunakan hanya untuk program dengan kapasitas kecil, dimana kapasitas untuk instruksi ini adalah sekitar 125 byte.	
Ajmp <label>	Instruksi meletakkan bagian bawah 11-bit dari pencacah program dengan 11-bit alamat awal.	
Ljmp <label>	Operand adalah sebuah alamat 16-bit dimana berada pada program memori 64 KB.	
Jmp @A+dpr	Alamat untuk instruksi berikutnya akan dieksekusi dengan menjumlahkan isi data pointer dengan akumulator.