KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

35
KUNCI ELEKTRIS SEBAGAI PENGAMAN PINTU RUMAH TINGGAL DENGAN MENGGUNAKAN MIKROKONTROLLER AT89S52 Endah Mulya Gustina Rahmat Jurusan Teknik Elektro, Fakultas Teknologi Industri, Universitas Gunadarma, Margonda Raya 100 Depok 16424 telp (021) 78881112, 7863788 Abstraksi : Selama ini yang biasa dipakai oleh masyarakat sebagai pengaman pintu rumah tinggal adalah sebuah kunci besi. Kunci besi ini memiliki berbagai kelemahan salah satunya yaitu mudah dirusak Oleh karena itulah penulis membuat sebuah kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52. Cara kerja dari alat ini adalah dengan memasukkan kartu yang telah didisain sedemikian rupa pada rangkaian pendeteksi data yang terdiri dari 8 buah optocoupler. Apabila kartu yang dimasukkan adalah kartu yang tepat, maka relay akan aktif dan display seven segment akan menampilkan kata hello . Namun apabila kartu yang dimasukkan bukan kartu yang tepat, maka display akan menampilkan kata salah . Sampai mengalami kesalahan sebanyak tiga kali maka alarm berbunyi dan alat tidak dapat mengakses kartu lagi. Pada kondisi ini, alat hanya akan dapat direset dengan kartu lain yang dipergunakan sebagai kartu reset. Bersamaan dengan diresetnya alat ini, display akan menampilkan kata reset . Tanggal Pembuatan : 07 Maret 2005 1. PENDAHULUAN Sebagai pengaman pintu rumah tinggal biasanya hanya dipergunakan sebuah kunci besi. Hal ini sangat lazim dipergunakan oleh masyarakat sampai sekarang. Namun pengaman dengan kunci besi ini mempunyai beberapa kelemahan, salah satunya yaitu sangat mudah dirusak. Terkadang hanya dengan menggunakan sepotong kawat saja, pengaman pintu dengan kunci besi ini dapat dengan mudahnya dibuka. Hal ini mengakibatkan pengaman pintu dengan menggunakan kunci besi ini kurang begitu aman. Oleh karena kelemahan-kelemahan dari sebuah kunci besi dan kemajuan teknologi maka dibuat suatu kunci elektris sebagai pengaman pintu rumah tinggal dengan m,enggunakan mikrokontroller AT89S52. Kunci elektris ini dibuat dari sebuah kartu yang dirancang sedemikian rupa sehingga dapat membuka pintu rumah tinggal dan dapat menguncinya secara otomatis. Penggunaan dari kartu bekas ini membuat kunci elektris mudah dibuat, perawatannya murah dan sangat praktis untuk digunakan. Selain itu, kunci elektris sebagai pengaman pintu rumah tinggal ini dilengkapi juga dengan display dan alarm. Display berfungsi untuk menampilkan aplikasi kata-kata sehingga apabila kartu yang dimasukkan adalah kartu yang tepat maka display akan menampilkan kata hello namun apabila kartu yang dimasukkan adalah bukan kartu yang tepat maka display akan menampilkan kata salah. Ketika kartu yang dimasukkan mengalami kesalahan selama tiga kali maka alarm akan berbunyi dan kartu tidak dapat diakses kembali sampai kartu reset dimasukkan. Hal inilah yang menyebabkan pengaman pintu rumah tinggal dengan menggunakan kunci elektris ini lebih aman dibandingkan dengan menggunakan kunci besi. Penggunaan mikrokontroller AT89S52 sebagai pengontrol keseluruhan dari system kerja alat ini, membuat rangkaian kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52 ini lebih sederhana dan fleksibel. Sederhana dalam arti, tidak membutuhkan banyak komponen dalam rangkaiannya. Fleksibel dalam arti, system kerja dari alat ini dapat dengan mudahnya dirubah hanya dengan merubah program sesuai dengan yang diinginkan. Harapan penulis membuat alat ini adalah dapat dibuatnya sebuah pengaman pintu rumah tinggal yang praktis akan tetapi keamanannya tetap terjaga. Sebagai pengaman pintu rumah tinggal biasanya hanya dipergunakan sebuah kunci besi. Hal ini sangat lazim dipergunakan oleh masyarakat sampai sekarang. Namun pengaman dengan kunci besi ini mempunyai beberapa kelemahan, salah satunya yaitu sangat mudah dirusak. Terkadang hanya dengan menggunakan sepotong kawat saja, pengaman pintu dengan kunci besi ini dapat dengan mudahnya dibuka.

description

HAKI dan Copyright ada pada : Endah Mulya Gustina RahmatJurusan Teknik Elektro, Fakultas Teknologi Industri, Universitas Gunadarma, Margonda Raya 100 Depok16424 telp (021) 78881112, 7863788

Transcript of KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Page 1: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

KUNCI ELEKTRIS SEBAGAI PENGAMAN PINTU RUMAH TINGGAL DENGAN MENGGUNAKAN MIKROKONTROLLER AT89S52

Endah Mulya Gustina Rahmat Jurusan Teknik Elektro, Fakultas Teknologi Industri, Universitas Gunadarma, Margonda Raya 100 Depok 16424 telp (021) 78881112, 7863788

Abstraksi : Selama ini yang biasa dipakai oleh masyarakat sebagai pengaman pintu rumah tinggal adalah sebuah kunci besi. Kunci besi ini memiliki berbagai kelemahan salah satunya yaitu mudah dirusak Oleh karena itulah penulis membuat sebuah kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52. Cara kerja dari alat ini adalah dengan memasukkan kartu yang telah didisain sedemikian rupa pada rangkaian pendeteksi data yang terdiri dari 8 buah optocoupler. Apabila kartu yang dimasukkan adalah kartu yang tepat, maka relay akan aktif dan display seven segment akan menampilkan kata hello . Namun apabila kartu yang dimasukkan bukan kartu yang tepat, maka display akan menampilkan kata salah . Sampai mengalami kesalahan sebanyak tiga kali maka alarm berbunyi dan alat tidak dapat mengakses kartu lagi. Pada kondisi ini, alat hanya akan dapat direset dengan kartu lain yang dipergunakan sebagai kartu reset. Bersamaan dengan diresetnya alat ini, display akan menampilkan kata reset .

Tanggal Pembuatan : 07 Maret 2005 1. PENDAHULUAN

Sebagai pengaman pintu rumah tinggal biasanya hanya dipergunakan sebuah kunci besi. Hal ini sangat lazim dipergunakan oleh masyarakat sampai sekarang. Namun pengaman dengan kunci besi ini mempunyai beberapa kelemahan, salah satunya yaitu sangat mudah dirusak. Terkadang hanya dengan menggunakan sepotong kawat saja, pengaman pintu dengan kunci besi ini dapat dengan mudahnya dibuka. Hal ini mengakibatkan pengaman pintu dengan menggunakan kunci besi ini kurang begitu aman.

Oleh karena kelemahan-kelemahan dari sebuah kunci besi dan kemajuan teknologi maka dibuat suatu kunci elektris sebagai pengaman pintu rumah tinggal dengan m,enggunakan mikrokontroller AT89S52. Kunci elektris ini dibuat dari sebuah kartu yang dirancang sedemikian rupa sehingga dapat membuka pintu rumah tinggal dan dapat menguncinya secara otomatis. Penggunaan dari kartu bekas ini membuat kunci elektris mudah dibuat, perawatannya murah dan sangat praktis untuk digunakan.

Selain itu, kunci elektris sebagai pengaman pintu rumah tinggal ini dilengkapi juga dengan display dan alarm. Display berfungsi untuk menampilkan aplikasi kata-kata sehingga apabila kartu yang dimasukkan adalah kartu yang tepat maka display akan menampilkan kata hello namun apabila kartu yang dimasukkan adalah bukan kartu yang tepat maka display akan menampilkan kata salah.

Ketika kartu yang dimasukkan mengalami kesalahan selama tiga kali maka alarm akan berbunyi dan kartu tidak dapat diakses kembali sampai kartu reset dimasukkan. Hal inilah yang menyebabkan pengaman pintu rumah tinggal dengan menggunakan kunci elektris ini lebih aman dibandingkan dengan menggunakan kunci besi.

Penggunaan mikrokontroller AT89S52 sebagai pengontrol keseluruhan dari system kerja alat ini, membuat rangkaian kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52 ini lebih sederhana dan fleksibel. Sederhana dalam arti, tidak membutuhkan banyak komponen dalam rangkaiannya. Fleksibel dalam arti, system kerja dari alat ini dapat dengan mudahnya dirubah hanya dengan merubah program sesuai dengan yang diinginkan.

Harapan penulis membuat alat ini adalah dapat dibuatnya sebuah pengaman pintu rumah tinggal yang praktis akan tetapi keamanannya tetap terjaga.

Sebagai pengaman pintu rumah tinggal biasanya hanya dipergunakan sebuah kunci besi. Hal ini sangat lazim dipergunakan oleh masyarakat sampai sekarang. Namun pengaman dengan kunci besi ini mempunyai beberapa kelemahan, salah satunya yaitu sangat mudah dirusak. Terkadang hanya dengan menggunakan sepotong kawat saja, pengaman pintu dengan kunci besi ini dapat dengan mudahnya dibuka.

Page 2: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Hal ini mengakibatkan pengaman pintu dengan menggunakan kunci besi ini kurang begitu aman.

Oleh karena kelemahan-kelemahan dari sebuah kunci besi dan kemajuan teknologi maka dibuat suatu kunci elektris sebagai pengaman pintu rumah tinggal dengan m,enggunakan mikrokontroller AT89S52. Kunci elektris ini dibuat dari sebuah kartu yang dirancang sedemikian rupa sehingga dapat membuka pintu rumah tinggal dan dapat menguncinya secara otomatis. Penggunaan dari kartu bekas ini membuat kunci elektris mudah dibuat, perawatannya murah dan sangat praktis untuk digunakan.

Selain itu, kunci elektris sebagai pengaman pintu rumah tinggal ini dilengkapi juga dengan display dan alarm. Display berfungsi untuk menampilkan aplikasi kata-kata sehingga apabila kartu yang dimasukkan adalah kartu yang tepat maka display akan menampilkan kata hello namun apabila kartu yang dimasukkan adalah bukan kartu yang tepat maka display akan menampilkan kata salah. Ketika kartu yang dimasukkan mengalami kesalahan selama tiga kali maka alarm akan berbunyi dan kartu tidak dapat diakses kembali sampai kartu reset dimasukkan. Hal inilah yang menyebabkan pengaman pintu rumah tinggal dengan menggunakan kunci elektris ini lebih aman dibandingkan dengan menggunakan kunci besi.

Penggunaan mikrokontroller AT89S52 sebagai pengontrol keseluruhan dari system kerja alat ini, membuat rangkaian kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52 ini lebih sederhana dan fleksibel. Sederhana dalam arti, tidak membutuhkan banyak komponen dalam rangkaiannya. Fleksibel dalam arti, system kerja dari alat ini dapat dengan mudahnya dirubah hanya dengan merubah program sesuai dengan yang diinginkan.

Harapan penulis membuat alat ini adalah dapat dibuatnya sebuah pengaman pintu rumah tinggal yang praktis akan tetapi keamanannya tetap terjaga.

2. LANDASAN TEORI 2.1. Mikrokontroler

komputer hadir dalam kehidupan manusia baru 50 tahun terakhir,namun efeknya sangat besar dalam kehidupan manusia, bahkan mselebihi penemuan manusia lainnya seperti radio, telepon. , automobil, dan televisi. Begitu banyak aplikasi memanfaatkan komputer, terutama dalam pemanfaatan kemampuan chip

mikroprosesor di dalamnya yang dapat melakukan komputasi sangat cepat, dapat bekerja sendiri dengan deprogram, dan dengan dilengkapi memori untuk menyimpan begitu banyak data.

Seiring dengan perkembangan zaman, semakin luaslah kebutuhan akan kemampuan seperti yang dimiliki oleh computer, sehingga menyebabkan munculnya terobosan-terobosan baru yang salah satunya adalah dibuatnya chip mikrokontroler. Mikrokontroler adalah single chip computer yang memiliki kemampuan untuk deprogram dan digunakan untuk tugas-tugas yang berorientasi control. Mikrokontroler datang dengan dua alasan utama, yang pertama adalah kebutuhan pasar (market need) dan yang kedua adalah perkembangan teknologi baru. Yang dimaksud dengan kebutuhan pasar adalah kebutuhan yang luas dari produk-produk elektronik akan perangkat pintar sebagai pengontrol dan pemproses data. Sedangkan yang dimaksud dengan perkembangan teknologi baru adalah perkembangan teknologi semikonduktor yang memungkinkan pembuatan chip dengan kemampuan komputasi yang sangat cepat, bentuk yang semakin mungil, dan harga yang semakin murah.

2.1.1. Perbedaan Mikrokontroler dengan Mikroprosesor

Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosesor. Perbedaan yang utama antara keduanya dapat dilihat dari dua factor utama yaitu arsitektur perangkat keras (hardware architecture) dan aplikasi masing-masing.

Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat device lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chip computer. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface dan parallel interface, timer, interrupt controller, converter analog ke digital, dan lainnya (tergantung feature yang melangkapi mikrokontroler tersebut).

Sedangkan dari segi aplikasinya, mikroprosesor hanya berfungsi sebagai Central Processing Unit yang menjadi otak computer, sedangkan mikrokontroler, dalam bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas-tugas yang

Page 3: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

berorientasi control pada rangkaian yang membutuhkan jumlah komponen minimum dan biaya rendah (low cost).

2.1.2. Aplikasi Mikrokontroler Karena kemampuannya yang tinggi,

bentuknya yang kecil, konsumsi dayanya yang rendah, dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia. Mikrokontroler digunakan mulai dari mainan anak-anak, perangkat elektronik rumah tangga, perangkat pendukung otomotif , peralatan industri, peralatan telekomunikasi, peralatan medis dan kedokteran, sampai dengan pengandali robot serta persenjataan militer.

Terdapat beberapa keunggulan yang diharapkan dari alat-alat yang berbasis mikrokontroler (microcontroller-based solutions) :

Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen lain (high degree of integration)

Ukuran yang semakin dapat diperkecil (reduced in size)

Penggunaan komponen dipersedikit (reduced component count) yang juga akan menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost)

Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat pula dijual ke pasar sesuai kebutuhan (shorter time to market)

Konsumsi daya yang rendah (lower power consumption)

2.1.3. Perkembangan Mikrokontroler Karena kebutuhan yang tinggi terhadap

chip-chip pintar dengan berbagai fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk mikrokontrolernya. Hal tersebut terjadi semenjak tahun 1970-an. Motorola mengeluarkan seri mikrokontroler 6800 yang terus dikembangkan hingga sekarang menjadi 68HC05, 68HC08, 68HC11, 68HC12, dan 68HC16. z Zilog juga mengeluarkan seri mikroprosesor seri Z80-nya yang terkenal dan terus dikembangkan hingga kinimenjadi Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan mikrokontrolenya yang popular di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051tersebut kemudian diadopsi oleh vendor lain seperti Philips, Siemens, Atmel, dan vendor-vendor lain dalam produk mikrokontroler mereka. Selain itu masih ada

