xx BAB 2
LANDASAN TEORI
2.1
Mikrokontroler AT89S52
2.1.1
Gambaran umum
Mikrokontroler AT89S52 adalah mikrokomputer CMOS 8 bit yang memiliki 8 KB Programmable and Erasable Read Only Memory (PEROM). Mikrokontroler berteknologi memori non-volatile (tidak kehilangan data bila kehilangan daya listrik). Set instruksi dan kaki keluaran AT89S52 sesuai dengan standar industri 80C51 dan 80C52. Atmel AT89S52 adalah mikrokontroler yang sangat bagus dan fleksibel dengan harga yang relatif murah untuk banyak aplikasi sistem kendali berkerapatan tinggi dari Atmel ini sangat kompatibel dengan mikrokontroler MCS-51 misalnya mikrokontroler AT80S52 yang terkenal dan banyak digunakan dan telah menjadi standar industri baik dalam jumlah pin IC maupun set instruksinya.
Sebagai perbandingan kapasitas memori, tabel 2.1 berikut ini akan menampilkan memori dari mikrokontroler seri AT89XX
Universitas Sumatera Utara
xxi Tabel 2.1 Kapasitas Memori Mikrokontroler seri AT89XX Type
RAM
AT89C51/
Flash Memory
EEPROM
4 Kbyte
Tidak
8 Kbyte
Tidak
8 X 128 byte AT89S51 AT89C52/ 8 X 256 byte AT89S52 AT89C55
8 X 256 byte
20 Kbyte
Tidak
AT89S53
8 X 256 byte
12 Kbyte
Tidak
AT89S8252
8 X 256 byte
8 Kbyte
2 Kbyte
(Agfianto Eko Putra, "BELAJAR MIKROKONTROLER AT89C51/52/55", Penerbit Gava Media, Edisi pertama, Yogyakarta, 2002)
Mikrokontroler
AT89S52
memiliki
fasilitas-fasilitas
pendukung
yang
membuatnya menjadi mikrokontroler yang sangat banyak digunakan dalam berbagai aplikasi. Fasilitas-fasilitas yang dimiliki oleh mikrokontroler AT89S52 adalah :
a. Sesuai dengan produk-produk MCS-51. b. Terdapat memori flash yang terintegrasi dalam sistem. Dapat ditulis ulang hingga 1000 kali. c. Beroperasi pada frekuensi 0 sampai 24MHz. d.
Tiga tingkat kunci memori program.
e. Memiliki 256 x 8 bit RAM internal.
Universitas Sumatera Utara
xxii f. Terdapat 32 jalur masukan/keluaran terprogram. g. Tiga pewaktu/pencacah 6-bit (untuk AT89S52) & dua pewaktu/pencacah 16bit (untuk
AT89S51)
h. Memiliki 8 sumber interupsi(untuk AT89S52) & 6 sumber instruksi untuk AT89S51 i. Kanal serial terprogram. j. Mode daya rendah dan mode daya mati.
2.1.2
Karakteristik mikrokontroler AT89S52
AT89S52 mempunyai memori yang terdiri dari RAM internal dan Special Function Register. RAM internal pada mikrokontroler AT89S52 memiliki ukuran 256 byte dan beralamatkan 00H-7FH serta dapat di akses menggunakan RAM address register. RAM internal terdiri dari delapan buah register (R0-R7) yang membentuk register banks. Special Function Register yang berjumlah 21 buah berada di alamat 80HFFH. RAM ini berbeda pada lokasi dengan Flash PEROM dengan alamat 000H-7FFH.
Universitas Sumatera Utara
xxiii
IC AT89S52 mempunyai pin sebanyak 40 buah yang sesuai dengan mikrokontroler 8031 dan memiliki susunan pin seperti gambar di berikut ini ini :
Gambar 2.1 Konfigurasi pin (kaki) pada mikrokontroler AT89S52
2.1.3
Fungsi Pin-Pin pada mikrokontroler AT89S52
1. Pin 1 sampai pin 8
Pin 1 – 8 adalah port 1 yang merupakan saluran atau bus I/O 8 bit dua arah dengan internal pull-up
yang dapat digunakan untuk berbagai keperluan seperti
mengendalikan empat input TTL. Port ini juga digunakan sebagai saluran alamat saat pemrograman dan verifikasi
Universitas Sumatera Utara
xxiv
. 2. Pin 9
Merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan mereset mikrokontroler ini.
3. Pin 10 sampai pin 17
Pin 10 – pin 17 merupakan saluran atau bus I/O 8 bit dua arah dengan internal pullups yang memiliki fungsi pengganti. Bila fungsi pengganti tidak dipakai maka dapat digunakan sebagai port paralel 8 bit serbaguna. Selain itu, sebagian port 3 dapat berfungsi sebagai sinyal kontrol saat proses pemrograman dan verifikasi.
4. Pin 18 dan pin 19
Pin-pin ini merupakan jalur masukan ke penguat osilator berpenguat tinggi. Mikrokontroler ini memiliki seluruh rangkaian osilator yang diperlukan pada chip, kecuali rangkaian kristal yang mengendalikan frekuensi osilator. Oleh karena itu, pin 18 dan 19 ini sangat diperlukan untuk dihubungkan dengan kristal. Selain itu XTAL 1 juga dapat digunakan sebagai input untuk inverting osilator amplifier dan input rangkaian internal clock, sedangkan XTAL 2 merupakan output dari inverting oscillator amplifier.
Universitas Sumatera Utara
xxv 5. Pin 20
Pin 20 merupakan ground sumber tegangan dan diberi simbol “gnd”. 6. Pin 21 sampai pin 28
Pin-pin ini adalah port 2 yang merupakan saluran atau bus I/O 8 bit dua arah dengan internal pull-ups. Saat pengambilan data dari program memori eksternal atau selama pengaksesan
data
memori
eksternal
yang
menggunakan
alamat
16
bit
(MOVX@DPTR), port 2 berfungsi sebagai saluran /bus alamat tinggi (A8-A15). Akan tetapi, saat mengakses data memori eksternal yang menggunakan alamat 8 bit (MOVX@DPTR), port 2 mengeluarkan isi P2 pada special function register.
7. Pin 29
Pin 29 merupakan program Store Enable (PSEN) merupakan sinyal pengontrol untuk mengakses program memori eksternal agar masuk ke dalam bus selama proses pemberian/pengambilan instruksi (fetching).
8. Pin 30
Pin 30 sebagai Adress Lacth Enable (ALE)/PROG merupakan penahan alamat memori eksternal (pada port 1) selama mengakses ke memori. Pin ini juga berfungsi sebagai pulsa/sinyal input pemograman (PROG) selama proses pemograman.
9. Pin 31
Universitas Sumatera Utara
xxvi
Pin 31 adalah External Access Enable (EA) merupakan sinyal kontrol untuk pembacaan memori program. Apabila diset rendah (L) maka mikrokontroler akan melaksanakan seluruh instruksi dari memori program eksternal, sedangkan jika diset tinggi (H) maka mikrokontroler akan melaksanakan seluruh instruksi dari memori program internal ketika isi program counter kurang dari 4096. Port ini juga berfungsi sebagai tegangan pemograman (Vpp=+12V) selama proses pemograman. 10. Pin 32 sampai pin 39
Pin 32-pin 39 adalah port 0 yang merupakan saluran bus I/O 8 bit open collector, dapat juga digunakan sebagai multipleks bus alamat rendah dan bus data selama adanya akses ke memori program eksternal. Saat proses pemograman dan verifikasi, port 0 digunakan sebagai saluran/bus data. Pull-up eksternal diperlukan selama proses verifikasi.
11. Pin 40
Pin 40 merupakan sumber tegangan positif yang diberi simbol Vcc.
2.1.4
Register pada Mikrokontroler AT89S52
Register adalah penampung data sementara yang terletak dalam CPU. Pada mikrokontroler AT89S52, register-registernya adalah sebagai berikut :
Universitas Sumatera Utara
xxvii a. .Register A ( Accumulator)
Accumulator ialah sebuah register 8 bit yang merupakan pusat dari semua operasi accumulator, termasuk dalam operasi aritmatika dan operasi logika.
b. Register B
Register ini memiliki fungsi yang sama dengan register A.
c. Program counter (PC)
Program counter (Pencacah program) merupakan sebuah register 16 bit yang selalu menunjukkan lokasi memori instruksi yang akan diakses.
d. Data pointer
Data pointer atau DPATR merupakan register 16 bit yang terletak di alamat 82H untuk DPL dan 83H untuk DPH. Biasanya Data pointer digunakan untuk mengakses data atau source kode yang terletak di memori eksternal.
e. Stack Pointer (SP)
Stack Pointer adalah register 8 bit yang mempunyai fungsi khusus sebagai penu njuk alamat atau data paling atas pada operasi penumpukan di RAM. Stack
Universitas Sumatera Utara
xxviii Pointer terletak di alamat 81H. Penunjuk penumpukan selalu berkurang dua tiap kali data didorong masuk kedalam lokasi penumpukan dan selalu bertambah dua tiap kali data ditarik keluar dari lokasi penumpukan.
f. Program Status Word
Program Status Word merupakan register yang berisi beberapa bit status yang mencerminkan keadaaan mikrokontroler.
g. Bit Carry Flag (CY)
Bit carry merupakan bit ke 8 yang memiliki dua fungsi :
1. Carry akan menunjukkan apakah operasi penjumlahan mengandung carry (sisa) atau apakah operasi pengurangan mengandung borrow (kurang). Apabila operasi ini mengandung carry, bit ini akan diset agar bernilai satu, sedangkan jika mengandung borrow, bit ini akan di set agar bernilai nol (0).
2. Carry dimanfaatkan sebagai bit ke-8 untuk operasi pergeseran (shift) atau perputaran.
h. Bit Auxiliary Carry (AC)
Universitas Sumatera Utara
xxix
Bit ini menunjukkan adanya carry (bawaan) dari bit ketiga menuju bit keempat atau dari empat bit rendah ke empat bit tinggi pada operasi aritmatika. Bit ini jarang digunakan dalam program, tetapi digunakan oleh mikrokontroler secara implisit pada operasi aritmatika bilangan BCD.
i. Bit Flag 0 (F0)
Bit ini menunjukkan apakah hasil operasi bernilai nol atau tidak. Apabila hasil operasi adalah nol (0), bit ini akan diset agar bernilai 1, sedangkan apabila hasil operasinya bukan nol (0) maka bit ini akan di-reset. Bit ini juga digunakan pada perbandingan dua buah data. Jika kedua data bernilai sama maka bit ini akan diset agar bernilai satu, sedangkan jika kedua data itu berbeda maka bit ini akan direset agar bernilai nol (0).
j. Bit Register Select (RS)
RS0 dan RS1 digunakan untuk memilih bank register. Delapan buah register ini merupakan register serbaguna. Lokasinya pada awal 32 byte RAM internal yang memiliki alamat dari 00H sampai 1FH. Register ini dapat diakses melalui simbol assembler (R0,R1,R2,R3,R4,R5,R6 dan R7).
Universitas Sumatera Utara
xxx
2.2
PERANGKAT LUNAK
2.2.1
Bahasa Assembly MCS-51
Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya 10 instruksi. Instruksi –instruksi tersebut antara lain :
1. Instruksi MOV
Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung. Contoh pengisian nilai secara langsung
Universitas Sumatera Utara
xxxi MOV R0,#20h
Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung
MOV 20h,#80h ........... ............ MOV R0,20h Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat.
2. Instruksi DJNZ
Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh ,
MOV R0,#80h
Universitas Sumatera Utara
xxxii Loop: ........... ............ DJNZ R0,Loop ............
R0 -1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya.
3. Instruksi ACALL
Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh : ............. ACALL TUNDA ............. TUNDA: .................
4. Instruksi RET
Universitas Sumatera Utara
xxxiii Instruksi
RETURN (RET) ini merupakan perintah untuk kembali ke rutin
pemanggil setelah instruksi ACALL dilaksanakan. Contoh,
ACALL TUNDA ............. TUNDA: ................. RET
5. Instruksi JMP
(Jump)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh, Loop: ................. .............. JMP Loop
6. Instruksi JB
(Jump if bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh,
Loop:
Universitas Sumatera Utara
xxxiv JB P1.0,Loop .................
7. Instruksi JNB
(Jump if Not bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh, Loop: JNB P1.0,Loop .................
8. Instruksi CJNZ
(Compare Jump If Not Equal)
Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh, Loop: ................ CJNE R0,#20h,Loop ................
Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi selanjutnya..
Universitas Sumatera Utara
xxxv 9. Instruksi DEC (Decreament)
Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
................ DEC R0
R0 = R0 – 1
.............
10. Instruksi INC (Increament)
Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
................ INC R0
R0 = R0 + 1
.............
11. Dan lain sebagainya 2.2.2
Software 8051 Editor, Assembler, Simulator (IDE)
Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Tampilannya seperti di bawah ini.
Universitas Sumatera Utara
xxxvi
Gambar 2.2 8051 Editor, Assembler, Simulator (IDE) Setelah program selesai ditulis, kemudian di-save dan kemudian di-Assemble (dicompile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi.
Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroller. 2.2.3
Software Downloader
Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar di bawah ini
Universitas Sumatera Utara
xxxvii
Gambar 2.3 ISP- Flash Programmer
Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroller.
2.3
Photodioda
Pengertian : piranti semikonduktor
dengan struktur p-n atau p-i-n untuk
mendeteksi cahaya.
Potodioda biasanya digunakan untuk mendeteksi cahaya. Potodioda adalah piranti semikonduktor yang mengandung sambungan p-n, dan biasanya terdapat lapisan intrinsik antara lapisan n dan p. Piranti yang memiliki lapisan intrinsik disebut p-i-n atai PIN
Universitas Sumatera Utara
xxxviii potodioda. Cahaya diserap di daerah pengambungan atau daerah intrinsik menimbulkan pasangan elektron-hole, kebanyakan pasangan tersebut menghasilkan arus yang berasal dari cahaya.
2.3.1
Mode operasi
Potodioda dapat dioperasikan dalam 2 mode yang berbeda:
1. Mode potovoltaik: seperti solar sel, penyerapan pada potodioda menghasilkan tegangan yang dapat diukur. Bagaimanapun, tegangan yang dihasilkan dari tenaga cahaya ini sedikit tidak linier, dan range perubahannya sangat kecil. 2. mode potokonduktivitas : disini, potodioda diaplikasikan sebagai tegangan revers (tegangan balik) dari sebuah dioda (yaitu tegangan pada arah tersebut pada dioda tidak akan menhantarkan tanpa terkena cahaya) dan pengukuran menghasilkan arus poto. ( hal ini juga bagus untuk mengaplikasikan tegangan mendekati nol). Ketergantungan arus poto pada kekuatan cahaya dapat sangat linier .
Karakteristik bahan potodioda:
1. silikon (Si) : arus lemah saat gelap, kecepatan tinggi, sensitivitas yang bagus antara 400 nm sampai 1000 nm ( terbaik antara 800 sampai 900 nm). 2. Germanium (Ge): arus tinggi saat gelap, kecepatan lambat, sensitivitas baik antara 600 nm sampai 1800 nm (terbaik 1400 sampai 1500 nm).
Universitas Sumatera Utara
xxxix 3. Indium Gallium Arsenida (InGaAs): mahal, arus kecil saat gelap, kecepatan tinggi sensitivitas baik pada jarak 800 sampai 1700nm (terbaik antara 1300 sampai 1600nm).
Gambar Photodioda ditunjukkan pada gambar berikut:
Gambar 2.4 Photodioda
2.4
Dioda Pemancar Cahaya Infra Merah (LED infra Merah)
LED adalah dioda yang menghasilkan cahaya saat diberi energi listrik. Dalam bias maju sambungan p-n terdapat rekombinasi antara elektron bebas dan lubang (hole). Energi ini tidak seluruhnya diubah kedalam bentuk energi cahaya atau photon melainkan dalam bentuk panas sebagian.
Proses pemancara cahaya akibat adanya energi listrik yang diberikan terhadap suatu bahan disebut dengan sifat elektroluminesensi. Material lain misalnya Galium Arsenida Pospat (GaAsP) atau Galium Pospat (GaP): photon energi cahaya dipancarkan
Universitas Sumatera Utara
xl untuk menghasilkan cahaya tampak. Jenis lain dari LED digunakan untuk menghasilkan energi tidak tampak seperti yang dipancarkan oleh pemancar laser atau inframerah. VCC 5V 330
Gambar 2.5 Simbol dan rangkaian dasar sebuah LED
Pemancar inframerah adalah dioda solid state yang terbuat dari bahan Galium Arsenida (GaAs) yang mampu memancarkan fluks cahaya ketika dioda ini dibias maju. Bila diberi bias maju elektron dari daerah-n akan menutup lubang elektron yang ada didaerah-p. Selama proses rekombinasi ini, energi dipancar keluar dari permukaan p dan n dalam bentuk photon. Photon-photon yang dihasilkan ini ada yang diserap lagi dan ada yang meninggalkan permukaan dalam betuk radiasi energi.
Universitas Sumatera Utara