at89c51
TRANSCRIPT
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 1/16
Mikrokontroler AT89S51
Mikrokontroler tipe AT89S51 merupakan mikrokontroler keluarga MCS-51 dengan konfigurasi
yang sama persis dengan AT89C51 yang cukup terkenal, hanya saja AT89S51 mempunyai fitur ISP (In-System Programmable Flash Memory). Fitur ini memungkinkan mikrokontroler dapat
diprogram langsung dalam suatu sistem elektronik tanpa melalui Programmer Board atauDownloader Board. Mikrokontroler dapat diprogram langsung melalui kabel ISP yangdihubungkan dengan paralel port pada suatu Personal Computer.
Adapun fitur yang dimiliki Mikrokontroler AT89S51 adalah sebagai berikut :
1. Sebuah CPU (Central Processing Unit) 8 bit yang termasuk keluarga MCS51.
2. Osilator internal dan rangkaian pewaktu, RAM internal 128 byte (on chip).3. Empat buah Programmable port I/O,masing-masing terdiri atas 8 jalur I/O
4. Dua buah Timer Counter 16 bit.
5. Lima buah jalur interupsi (2 interupsi external dan 3 interupsi internal )6. Sebuah port serial dengan kontrol serial full duplex UART.
7. Kemampuan melaksanakan operasi perkalian, pembagian dan operasi Boolean (bit)8. Kecepatan pelaksanaan instruksi per siklus 1 microdetik pada frekuensi clock 12 MHz
9. 4 Kbytes Flash ROM yang dapat diisi dan dihapus sampai 1000 kali10. In-System Programmable Flash Memory
Dengan keistimewaan diatas, pembuatan alat menggunakan AT89S51 menjadi lebih sederhana dan
tidak memerlukan IC pendukung yang banyak. Sehingga mikrokontroler AT89S51 ini mempunyai
keistimewaan dari segi perangkat keras. Adapun blok diagram dari mikrokontroler 89S51diperlihatkan pada Gambar
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 2/16
• RESET VALUESaat mikrokontroler di reset, maka nilai dari register-register
mikrokontroler adalah sebagaiberikut:
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 3/16
Mikrokontroler dapat di reset dengan memberikan sinyal ‘high’ (1) padakaki reset (pin 9) untuk periode tertentu, besarnya periode ini adalah 2periode siklus mesin.
Dibawah ini adalah sistem minimum agar mikrokontroler bisa bekerjadengan normal.
Sistem diatas bekerja sebagai berikut:Kapasitor C1 dan Resistor R1 digunakan untuk sistem Reset, saat pertama
suplay diberikan kemikrokontroler maka kaki 9 akan berlogika 1, selama 2 siklus mesin.
Setelah itu pin 9 akanberlogika 0 kembali. Proses seperti ini bisa terjadi berdasarkan proses
pengisian danpengosongan kapasitor.Kapasitor C2 dan C3, dipasang bersamaan dengan keramik resonator (x-
tal) untuk menghasilkanClock internal. Nilai dari clok ini tergantung dari keramik resonator (x-tal)
yang diberikan.
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 4/16
• SISTEM CLOCK Mikrokontroler, mempunyai sistem pewaktuan CPU, 12 siklus clock. Artinya
setiap 12 siklus yangdihasilkan oleh ceramic resonator maka akan menghasilkan satu siklus
mesin. Nilai ini yang akan
menjadi acuan waktu operasi CPU.Untuk mendesain sistem mikrokontroler kita memerlukan sistem clock,
sistem ini bisa di bangundari clock eksternal maupun clock internal. Untuk clock internal, kita tinggal
memasang komponenseperti di bawah ini:
• FUNGSI MASING-MASING PIN
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 5/16
Yang membedakan mikrokontroler AT89S51 dengan C51(seri sebelumnya)adalah cara pengisian
program (flash programming). Pada mikrokontroler AT89S51 terdapatfasilitas ISP (In System
Programming). Artinya mikrokontroler ini mampu diprogram meskipun
dalam kondiasi bekerja. Letak perbedaan pada hardware adalah adanyaMOSI, MOSI, dan SCK, pin ini berguna saat flashprogramming. Adapun fungsi dari pin pin yang lain, fungsinya sama seperti
pada seri sebelumnya.Diwah ini disajikan fungsi pin untuk mikrokontroler AT89S51 :
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 6/16
• STRUKTUR MEMORIDalam pengertian MCS51, Random Access Memory dalam chip AT89x51
adalah memoridata,yaitu memori yang dipakai untuk menyimpan data, sedangkan Flash
PEROM merupakanmemori penampung program pengendali AT89x51, dikenal sebagai
memori-program. Karenakedua memori itu memang dibedakan dengan tegas, maka kedua memori
itu mempunyai
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 7/16
penomoran yang terpisah. Memori-program dinomori sendiri, padaAT89S51 mulai dari nomor $0000 sampai $0FFF. Sedangkan memori-datayang hanya 256 byte dinomori dari nomor $00sampai $FF.
GambarDenah Memori-data
Seperti terlihat dalam denah memori-data Gambar 5, memori-data dibagi
menjadi dua bagian,memori nomor $00 sampai $7F merupakan memori seperti RAM
selayaknya meskipun beberapabagian mempunyai kegunaan khusus, sedangkan memori nomor $80
sampai $FF dipakai sangatkhusus yang dinamakan sebagai Special Function Register.
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 8/16
Memori-data nomor $00 sampai $7F bisa dipakai sebagai memoripenyimpan data biasa, dibagi
menjadi 3 bagian:
Memori nomor $00 sampai $18 selain sebagai memori-data biasa, bisa
pula dipakaisebagai Register Serba Guna (General Purpose Register).
Memori nomor $20 sampai $2F selain sebagai memori-data biasa, bisadipakai untuk menyimpan informasi dalam level bit.
Memori nomor $30 sampai $7F (sebanyak 80 byte) merupakan memori-data biasa,bisa dipakai untuk menyimpan data maupun dipakai sebagai Stack.
• Register Serba Guna
Register Serba Guna (General Purpose Register) menempati memori-data
nomor $00 sampai $18,memori sebanyak 32 byte ini dikelompokkan menjadi 4 Kelompok Register
(Register Bank), 8 bytememori dari masing-masing Kelompok itu dikenali sebagai Register 0,
Register 1 .. Register 7 (R0,R1, R2, R3, R4, R5, R6 dan R7).
Dalam penulisan program memori-memori ini bisa langsung disebutsebagai R0, R1, R2, R3, R4,
R5, R6 dan R7, tidak lagi dengan nomor memori. Dengan cara ini instruksiyang terbentuk bisa
lebih sederhana dan bekerja lebih cepat. Pengertian ini bisa diperjelasdengan contoh 2 instruksi
berikut :
MOV A,04H
MOV A,R4
Instruksi pertama mempunyai makna isi memori-data nomor 4 di-copy-kanke Akumulator
A, sedangkan instruksi kedua artinya isi R4 di-copy-kan ke Akumulator A.Karena R4 menempati
memori-data nomor 4, jadi kedua instruksi itu berakibat sama bagiAkumulator A. Tapi saatditerjemahkan ke kode mesin, intruksi pertama dirubah menjadi E5 04
(heksadesimal) daninstruksi kedua menjadi E6 (heksadesimal), jadi instruksi kedua lebihsederhana dari instruksi pertama. Selain itu, khusus untuk Register 0 danRegister 1 (R0 dan R1) masih punya mempunyai
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 9/16
kemampuan lain, kedua register ini bisa dipakai sebagai registerpenampung alamat yang dipakai
dalam penyebutan memori secara tidak langsung (indirect memoriaddressing), hal ini akan
dibicarakan lebih lanjut di belakang.
Empat kelompok Register Serba Guna itu tidak bisa dipakai secarabersamaan, saat
setelah reset yang aktif dipakai adalah Kelompok Register 0 (Register Bank0).
Kalau yang diaktifkan adalah Kelompok Register 1, maka yang dianggapsebagai R0 bukan lagi
memori-data nomor 0 melainkan memori-data nomor 8, demikian pulakalau yang diaktifkan
Kelompok Register 3 maka memori-data nomor 18h yang menjadi R0.Kelompok Register yang aktif dipilih dengan cara mengatur bit RS0 dan
RS1 yang ada di dalamRegister PSW (Program Status Word).
Memori level BitMemori-data nomor $20 sampai $2F bisa dipakai menampung informasi
dalam level bit. Setiapbyte memori di daerah ini bisa dipakai menampung 8 bit informasi yang
masing-masing dinomoritersendiri, dengan demikian dari 16 byte memori yang ada bisa dipakai
untuk menyimpan 128 bit(16 x 8 bit) yang dinomori dengan bit nomor $00 sampai $7F.
Informasi dalam level bit tersebut masing-masing bisa di-‘1’-kan, di - ‘0’-kan dengan instruksi.
Pengertian di atas bisa dipikirkan seolah-olah MCS51 mempunyai jenismemori yang lain,
tapi sesungguhnya kedua jenis memori itu tetap sama, hanya saja carapenyebutannya saja yang
berlainan.
Instruksi SETB $00 mengakibatkan memori-bit nomor 0 menjadi ‘1’, atausama dengan membuat
bit nomor 0 dari memori-data nomor $20 menjadi ‘1’, sedangkan bit-bitlainnya dalam memori
nomor $20 tidak berubah nilai.
Sedangkan instruksi CLR $7F mengakibatkan memori-bit nomor $7Fmenjadi ‘0’, satau sama dengan membuat bit nomor 7 dari memori-datanomor $2F menjadi ‘0’, sedangkan bit-bit lainnyadalam memori nomor $2F tidak berubah nilai.
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 10/16
Pengertian ini dipertegas dengn intsruksi-instruksi berikut:
MOV 21H,#0FH
Sama dengan hasil kerja instruksi-instruksi berikut :SETB 08H
SETB 09H
SETB 0AH
SETB 0BH
CLR 0CH
CLR 0DH
CLR 0EH
CLR 0FH
Instruksi MOV 21H,#0FH mempunyai makna mengisi memori-data nomor
21H dengan nilai 0FH(atau bilangan biner 00001111), berarti mengisi memori-bit nomor 0FHsampai 08H dengan
bilangan biner 00001111 yang bisa dinyatakan dengan 8 baris instruksiberikutnya.
• Special Function Register (SFR)Register Khusus (SFR - Special Function Register) adalah satu daerah RAM
dalam IC keluargaMCS51 yang dipakai untuk mengatur perilaku MCS51 dalam hal-hal khusus,
misalnya tempat
untuk berhubungan dengan port paralel P1 atau P3, dan saranainput/output lainnya, tapi tidak
umum dipakai untuk menyimpan data seperti layaknya memori-data.
Meskipun demikian, dalam hal penulisan program SFR diperlakukan persissama dengan memori-
data. Untuk mengisi memori-data nomor 60H dengan bilangan 0FH,instruksi yang dipergunakan
adalah :MOV 60H, #0FH
Sedangkan untuk memenyimpan 0FH ke Port 1 yang di SFR menempatimemori-data nomor 90H,
instruksi yang dipergunakan adalah :MOV 90H, #0FH
Membandingkan kedua instruksi di atas bisa dimengerti dalam segipenulisan program SFR
diperlakukan persis sama dengan memori-data.
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 11/16
Meskipun demikian, dalam menyebut memori-data bisa dipakai dua cara,yakni penyebutan nomor
memori secara langsung (direct memory addressing) dan penyebutannomor memori secara tidak langsung (indirect memory addressing) lewatbantuan R0 dan R1. Tapi untuk SFR hanya bisa
dipakai penyebutan nomor memori secara langsung (direct memoryaddressing) saja.
• Register Dasar MCS51Untuk keperluan penulisan program, setiap mikroprosesor/mikrokontroler
selalu dilengkapi denganRegister Dasar. Ada beberapa macam register merupakan register baku
yang bisa dijumpaidisemua jenis mikroprosesor/ mikrokontroler, ada register yang spesifik
pada masing-masingprosesor.
Yang termasuk Register Baku antara lain Program Counter, Akumulator,Stack Pointer Register,
Program Status Register. MCS51 mempunyai semua register baku ini.Sebagai register yang khas MCS51, antara lain adalah Register B, Data
Pointer High Byte danData Pointer Low Byte. Semua ini digambarkan dalam Gambar 4.Di samping itu MCS51 masih mempunyai Register Serba Guna R0..R7 yang
sudah disebutdibagian atas.
Dalam mikroprosesor/mikrokontroler yang lain, register-register dasarbiasanya
ditempatkan ditempat tersendiri dalam inti prosesor, tapi dalam MCS51register-register itu
ditempatkan secara terpisah.
• Program Counter ditempatkan ditempat tersendiri di dalam inti prosesor
• Register Serba Guna R0..R7 ditempatkan di salah satu bagian darimemori-data
• Register lainnya ditempatkan dalam Special Function Register (SFR).
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 12/16
Gambar Susunan Register Dasar MCS51
Kegunaan dan pemakaian register-register dasar tersebut antara lainsebagai berikut:
Program CounterProgram Counter (PC) dalam AT89S51 merupakan register dengan
kapasitas 16 bit. Di dalam PCdicatat nomor memori-program yang menyimpan instruksi berikutnya yang
akan diambil (fetch)sebagai instruksi untuk dikerjakan (
execute).
Saat setelah reset PC bernilai 0000h, berarti MCS51 akan segeramengambil isi memori-program
nomor 0 sebagai instruksi. Nilai PC otomatis bertambah 1 setelah prosesormengambil instruksi 1
byte. Ada instruksi yang hanya 1 byte, ada instruksi yang sampai 4 byte,dengan demikian
pertambahan nilai PC setelah menjalankan instruksi, tergantung pada jumlah byte instruksi
bersangkutan.
AkumulatorSesuai dengan namanya, Akumulator adalah sebuah register yang
berfungsi untuk menampung(accumulate) hasil hasil pengolahan data dari banyak instruksi MCS51.Akumulator bisa menampung data 8 bit (1 byte) dan merupakan registeryang paling banyak kegunaannya, lebihdari setengah instruksi-instruksi MCS51 melibatkan Akumulator.
5/14/2018 AT89C51 - slidepdf.com
http://slidepdf.com/reader/full/at89c51-55ab4d9357938 13/16
Instruksi-instruksi berikut memperjelas pengertian di atas :
MOV A,#20HADD A,#30H
Instruksi pertama menyimpan nilai20H
ke Akumulator, instruksi keduamenambahkan bilangan
30H ke Akumulator, hasil penjumlahan sebesar 50H ditampung diAkumulator.
Stack Pointer RegisterSalah satu bagian dari memori-data dipakai sebagai Stack, yaitu tempat
yang dipakai untukmenyimpan sementara nilai PC sebelum prosesor menjalankan sub-rutin,
nilai tersebut akandiambil kembali dari Stack dan dikembalikan ke PC saat prosesor selesai
menjalankan sub-rutin.Stack Pointer Register adalah register yang berfungsi untuk mengatur kerjastack, dalam Stack Pointer Register disimpan nomor memori-data yangdipakai untuk operasi Stack berikutnya.
Program Status WordProgram Status Word (PSW) berfungsi mencatat kondisi prosesor setelahmelaksanakan instruksi. Pembahasan tentang PSW secara rinci akandilakukan dibagian lain.
Register B
Merupakan register dengan kapasitas 8 bit, merupakan register pembantuAkumulator saat
menjalankan instruk perkalian dan pembagian.
DPH dan DPLData Pointer High Byte (DPH) dan Data Pointer Low Byte (DPL) masing-
masing merupakanregister dengan kapasitas 8 bit, tapi dalam pemakaiannya kedua register
ini digabungkan menjadisatu register 16 bit yang dinamakan sebagai Data Pointer Register (DPTR).Sesuai dengan namanya, Register ini dipakai untuk mengalamati data
dalam jangkauan yang luas.