mikrokontroler populer lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan masih banyak lagi.

Selain mikroprosesor dan mikrokontroler, sebenarnya telah bermunculan chip-chip pintar lain seperti DSP prosesor dan Aplication Spesific Integrated Circuit (ASIC). Di masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimumkan jumlah komponen-komponen konvensional.

2.1.4. Arsitektur 8051 Mikrokontroler dengan arsitektur 8051

merupakan salah satu jenis arsitektur mikrokontroler yang paling lama dan paling banyak digunakan di dunia. Arsitektur ini dikeluarkan pertama kali oleh Intel dan kemudian menjadi sangat popular. Berbagai seri mikrokontroler berarsitektur 8051 telah diproduksi oleh berbagai vendor dan digunakan di dunia sebagai mikrokontroler yang bersifat low cost dan high performance. Beberapa vendor yang terkenal antara lain Atmel, Philips, dan Siemens. Pada Intel, seri-seri mikrokontroler berarsitektur 8051, baik dari keluarga Intel MCS-51 maupun daari vendor-vendor lain, memiliki beragam tipe dan fasilitas, namun kesemuanya memiliki arsitektur yang sama, dan juga set intruksi yang relatif tidak berbeda.

Gambar 2.1. Diagram Blok MCS-51 (6)

Perbedaan antara seri yang satu dengan yang lain pada keluarga MCS-51 dapat dilihat pada tabel 2.1.

Page 4: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Tabel 2.1.Perbandingan antar-IC keluarga MCS-51

PART NUMBER

ON-CHIP CODE

MEMORY

ON-CHIP DATA

MEMORY

TIMERS

8051 4 KB ROM 128 bytes 2 8031 0 128 bytes 2 8751 4 KB

EPROM 128 bytes 2

8052 8 KB ROM 256 bytes 3 8032 0 256 bytes 3 8752 8 KB

EPROM 256 bytes 3

8951 4 KB EEPROM

128 bytes 2

Salah satu tipe mikrokontroler arsitektur 8051 yang banyak menjadi andalan saat ini adalah tipe 89S52. Tipe ini banyak digunakan karena memiliki fasilitas on chip flash memory. Berikut adalah feature-feature untuk mikrokontroler tipe 89S52 buatan Atmel.

8K bytes ROM

256x 8 bit internal RAM

4 buah 8-bit I/O (Input/Output) port

3 buah 16 bit timer

Interface komunikasi serial

64K pengalamatan code (program) memori

64K pengalamatan data memori

Prosesor Boolean (satu bit-satu bit)

210 lokasi bit-addressable

4 µs operasi pengalian/pembagian.

2.1.5. Penjelasan Fungsi Pin Mikrokontroller IC mikrokontroler dikemas (packaging)

dalam bentuk yang berbeda. Namun pada dasarnya fungsi kaki yang ada pada IC memiliki persamaan. Gambar salah satu bentuk IC seri mikrokontroler 8051 dapat dilihat pada gambar berikut.

Gambar 2.2. Konfigurasi kaki Mikrokontroller 89S52 PDIP 40 pin (6)

Berikut adalah penjelasan fungsi tiap kaki yang biasa ada pada seri mikrokontroler 8051.

a. Port 0 Merupakan dual purpose port (port yang memiliki dua kegunaan). Pada desain yang minimum (sederhana) digunakan sebagai port I/O (Input/Output). Pada desain lebih lanjut pada perancangan dengan memori eksternal digunakan sebagai data dan address yang di multiplek. Port 0 terdapat pada pin 32-39.

b. Port 1 Merupakan port yang hanya berfungsi sebagai port I/O, kecuali pada IC 8032/8052 yang menggunakan P1.0 dan P1.1 sebagai input eksternal untuk timer ketiga (T3). Port 1 terdapat pada pin 1-8.

c. Port 2 Merupakan dual purpose port. Pada desai minimum digunakan sebagai port I/O. pada desain yang lebih lanjut digunakan sebagai high byte dari address. Port 2 terdapat pada pin 21-28

Page 5: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

d. Port 3 Merupakan dual purpose port. Selain sebagai port I/O juga mempunyai fungsi khusus yang ditunjukkan pada tabel 2.2

e. PSEN (Program Store Enable) PSEN adalah control sinyal yang mengijinkan untuk mengakses program (kode) memori eksternal. Pin ini dihubungkan ke pin OE (put Enable) dari EPROM. Sinyal PSEN akan 0 pada tahap fetch (penjemputan) instruksi. PSEN akan selalu bernilai 0 pada pembacaan program memori internal. PSEN terdapat pada pin 29.

Tabel 2.2. Fungsi Khusus Port 3 PORT PIN ALTERNATE

FUNCTION P3.0 RXD (serial input port) P3.1 TXD (serial output port) P3.2 _INT0 (external interrupt

0) P3.3 _INT1 (external interrupt

1) P3.4 T0 (timer 0 external

input) P3.5 T1 (timer 1 external

input) P3.6 _WR (external data

memory write strobe) P3.7 _RD (external data

memory read strobe)

f. ALE (Address Latch Enable) ALE digunakan untuk men-demultiplex address dan data bus. Ketika menggunakan program memori eksternal port 0 akan berfungsi sebagai address dan data bus. Pada setengah paruh pertama memori cycle ALE akan bernilai 1 sehingga mengijinkan penulisan alamat pada register eksternal dan pada setengah paruh berikutnya akan bernilai satu sehingga port 0 dapat digunakan sebagai data bus. ALE terdapat pada pin 30.

g. EA (External Access) Jika EA diberi masukan 1 maka 8051/8052 menjalankan program memori internal saja. Jika EA diberi masukan 0 (ground) maka 8051/8052 hanya akan menjalankan program memori eksternal (PSEN akan bernilai 0). EA terdapat pada pin 31.

h. RST (Reset) RST pada pin 9 merupakan reset dari 8051. jika pada pin ini diberi masukan 1 selama minimal 2 machine cycle maka system akan di-reset dan register-register internal pada 8051 akan berisi nilai default tertentu. Nilai default setelah system reset tersebut dapat dilihat pada tabel 2.3.

Tabel 2.3. Nilai Register Setelah di Reset

REGISTER ISI Program counter 0000H

Accumulator 00H B register 00H

PSW 00H SP 07H

DPTR 0000H Port 0-3 FFH

IP (8031/8051) XXX00000B IP (8032/8052) XX000000B IE (8031/8051) 0XX00000B IE (8032/8052) 0X000000B Timer Register 00H

SCON 00H SBUF 00H

PCON (HMOS) 0XXXXXXXB PCON (CMOS) 0XXX0000B

i. On-Chip Oscillator 8051 telah memiliki On-Chip Oscillator yang dapat bekerja jika di drive menggunakan kristal. Tambahan kapasitor diperlukan untuk menstabilkan system. Nilai kristal yang biasa digunakan pada keluarga MCS-51 adalah 12 MHz walaupun pada jenis 80C31BH-1 dapat menggunakan kristal dengan frekuensi sampai 16 MHz. On-Chip Oscillator tidak hanya dapat di drive dengan menggunakan kristal, tapi juga dapat digunakan TTL oscillator.

Pembangkit clock internal menentukan rentetan kondisi-kondisi (state) yang membentuk sebuah siklus mesin mikrokontroller. Siklus mesintersebut diberi nomor S1 hingga S6, masing-masing kondisi panjangnya 2 (dua) periode osilator. Dengan demikian, satu siklus mesin paling lama dikerjakan dalam 12 periode osilator atau 1 µs, jika frekuensi kristalnya 12 MHz.

Page 6: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

j. Koneksi Power 8051 beroperasi pada tegangan 5 volt. Pin VCC terdapat pada pin 40 sedangkan VSS (ground) terdapat pada pin 20.

2.1.6.Organisasi Memori Program-program dan data-data pada

computer maupun mikrokontroller disimpan pada memori. Memori yang diakses oleh prosessor ini terdiri dari RAM dan ROM. Perbedaan antara RAM dan ROM ini adalah:

1. RAM bisa ditulis dan dibaca sedangkan ROM hanya bisa dibaca.

2. RAM bersifat volatile (isinya hilang jika power /sumber tegangan dihilangkan) sedangkan ROM bersifat non-volatile (isinya tidak hilang jika power /sumber tegangan dihilangkan). Biasanya mikrokontroler 8051

mengimplementasikan pembagian ruang memori untuk data dan program. ROM ini biasanya berisi code/program untuk mengontrol kerja dari mikrokontroler. Sedangkan RAM biasanya berisi data yang akan dieksekusi oleh mikrokontroler. Setiap mikrokontroler khususnya keluarga MCS-51 memiliki ROM dan RAM internal yang besarnya bervariasi.

Pada gambar 2.3 dapat dilihat gambaran secara lengkap dari on-chip data memori yang ada di mikrokontroler berarsitektur 8051. seperti yang ditunjukkan, ruang internal memori dibagi menjadi register banks (00H-1fH), bit addressable RAM (20H-2FH), general purpose RAM (30H-7FH) dan special function register (80H-FFH). Tiap tiap bagian ini akan dijelaskan di bawah ini.

a. General Purpose RAM General purpose RAM ini berfungsi sebagai tempat penyimpanan data yang akan dieksekusi maupun hasil eksekusi yang dapat diakses secara langsung melalui mode pengalamatan secara langsung maupun tidak langsung. General purpose RAM ini diakses secara byte per byte.

b. Bit Addressable Location Pada bit addressable RAM ini memiliki fungsi yang sama dengan general purpose RAM, tetapi memiliki keistimewaan untuk bisa diakses secara bit per bit.

Gambar 2.3. Organisasi Memori Mikrokontroller 8051 (6)

c. Register Banks Set intruksi dari 8051 mendukung 8 register, yaitu dari R0-R7, dan defaultnya (setelah system direset) menunjukkan bahwa register ini berada pada alamat 00H-07H. Pada 8051 ini terdapat 4 banks register yang terdiri dari Bank 0, Bank 1, Bank 2, dan Bank 3. Bank yang aktif dapat dipilih setelah kita mengubah select bit register banks pada program status word yang akan dibahas kemudian.

d. Special Function Register Pada special function register ini terdapat Accumulator dan B register. Selain itu terdapat bagian lainnya yang akan dibahas di bawah ini.

e. Program Status Word Pada program status word terdapat pada alamat D0H dan terdiri dari status bit seperti yang tercantum di bawah ini.

Page 7: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Tabel 2.4. Program Status Word BIT SYMBOL ADDRESS BIT

DESCRIPTION PSW.7 CY D7H Carry Flag PSW.6 AC D6H Auxiliary Carry

Flag PSW.5 F0 D5H Flag 0 PSW.4 RS1 D4H Register Bank

Select 0 PSW.3 RS2 D3H Register Bank

Select 1

-00 = bank 0; alamatnya pada

00H-07H

-01 = bank 1; alamatnya pada

08H-0FH

-02 = bank 2; alamatnya pada

10H-17H

-03 = bank 3; alamatnya pada

18H-1FH PSW.2 0V D2H Overflow Flag PSW.1 - D1H Reserved PSW.0 P D0H Even Parity Flag

f. Stack Pointer Stack pointer ini adalah 8 bit register yang berada pada alamat 81H. stack ini berisi alamat dari data yang berada paling awal yang masuk ke dalam stack . operasi stack terdiri dari memasukkan data (push) pada stack dan mengeluarkan data (pop) dari stack. Memasukkan data ke stack ini akan mengakibatkan nilai dari SP sebelum menulis data, dan mengeluarkan data akan mengakibatkan penurunan nilai dari SP.

g. Data Pointer Data pointer digunakan untuk mengakses program dan data eksternal merupakan 16 bit register yang terletak pada alamat 82H (DPL, low byte) dan 83H (DPH, high byte).

h. Port Register Pada 8051 I/O port terdiri dari port 0 pada alamat 80H, port 1 pada alamat 90H, port 2 pada alamat A0H, dan port 3 pada alamat B0H. port 0, 2,dan 3 mungkin tidak cocok untuk I/O jika digunakan eksternal memori atau special feature lainnya digunakan (interrupt, serial port, dll). Seluruh port adalah bit addressable.

i. Timer Port Register Pada 8051 terdiri dari 2 buah 16 bit timer/counter untuk interval waktu atau

menghitung kejadian. Timer 0 berada pada alamat 8AH (TL0, low byte) dan 8DH (TH1, high byte). Operasi timer diset oleh Timer Mode Register (TMOD) pada alamat 89H dan Timer Control Register (TCON) pada alamat 88H. Hanya TCON yang bit-addressable.

j. Serial Port Register 8051 berisi serial port on-chip untuk komunikasi dengan peralatan serial seperti terminal atau modem, atau untuk interface (antar muka) dengan IC lainnya dengan serial interface seperti A/D converter. Satu register, Serial Data Buffer (SBUF) pada alamat 99H menangani antara menerima data dan mengirimkan data. Menulis ke SBUF mengambil data untuk dikirimkan; membaca SBUF mengakses data yang diterima.

k. Interrupt Register 8051 mempunyai 5 sumber, struktur 2 tingkat prioritas interrupt. Interrupt akan didisable setelah system direset dan akan dienable dengan menulis pada interrupt enable register (IE) pada alamat A8H. Level/tingkat prioritas ini diset melalui Interrupt Priority Register (IP) pada alamat B8H.

2.1.7. Bahasa Assembly Dalam pemrograman computer dikenal

dua jenis tingkatan bahasa, jenis yang pertama adalah bahasa pemrograman tingkat tinggi (high level language ) dan yang kedua adalah bahasa pemprograman tingkat rendah (low level language). Bahasa pemprograman tingkat tinggi lebih berorientasi kepada manusia yaitu bagaimana agar pernyataan-pernyataan yang ada dalam program mudah dimengerti oleh manusia. Sedangkan bahasa tingkat rendah lebih berorientasi ke mesin, yaitu bagaiman agar komputer dapat langsung menginterpretasikan pernyataan-pernyataan program. Untuk mengerjakan suatu tugas tertentu, program yang ditulis dalam bahasa tingkat rendah relatif lebih panjang dan lebih sulit untuk dipahami, namun kelebihannya adalah lebih efisien dan lebih lebih cepat untuk dieksekusi oleh mesin.

Bahasa assembly memerlukan program assembler untuk mengkonversi instruksi-instruksi ke dalam bahasa mesin. Format penulisan program dalam bahasa assembly adalah sebagai berikut,

Page 8: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Label: mnemonic operand1[,operand2] ; komentar Contoh penulisan program adalah sebagai berikut, Mulai: mov a,r1 ;kopi isi r1 ke a

mov r1,r2 ; kopi isi r2 ke r1

2.1.8. Basis Bilangan Penulisan angka, baik sebagai alamat

maupun data dalam pemprograman bahasa assembly, dapat ditulis dalam basis decimal, biner, ataupun heksadesimal. Pada penulisan program, angka decimal ditulis seperti biasa. Sedangkan angka biner diakhiri huruf b, dan angkja heksadesimal diakhiri huruf h. sebagai contoh, ketiga instruksi berikut melakukan operasi yang sama namun dengan penulisan bilangan pada basis yang berbeda. Mov a, #25 ; isi akumulator dengan angka 25 Mov a,#00011001b ; isi akumulator dengan

Angka 25 Mov a,#19h ; isi akumulator dengan angka 25

Pada penulisan angka heksadesimal, apabila angka depan merupakan angka huruf heksadesimal (A, B, C, D atau F) maka dahului dulu dengan menuliskan angka 0. Contoh : mov a, 0f1h Untuk menuliskan suatu data karakter ASCII, berikan apostrof di awal dan akhir data ASCII tersebut. Contoh : mov a, e

2.1.9. Mode Pengalamatan Yang dimaksud mode pengalamatan

adalah bagaimana penulisan operand dari suatu instrukei, untuk mengalamatkan suatu data yang diinginkan, baik asalnya dan juga tujuannya.

Bahasa pemprograman assembly untuk mikrokontroller berarsitektur 8051 memiliki 8 jenis mode pengalamatan

a. Register addressing Adalah pengalamatan yang melibatkan

register. Contoh : mov a,r1 ; isi register r1 dikopi

Ke akumulator b. Direct addressing

Adalah pengalamatan dengan menuliskan langsung nomor alamat memori (biasanya dalam dalam format heksadesimal). Contoh: mov a,90h ; isi alamat 90h

Dikopi ke akumlator c. Indirect addressing

Adalah pengalamatan dengan cara menaruh alamat yang dimaksud ke

suatu register dalam hal ini khususnya register R0 dan R1. Contoh ; mov a,@R1 ; isi memori yang alamatnya ditunjukkan oleh

; isi register R1 dikopi ke akumulator

d. Immediate addressing Adalah pengalamatan dengan cara langsung menuliskan data yang diinginkan. Contoh : mov a,#12 ; data angka 12 dimasukkan ke akumulator

e. Relative addressing Adalah pengalamatan secara relatif terhadap alamat yang ada di program counter. Dalam prakteknya, implementasi dari relatif addressing sangatmudah karena tinggal memakai kabel, sedangkan yang menghitung offset relatifnya terhadap program counter adalah assembler. Contoh : sjmp dekat

f. Absolute addressing Adalah pengalamatan dengan menggunakan 11 bit alamat pasti dari tujuan, sehingga dapat menjangkau sampai 2 Kbytes memori program. Dalam prakteknya, implementasi dari absolute addressing ini juga sangat mudah karena tinggal memakai label, sedangkan yang menghitung alamat absolutenya adalah assembler. Contoh : ajmp sedang

g. Long addressing Adalah pengalamatan dengan menggunakan 16 bit alamat pasti tujuan, sehingga dapat menjangkau sampai 64 K bytes memori program. Dalam prakteknya, implementasi dari long addressing ini juga sangat mudah karena tinggal memakai label, sedangkan yang menghitung alamatnya adalah assembler. Contoh : ljmp jauh

h. Indexed addressing Adalah pengalamatan dengan menggunakan offset dan base register tertentu. Pengalamatan ni digunakan untuk look up tables dan jump tables. Contoh : movc a,@a+r1

2.1.10. Set Intruksi Semua anggota mikrokontroller 8051

mengeksekusi set intruksi yang sama. Set intruksi ini mengoptimasi untukaplikasi control 8 bit serta menyediakan berbagai macam mode

Page 9: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

pengalamatan yang cepat untuk akses RAM internalguna memfasilitasi operasi byte pada struktur data yang kecil. Set intruksi juga menyediakan dukungan penuh untuk variable-variabel 1 bit sebagai tipe data yang terpisah, yang membolehkan melakukan manipulasi bit secara langsung dalam system-sistem control dan logic yang memerlukan pemrosesan Boolean. Berikut ini akan dijeaskan secara singkat bagaimana suatu intruksi digunakan.

Instruksi-instruksi bahasa assembly 8051 dapat dibgi menurut fungsinya menjadi lima kelompok,yaitu :

1. Instruksi transfer data 2. instruksi aritmatika 3. instruksi logika 4. instruksi Boolean 5. instruksi percabangan

masing-masing kelompok akan dijelaskan sebagai berikut.

2.1.10.1. Instruksi Transfer Data a. RAM Internal

Perintah perpindahan data (mov, xcd, pop, push) pada RAM internal membutuhkan 1 sampai 2 cycle. Format instruksi : Mov (tujuan), (asal) Memungkinkan data untuk berpindah diantara 2 lokasi RAM internal atau SFR tanpa harus melalui akumulator terlebih dahulu. Kelebihan dari MCS 51 adalah memori stacknya ada di RAM internal dan bertambah ke atas pada memori. Perintah push dan pop menggunakan direct addressing untuk mengenali byte yang disimpan atau diambil, namun memori stack diakses dengan indirect addressing menggunakan register SP. b. RAM External

Perintah mov 16 bit digunakan untuk inisialisasi DPTR atau untuk akses data 16 bit pada memori eksternal. Perpindahan data antara memori internal dan eksternal menggunakan indirect addressing dengan menggunakan alamat 1 byte(@R1) atau 2 byte(@DPTR). Seluruh perintah perpndahan data untuk memori eksternal menggunakan akumulator sebagai asal dan tujuannya, dan beroperasi selama 2 cycle. c. Tabel Tengok (Look Up Tables)

Ada dua perintah untuk membaca look up table pada ROM. MOVC (mov constant) menggunakan program counter sebagai base register dan akumulator sebagai offsetnya. Movc, @a+DPTR Perintah tersebut dapat mengakses 256 entri. Nomor entri dimasukkan ke akumulator dan awal tabelnya pada DPTR.

Movc, @a+PC Perintah tersebut serupa, hanya saja PC digunakan sebagai base adressnya.

2.1.10.2. Instruksi Aritmatika Instruksi aritmatik merupakan instruksi

dasar dalam setiap computer, dimana terdiri dari operasi dasar matematis seperti penjumlahan (ADD), pengurangan (SUB), perkalian (MUL), dan pembagian (DIV). Operasi lainnya adalah menambah 1 isi register (INC) dan pengurangan 1 dari isi register (DEC).

Dengan beberapa macam tipe addressing maka instruksi aritmatik dapat dituliskan dengan setiap macam addressing seperti : ADD a, 7fh (direct addressing) ADD a, @R0 (indirect addressing) ADD a, R7 (register addressing) ADD a, #35h (immediate addressing)

Semua instruksi aritmatik mempunyai waktu eksekusi 1 cycle kecuali INC DPTR (2 cycle ), MUL AB dan DIV AB (4 cycle). Karena kemampuan addressing dari 8051 pada memorinya, setiap lokasi dapat ditambah atau dikurangi tanpa melalui akumulator. Jika lokasi RAM 7FH bernilai 40H, maka perintah INC 7FH menaikkan nilai menjadi 41H pada lokasi 7FH.

Perintah INC dapat beroperasi pada data pointer 16 bit, yang biasanya digunakan untuk alamat 16 bit pada memori external. Karena perintah DEC untuk data pointer tidak ada, maka diperlukan serangkaian perintah sebagai berikut.

2.1.10.3. Instruksi Logika Perintah logika pada 8051 melakukan operasi Boolean eperti AND, OR, Exclusive OR, dan NOT pada data sepanjang byte atau bit. Jika akumulator berisi 00110101b, maka perintah AND A, #01010011b menghasilkan nilai 00010001b.

Karena ada beberapa macam addressing maka perintah logika dapat juga berbentuk: DEC DPL ; pengurangan low byte dari DPTR MOV R7, DPL ; disalin ke R7 CJNE R7, #0FFH,SKIP ; pindah jika R7 dibawah 0FFH DEC DPH ; mengurangi high byte SKIP : . . . ; melanjutkan program

Perintah MUL AB mengalikan akumulator dan register B, lalu meletakkan hasilnya (16 bit) pada register B (high byte) dan akumulator (low byte). Hal yang sama juga berlaku pada perintah DIV AB, dimana hasil 8

Page 10: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

bit pada akumulator dan sisa 8 bit pada register B.

Untuk aritmatik BCD diperlukan perintah DA (decimal adjust) psada perintah dan ADDC agar hasilnya tetap dalam bentuk BCD.

2.1.10.4. Instruksi Boolean Prosesor 8051 mempunyai Boolean

prosesor untuk operasi bit tunggal. RAM internal mempunyai 128 bit addressable, dan SFR mempunyai 128 addressable bit lainnya. Semua port adalah bit addressable dan dapat dianggap sebagai port bit tunggal yang terpisah. Instruksi per bit tidak hanya untuk percabangan bersyarat, tapi juga perintah MOV(move), SET, CLR, (clear), CPL (complement), OR dan AND. Operasi bit semacam ini adalah salah satu keunggulan MCS-51 yang tidak mudah didapatkan denganoperasi byte.

Bit dapat dengan mudah di set atau di clear dengan perintah tunggal. Hal ini umum terdapat untuk alat I/O, output ke relay, motor, solenoid, LED, buzzer, alarm, speaker, atau input dari berbagai switch atau indikator.

Karena bit-bit flag pada PSW adalah bit addressable, maka keadaan flag dapat dengan mudah dimanipulasi atau digunakan pada operasi dengan alat I/O.

Perintah ANL (logika AND) dan ORL (logika OR) terdapat pada instruksi Boolean, namun tidak dengan XRL (logika exclusive OR). Perintah untuk XOR dua bit yaitu BIT1 dan BIT2, dapat dilakukan dengan beberapa perintah sebagai berikut :

MOV C, BIT1 ; BIT1 dikopi ke flag carry JNB BIT2, SKIP ; jika C benar maka pindah ke

SKIP CPL C ; C salah, dikomplemenkan agar benar SKIP : . . .

2.1.10.5. Instruksi Percabangan Percabangan program digunakan untuk

mengontrol jalannya program, termasuk pemanggilan dan kembali dari subrutin atau percabangan.

a. Unconditional Jump Ada tiga variasi perintah jump yang tidak bersyarat yaitu SJMP, LJMP, dan AJMP (relative, long dan absolute addressing). Assembler (ASM51) secara otomatis akan menggolongkan perintah JMp ysng ditulis sesuai dengan kondisi perintahnya. Bila tidak ada referensi pada jarak 2K maka dianggap

sebagai AJMP, jika tidak maka dianggap sebagai LJMP. SJMP akan mengambil alamat tujuan sebagai offset dengan batas -128 hinggga +127 byte relatif dari alamat setelah perintah SJMP. LJMP menggunakan alamat 16 bit, dimana tujuannya dapat berada di mana saja pada ROM 64K. AJMP menggunakan alamat 11 bit, dengan tujuan yang berada pada blok 2K yang sama. Pada ROM 64K berarti akan ada 32 blok.

b. Conditional Jump Perintah jump bersyarat mempunyai kesamaan dalam jangkauan alamat seperti pada perintah jump tak bersyarat. Biasanya perintah ini menggunakan alamat relatif dengan batas -128 dan +127 byte. Perintah JZ dan JNZ mengetes akumulator untuk nilai 0 karena PSW tidak memiliki flag zero. Sedangkan perintah DJNZ (Decrement and Jump if Not Zero) adalah perintah yang sering digunakan untuk control loop. Perintah berikut melakukan loop sebanyak 10 kali:

MOV R7,#10 LOOP : . . . ; mulai loop

. . . . . .

; akhir loop DJNZ R7 , LOOP

(melanjutkan program) Perintah CJNE (Compare and Jump if Not Equal) digunakan untuk perbandingan dua buah nilai byte, dan program akan jump jika nilai keduanya tidak sama. Jika sebuah karakter dibaca oleh akumulator dari serial port, dan diharapkan akan pindah ke label HABIS bila karakter yang masuk adalah Ctrl-C (03H), maka perintahnya adalah : CJNE A, #03H, SKIP SJMP HABIS SKIP : (melanjutkan program) Aplikasi CJNE lainnya adalah perbandingan nilai lebih besar atau kecil. Jika akumulator lebih besar dari 20H maka pindah ke BIG, perintahnya adalah : CJNE A, #20H, $+3 JNC BIG Simbol $ adalah symbol untuk alamat perintah yang sekarang, dan perintah CJNE panjangnya 3 byte jadi perintah

Page 11: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

berikutnya tetap JNC apapun hasil CJNE. Perintah CJNE digunakan hanya untuk menset atau clear flag carry. Perintah JNC akan menentukan ada tidaknya jump ke BIG.

c. Jump Table Perintah JMP @A+DPTR digunakan untuk perpindahan yang bersyarat ganda. Alamat tujuan dihituna sebagai jumlah dari DPTR 16 bit sebagai jump table dan akumulator sebagai indeksnya. Jika ada 5 syarat yang diinginkan, nilai 0 sampai 4 dimasukkan ke akumulator dan proses jump dilakukan sebagai berikut:

MOV DPTR, #JUMP_TABLE MOV A, INDEX_NUMBER RL A JMP @A+DPTR

JUMP_TABLE : AJMP CASE0 AJMP CASE1 AJMP CASE2 AJMP CASE3

d. Subrutin dan Interupsi Yang termasuk kelompok ini adalah instruksi CALL, RET, dan RETI. Perintah CALL untuk pemanggilan sebuah subrutin terdiri dari ACALL dengan absolut addressing dan LCALL long addressing. Penafsiran dari assembler terhadap perintah CALL sama halnya seperti pada perintah JMP. Perintah CALL akan menyimpan nilai PC ke stack (push PC ke stack) dan mengambilnya ketika subrutin selesai atau RETY (pop PC dari stack). Jika subrutin tidak diawali dengan CALL digunakan untuk kembali dari interrupt service routine (ISR). Jika tidak ada interupsi lain yang menunggu, maka RETI sama seperti RET fungsinya.

2.1.11. Assembler Directive Assembler directive adalah instruksi-

instruksi yang ditujukan kepada program assembler sebagai suatu arahan dalam mengubah program yang ditulis dalam bahasa assembly ke bahasa mesin. Assembler directive yang akan dijelaskan di modul ini adalah assembler directives yang berlaku di program assembler ASM51 buatan Intel. Assembler directives tersebut dibagi menjadi lima jenis yaitu :

1. Directive untuk control kondisi assembler

2. Directive untuk pemilihan segment

3. Directive untuk pendefinisian symbol 4. Directive untuk reservasi memori

penyimpanan 5. Directive untuk penggabungan program

Penjelasan dari masing-masing directive tersebut adalah sebagai berikut.

2.1.11.1. Directive untuk Kontrol Kondisi Assembler

Terdiri dari :

ORG (Set Origin), yaitu mengeset awal dari suatu program. Contoh penulisan : ORG 100H ; set awal lokasi program ke alamat 100H . . . ; mulai baris program di alamat 100H

END, yaitu akhir dari seluruh program, tidak ada baris program lagi yang akan dieksekusi setelah directive ini. Contoh penulisan : . . . ; baris instruksi terakhir END ; akhir program

Using, yaitu memberitahukan assembler ASM51 tentang register bank yang sedang aktif. Contoh penulisan : MOV PSW, #00011000B ;pilih register bank 3 Using 3 ; beritahu assembler bahwa yang aktif

; adalah register bank 3

2.1.11.2. Directive untuk Pendefinisian Simbol Terdiri dari :

SEGMENT, digunakan untuk mendefinisikan salah satu dari segment memori, yaitu CODE (code segment),XDATA (data external), DATA (data internal diman bias diakses dengan direct addressing), IDATA (data internal dimana bias diajses dengan indirect addressing), dan BIT (data bit). Contoh : EPROM SEGMENT CODE ;mendefinisikan symbol EPROM ; sebagai suatu segment bertipe code ; segment

EQU (Equate), digunakan untuk mendefinisikan suatu nilai numeric yang tetap.

Page 12: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Contoh : DATA1 EQU 12 ;mendefinisikan symbol DATA1 sebagai

; suatu nilai yaitu 12 MESSAGE EQU Hallo

;

mendefinisikan symbol MESSAGE sebagai

; suatu data ASCII Hallo

2.1.11.3. Directive untuk Pemilihan Segment Terdiri dari :

CSEG (Code Segment), yaitu memilih suatu segment absolute baru pada code segment . Contoh : CSEG AT 30H ; pilih code segment di alamat 30H

DSEG (Data Segment), yaitu memilih suatu segment absolute baru pada data segment. Contoh : DSEG AT 40H ; pilih data segment di alamat 40H

ISEG (Internal Data Segment), yaitu memilih suatu absolute segment baru pada internal data segment. Contoh: ISEG AT 50H ; pilih internal data segment di alamat 50H

BSEG (Bit Data Segment), yaitu memilih suatu absolute segment baru pada bit data segment. Contoh : BSEG AT 60H ; pilih bit data segment di alamat 60H

XSEG (External Data segment), yaitu memilih suatu absolute segment baru pada external data segment. Contoh : XSEG AT 70H ; pilih external

data segment di alamat 70H

2.1.11.4. Directive untuk Reservasi Memori Penyimpanan

Terdiri dari :

DS (Define Storage), yaitu reservasi memori penyimpanan dalam satuan byte. Contoh : DSEG AT 30H ; pilih data

segment di alamat 30H BUFFER DBIT 1

; pesan 1 bit memori berlabel FLAG1

; awalnya adalah alamat label BUFER

DBIT (Define Bit), yaitu reservasi memori penyimpanan dalam satuan bit.Contoh :

BSEG AT 70H ; pilih bit segment di alamat 70H

FLAG1: DBIT 1 ; pesan 1 bit memori berlabel FLAG1

FLAG2 : DBIT 1 ; pesan 1 bit memori berlabel FLAG2

DB (Define Byte), yaitu reservasi memori penyimpanan di code segment dalam satuan byte. Contoh : CSEG AT 10H ; pilih code

segment di alamat 10H GANJIL : DB 1, 3, 5 ;pesan byte memori yang isinya ; angka 1, 3, dan 5 yang alamat ; awalnya adalah alamat label GANJIL

DW (Define Word), yaitu reservasi memori penyimpanan di code segment dalam satuan 2 byte. Contoh : CSEG AT 10H ; pilih code

segment di alamat 30H PASSWORD: DW OKE

; pesan masing-masing 2 byte memori yang

; isinya karakter ASCII OKE dimana ; alamat awalnya adalah alamat label ; PASSWORD

2.1.11.5. Directive Untuk Penggabungan Program

Terdiri dari :

PUBLIC,yaitu membuat agar suatu symbol/label juga berlaku di luar modul/bagian program yang memuatnya (membuat menjadi bersifat global). Contoh : PUBLIC INPUT,OUTPUT ; deklarasi secara global symbol

; INPUT dan OUTPUT INPUT : . . .

. . . RET

OUTPUT : . . . . . . RET

EXTRN,yaitu mereferensikan suatu symbol yang telah dideklarasikan secara global di modul/bagian program lain. Directive ini bekerjasama dengan directive PUBLIC. Contoh : EXTRN CODE(INPUT,OUTPUT) ; ambil symbol dari code

; segment modul lain CALL INPUT CALL OUTPUT . . .

Page 13: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

2.2. Operasi Timer AT89S52 mempunyai tiga buah timer,

yaitu timer 0, 1, dan 2 yang dapat berfungsi sebagai counter ataupun sebagai timer. Namun pada alat ini penulis hanya menggunakan timer 0 dan timer 1 oleh karena itu pada bab ini hanya akan dibahas mengenai timer 0 dan timer 1. Secara fisik sebetulnya timer juga merupakan rangkaian T flip-flop yang dapat diaktifkan dan dinonaktifkan setiap saat. Perbedaan terletak pada sumber clock dan aplikasinya. Jika timer mempunyai sumber clock dengan frekensi tertentu yang sudah pasti sedangkan counter mendapat sumber clock dari pulsa yang hendak dihitung jumlahnya. Aplikasi dari counter atau penghitung biasa digunakan untuk aplikasi menghitung jumlah kejadian yang terjadi dalam periode tertentu sedangkan timer atau pewaktu biasa digunakan untuk aplikasi menghitung lamanya suatu kejadian yang terjadi.

Ketiga timer pada AT89S52 masing-masing mempunyai 16-bit counter yang mampu diatur keaktifan maupun mode operasinya, direset dan diset dengan harga tertentu. Untuk mengatur timer ini AT89S52 mempunyai enam buah Special Function Register yang akan dijelaskan di bawah ini.

2.2.1. Timer Mode Register (TMOD)

Gambar 2.4. Register TMOD (1)

Register TMOD berupa 8 bit register yang terletak pada alamat 89H denga fungsi setiap bitnya adalah sebagai berikut : Gate: timer akan berjalan jika bit ini diset dan

INT0 (untuk timer 0) atau INT1 (untuk timer 1) berkondisi high.

C/T: 1 = Counter 0 = Timer

M1 & M0: untuk memilih mode timer

2.2.2. THx dan TLx Timer 0 dan timer 1 terdiri dari 16 bit

timer yang masing-masing tersimpan dalam dua buah register yaitu THx untuk Timer High Byte dan TLx untuk timer Low Byte.

TH0 : Timer 0 High Byte terletak pada alamat 8AH

TL0 : Timer 0 Low Byte terletak pada alamat 8BH

TH1 : Timer 1 High Byte terletak pada alamat 8CH

TL1 : Timer 1 Low Byte terletak pada alamat 8DH

2.2.3. Timer Control Register (TCON)

Gambar 2.5. Register TCON (1)

Register ini hanya mempunyai 4 bit saja, yaitu TCON.4, TCON.5, TCON.6, TCON.7 saja yang mempunyai fungsi berhubungan dengan timer. Register ini bersifat bit addressable sehingga bit TF1 dapat disebut TCON.7, TR1 sebagai TCON.6 dan seterusnya hingga bit IT0 sebagai TCON.0. TCON.7 atau TF1: Timer 1 overflow flag

yang akan diset jika timer overflow. Bit ini dapat di clear oleh software atau hardware pada saat program menuju ke alamat yang ditunjuk oleh interrupt vector.

TCON.6 atau TR1: 1 = Timer 1 aktif 0 = Timer 1 nonaktif

TCON.5 atau TF0: Sama dengan TF1 TCON.4 atau TR0: Sama dengan TR1 TCON.3 hingga TCON.0 adalah bagian dari

interrupt.

2.2.4. Mode Timer Timer 0 dan timer 1 mempunyai empat

buah mode kerja timer dimana setiap mode mempunyai masing-masing fungsi. Penentuan mode kerja dari timer dilakukan dengan melakukan inisialisasi pada register TMODseperti dijelaskan pada bagian berikut.

Mode 0 Pada mode ini, timer bekerja dengan

mode 13 bit timer ketika overflow terjadi saat saat terjadi perubahan kondisi dari ketiga belas bit yang tersimpan di register TLx dan THx (x = 0 untuk timer 0 dan x = 1 untuk timer 1) menjadi

Page 14: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

logika 0 setelah sebelumnya mencapai logika 1. pada aplikasi sebagai counter hal ini terjadi saat counter kembali menghitung dari awal. Bit TFx akan berlogika 1 pada saat kondisi overflow terjadi.

Gambar 2.6. Timer Mode 0 (7)

Mode 1 Pada mode 1, timer berfungsi sebagai

16 bit timer yang akan menghitung naik mulai dari 0000H hingga FFFFH. Hasil dari perhitungan tersimpan pada Register TLx untuk Low Byte dan THx untuk High Byte.

Jika perhitungan sudah mencapai FFFFH, timer akan kembali menghitung mulai dari 0, pada saat ini timer Flag (TFx) akan set.

Gambar 2.7. Timer Mode 1 (7)

Mode 2 Pada mode ini, timer bekerja dalam

mode 8 bit dimana nilai timer tersimpan pada TLx. Register THx berisi nilai isi ulang (Reload Value) yang akan dikirim ke Register TLx setiap kali terjadi overflow. Misalkan, nilai THx diisi dengan 20H, saat timer diaktifkan nilai TLx akan menghitung naik hingga pada saat nilai TLx hendak berubah dari FFH menjadi 00. Dengan demikian, bit TFx akan set dan nilai THx, 20H akan kembali dikirim ke Register TLx. Selama timer aktif nilai THx akan tetap 20H.

Gambar 2.8. Timer Mode 2 (7)

Mode 3 Pada mode ini, timer 0 terpisah menjadi

dua buah 8 bit timer yaitu TL0 dengan TF0 sebagai overflow flag dan TH0 dengan TF1 sebagai overflow flag. Sedangkan timer 1 berfungsi sebagai 16 bit timer.

Pada saat timer1 berada pada mode 3, timer ini akan berhenti hingga mode kerja timer 1 diubah menjadi mode lain. Oleh karena bit TF1 digunakan oleh TH0 sebagai overflow flag, maka bit ini tidak dapat digunakan selama timer 0 masih berada pada mode 3.

Gambar 2.9. Timer Mode 3 (7)

2.2.5. Cara Kerja Timer

Gambar 2.10. Operasi Timer (7)

Operasi dari timer memerlukan sumber clock yang didapat dari eksternal maupun internal. Jika timer menggunakan sumber clock dari eksternal, pin T0 (P3.4) berfungsi sebagai input clock.

Page 15: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Untuk menjadikan sumber clock eksternal sebagai sumber clock timer maka bit C/T dari register TMOD harus diset atau berkondisi high. Jika bit C/T berkondisi high, saklar akan menghubungkan sumber clock timer ke pin Tx (T0 untuk timer 0 dan T1 untuk Timer 1).

Jika digunakan sumber clock internal, input clock tersebut berasal dari osilator yang telah dibagi 12. Untuk ini bit C/T dari Register TMOD harus diclear atau berkondisi low sehingga saklar akan menghubungkan sumber clock timer ke osilator yang telah dibagi 12.

Untuk mengaktifkan timer dapat dilakukan melalui hardware ataupun software. Seperti yang terlihat pada gambar , timer baru akan aktif setelah mendapat sumber clock dan saklar SPST yang terletak antara saklar yang dikontrol oleh C/T dan timer terhubung sehingga sinyal clock dari sumber clock akan mengalir masuk sedangkan saklar tersebut akan terhubung jika mendapat logika high dari output gerbang AND.

Sesuai dengan table kebenaran dari gerbang AND, output dari gerbang AND hanya akan berlogika high jika kedua inputnya berlogika high pula. Jika ada salah satu dari inputnya yang berlogika low, output akan berlogika low pula. Untuk pengaturan timer melalui software, keaktifan timer hanya akan ditentukan oleh kondisi bit TR0 saja. Oleh karena ituoutput dari gerbang OR yang terhubung dari input yang lain dari gerbang AND harus berlogka high. Dengan demikian, jika TR0 berlogika high, output dari gerbang AND akan berlogika high dan timer akan aktif dan sebaliknya jika TR0 berlogika low, output dari gerbang, output gerbang AND akan berlogika low dan timer akan berhenti.

Agar output dari gerbang OR berlogika high, sesuai dengan table kebenaran OR, cukup salah satu dari inputnya saja berlogika high. Dengan demikian, output akan berlogika high pula. Untuk pengaturan timer melalui software, bit gate harus berkondisi low sehingga hasil inversnya yang merupakan salah satu input dari gerbang OR berlogika high. Hal ini membuat output gerbang OR selalu berlogika high walau apapun yang terjadi pada pin INTx (INT0 untuk Timer 0 dan INT1 untuk Timer 1) seperti yang tampak pada gambar 2.11.

Gambar 2.11. Pengaturan Timer Dengan Software (7)

Untuk pengaturan Timer dengan hardware, pin INTx berfungsi sebagai penentu. Oleh karena itu, bit TRx harus berlogika high, agar pengaturan timer ditentukan oleh output dari gerbang OR ditentukan oleh pin INTx maka bit gate harus berkondisi high.

Gambar 2.12. Pengaturan Timer Dengan Hardware (7)

Jadi kesimpulannya untuk pengaturan timer dengan software maka bit penentu keaktifan adalah TRx sedangkan kondisi dari bit gate harus berlogika 0. untuk pengaturan Timer dengan Hardware maka penentu keaktifan adalah INTx sedangkan kondisi Bit gate dan TRx harus berlogika 1.

2.3. Karakteristik Phototransistor dan Led IR

Phototransistor adalah sebuah komponen dioda semikonduktor yang mengalirkan arus listrik sesuai dengan jumlah proporsional dari cahaya yang mengenai pn junctionnya. Semakin kuat intensitas cahaya yang mengenai pn junction maka semakin besar arus yang dapat mengalir, demikian pula sebaliknya.

Page 16: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Gambar 2.13. Phototransistor (2)

Pada saat kondisi tidak memperoleh cahaya langsung hanya arus bocor saja yang mengalir pada kaki emitor, yaitu kira-kira sebesar 10 nA. Sedangkan pada kondisi memperoleh cahaya langsung menyebabkan terciptanya tegangan sepanjang junction, hingga arus dapat mengalir pada arah maju yang bernilai kira-kira sebesar 10 mA. Adapun besarnya nilai maksimum dan minimum arus bocor dan arus maju dari phototransistor tergantung dari jenis atau tipe phototransistor yang digunakan.

Led infra merah adalah sebuah komponen semikonduktor yang memancarkan sinar infra merah dengan panjang gelombang 830nm, saat arus listrik mengalir melaluinya dengan bias maju.

Gambar 2.14. Led Infra Merah (2)

Gambar 2.15. Respons Phototransistor silikon Terhadap Led Infra Merah (2)

Sebuah LED (Light Emitting Diode) memiliki tegangan jatuh yang lebih besar dibandingkan dengan dioda yaitu sekitar 1 sampai 2 V. Sehingga diperlukan sebuah resistor yang diseri dengannya, untuk membatasi arus yang melalui LED tersebut. Dengan panjang gelombang yang dimiliki led infra merah ini, menyebabkan cahaya yang dipancarkan olehnya tidak dapat dilihat dengan mata telanjang, atau cahaya unvisible.

Gambar 2.16. Karakteristik Kolektor Emitter Phototransistor (2)

Optocoupler atau photoisolator adalah merupakan pasangan dari phototransistor dan led infra yang dikemas menjadi sebuah IC. Karena bentuknya yang tetap, maka penggunaan optocoupler ini tidak perlu menggunakan selubung untuk menghindari cahaya dari luar yang dapat mengganggu sensitivitas dari phototransistor itu sendiri.

Page 17: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

2.4. TRANSISTOR SEBAGAI SAKLAR

Gambar 2.17. Tegangan dan Arus Bias Mengalir dalam Transistor NPN (2)

Gambar 2.18. Tegangan dan Arus Bias Mengalir Dalam Transistor PNP (2)

Gambar diatas masing-masing memperlihatkan tegangan bias-normal yang diberikan kepada transistor PNP dan NPN. Pada transistor NPN, dioda yang dibentuk oleh basis dan emitor diberi tegangan forward dan dioda yang dibentuk oleh basis dan kolektor harus diberi tegangan reverse bias, dengan demikian basis lebih positif terhadap emitor dan kolektor. Sedangkan pada transistor tipe PNP, dioda yang dibentuk oleh emitor dan basis harus diberi tegangan forward bias dan dioda yang dibentuk dari kolektor dan basis diberi tegangan reverse bias. Dengan demikian, maka basis negative terhadap emitor dan kolektor lebih negative terhadap basisnya. Ada 3 daerah operasi transistor yaitu :

Tabel 2.5. Tabel Daerah Operasi Transistor No Kondisi Dioda B/E Dioda B/C 1 Cut Off (

OFF ) Bias

Reverse Bias

Reverse 2 Saturasi (

ON ) Bias

Forward Bias

Forward 3 Aktif Bias

Forward Bias

Reverse

2.4.1. Kondisi Cut-OFF Transistor ( Titik Sumbat )

Titik sumbat yaitu pada daerah ini arus basis = 0 pada kolektor kecil, sehingga arus ini dapat diabaikan akan tetapi yang terjadi adalah Ice0 yang merupakn arus bocor yang disebabkan oleh arus pada permukaan yang bocor. Pada titik sumbat dioda emitter kehilangan bias maju dan suatu kerja normal pada suatu transistor akan terhenti.

Transistor pada keadaan cut off dianggap sebagai rangkaian common emitter yang mana tahanan kolektor terhubung seri dengan emitter sehingga tegangan catu ( VCC ) sama dengan VCE ( VCC = VCE ) dan keadaan ini pun diberi notasi VC ( IC.RC ) dan VCE. Arus kolektor yang mengalir melalui tahanan kolektor dan tegangan cropnya adalah IC.RC.

Jika transistor dianggap sebagai saklar, maka saklar tersebut berada dalam keadaan terbuka, sehingga saklar akan off. Transistor dikatakan cut off karena basis mendapatkan bias negative ( reverse ) yang cukup besar, sehingga akan memutuskan ( cut off ) arus kolektor untuk keadaan ini IC . RC = 0. sehingga tegangan catu sama dengan tegangan antara kolektor dan emitter.

2.4.2. Kondisi Saturasi Transistor ( Titik Jenuh )

Titik jenuh yaitu pada daerah ini yang mana arus basis = Ib ( sat ) dan arus kolektor adalah maksimum. Pada daerah jenuh dioda kolektor akan kehilangan bias mundur ini berarti dioda dibias maju, maka kerja normal dari transistor akan terhenti. Dengan persamaan sebagai berikut : IC ( sat ) = VCC / RC... ( 2.1 ) (2)

Transistor ini akan saturasi, jika pada basis mendapatkan bias arah maju ( forward ) dimana seluruh tegangan VCC muncul sebagai pendrop tegangan pada tahanan kolektor. Bila arus kolektor ( IC ) diperbesar disuatu titik. Dimana seluruh tegangan pada VCC muncul pada tahanan kolektor. Karena seluruh tegangan VCC muncul sebagai pendrop tegangan pada tahanan kolektor. Bila arus kolektor ( IC ) diperbesar pada suatu titik maka:

VCC

IC . RC = 0 dan VCE = 0 Volt ( 2.2 ) (2)

Keadaan seperti diatas dikatakan pada kondisi saturasi ( jenuh ) dari transisitor, jika transistor

Page 18: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

yang dianggap sebagai saklar, maka akan terhubung.

2.5. Relay Bentuk sederhana dari penyambungan

otomatis dalam sebuah elektronika sirkuit disebut relay. Sebuah relay pada dasarnya terdiri dari dua bagian yaitu lilitan dan magnetic switch. Ketika arus listrik melewati lilitan, medan magnet akan timbul dan mengelilinginya. Medan magnet ini sebanding dengan nilai dari arus listrik yang melewati lilitan tersebut. Pada suatu nilai yang spesifik, medan magnet ini akan cukup kuat untuk menarik switch kontak dari keadaan normalnya atau disebut energized position. Jika daya listrik yang melewati lilitan tersebut turun atau hilang maka kekuatan dari medan magnetpun akan turun sampai mencapai nilai nol.

Bagian penyambungan dari relay dapat berupa tipe dasar dari penyambungan seperti SPST (Single Pole Single Throw), SPDT (Single Pole Double Throw), DPST (Double Pole Single Throw), DPDT (Double Pole Double Throw). Untuk single-throw units, switch kontak dapat normally open atau normally closed. Tentu saja dengan teknik switching SPDT atau DPDT kita juga mendapatkan dua keadaan tersebut yaitu SPDT dan DPDT. Skematik symbol dari SPDT dan SPST relay dapat dilihat dari gambar 2.19.

Gambar 2.19. Simbol Skematik ; A. SPST relay; B. SPDT relay (4)

Lilitan relay dan switching kontak biasanya selalu digunakan dalam sirkuit elektrik yang terisolasi. Yaitu arus yang melalui satu sirkuit yang mengontrol penyambungan (switching) sirkuit yang lain. Relay memiliki beragam ukuran, tergantung kepentingan dari daya yang aman yang dapat dibawanya. Tingkat yang terpisah biasanya digunakan untuk lilitan dan switch contacts, karena biasanya keduanya dipergunakan dalam sirkuit yang terpisah.

Tingkat yang paling penting untuk relay adalah tegangan yang diberikan untuk membuat switch contact bergerak menuju energized position. Jenis tegangan yang digunakan untuk relay yang digunakan pada sirkuit elektronik

adalah 6, 12, 24, 48, 117, dan 240 volts. Dapat menggunakan tegangan baik AC maupun DC.

Mengontrol tegangan yang melalui lilitan relay harus dijaga tetap sekitar ±25% dari tingkat nilai. Terlalu besar tegangannya dapat membakar lilitannya. Sementara terlalu kecil tegangan pengontrolnya dapat menghasilkan kerja relay yang tidak maksimal.terkadang dibutuhkan daya yang lebih rendah untuk mengontrol daya yang relative tinggi. Hal ini dapat dilihat dari gambar 2.20. tegangan yang tinggi yang diberikan dari B hanya akan beroperasi ketika relay berfungsi, diberikan daya yang lebih rendah di A.

Gambar 2.20. Relay yang dipakai untuk mengontrol sirkuit dengan tegangan yang

lebih tinggi (4)

Biasanya control sinyal yang ada tidak dapat menyetir relay yang cukup besar untuk dikontrol dalam sebuah sirkuit. Dalam kasus seperti ini, solusinya adalah dengan memberi medium power relay untuk untuk berfungsi mengaktifkan switch kontak yang akan mengaktifkan relay dengan tegangan yang lebih tinggi seperti yang terlihat pada gambar 2.21.

Gambar 2.21. Relay kecil dapat dipakai untuk menyetir relay yang lebih berat (4)

Lilitan pada relay akan rusak arus yang melewatinya berubah dengan tiba-tiba, mungkin ketika switch yang dipasang secara seri dengan relay dalam keadaan terbuka seperti pada gambar . tegangan turun dari V + sampai 0 hanya dalam beberapa detik. Hal ini menyebabkan medan magnet yang mengelilingi lilitan turun dengan cepat. Hal ini dapat menyebabkan kerusakan dari switch contacts. Oleh karena itu untuk mengatasi hal demikian sebuah dioda biasanya dipasang parallel dengan lilitan relay untuk menekan

Page 19: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

tegangan peralihan yang tinggi. Seperti digambarkan pada gambar 2.22. Dengan demikian, dioda membatasi tegangan yang melewati lilitan relay menuju tegangan power supply.

Gambar 2.22. Dioda dipasang secara parallel untuk melindungi lilitan relay dari tegangan

tinggi (4)

Sebuah transistor amplifier biasanya digunakan untuk menyetir relay arus tinggi dari sumber arus rendah, seperti batere kecil. Sirkuit tipe ini digambarkan seperti pada gambar 2.23.

Gambar 2.23. Amplifier transistor dapat dipakai untuk menyetir relay berarus tinggi

dari relay yang berarus kecil (4)

2.6. Seven Segment Display Untuk menampilkan bilangan decimal 0

sampai 9 atau suatu abjad yang dihasilkan oleh decoder, dapat digunakan seven-segment display ( penampil tujuh ruas ). Seven-segment display membentuk angka delapan, dimana masing-masing segment terdapat satu LED yang ditandai dengan huruf a, b, c, d, e, f, g yang akan berpijar atau menyala bila diaktifkan. Berdasarkan cara pemakaiannya, seven-segment display terdiri dari 2 jenis yaitu :

7 segment Common Anoda ( CA )

7 segment Common Catoda ( CC )

Gambar 2.24. Gambar Fisik Seven Segmen

(3)

2.6.1. Seven Segment Common Catoda Merupakan rangkaian seven segment

yang kaki anodanya terhubung dengan rangkaian dan kaki katoda dihubungkan ke ground. Common ini bersifat aktif high, artinya akan aktif (ON) bila bernilai 1 dan akan mati (OFF) bila bernilai 0.

Tabel 2.6. Tabel Karakter Seven Segment Common Katoda

a b c d e f G karakter 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 2 1 1 1 1 0 0 1 3 0 1 1 0 0 1 1 4 1 0 1 1 0 1 1 5 0 0 1 1 1 1 1 6 0 0 0 1 1 1 1 7 1 1 1 1 1 1 1 8 1 1 1 0 0 1 1 9

2.6.2. Seven Segment Common Anoda Merupakan rangkaian seven segment

yang kaki anodanya terhubung ke tegangan input (VCC), seperti namanya yang artinya penggunaan anoda bersama dan kaki katodanya terhubung ke rangkaian atau dapat dikatakan sebagai masukan ke seven segment. Common anoda bersifat aktif low, artinya akan aktif (ON) bila bernilai 0 dan akan mati (OFF) bila bernilai 1.

Page 20: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Tabel 2.7. Tabel Karakter Seven Segment Common Anoda

a b c d e f G karakter 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 1 0 2 0 0 0 0 1 1 0 3 1 0 0 1 1 0 0 4 0 1 0 0 1 0 0 5 1 1 0 0 0 0 0 6 1 1 1 0 0 0 0 7 0 0 0 0 0 0 0 8 0 0 0 1 1 0 0 9

Yang digunakan pada rangkaian kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52 ini adalah seven-segment Common Anoda ( CA ), yang merupakan suatu seven-segment dimana semua anoda dari LED terhubung ke VCC atau High dan Catoda dihubungkan ke decoder,

seperti terlihat pada gambar 2.25 dibawah ini :

Gambar 2.25. Rangkaian Seven Segmen Common Anoda (3)

2.6.3. Rangkaian Penggerak 8×7-segment Inti dari rangkaian penggerak 8×7-

segment ini berdasar bagaimana cara menghidupkan ke-8 dari 7-segment pada mikrokontroller AT89S52 secara bergantian dengan cepat sehingga mata kita melihat seakan-akan hidup bersamaan. Dengan teknik biasa untuk menghidupkan 8 buah seven segment secara bersamaan dibutuhkan 8×8 = 64 jalur atau 8 buah port, sedangkan AT89S52 hanya memiliki 4 buah port, sehingga hanya mampu menghidupkan 4 buah seven segment saja secara bersamaan, itupun jika ditinjau dari instruksi

atau pemprograman tidak hidup secara bersamaan, karena pengiriman data ke masing-masing port secara bergantian.

Cara penyalaan secara bergantian tersebut dinamakan dengan teknik scanning dan hanya membutuhkan dua port saja, port 0 digunakan untuk mengirimkan data karakter yang akan ditampilkan pada seven segment sedangkan port 1 digunakan sebagai saklar yang menghubungkan antara Vcc dan Common Anoda pada seven segment, karena register port1 (P1) panjangnya 8 bit, maka bisa digunakan untuk saklar ke 8 buah seven segment. Konfigurasi saklar menggunakan transistor PNP 9012. sesuai dengan gambar .

Sesuai dengan rangkaian pada gambar , agar ada arus yang mengalir dari Vcc ke Common Anoda maka pada P1.i harus diberi logika 0 sehingga transistor menjadi ON (kondisi jenuh) dan mengalirkan arus dari Vcc ke Common Anoda. Data tampilan seven segment dikirimkan melalui port 0, karena menggunakan konfigurasi seven segment Common Anoda maka untuk menyalakan led pada seven segment harus dikirimkan juga logika 0. secara garis besar algoritma programnya sebagai berikut.

1. Siapkan data tampilan ; 2. Kirim ke Port 0 ; 3. Aktifkan transistor yang terkait pada

seven segment yang melalui Port 1 ; 4. Tunggu sebentar (delay) ; 5. Matikan tampilan seven segment

melalui Port 0 ; 6. Siapkan data berikutnya dan ulangi

mulai langkah 2 dan seterusnya.

2.7. Buzzer Buzzer adalah sebuah transducer yang

berfungsi untuk merubah energi listrik menjadi energi suara. Pada rangkaian kunci elektris sebagai pengaman pintu rumah tinggal buzzer dipergunakan sebagai alarm.

3. PERANCANGAN ALAT 3.1 Prinsip Kerja Alat

Adapun prinsip kerja dari kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan mikrokontroller AT89S52 ini adalah sebagai berikut, alat ini terdiri dari beberapa blok yaitu rangkaian pendeteksi, mikrokontroller AT89S52, rangkaian display, dan alarm. Rangkaian pendeteksi berfungsi sebagai pendeteksi data dari kartu yang masuk ke mikrokontroller. Mikrokontroller berfungsi sebagai pengontrol seluruh system dari alat ini.

Page 21: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Rangkaian display berfungsi sebagai penampil kata-kata yang berguna sebagai pengingat apabila kartu yang masuk merupakan kartu yang benar ataupun bukan. Rangkaian relay sebagai pengunci dan pembuka pintu. Alarm berfungsi sebagai tanda peringatan apabila kartu yang dimasukkan salah selama tiga kali.

Ketika kartu dimasukkan, rangkaian pendeteksi akan memberikan data kepada mikrokontroller AT89S52 lalu mikrokontroller akan membandingkan data yang masuk dengan data yang sudah diinput sebelumnya. Jika kartu yang dimasukkan adalah kartu yang sesuai, data yang masukpun sesuai dengan yang telah diinput pada mikrokontroller, maka relay akan dikenai arus dan akan timbul medan magnet sehingga dapat mengaktifkan motor DC dan membuka pintu. Pada saat yang bersamaan, display akan menampilkan kata Hello. Namun jika kartu yang

dimasukkan bukan kartu yang sesuai, maka pada relay tidak akan dikenai arus dan motor akan tetap pada kondisi semula, sehingga pintu tidak terbuka. Pada saat yang bersamaan, display ke 7 akan menampilkan kata salah 1 untuk kesalahan yang pertama, salah 2 untuk kesalahan yang kedua, salah tiga untuk kesalahan yang ketiga. Dari kesalahan yang pertama hingga kedua kondisi tetap sama, relay tidak aktif sehingga pintu tidak terbuka. Namun ketika kesalahan yang ketiga, alarm berbunyi dan alat tidak dapat mengakses kartu lagi. Pada kondisi ini, alat hanya dapat direset dengan kartu yang lain yang dipergunakan sebagai kartu reset (kartu satpam). Bersamaan dengan diresetnya alat ini dengan kartu satpam display akan menampilkan kata reset Jadi alat ini mempunyai dua kartu yaitu kartu pembuka dan kartu untuk mereset alat.

Gambar 3.1. Diagram Blok Alat

Page 22: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

10k

BD

13

9

Rel

ay2

1N

40

01

12 v

MO

TO

RP

intu

S1

S2

Page 23: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

3.2. Rangkaian Pendeteksi Rangkaian pendeteksi ini terdiri dari 8

buah optocoupler jenis GP1S53V, dimana setiap optocoupler mewakili data 1 bit yang masuk kedalam mikrokontroller, jadi satu kartu memiliki nilai 8 bit data yang akan dibandingkan dengan data yang telah diinput pada mikrokontroller. Optocoupler yang terhalang tidak akan meneruskan arus yang masuk dan tegangan yang dibutuhkan oleh mikrokontroler sehingga mikrokontroller membaca data dengan nilai 0, sedangkan yang tidak terhalang oleh kartu akan meneruskan arusnya sehingga akan menghasilkan tegangan dan mikrokontroller akan membaca data dengan nilai 1.

Resistor yang dipasang berguna untuk menghambat arus yang masuk sehingga mencegah arus yang berlebih yang melalui photodioda. Agar photodioda dapat bekerja dengan baik, maka harus dilewati dengan arus forward yaitu arus yang dibutuhkan agar dioda mengalami bias forward. Pada datasheet tercantum bahwa arus forward pada optocoupler GP1S53V ini sebesar 50 mA, oleh karena itu ketika diberi masukan tegangan sumber sebesar 5 volt (yang disuplay oleh catu daya) penulis memberikan hambatan sebesar 100 . Apabila dihitung dengan rumus hukum Ohm, dimana :

I = R

V

I = 100

5V = 50 mA

Keterangan : I = Arus (Ampere)

V = Tegangan (Volt) R = Tahanan (Ohm)

maka arus yang melewati photodiode pada optocoupler memenuhi arus forwardnya, namun arus forward yang melewati photodiode tidak boleh melewati arus forward maksimumnya yaitu sebesar 1 A yang tertera pada datasheet. Oleh karena itu hambatan yang dipasang harus dibatasi, yaitu yang berada pada range 5-100

agar photodiode pada optocoupler dapat bekerja dengan baik.

Gambar 3.3. Rangkaian Pendeteksi Data Yang Mewakili 1 Bit

Data yang dimasukkan kedalam mikrokontroller sebagai pembanding yaitu 0000001b untuk kartu reset, dan 00000010b untuk kartu pembuka pintu. Rangkaian pendeteksi ini dihubungkan ke port 3 pada mikrokontroller AT89S52. Apabila optocoupler terhalang oleh kartu maka akan memberikan data 0 pada mikrokontroler, hal ini terjadi dikarenakan tidak ada arus yang mengalir pada kaki basis phototransistor sehingga phototransistor berada pada keadaan cutoff, pada keadaan ini hambatan pada kaki basis diasumsikan besar atau mencapai tak hingga, jika dimasukan pada rumus hukum ohm maka :

I = R

V

I = V5

= 0 Ampere

Keterangan : I = Arus (Ampere)

V = Tegangan (Volt) R = Tahanan (Ohm)

= Tak hingga Dengan tidak adanya arus yang mengalir pada kaki basis phototransistor membuat phototransistor berada pada keadaan cut off, hal ini membuat mikrokontroler membaca data 0.

Namun optocoupler yang tidak terhalang oleh kartu akan memberikan data 1 pada mikrokontroler, hal ini terjadi dikarenakan arus yang mengalir pada kaki basis phototransistor yang menyebabkan photo transistor berada pada keadaan saturasi (keadaan jenuh), dimana pada keadaan ini arus mengalir dari kaki colector menuju ke pentanahan. Ketika ada arus yang mengalir pada kaki basis dan membuat phototransistor berada pada keadan saturasi inilah mikrokontroler akan membaca data 1. Resistor yang dipasang pada kaki 4 optocoupler (kaki emitor pada phototransistor)

Page 24: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

berfungsi untuk menghambat arus yang masuk pada mikrokontroler.

3.3. Mikrokontroller AT89S52 Mikrokontroller AT89S52 berfungsi

sebagai pengontrol system dari alat ini. Pada awal program, semua data diinisialisasi dahulu. Dan dibutuhkan sebuah penyimpanan (pemakaian RAM) untuk menyimpan data karakter seven segment display pada alamat 50H-57H. juga dibuat beberapa subrutin untuk memudahkan penulisan program utama yang akan dibahas setelah program utama.

Untuk menjalankan kerja dari alat ini maka harus dijalankannya program utama. Pada awal program kita harus menginisialisasi dahulu. Untuk data kartu dipasang di port 3. Untuk tampilan display seven segment memakai dua port yaitu port 0 untuk menscaning dan port 1 untuk menyimpan data karakter. Lalu data karakter dari seven segment dimasukan ke memori RAM internal 50H-57H dimana setiap alamat menentukan posisi seven segment yang aktif. Untuk led indicator bahwa alat sudah membaca kartu dipasang di port 2.7. Relay dipasang di port 2.0, sedangkan buzzer dipasang di port 2.1. Adapun program untuk inisialisasi penempatan port ini adalah Scan Equ P0 ; inisialisasi untuk scan seven segment pada port 0 Dataa Equ P1 ; inisialisasi untuk

data karakter seven segment pada Port 1

Led_ok Bit P2.7 ; inisialisasi led indicator pada bit port 2.7 Relay Bit P2.0 ; inisialisasi relay pada bit port 2.0 Buzzer Bit P2.1 ; inisialisasi Buzzer pada bit port 2.1 Data_Kartu Equ P3 ; inisialisasi data kartu pada port 3

Sedangkan inisialisasi untuk menyimpan data karakter seven segment pada memori RAM internal dipergunakan perintah DATA. Adapun programnya yaitu DATA0 DATA 50H DATA1 DATA 51H DATA2 DATA 52H DATA3 DATA 53H DATA4 DATA 54H DATA5 DATA 55H DATA6 DATA 56H DATA7 DATA 57H Sedangkan untuk data karakter seven segment display perlu dimasukan datanya terlebih dahulu dengan perintah EQU. Untuk data karakter

terdapat 8 bit data masing-masing bit mewakili segment P1.0 untuk segment a, P1.1 untuk segment b, P1.2 untuk segment c, P1.3untuk segment d, P1.4 untuk segment e, P1.5 untuk segment f, P1.6 untuk segment g, P1.7 untuk segment dot. Karena dipakai seven segment Comon Anoda maka segment yang aktif diberikan data 0. jadi dimisalkan untuk angka 5 diberikan data #10010010b.

Setelah diinisialisasi, baru dapat dijalankan program utama. Adapun diagram alir program utama dapat dilihat pada gambar 3.4.

Pada awal program setelah diinisialisasi relay dinyalakan dengan perintah setb relay, hal ini dimaksudkan untuk memeriksa apakah alat (hardware) berjalan dengan baik. Lalu setelah itu register TMOD diisi dengan data #00010010b, maksudnya dipilih timer 1 mode 1 pencacah 16 bit untuk delay 50 ms dan menggunakan timer 0 mode 2 pencacah 8 bit dengan isi ulang otomatis untuk waktu tunda pada awal dijalankannya program. Adapun cara menentukan data yang dimasukan ke register TMOD agar dapat menggunakan timer 1 mode 1 dan timer 0 mode 2 dapat dilihat pada bab 2. Lalu Th0 diisi dengan data #6 atau setara dengan 250 µs (karena timer 0 mempergunakan mode 2 yaitu pencacah 8 bit isi ulang otomatis jadi melompat terus dan mengulang dari 06h ke ffh). Setelah itu timer 0, interrupt enable dan interrupt timer overflow diaktifkan dengan perintah setb. Lalu register R4, R5 dan R6 diberi data #0 dengan perintah MOV. Register R4 dipakai untuk pengecekan kesalahan dan disetting sebanyak 3 kali kesalahan dengan perintah CJNE, register R5 dipakai untuk pengecekan kesalahan dan setiap kali kesalahan ditampilkan pada seven segment ke 7, sedangkan register R6 dipakai untuk scaning seven segment. Setelah itu MENU_KOSONG dipanggil, MENU_KOSONG adalah subrutin untuk menampilkan menu blank (kosong) pada display seven segment.subrutin ini akan dibahas nanti setelah program utama. Setelah itu data #0ffh dimasukan ke data kartu dengan perintah MOV maksudnya untuk memberikan kondisi awal 0ffh pada data kartu yang berada pada port 3 . Lalu relay dimatikan kembali dan setelah itu diberi waktu tunda sebesar 1 detik.

Page 25: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Adapun program inisialisasi awal dari program utama ini adalah INIT : setb relay

Mov TMOD,#00010010b Mov TH0,#6 Setb TR0 Setb EA Setb ET0 Mov R4,#0 Mov R5,#0 Mov R6,#0 Acall MENU_KOSONG Mov Data_kartu,#0ffh Clr relay Acall delay_1s Setelah program inisialisasi awal, maka

dimulai program untuk menjalankan kinerja dari alat ini. Pada awal program,data kartu yang berada di port 3 dikondisikan terlebih dahulu dengan data awal yaitu senilai 0ffh, karena pada kondisi awal yaitu selama belum ada kartu yang masuk, sensor kartu pasti akan membaca nilai 0ffh. Selama belum ada kartu yang masuk led indicator di port 2.7 tidak menyala, namun ketika ada kartu yang masuk led indicator di port 2.7 menyala. Setelah itu data kartu yang masuk disimpan di alamat 7fh dengan perintah MOV.

Data kartu yang masuk dibandingkan dengan data #00000010b (data kartu yang benar) dengan perintah CJNE. Jika kartu yang

dimasukan bukan kartu yang benar, maka lompat ke label salahkan namun apabila kartu yang dimasukan benar maka lompat ke label benar. Adapun program pada bagian ini adalah Get_Card : Banding : mov a,7fh ; masukan isi alamat 7fh ke akumulator Cjne a,#00000010b,salahkan ; bandingkan apakah akumulator bernilai

#00000010b tidak! lompat ke salahkan Acall benar ya! lompat ke label benar Sjmp exit ; lompat ke exit

Jika kartu yang dimasukan bukan kartu yang benar, maka program melompat ke label salahkan. Pada awal label ini program langsung memerintahkan lompat ke subrutin salah, dimana subrutin ini berisi untuk menghitung banyaknya kesalahan dengan menghitung register R5 dengan perintah INC. Setiap angka kesalahan yang dihitung akan ditampilkan pada seven segment ke 7. adapun program pada subrutin ini adalah Salah : inc r5 ; R5+1 Mov a,r5 ; masukan R5 ke akumulator Acall conversi ; lompat ke subrutin converse (akan dijelaskan setelah program

utama) Mov data7,a ; nilai kesalahan dimasukan ke akumulator Acall MENU_SALAH ; tampilkan menu salah Ret

Setelah lompat ke subrutin salah, diberi waktu tunda sesaat selama 3 detik. Lalu register R4 dihitung dengan perintah inc dan dibandingkan apakah sudah bernilai #3 atau belum. Jika register R4 sudah menghitung sampai bernilai 3, maka buzzer akan menyala dengan perintah clr. Namun jika register R4 belum menghitung sampai bernilai tiga, maka lompat kembali ke awal program. Adapun program pada label salahkan ini adalah Salahkan : acall salah ; lompat ke subrutin salah acall delay_1s ; tunda selama I detik acall delay_1s ; tunda selama 1 detik acall delay_1s ; tunda selama 1 detik inc R4 ; register R4 dihitung cjne r4,#3,main ; R4 dibandingkan apakah sudah bernilai 3 belum!

Lompat ke label main (awal) clr buzzer ; jika ya! Nyalakan buzzer acall reset ; lompat ke subrutin reset

Page 26: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

sjmp main ; lompat ke awal Setelah buzzer aktif maka program

melompat ke subrutin reset. Pada subrutin ini, seven segment ke 6 diaktifkan dan menampilkan huruf r. Lalu data kartu yang berada di port 3 dimasukan kembali ke akumulator, sampai ada kartu lain yang masuk. Kartu yang masuk ke port 3 (data kartu) dibandingkan apakah sesuai dengan kartu reset (#00000001b), jika benar maka register R4 dan R5 dikembalikan seperti semula yaitu diberi data 0 dengan perintah mov, menu reset yang berfungsi untuk menampilkan kata reset dipanggil, seven segment ke 6 dan ke 7 ditampilkan dengan menu kosong (blank), buzzer dimatikan dengan perintah setb lalu diberi waktu tunda selama 5 detik. Adapun program dari bagian ini adalah Reset : Mov data6,#huruf_r ; menampilkan huruf r pada seven segment ke 6 Acall ambil_password ; lompat ke label ambil_password Cjne a,#1,reset ; bandingkan kartu yang masuk apakah #1, tidak!kembali ke reset Mov r4,#0 ; memberikan data 0 ke register R4 Mov r5,#0 ; memberikan data 0 ke register R5 Acall menu_reset ; menampilkan kata reset Mov data6,#kosong ; menampilkan kosong pada seven segment ke 6 Mov data7,#kosong ; menampilkan kosong pada seven segment ke 7 Setb buzzer ; buzzer dimatikan Acall delay_5s ; tunda waktu selama 5 detik Ret

Jika kartu yang dimasukan adalah kartu yang benar, maka program langsung melompat ke subrutin benar. Pada awal subrutin ini, seven segment ke 7 diberi tampilan kosong, maksudnya untuk menghapus tampilan angka yang menunjukkan jumlah kesalahan. Setelah itu, kata hello ditampilkan dan relay diaktifkan dengan perintah setb. Relay yang aktif akan menarik solenoid dan pintupun akan membuka. Aktifnya relay diberi waktu tunda selama 5 detik, setelah itu relay akan mati kembali dan pintupun akan menutup kembali. Dengan matinya relay, tampilan kosongpun dipanggil untuk menghapus kata hello pada seven segment. Adapun program pada subrutin benar ini adalah Benar : Mov data7,#kosong ; menampilkan menu kosong pada seven segment Acall welcome ; menampilkan kata hello pada seven segment Setb relay ; relay diaktifkan Acall delay_5s ; tunda waktu selama 5 detik

Clr relay ; relay dimatikan kembali Acall menu_kosong ; menu kosong ditampilkan untuk menghapus kata hello Mov R4,#0 ; register R4 diberi data 0 (keadaan semula) Mov R5,#0 ; register R5 diberi data 0 (keadaan semula) Ret

Setelah lompat ke subrutin benar, kita melompat ke label exit. Pada label exit, program langsung memberi perintah lompatan ke subrutin keyup. Awal subrutin ini, led diaktifkan dengan perintah clr. Data kartu pada port 3 dimasukan ke akumulator lalu dibandingkan apakah datanya 0ffh (kondisi ketika tidak ada kartu yang dimasukan). Dari subrutin keyup, melompat ke main (program awal). Selama belum ada kartu yang dimasukan, maka kondisi akan tetap seperti semula (awal), namun jika sudah ada kartu yang dimasukkan maka mikrokontroller akan menjalankan programnya seperti yang telah dijelaskan sebelumnya.

Untuk mendukung program utama, maka dibutuhkan subrutin-subrutin. Adapun subrutin-subrutin yang dipakai untuk menjalankan kinerja dari alat ini diberi nama MENU, CONVERSI, TAMPILAN, dan Delay. Subruin MENU berfungsi untuk menampilkan kata-kata pada display seven segment. Subrutin CONVERSI berfungsi untuk menampilkan angka kesalahan pada display seven segment. Subrutin TAMPILAN berfungsi untuk scanning display seven segment. Dan subrutin delay berfungsi untuk memberi waktu tunda sesaat. Adapun subrutin-subrutin tersebut akan dijelaskan di bawah ini.

MENU Subrutin ini dipergunakan untuk

memberikan data karakter pada display seven segment. Dimana setiap karakter dimasukan ke alamat data 50H-57H yang sebelumnya sudah diinisialisasi bahwa DATA0 berada dialamat 50H, DATA1 berada dialamat 51H, DATA2 berada dialamat 52H, dan seterusnya sampai DATA7 yang berada dialamat 57H.

Setiap DATA mewakili posisi seven segment, misalkan DATA0 mewakili posisi seven segment ke 0. jadi data karakter yang diberikan ke DATA0 nantinya akan tampil diseven segment ke 0. DATA1 mewakili seven segment ke1, DATA2 mewakili seven segment ke 2, dan seterusnya sampai DATA7 yang mewakili seven segment ke 7. Pada dasarnya subrutin ini berisi program yang memerintahkan untuk memasukan data karakter seven segment

Page 27: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

yang sebelumnya sudah diinisialisasi pada awal program ke alamat RAM internal 50H-57H dengan perintah mov.

Pada subrutin MENU ini terdapat beberapa macam menu tampilan display seven segment yang dibutuhkan agar program dari alat ini berjalan. Adapun menu-menu yang dibuat adalah MENU_KOSONG, MENU_Hello, MENU_SALAH, dan MENU_RESET. MENU_KOSONG berfungsi memasukan data karakter #KOSONG (11111111b) pada seven segment ke 0-7 dengan perintah MOV. adapun programnya adalah sebagai berikut : MENU_KOSONG :

MOV DATA0,#KOSONG MOV DATA1,#KOSONG MOV DATA2,#KOSONG MOV DATA3,#KOSONG MOV DATA4,#KOSONG MOV DATA5,#KOSONG MOV DATA6,#KOSONG MOV DATA7,#KOSONG RET Menu_Hello berfungsi memasukan data

karakter huruf H (10001001B), E (10000110B), L (11000111B), 0 (11000000B) pada seven segment ke 0-7 dengan perintah MOV. Adapun programnya adalah sebagai berikut : MENU_Hello :

MOV DATA0,#HURUF_H MOV DATA1,#HURUF_E MOV DATA2,#HURUF_L MOV DATA3,#HURUF_L MOV DATA4,#ANGKA0 MOV DATA5,#KOSONG RET MENU_SALAH berfungsi memasukan

data karakter angka 5 (10010010B), huruf A (10001000B), L (11000111B), H (10001001B) pada seven segment ke 0-7 dengan perintah MOV. adapun programnya adalah sebagai berikut MENU_SALAH :

MOV DATA0,#ANGKA5 MOV DATA1,#HURUF_A MOV DATA2,#HURUF_L MOV DATA3,#HURUF_A MOV DATA4,#HURUF_H MOV DATA5,#KOSONG RET Menu_Reset berfungsi memasukan data

karakter huruf r (10101111B), E (10000110B), ANGKA 5 (10010010B), t (10000111B) pada seven segment ke 0-7. adapun programnya adalah sebagai berikut :

Menu_Reset : MOV DATA0,#HURUF_r MOV DATA1,#HURUF_e MOV DATA2,#ANGKA5 MOV DATA3,#HURUF_e MOV DATA4,#HURUF_T MOV DATA5,#KOSONG MOV DATA6,#KOSONG MOV DATA7,#KOSONG RET

CONVERSI Subrutin ini dipergunakan untuk

memeriksa kesalahan penerimaan data kartu akibat tidak sesuainya kartu yang dimasukan. Setiap kesalahan dihitung oleh register R5 dengan perintah INC R5 lalu dimasukan ke akumulator untuk dibandingkan berapa kali kesalahannya dengan perintah CJNE. Lalu setiap banyaknya kesalahan dikirim data karakternya ke akumulator dengan perintah MOV untuk nantinya ditampilkan pada seven segment ke 7. adapun programnya sebagai berikut : CONVERSI : CEK0 : CJNE A,#0,CEK1 ; bandingkan apakah akumulator bernilai 0 jika tidak

Lompat ke CEK2.

MOV A,#ANGKA0 ; benar! masukan isi data angka0 ke akumulator.

RET CEK1 : CJNE A,#1,CEK2 ; bandingkan apakah akumulator bernilai 1 jika tidak

Lompat ke CEK3.

MOV A,#ANGKA1 ; benar! Masukan isi data angka1 ke akumulator.

RET CEK3 : CJNE A,#2,CEK4 ; bandingkan apakah akumulator bernilai 2 jika tidak

Lompat ke CEK4.

MOV A,#ANGKA2 ; benar! Masukan isi data angka2 ke akumulator.

RET Dst.

TAMPILAN Subrutin ini berfungsi untuk

mengaktifkan seven segment (scan seven segment) dan menampilkan karakter seven segment. Subrutin ini disimpan pada alamat tersendiri yaitu dimulai di alamat 000BH. Subrutin ini termasuk program subrutin yang dijalankan mikrokontroller pada saat mikrokontroller menerima sinyal permintaan

Page 28: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

interupsi atau disebut Rutin Layanan Interupsi (Interrupt Service Routine). Artinya ketika dipanggil pada awal program subrutin ini sudah dijalankan dan terus menerus berjalan. Jadi sesungguhnya pada awal dijalankannya alat ini seven segment sudah aktif. Adapun program dari subrutin ini adalah TAMPILAN : MOV SCAN,#11111111B ; matikan seven segment SEGMENT_0 :

CJNE R6,#0,SEGMENT_1 ; apakah R6=0? Tidak! Lompat ke segment_1

MOV DATAA,DATA0 ; benar! Masukan data0 ke dataa (data karakter)

MOV SCAN,#11111110B ; aktifkan seven segment ke 0

INC R6 ; R6+1 (register 6 menambah 1 secara terus menerus)

RETI SEGMENT_1 :

CJNE R6,#1,SEGMENT_2 MOV DATAA,DATA1 MOV SCAN,#11111101B INC R6 RETI

SEGMENT_2: CJNE R6,#2,SEGMENT_3 MOV DATAA,DATA2 MOV SCAN,#11111011B INC R6 RETI

SEGMENT_3: CJNE R6,#3,SEGMENT_4 MOV DATAA,DATA3 MOV SCAN,#11110111B INC R6 RETI

SEGMENT_4: CJNE R6,#4,SEGMENT_5 MOV DATAA,DATA4 MOV SCAN,#11101111B INC R6 RETI

SEGMENT_5: DJNE R6,#5,SEGMENT_6 MOV DATAA,DATA5 MOV SCAN,#11011111B INC R6 RETI

SEGMENT_6: CJNE R6,#6,SEGMENT_7 MOV DATAA,DATA6 MOV SCAN,#10111111B INC R6

RETI SEGMENT_7:

CJNE R6,#7,SEGMENT_END MOV DATAA,DATA7 MOV SCAN,#01111111B INC R6 RETI

SEGMENT_END: RETI

Delay Subrutin ini berfungsi untuk menunda

waktu sesaat. Penulis menginginkan delay ini menggunakan timer 1 mode 1 pencacah 16 bit. Dipilih mode ini karena pada mode ini tundaan maksimumnya paling besar yaitu sebesar 65.536µs sedangkan penulis menginginkan untuk menghasilkan tundaan sebesar 50000µs atau 50 ms, jadi dalam hal ini timer dengan mode 1 lah yang paling tepat digunakan untuk menghindari pengulangan. Namun sebelumnya pada awal program utama kita harus menginisialisasi register TMOD terlebih dahulu, cara menginisialisasi TMOD dapat diketahui pada bab sebelumnya yaitu bab 2. karena penulis menginginkan untuk menggunakan timer 1 mode 1 untuk subrutin delay ini dan menginginkan timer 0 mode 2 untuk waktu tunda pada awal program maka ditentukan dengan mengisi data TMOD dengan #00010010b dengan perintah MOV TMOD,#00010010b. Adapun diagram alir untuk subrutin delay 50 ms ini dapat dilihat pada gambar 3.5.

Page 29: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Gambar 3.5. Diagram Alir Subrutin Delay_50ms

Adapun program untuk subrutin delay 50 ms ini adalah Delay_50ms :

MOV TH1,#HIGH(-50000) ; isi timer 1 high byte dengan 50000µs =50ms

MOV TL1,#LOW(-50000) ; isi timer 1 low byte dengan 50000µs=50ms

SETB TR1 ; aktifkan timer 1 JNB TF1,$ ; tunggu limpahan CLR TR1 ; matikan timer 1 CLR TF1 ;matikan limpahan RET Untuk waktu tunda 500ms, 1s dan 5s

tinggal memberikan faktor pengali untuk dikalikan dengan waktu tunda 500 ms yaitu

dengan cara mengisi register R7 dengan suatu nilai, misalnya untuk waktu tunda 500 ms register R7 diisi dengan nilai 10, untuk waktu tunda 1s register R7 diisi dengan nilai 20 dan untuk waktu tunda 5s register R7 diisi dengan nilai 100. adapun program untuk subrutin ini adalah DELAY_5S : MOV R7,#100 ; isi register R7 dengan nilai 100 WAIT_5S : ACALL DELAY_50MS ; panggil label delay_50ms

DJNZ R7,WAIT_5S ; R7-1 dan lompat terus ke label wait_5s

Sampai bernilai nol RET

DELAY_1S : MOV R7,#20 ; isi register R7 dengan nilai 20 WAIT_1S : ACALL DELAY_50MS ; panggil label delay_50ms

DJNZ R7,WAIT_1S ; R7-1 dan lompat terus ke label wait_1s

Sampai bernilai nol RET

DELAY_500MS : MOV R7,#10 ; isi register R7 dengan nilai 10 WAIT_500MS : ACALL DELAY_50MS ; panggil label delay_500ms

DJNZ R7,WAIT_500MS ; R7-1 dan lompat terus ke label

Wait_500ms sampai bernilai nol RET

3.4. Rangkaian Display

Gambar 3.6. Rangkaian Display Seven Segment

Rangkaian display ini menggunakan 8 buah seven segment common anoda dan 8 buah transistor S9012 jenis PNP. Dimana kedelapan segment yaitu a sampai dot dihubungkan ke port 1 (pin 1 sampai 8) pada mikrokontroller

Page 30: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

AT89S52 dan untuk pengaktifan common dihubungkan ke transistor PNP S9012. Sisi kolektor pada transistor dihubungkan langsung ke common seven segment yang akan aktif apabila diberi data 0 (low). Sisi emitor dihubungkan ke VCC dan sisi basis dihubungkan ke port 0 (pin 32 sampai 39) pada mikrokontroller AT89S52. Transistor ini akan aktif jika pada sisi basis diberi data 0 (low). Dengan aktifnya transistor ini maka akan aktif pula seven segment common anoda. Jadi, transistor ini berfungsi sebagai saklar untuk mengaktifkan seven segment common anoda yang akan aktif pula jika diberi data 0 (aktif low). Kedelapan segment dari common anoda dihubungkan ke port 1 pada mikrokontroller AT89S52. Segment ini akan aktif bila dari mikrokontroller diberi data 0 (aktif low).

Penggunaan dari teknik rangkaian seven segment seperti ini sangat berguna untuk aplikasi kata-kata yang membutuhkan seven segment yang cukup banyak (maksimal 8) karena akan memperkecil pengggunaan port (hanya dua port). Adapun cara penggunaannya yaitu dengan memberikan data karakter huruf pada port 1 dengan perintah MOV dan memberikan data 0 pada seven segment yang akan diaktifkan. Aplikasi kata-kata yang dibuat pada rangkaian ini akan terlihat seperti bersamaan namun sebenarnya tidak, karena mikrokontroller hanya dapat memberikan data secara serial. Akan tetapi dengan memberikan delay yang sangat cepat maka huruf-huruf yang membentuk kata-kata tersebut akan terlihat tampil seperti bersamaan.

Adapun data karakter huruf dan angka yang dibutuhkan pada alat ini dapat dilihat pada tabel 3.1.

Tabel 3.1. Data Karakter Huruf dan Angka

Karakter DOT (1.7)

G (P1.6)

F (P1.5)

E (P1.4)

D (P1.3)

C (P1.2)

B (P1.1)

A (P1.0)

5 1 0 0 1 0 0 1 0 A 1 0 0 0 1 0 0 0 L 1 1 0 0 0 1 1 1 H 1 0 0 0 1 0 0 1 E 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0

3.5. Rangkaian Relay

10kBD139

Relay 2

1N4001

12 v

MOTORPintu

P2.0

S1

S2

Gambar 3.7. Rangkaian Relay

Blok ini terdiri dari relai, transistor sebagai saklar, dioda dan motor serta switching outomatic untuk kondisi pintu membuka dan menutup. fungsi utamanya adalah membuka pintu rumah tinggal ketika dimasukan kartu benar. Gambar rangkaian pada blok ini diperlihatkan pada Gambar 3.7.

Pada gambar 3.7 ini akan dijelaskan keluaran dari suatu rangkaian dengan menunjukkan keadaan suatu relay Tertutup maupun Terbuka . Dengan menggunakan cara pada bagian blok mikrokontroler AT89S52 maka secara otomatis rangkaian akan berada dalam keadaan Terbuka atau relay beroperasi dikarenakan pene. Terletak pada Tr( transistor ) yang berfungsi sebagai switch yang akan ON apabila transistor menerima masukan mendekati Vcc atau berlogika 1 dan arus dari kaki kolektor Tr akan melewati kaki basis menuju kaki emitter yang akan ditanahkan sehingga Re(relay) akan bertenaga dan Re(relay) menutup dan rangkaian dalam kondisi aktif. Sehingga motor akan berputar dan pintu rumah tinggal akan membuka. Namun setelah pintu terbuka maksimal maka switch otomatic pertama atau S1 berubah kondisi ke bawah sehingga akan memutus tegangan positif 12V hal ini menyebabkan kondisi motor akan mati. Begitupula dengan switch otomatic kedua atau S2 akan berubah kondisi ke bawah. Namun setelah waktu tunda selama 5 detik relay akan terbuka karena diberi perintah clr pada program dan tegangan positif 12V akan mengalir ke switch otomatic kedua atau S2 yang mana dalam kondisi terhubung oleh motor yang sebelumnya dialiri oleh ground. Motor akan berputar berlawanan arah sehingga pintu tombol akan menutup kembali dan bila menutup maksimal maka switch otomatic kedua atau S2 akan berubah kondisi ke atas sehingga tegangan 12V akan terputus, motor akan mati. Dan kembali ke kondisi normal yakni switch otomatic

Page 31: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

pertama atau S1 akan siap menerima umpan tegangan positif 12V.

Fungsi dioda 1N4001 adalah sebagai pengaman untuk mencegah kick back, yaitu transient yang terjadi pada koil relai (beban induktif) saat relay dimatikan. Hal ini dapat dijelaskan menurut persamaan :

V = dt

diL

Bila terjadi perubahan arus yang cukup besar dalam satuan waktu yang sangat cepat (dt = 0) maka tegangan balik ini menjadi sangat besar, dan dapat mengakibatkan kerusakan pada transistor.

3.6. Alarm Rangkaian ini menggunakan sebuah

buzzer yang pada sisi negatifnya dihubungkan langsung ke port P2.1 pin 22 pada mikrokontroller dan sisi positifnya dihubungkan ke VCC. Hal ini menyebabkan buzzer ini akan aktif bila diberi data 0 oleh karena itu buzzer ini bersifat aktif low.

3.7. Oscillator Kristal Sebagai sumber detak dari alat ini,

penulis menggunakan oscillator on chip dari mikrokontroller AT89S52. dan untuk menggunakannya sebuah resonator kristal dihubungkan di antara kaki-kaki XTAL1 dan XTAL2 pada mikrokontroller dan menghubungkan kapasitor ke ground. Pada alat ini penulis menggunakan kristal 12 MHz.

3.8. Catu Daya

Gambar 3.8. Rangkaian Power Supply

(Pada gambar 3.8) Rangkaian ini disebut sebagai rangkaian Power Suplay atau biasa disebut sebagai power regulator. Jenis rangkaian power regulator tersebut adalah rangkaian rectifer jembatan. Tegangan sumber (220V) diberikan pada sisi primer dari sebuah trafo step-down, yang memiliki dua gulungan

lilitan sekunder yang identik, masing

masing

memberikan tegangan r.m.s 12 V (rasio lilitan dari trafo oleh karena itu 220V/12 atau 20:1 untuk setiap gulung lilitan sekunder). Tegangan dc yang dihasilkan dari regulator adalah sebesar dc 5 Volt. Sebagai regulator tegangan dari catu daya yang digunakan adalah IC 7805.

Kapasitor pada rangkaian catu daya berfungsi sebagai filter yang akan memperlemah ripple. Besarnya nilai kapasitor minimum yang diperbolehkan ditunjukkan oleh rumus dibawah ini.

Cmin = LrR

24,0

Dengan R sebagai faktor ripple dalam % dan RL sebagai resistan beban, terlihat jika diinginkan faktor ripple 0% maka dibutuhkan kapasitor yang bernilai tak hingga. Tetapi dengan mengandaikan faktor ripple sekitar 1%, dan beban sebesar 5 KOhm maka dapat dihitung nilai kapasitor minimal yang diperbolehkan.

Cmin = 50001

24,0

x= 48 µF

Nilai 48 µF merupakan nilai minimal yang diperbolehkan, tetapi apabila dipakai kapasitor dengan nilai yang lebih tinggi akan lebih baik.

Dari rangkaian catu daya diatas dapat dihitung tegangan kapasitor 2200 µF sebesar :

Vp = VRMS x 2

= 12 2 = 16.97 V Pada saat I bernilai 2A, daya total yang dihasilkan sebesar : PTotal = Vp x I = 16.97 x 2 = 33.94 Watt Sedangkan daya keluaran IC 7805 sebesar : P = V x I = 5 x 1 = 5 Watt Selisih antara daya total dengan daya pada keluaran IC 7805 sebesar : PTerbuang = P Total P

=33.94

5 = 28.94 Watt Selisih antara daya total dengan daya

pada keluaran IC 7805 menjadi daya yang terbuang. Daya terbuang mengakibatkan IC menjadi panas. Daya terbuang dapat dikurangi dengan menurunkan nilai tegangan puncak mendekati tegangan keluaran IC regulator.

Page 32: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Pada setengah siklus positif, titik A akan positif terhadap titk B. Dalam kondisi ini, D1 dan D2 akan menghantar sementara D3 dan D4 tidak menghantar. Sebaliknya, pada setengah siklus negatif, titik B menjadi positif terhadap titik A. Dalam kondisi ini D3 dan D4 akan menghantar sedangkan D1 dan D2 tidak menghantar.

Pulsa-pulsa tegangan yang timbul akan berada pada frekuensi 100Hz (bukan 50Hz). Tegangan puncak yang dihasilkan oleh masing-masing gulungan lilitan sekunder adalah sekitar 16,97 Volt ( Vpk = 1,414 x Vr.m.s = 1,414 x 12V = 16,968 V; dibulatkan menjadi 17 V) setenggah siklus negatif di blok oleh D1 dan D2 sehingga hanya setengah siklus positif sajalah yang muncul. Tegangan puncak aktual adalah tegangan positif puncak 16,97 V yang di berikan oleh sisi sekunder dari trafo step down, dikurangi nilai ambang tegangan maju 0,7 V dari dua dioda yaitu D1 dan D2. Dengan kata lain akan muncul pulsa pulsa setengah siklus positif dengan amplitudo sebesar 16,97V-(2×0,7V)=15,57V pada tahanan beban. Kemudian tegangan akan melewati sebuah kapasitor 2200 F, capasitor tersebut berfungsi untuk memastikan bahwa tegangan output akan tetap berada pada, atau mendekati, tegangan puncak bahkan ketika dioda

dioda tidak menghantar. Capasitor tersebut biasa disebut sebagai capasitor resevoir. Kapasitor tersebut menyimpan muatan selama setengah siklus positif dari tegangan sekunder dan melepaskannya selama setengah siklus negatif. Tegangan setelah melewati capasitor lalu menuju ke kaki input pada IC 7805 dengan keluaran / output tegangan pada kaki output IC 7805 adalah 5 Volt.

3.9. Desain Alat ini menggunakan sebuah kartu

yang berfungsi untuk membuka pintu (mengaktifkan motor DC) yang dilubangi, sehingga jika dimasukkan pada rangkaian pendeteksi pada bagian yang berlubang akan memberikan data 1 pada bit port mikrokontroller, namun pada bagian yang tidak berlubang akan menghalangi pengiriman data sehingga akan memberikan data 0 pada bit port mikrokontroller. Desain kartu dapat dilihat pada gambar 3.9. pada gambar 3.9.a. adalah desain kartu pembuka pintu dan gambar 3.9.b. adalah desain kartu reset . Pada bagian yang diarsir adalah bagian kartu yang dilubangi. Penulis mendesain sehingga kartu dapat memberikan data 00000010b untuk kartu pembuka dan 00000001b kepada rangkaian

pendeteksi yang akan menginformasikan pada mikrokontroller.

Gambar 3.9. Desain Kartu : a. Kartu Pembuka ; b. Kartu reset .

4. ANALISA ALAT DAN PENGAMBILAN DATA

Uji coba alat ini bertujuan untuk mendapatkan data agar alat yang dibuat berjalan dan beroperasi sesuai dengan yang diinginkan. Adapun uji coba alat ini dibagi menjadi 4 bagian untuk memudahkan pengambilan data yaitu uji catu daya, uji rangkaian pendeteksi, uji rangkaian relay, dan alarm.

4.1. Catu Daya

Gambar 4.1. Titik Pengambilan Data Catu Daya

Sistem kerja dari alat ini adalah menggunakan catu daya dengan tegangan 5 volt dan 12 volt. Tegangan 5 volt dibutuhkan untuk tegangan sumber IC mikrokontroller, buzzer, serta seven segment. Yang menggunakan regulator LM 7805 yang merupakan jenis regulator 2 fase. Sedangkan tegangan 12 volt dibutuhkan sebagai tegangan sumber relay. Dengan tegangan sumber 220 volt AC dan tegangan efektif sebesar 12 volt AC.

Page 33: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

Tabel 4.1. Titik Pengambilan Data Catu Daya Titik A Titik B Titik C

Tegangan (V)

Arus (mA)

Tegangan (V)

Arus (mA)

Tegangan (V)

Arus (mA)

12,12 5,83

14,57 340 5,77 45,4

4.2. Rangkaian Pendeteksi (Optocoupler)

Gambar 4.2. Titik Pengambilan Data Rangkaian Pendeteksi

Pada rangkaian ini menggunakan 8 buah optocoupler jenis GP1S53V yang dikoneksikan ke port 3 (pin 10 sampai 17 pada mikrokontroller AT89S52). Masing-masing optocoupler akan memberikan data 1 bit dari port 3, sehingga ke 8 optocoupler akan memberikan 8 bit data pada port 3 (pin 10 sampai 17)

Dalam pengambilan data pada rangkaian ini diambil 2 keadaan yaitu pada keadaan normal dan keadaan aktif (pada saat kartu dimasukan). Pada keadaan awal dibagi menjadi dua keadaan yaitu pada saat semua optocoupler terhalang dan tidak terhalangoleh kartu. Sedangkan keadaan aktif dibagi menjadi tiga keadaan yaitu pada saat dimasukan kartu benar, kartu reset, dan saat keadaan salah (buzzer bunyi).

Tabel 4.2. Data Pengukuran Rangkaian Pendeteksi Pada Keadaan Normal

Kondisi

P3.7 (V)

P3.6 (V)

P3.5 (V)

P3.4 (V)

P3.3 (V)

P3.2 (V)

P3.1 (V)

P3.0 (V)

Tidak Terhalang

2,69 3,92 4 3,88 3,32 3,20 3,44 3,27

Terhalang

0,87 0,89 0,88 0,87 0,88 0,87 0,88 0,87

Tabel 4.3. Data Pengukuran Rangkaian

Pendeteksi Pada Keadaan Aktif Kondisi P3.7

(V) P3.6 (V)

P3.5 (V)

P3.4 (V)

P3.3 (V)

P3.2 (V)

P3.1 (V)

P3.0 (V)

Kartu Benar

0,87 0,88

0,89 0,88 0,87

0,88

3,81

0,87

Keadaan Salah

3,16 3,35

3,16

3,22

3,77

3,86

3,8 2,57

Kartu Reset

0.87 0,88

0,78

0,88

0,78 V

0,87

0,78

3,79

4.3. Rangkaian Relay

10kBD139

Relay2

1N4001

12 v

MOTORPintu

P2.0

S1

S2

Gambar 4.3. Titik Pengambilan Data Rangkaian Relay

Adapun cara pengambilan data dari rangkaian relay tersebut yaitu dengan mengukur tegangan dan arus pada titik A,B, dan C. Pengukuran arus dan tegangan ini berfungsi untuk mengetahui besar dari nilai arus serta tegangannya ketika transistor dalam keadaan cutoff (tidak aktif) ataupun ketika transistor dalam keadaan saturasi (aktif). Keadaan transistor ini sangat menentukan keadaan relay. Apabila transistor saturasi maka relay akan aktif dan sebaliknya jika transistor cutoff maka relay tidak aktif. Agar transistor saturasi maka arus pada basis harus besar. Agar arus basis besar perlu diberi tegangan pada basis yang disupply oleh mikrokontroller. Oleh karena itu untuk mengaktifkan transistor dan relay perlu diberi data 1 pada mikrokontroller di port 2.0 (pin 21).

Tabel 4.4. Data Pengukuran pada Rangkaian Relay

Cutoff (data 0) Saturasi (data 1) Titik Pengambilan

Data Tegangan

(V) Arus (µA)

Tegangan (V)

Arus (µA)

Titik A 1,06 7,8 5,4 7,8 Titik B 14,42 0,6 1,51 40x10³ Titik C 0 0 0 0

4.4. Alarm Rangkaian alarm ini memakai sebuah

buzzer. Sisi negative pada buzzer dihubungkan ke port 2.1 (pin 22) pada mikrokontroller sedangkan pada sisi positifnya dihubungkan ke VCC. Oleh karena itu buzzer akan aktif ketika diberi data 0 pada port 2.1 (bersifat aktif low). Pada saat buzzer mati, ketika diukur sisi negative

Page 34: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52

sisi yang tersambung ke port 2.1 menunjukan angka 5,27 V. Pada saat buzzer nyala, ketika diukur sisi negative sisi yang terhubung ke port 2.1 menunjukkan angka 1,6V.

5. PENUTUP 5.1. Kesimpulan

Adapun kesimpulan dari pembuatan tugas akhir ini adalah

Kunci elektris sebagai pengaman pintu rumah tinggal dengan menggunakan AT89S52 ini dapat memberikan suatu keamanan yang praktis..

Penggunaan rangkaian penggerak 8xseven segment yang terdiri dari 8 buah seven segment common anoda dan 8 buah transistor jenis PNP serta sebuah buzzer membuat pengaman pintu rumah tinggal ini lebih aman.

Penggunaan optocoupler pada rangkaian ini sebagai sensor cahaya mempermudah teknis pembuatan karena

bentuk dari optocoupler itu sendiri yang praktis (tetap) jadi tidak membutuhkan selubung sehingga membuat optocoupler ini lebih presisi.

5.2. Saran Saran dari penulis agar kunci elektris

sebagai pengaman pintu rumah tinggal ini dapat dikembangkan lagi untuk digunakan dalam berbagai aplikasi.

DAFTAR PUSTAKA

1. Agfianto Eko Putra, Belajar Mikrokontroller AT89C51/52/55 (Teori dan Aplikasi), edisi kedua, Gava Media, Yogyakarta, 2004.

2. Albert Paul Malvino, Ph.D., Prinsip-prinsip Elektronik, edisi kedua, Erlangga, Jakarta, 1979.

3. Buku Panduan Praktikum Elektronika Digital, 2004.

4. Delton. T. Horn, Basic Electricity and Electronics, Mcgraw-Hill International, 1993.

5. Frank D. Petruzela, Elektronik Industri, Andi, Yogyakarta, 2001.

6. Lukman Rosyidi, Elvanto Yanuar Ikhsan, Modul Training Mikrokontroller 8051 Level Basic, Prasimax, Depok, 2001.

7. Paulus Andi Nalwan, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Elex Media Komputindo, Jakarta, 2003.

8. http://www.elektroindonesia.com/elektro/tut34.gif, 12 Desember 2005.

9. http://www.alldatasheet.com, 12 Desember 2005.

Page 35: KUNCI ELEKTRIS MIKROKONTROLLER AT89S52