TUGAS AKHIR - Jam pasir digital berbasis mirokontroler AT89S51 - USD Repository

  

TUGAS AKHIR

JAM PASIR DIGITAL BERBASIS

MIKROKONTROLER AT89S51

Diajukan untuk Memenuhi Salah Satu Syarat

Memperoleh Gelar Sarjana Teknik

  

Program Studi Teknik Elektro

  Disusun oleh :

  

YOHANES SINUNG NUGROHO

NIM : 025114071

PROGRAM STUDI TEKNIK ELEKTRO

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

  

2007

  DIGITAL SAND CLOCK BASED ON MICROCONTROLLER AT89S51 FINAL PROJECT Presented as Partial Fulfillment of the requirements To Obtain the Sarjana Teknik Degree In Electrical Engineering By : YOHANES SINUNG NUGROHO Student ID Number : 025114071 ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT SCIENCE AND TECHNOLOGY FACULTY SANATA DHARMA UNIVERSITY YOGYAKARTA 2007

  

Pernyataan Keaslian Karya

  Saya menyatakan dengan sesungguhnya bahwa tugas akhir yang saya tulis ini tidak memuat karya atau bagian orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

  Yogyakarta, Oktober 2007 Penulis

  Yohanes Sinung Nugroho

HALAMAN MOTTO DAN PERSEMBAHAN

  

^âÑxÜáxÅut{tÇ~tÇ àâztá t~{|Ü |Ç| M

  Pada atas hidup, talenta, penyertaan,

  ”Tuhan Yesus Kristus” mukjizat dan penebusan-Nya yang selama ini menyertai langkahku.

  Untuk bapak “Andhi Suhardi” ibu “Mariyani” atas dukungan, doa dan bimbingan yang tiada henti, pembelajaran atas hidup dan kasih yang selama ini aku terima.

  Untuk kakakku dan adikku “Mas Nanang, Mbak Lena, Adikku

  

Bintang” atas dorongan semangat dan nasehat serta terimakasih untuk segala

  yang telah engkau berikan. Yang kita perlukan hanyalah kebersamaan kita, dengan itu kita bisa melalui segalanya.

  Ê]|~t lxáâá `xÇz{xÇwt~|? à|wt~ twt çtÇz à|wt~ ÅâÇz~|Ç w| wâÇ|t |Ç|Ê

  

JAM PASIR DIGITAL BERBASIS

MIKROKONTROLER AT89S51

Nama : Yohanes Sinung Nugroho

NIM : 025114071

  

INTISARI

  Jam pasir digital berbasis mikrokontroler merupakan jam pasir elektronik, yang cara kerja dan tampilannya seperti jam pasir manual. Jam pasir digital ini menggunakan 32 led sebagai penampil yang tersusun dalam 10 baris. Dan 2 seven sebagai penampil pengaturan waktu tunda.

  segmnent

  Pengendali jam pasir ini menggunakan mikrokontroler sebagai perangkat yang bertugas untuk menentukan keputusan-keputusan selama proses pengendali berjalan. Proses pengendali dilakukan untuk menentukan tunda waktu dan penyalaan led. Dalam jam pasir digital ini menggunakan seven segment untuk menampilkan informasi, yakni besarnya tunda waktu. Mikrokontroler yang digunakan adalah AT89S51, yang dalam proses komunikasi dengan komponen-komponen yang lain menggunakan komunikasi secara paralel.

  Alat jam pasir digital yang telah dikerjakan ini dapat bekerja sesuai dengan proses pengendalian yang diharapkan. Penundaan pada alat jam pasir digital ini, dapat diatur dari rentang waktu 00 menit sampai 60 menit.

  Kata kunci : jam pasir, led, mikrokontroler, tunda waktu

  

ABSTRACT

  Digital sand clock based on microcontroller is electronic sand glass, that is the appearance and operational of like manual sand glass. this digital sand clock apply 32 led as display is structured in 10 line. And 2 seven segmnent as display delay timing.

  This controller of sand clock uses microcontroller as peripheral with the task that is used to determine decisions during processing of controller are run. Controller processing is purpose to determine the time delay and active the led. In this digital sand clock uses seven segments for presenting information, which the levels of time delay. AT89S51 is a microcontroller that used, in process of communications with other components using parallel communications.

  The device of digital sand clock can work according to the expected operation process. Delay in this digital sand clock device, can be arrange from time stretch of 00 minute until 60 minutes.

  Keyword: sand clock, led, microcontroller, time delay

KATA PENGANTAR

  Terima kasih Tuhan Yesus Kristus, sehingga perancangan dan penyusunan tugas akhir JAM PASIR DIGITAL ini dapat terselesaikan dengan baik.

  Tugas akhir ini bertujuan untuk memenuhi salah satu syarat untuk memperoleh gelar sarjana Teknik, jurusan Teknik Elektro Universitas Sanata Dharma

  Dalam penyusunan tugas akhir ini, banyak sekali bimbingan, saran dan masukan yang sangat bermanfaat bagi penulis yang telah diberikan oleh berbagi pihak demi terselesainya penyusunan tugas akhir ini.

  Untuk itu dengan segala kerendahan hati, penulis mengucapkan banyak terima kasih kepada :

  1. Romo Ir. Greg. Heliarko, S.J., S.S., B.S.T., M.A., M.Sc., selaku dekan Fakultas Sains dan Teknologi.

  2. Bapak A. Bayu Primawan, S.T., M.Eng., selaku ketua Jurusan Teknik Elektro.

  3. Ibu B. Wuri Harini, S.T., M.T., selaku dosen pembimbing I yang telah meluangkan waktunya untuk memberikan bimbingan, masukan, dorongan dan bantuan, sehingga penulis dapat menyelesaikan tugas akhir ini.

  4. Bapak Ir. Tjendro selaku dosen pembimbing II atas bimbingan, ide-ide dan bantuannya sehingga penulis dapat menyelesaikan tugas akhir ini.

  5. Ayahku Andhi Suhardi dan Ibuku Mariyani yang telah memberikan kasih dan sayangnya, doa, dorongan, semangat. Terima kasih buat segala yang telah engkau berikan.

  6. Buat Mas Nanang, Mbak Magdalena yang membiayai Kuliahku

  7. Teman-teman, Wawan (T-cuz) ”Terima kasih buat semua bantuan yang sudah kamu berikan”, Oscar ”Terima kasih buat Pentium II-nya”.

  8. Teman-teman bimbingan Ibu Wuri ”Hary, Yoga, Ido, Doni (Lele), Anton (Plentonx), Memen, Gepeng, Deni (Chino), Dhanny, Deri, Andhex”.

  9. Teman-teman elektro 2002 : ”Robi, Andi S, Dhika, Pandu, Andreas (Bule)”

  10. Teman-teman kost JMC ”Made, Endhok, Agung, Koko, Yuli, Andhek, Broto, Lambang”.

  11. Teman-teaman kost Tangkadas ”Franky, Heri, Fandy, Purba, Si Boss”.

  12. Segenap dosen-dosen Teknik Elektro atas segala bantuan yang telah diberikan selama penulis menimba ilmu di bangku kuliah.

  13. Laboran teknik elektro : Mas Suryono, Mas Mardi dan Mas Broto.

  14. Segenap Karyawan, Sekretariat Teknik, atas bantuan yang telah diberikan.

  Dan semua pihak yang tidak dapat disebutkan satu persatu, karena keterbatasan tempat, atas saran, ide, dan dukungannya yang telah diberikan hingga tugas akhir ini terselesaikan.

  Dengan segala kerendahan hati juga, penyusun menyadari bahwa tugas akhir ini masih jauh dari sempurna. Oleh karena itu, segala kritik dan saran yang membangun akan penyusun terima denga senang hati.

  Yogyakarta, Oktober 2007 Penulis

  

DAFTAR ISI

HALAMAN JUDUL ............................................................................................ i HALAMAN JUDUL ............................................................................................ ii

HALAMAN PENGESAHAN.............................................................................. iii

HALAMAN PERNYATAAN KEASLIAN KARYA ........................................ v

HALAMAN MOTTO DAN PERSEMBAHAN................................................. vi

  

INTISARI ............................................................................................................. vii

ABSTRACT .......................................................................................................... viii

KATA PENGANTAR.......................................................................................... ix

DAFTAR ISI......................................................................................................... xii

DAFTAR GAMBAR............................................................................................ xvi

DAFTAR TABEL ................................................................................................ xviii

DAFTAR LAMPIRAN ........................................................................................ xix

  BAB I PENDAHULUAN.............................................................................. 1 1.1 Judul ...............................................................................................

  1 1.2 Latar Belakang ...............................................................................

  1 1.3 Batasan Masalah ............................................................................

  2 1.4 Tujuan ............................................................................................

  2 1.5 Metode Penelitian ..........................................................................

  3 BAB II DASAR TEORI.................................................................................. 4 2.1 Mikrokontroler ...............................................................................

  4

  2.1.1 Arsitektur Mikrokontroler AT89S51 ................................. 4

  2.1.2 Oganisasi Memori AT89S51 ............................................. 7

  2.1.2.1 Memori Program ................................................. 8

  2.1.2.2 Memori Data ....................................................... 9

  2.1.2.3 Ram Internal........................................................ 10

  2.1.2.4 Tabel Tengok (Look Up Table)........................... 11

  2.1.2.5 Intruksi-intruksi Register Khusus ....................... 12

  2.1.3 Mode Pengalamatan ........................................................... 13

  2.1.4 Timer dan Counter dalam AT89S51 .................................. 14

  2.1.4.1 Sarana Timer/Counter AT89S51......................... 15

  2.1.4.2 Mode Kerja Timer 0 dan Timer 1........................ 16

  2.1.4.3 Register Pengatur Timer ...................................... 18

  2.1.5 Sistem Interupsi pada AT89S51......................................... 20

  2.1.5.1 Struktur Interupsi ................................................ 20

  2.1.5.2 Mengaktifkan dan Menon-Aktifkan Interupsi .... 21

  2.1.5.3 Tingkat Prioritas Interupsi................................... 21

  2.1.5.4 Teknik Polling..................................................... 22

  2.1.5.5 Pemrosesan Interupsi .......................................... 22

  2.1.5.6 Vektor-Vektor Interupsi ...................................... 23

  2.1.5.7 Perancangan Program Interupsi .......................... 23

  2.2 Transistor Sebagai Saklar............................................................... 24

  2.3 Seven Segment ................................................................................ 26

  2.4 Decoder BCD................................................................................. 27

  2.5 LED (Light Emitting Diode) sebagai Penampil ............................. 29

  BAB III PERANCANGAN ............................................................................. 30

  3.1 Diagram Blok Rangkaian............................................................... 30

  3.2 Perancangan Rangkaian ................................................................. 31

  3.2.1 Rangkaian Switch ............................................................... 32

  3.2.2 Pangkaian Unit Pengolah ................................................... 33

  3.2.3 Rangkaian Indikator ........................................................... 34

  3.2.4 Rangkaian Tampilan Seven Segment ................................. 37

  3.3 Perancangan Software .................................................................... 39

  3.3.1 Diagram Alir Program Menyalakan Led (Flowchart) ...... 42

  3.3.2 Diagram Alir (Flowchart) Panggil Proses Tombol............. 43

  3.3.3 Diagram Alir (flowchart) Penampil Waktu pada Seven

  Segment .............................................................................. 44

  3.3.4 Diagram Alir (flowchart) Pemberian Tunda pada Aliran Led.......................................................................... 46

  BAB IV HASIL PENGAMATAN DAN PEMBAHASAN ............................ 48 4.1 Prinsip Kerja ..................................................................................

  48

  4.2 Pengamatan Perpindahan Aliran Led............................................. 49 4.3 Pengamatan Tunda Waktu .............................................................

  50

  4.4 Pengamatan Tiap Rangkaian.......................................................... 54

  4.4.1 Rangkaian Tombol ............................................................. 54

  4.4.2 Rangkaian Led ................................................................... 54

  4.4.3 Rangkain Seven Segment .................................................... 57 4.5 Pembahasan Program .....................................................................

  57

  4.5.1 Subroutine Pengaturan Tunda ............................................ 57

  4.5.2 Penyalaan Led .................................................................... 58

  4.5.3 Subroutine Cek Tombol ..................................................... 59

  4.5.4 Subroutine Tampilan pada Seven Segment ........................ 61

  4.5.5 Subroutine Tunda Waktu ................................................... 62

  BAB V PENUTUP........................................................................................... 66 5,1 Kesimpulan ....................................................................................

  66 5.2 Saran...............................................................................................

  66 DAFTAR PUSTAKA ........................................................................................... 67

  

DAFTAR GAMBAR

Gambar 2.1 Blok Diagram AT89S51 ................................................................ 5Gambar 2.2 Peta Memori Interupsi.................................................................... 8Gambar 2.3 Susunan Bit dalam Register TMODE ............................................ 18Gambar 2.4 Susunan Bit dalam Register TCON ............................................... 18Gambar 2.5 Jenis Transistor dan Simbol Transistor .......................................... .. 24Gambar 2.6 Rangkaian Skema Dasar Konfigurasi

  Saklar Menggunakan transistor...................................................... 24

Gambar 2.7 Seven segment ................................................................................ 26Gambar 2.8 Seven Segment Common Anode ..................................................... 26Gambar 2.9 Seven Segment Common Catode .................................................... 26Gambar 2.10 Simbol IC 7447 .............................................................................. 27Gambar 2.11 Tampilan Seven Segment Menggunakan IC 7447.......................... 28Gambar 2.12 Fisik LED ...................................................................................... 29Gambar 3.1 Diagram Blok Rangkaian............................................................... 30Gambar 3.2 Layout Jam Pasir Digital ................................................................ 31Gambar 3.3 Rangkaian Switch ........................................................................... 32Gambar 3.4 Rangkaian mikrokontroler ............................................................. 33Gambar 3.5 Rangkaian Cuplikan dari Rangkaian LED Indikator ..................... 34Gambar 3.6 Rangkaian LED Indikator .............................................................. 36Gambar 3.7 Rangkaian Penampil Waktu pada Seven Segment ......................... 37Gambar 3.8 Pergerakan Led............................................................................... 41Gambar 3.9 Flowchart Program Utama............................................................. 42Gambar 3.10 Flowchart Panggil Proses Tombol................................................. 43Gambar 3.11 Flowchart Penampil Waktu pada Seven Segment.......................... 45Gambar 3.12 Flowchart Pemberian Tunda Waktu pada Aliran Led ................... 46Gambar 4.1 Layout Jam Pasir Digital ................................................................ 48Gambar 4.2 Perpindahan Aliran Led dengan Tunda Waktu 3 menit................. 49

  

DAFTAR TABEL

Tabel 2.1 Fungsi Alamat Interupsi................................................................. 8Tabel 2.2 Instruksi Membaca Tabel Tengok.................................................. 11Tabel 2.3 Tingkat Prioritas Interupsi............................................................. 22Tabel 2.4 Vektor-Vektor Interupsi ................................................................. 23Tabel 2.5 Tabel Kebenaran IC 7447 .............................................................. 28Tabel 4.1 Data Pengamatan Tunda Waktu..................................................... 50Tabel 4.2 Data Pengamatan Waktu Tunda Tiap Baris Led............................ 51Tabel 4.3 Data Pengamatan Rangakain Tombol............................................ 54Tabel 4.4 Data Pengamatan Tegangan pada Transistor ................................. 55Tabel 4.5 Data Masukan untuk Port 1 dan Port 2 .......................................... 58Tabel 4.6 Hubungan antara Data Biner dengan Led ...................................... 58Tabel 4.7 Data Perbandingan Waktu Tunda dengan Seven Segment............. 60

  

LAMPIRAN

  Datasheet ................................................................................................................ L1 Listing Program...................................................................................................... L2 Rangkaian Lengkap Jam Pasir Digital ................................................................... L7

BAB I PENDAHULUAN

  1.1 Judul

  Jam Pasir Digital Berbasis Mikrokontroler AT89S51

  1.2 Latar Belakang

  Dengan semakin pentingnya arti sebuah waktu, maka manusia mulai mencari cara untuk meminimalisasi atau mengatur waktu seefisien mungkin dengan berbagai cara untuk memperoleh kinerja yang baik dengan waktu yang relatif singkat dan tepat waktu atau dengan istilah lain yaitu Time Is Money. Salah satu cara untuk mewujudkan efisiensi waktu ini adalah menggunakan sebuah jam yang diberi nama sebagai Jam Pasir. Jam Pasir berbeda dengan jam biasa yang umumnya digunakan sehari-hari.

  Jam pasir banyak diaplikasikan pada perusahaan-perusahaan yang menawarkan jasa makanan siap saji atau dikenal dengan istilah Fast Food.

  Penggunaan jam pasir ini sangat diperlukan untuk menghasilkan pelayanan yang cepat dan efisien, selain dapat digunakan untuk beberapa aplikasi lain misalnya untuk penghitungan waktu pada saat melaksanakan ujian praktek atau kolokium. Untuk mewujudkan hal ini, salah satunya dibuat sebuah Jam Pasir elektronik yang

  Alasan lain pembuatan dari jam pasir elektronik ini dapat juga dijadikan sebagai materi bahan praktikum mikrokontroler. Keuntungan selain sebagai bahan materi praktikum adalah :

  1. Dapat mengatur waktu yang dibutuhkan pasir untuk berpindah dari tabung LED satu ke tabung LED yang lain.

  2. Dapat juga dijadikan sebagai hobi elektronik.

  1.3 Batasan Masalah

  Mengingat akan banyaknya jenis-jenis jam yang dihasilkan dan dibuat oleh manusia yang mempunyai fungsi dan aplikasi berbeda, maka penulis perlu memberikan suatu batasan agar ruang lingkup dari pembahasan masalah tidak terlalu luas pembahasannya. Pembatasan masalah hanya didasarkan dari penggunaan dan pengaturan.

  1. Waktu jam pasir berbasis Mikrokontroller AT89C51.

  2. Menggunakan 32 buah LED sebagai penampil.

  3. Menggunakan setting waktu counter up atau counter down.

  4. Menggunakan 2 buah seven segment untuk menampilkan setting menit.

  1.4 Tujuan

  Tujuan utama dalam pembuatan jam pasir ini adalah untuk menerapkan dan merealisasikan sebagian dari pengetahuan mengenai sistem pemrograman yang telah dipelajari sebelumnya selama kuliah. Disamping itu, tujuan yang lain yang ingin dicapai adalah untuk membuat sistem pemrograman jam pasir yang sebelumnya dilakukan secara manual menjadi lebih modern.

  Adapun tujuan pembuatan alat sebagai tugas akhir ini untuk memenuhi persyaratan akademis dalam menyelesaikan pendidikan sarjana Strata-1 (S1) pada jurusan Teknik Elektro Universitas Sanata Dharma.

1.5 Metode Penelitian

  Metode yang digunakan dalam penyusunan Tugas Akhir ini dilakukan dengan beberapa tahap yaitu :

  1. Observasi, pengumpulan data-data melalui pembacaan buku-buku teori pendukung tugas akhir di perpustakaan USD. Selain itu melalui informasi- informasi dan keterangan-keterangan dari internet, dosen pembimbing tugas akhir dan teman-teman.

  2. Perancangan, penyediaan seluruh komponen yang dibutuhkan selanjutnya merakit dan membuat alat.

  3. Pengujian dan pengetesan alat yaitu menguji secara langsung cara kerja alat kemudian mengumpulkan data-datanya dan menyusunnya sebagai data hasil akhir dalam laporan tugas akhir.

  4. Kesimpulan, yaitu menganalisa secara keseluruhan hasil kerja alat kemudian mengambil kesimpulan dari data-data yang didapat.

  5. Penulisan laporan.

BAB II DASAR TEORI 2.1. Mikrokontroler. Mikrokontroler sebagai suatu terobosan teknologi mikroprosesor dan

  mikrokomputer, hadir memenuhi kebutuhan pasar dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah banyak) sehingga harganya menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih baik dan canggih. Dengan alasan demikian mikrokontroler banyak digunakan oleh berbagai kepentingan untuk menciptakan suatu kreasi elektronika yang beraneka ragam.

2.1.1. Arsitektur Mikrokontroler AT89S51.

  Blok diagram lengkap dari Mikrokontroler AT89S51 seri AT89 (Keluarga 51) Atmel akan diperlihatkan secara jelas pada Gambar 2.1:

  Bagian-bagian dari blok diagram diatas dapat dijelaskan sebagai berikut : a. Register A.

  Register A (akumulator) yang menempati lokasi pada alamat E0h digunakan sebagai register untuk penyimpanan data sementara dalam program, instruksinya mengacu sebagai register A.

Gambar 2.1 Blok Diagram AT89S51 [1] b. Register B.

  Register B (lokasi F0h) digunakan selama operasi perkalian dan pembagian, untuk instruksi lain dapat diperlakukan sebagai register Scratch pad (papan coret- c. Program Status Word (PSW).

  Register PSW (lokasi D0h) mengandung informasi status program.

  d. Stack Pointer.

  Register Stack Pointer (SP) pada lokasi 81h merupakan register dengan panjang 8-bit, digunakan dalam proses simpan dan ambil dari/ke stack. Nilainya akan dinaikkan sebelum data disimpan menggunakan intruksi PUSH dan CALL. Walau

  

Stack bisa menempati lokasi di mana saja dalam RAM, register SP akan selalu

  diinisialisasikan ke 07h setelah adanya reset, hal ini menyebabkan stack berawal di lokasi 08h.

  e. Data Pointer.

  Register Data Pointer atau DPTR mengandung DPTR untuk byte tinggi (DPH) dan byte rendah (DPL) yang masing-masing berada di lokasi 83h dan 82h, bersama-sama membentuk register yang mampu menyimpan alamat 16 bit. Dapat dimanipulasi sebagai register 16-bit atau sebagai dua register 8-bit yang terpisah.

  f. Port 0, Port 1, Port 2, dan Port 3.

  P0, P1, P2 dan P3 masing-masing menempati lokasi 80h, 90h, A0h dan b0h merupakan pengunci-pengunci (latches), yang digunakan untuk menyimpan data yang akan dibaca atau ditulis dari/ke port, masing-masing Port 0, Port 1, Port 2 dan Port 3.

  g. Serial Data Buffer.

  Serial data buffer (SBUF) pada lokasi 99h sebenarnya terdiri dari dua register yang terpisah yaitu register penyangga pengirim (transmit buffer) dan penyangga penerima (receive buffer). Pada saat data disalin ke SBUF, maka data sesungguhnya dikirim ke penyangga pengirim dan sekaligus mengawali transmisi data serial, sedangkan pada saat data disalin dari SBUF, maka sebenarnya data tersebut berasal dari penyangga penerima.

  h. Timer Register.

  Pasangan register-register (TH0, TL0) di lokasi 8Ch dan 8Ah, (TH1, TL1) dilokasi BDh dan 8Bh serta (TH2, TL2) di lokasi CDh dan CCh merupakan register- register pencacah 16-bit untuk masing-masing Timer 0, Timer 1 dan Timer 2. i. Capture Register.

  Pasangan register (RCAP2H, RCHP2L) yang menempati lokasi CBh dan CAh merupakan register Capture untuk mode Timer 2 capture. Pada mode ini, sebagai tanggapan terjadinya suatu transisi sinyal di kaki (pin) T2EX (pada AT89C52/55), TH2 dan TL2 disalin masing-masing ke RCAP2H dan RCP2l. Timer

  

2 juga memiliki mode isi ulang otomatis 16-bit dan RCAP2H serta RCAP2L

digunakan untuk menyimpan nilai isi ulang tersebut.

  j. Control Register.

  Register-register IP, IE, TMOD, TCON, T2CON, T2MOD, SCON dan PCON berisi bit-bit kontrol dan status untuk sistem interupsi, Pencacah/Pewaktu dan port serial yang akan dijelaskan nanti.

2.1.2. Oganisasi Memori AT89S51.

  Mikrokontroler AT89S51 memiliki ruang alamat memori data dan program yang terpisah. Pemisahan memori program dan data tersebut membolehkan memori data dapat diakses dengan alamat 8-bit, sehingga dapat dengan cepat dan mudah disimpan dan dimanipulasi oleh CPU 8-bit. Walaupun demikian, alamat memori data 16-bit bisa juga dihasilkan melalui register DPTR.

2.1.2.1 Memori Program.

  Pada Gambar 2.2 dibawah ini ditunjukkan pemetaan bagian bawah dari memori program. Setelah reset, CPU segera mengerjakan program mulai dari lokasi 0000h.

Gambar 2.2 Peta Memori Interupsi [1]Tabel 2.1 Fungsi Alamat Interupsi [1]

  Alamat Fungsi Interupsi 0000h Reset 0003h Interupsi Internal 0

  000Bh Timer 0013h Interupsi Internal 1

  001Bh Timer

  1 0023h Port Serial 0033h Timer

  2 Sebagaimana ditunjukkan pada Gambar 2.2 di atas, masing-masing interupsi diletakkan pada lokasi yang sudah tetap dalam memori program. Sebuah interupsi menyebabkan CPU melompat ke lokasi interupsi yang bersangkutan, yaitu letak dari lokasi 0003h, jika interupsi digunakan, maka layanan rutin interupsi ini harus dituliskan pada lokasi ini, jika tidak, maka lokasi tersebut bisa dipakai sebagai memori program serba guna. Untuk lebih jelas perhatikan tabel 2.1.

  Lokasi-lokasi layanan interupsi tersebut menempati lokasi-lokasi dengan jarak 8-byte : 0003h untuk eksternal interupt 0, 000Bh untuk timer 0, 0013h, untuk

  

Eksternal Interupt 1, 001Bh untuk timer 1 dan seterusnya. Jika suatu rutin layanan

  interupsi sangat pendek (kurang dari 8 byte), maka seluruh rutin bisa disimpan pada lokasi yang bersangkutan (sesuai dengan interupsi yang digunakan). Jika terlalu panjang (lebih atau sama dengan 8-byte), maka harus digunakan suatu perintah lompat ke lokasi rutin interupsi yang sebenarnya (dilokasi lain dalam memori program).

2.1.2.2 Memori Data.

  Memori data dapat berupa memori data internal dan memori data eksternal. kita dapat menentukan memori data eksternal hingga 64K byte. Alamat memori data

  

eksternal bisa 1 atau 2 byte. Alamat satu byte sering digunakan untuk membantu satu

  atau lebih jalur I/O dalam penghalamanan RAM. Alamat dua byte dapat dipakai dalam kasus jika byte alamat tinggi dikirim melalui port 2. Memori data internal memiliki ruang memori dibagi menjadi tiga blok, yang dikenal sebagai 128 bawah (lower 128), 128 atas (upper 128) dan register fungsi khusus (Special Function Register = SFR).

  Alamat memori data internal selalu 8-bit atau 1-byte, yang konsekuensinya hanya mampu mengalamati hingga 256 byte saja. Namun demikian, mode-mode pengalamatan RAM internal (faktanya) bisa mengakomodasi hingga 384-byte. Pengaksesan langsung (direct addressing) dengan alamat diatas 7Fh mengakses suatu memori, sedangkan pengaksesan tak langsung (indirect addressing) dengan alamat di atas 7Fh mengakses ruang memori lain yang berbeda. Sehingga terlihat 128 atas dan SFR menempati blok yang sama, 80h hingga FFh, walaupun secara fisik terpisah.

  RAM Internal yang memiliki 128-byte dipetakan. 32 byte bawah dikelompokkan menjadi 4 bank dan 8 register (R0 hingga R7). Dua bit pada PWS (Program Status Word) digunakan untuk memilih kelompok register mana yang digunakan. Arsitektur ini membolehkan penggunaan ruang kode secara lebih efisien, karena instruksi-intruksi register lebih pendek dari pada instruksi-instruksi yang menggunakan pengalamatan langsung. 16 byte berikutnya, di atas bank-bank register membentuk suatu blok ruang memori yang bisa teralamati per bit. Kumpulan instruksi mikrokontroler ini memiliki berbagai pilihan instruksi- instruksi bit tunggal dan instruksi-instruksi ini mampu secara langsung mengalamati 128 bit dalam area ini. Alamat-alamat bit ini adalah 00h hingga 7Fh. Semua byte yang berada didalam 128 bawah dapat diakses baik secara langsung maupun tidak langsung. Bagian 128 atas dari RAM hanya ada di dalam piranti yang memiliki RAM berukuran 256 byte.

2.1.2.3. Ram Internal.

  Instruksi MOV <tjn>, <sbr> membolehkan data dipindah-pindah antar lokasi dalam RAM internal atau lokasi-lokasi SFR tanpa melalui akumulator. Perlu dicatat bahwa untuk semua mikrokontroller Atmel Seri AT89C51, stack tersimpan dalam RAM internal. Intstruksi PUSH pertama kali akan menaikkan isi SP (stack pointer) kemudian menyalin data byte yang terkait ke dalam lokasi yang yang ditunjuk SP. PUSH dan POP hanya menggunakan pengalamatan langsung untuk mengidentifikasi

  

byte yang disimpan atau dikembalikan (ditarik dari ruang Stack), jika

  diimplementasikan lokasinya dapat mencapai 128 (upper 128) atas tetapi tidak mengganggu ruang SFR.

  Jika piranti mikrokontroler yang digunakan tidak melakukan implementasi

  bagian 128 atas dan SP akan menunjuk pada lokasi di 128 atas tersebut, maka data byte yang di PUSH akan hilang serta instruksi POP menjadi tidak menentu. Instruksi-instruksi transfer data mencakup sebuah instruksi MOV 16 bit (MOV DPTR,# data 16) yang dapat digunakan untuk inisialisasi DPTR dalam penggunaan Tabel Tengok atau look-up-tabel dalam memori program atau untuk akses data eksternal 16-bit.

  2.1.2.4. Tabel Tengok ( Look Up Table)

  Pada Tabel 2.2 di bawah ini memperlihatkan dua instruksi yang dapat digunakan membaca tabel tengok yang tersimpan dalam memori program.

Tabel 2.2 Instruksi Membaca Tabel Tengok [1]

  Intruksi Fungsi Waktu Eksekusi (µd)

  MOV A,@A+DPTR Baca memori program dilokasi

  2

(A+DPTR)

MOV A,@A+PC Baca memori program dilokasi (A+PC)

  2 Karena kedua instruksi ini hanya mengakses memori program saja, maka

  tabel tengok hanya bisa dibaca saja, tidak mungkin diremajakan atau update. Jika akses tabelnya ke memori program eksternal, maka tanda bacanya melalui kaki PSEN.

  Instruksi MOVC yang pertama pada tabel di atas mampu mengakomodasi sebuah tabel dengan 256 entri, dengan indeks atau nomor baris 0 hingga 255. Angka

  

indeks yang diinginkan disimpan dalam akumulator dan DPTR di set menunjuk ke

  alamat lokasi awal tabel yang bersangkutan. Dengan demikian perintah MOVC A,@A+DPTR digunakan untuk menyalin entri tabel yang dikehendaki ke dalam akumulator. Instruksi MOVC yang satunya juga sama, hanya saja menggunakan PC sebagai alamat dasarnya (bukan DPTR).

  Biasanya tabel tengok diakses dalam suatu subrutin, pertama kali angka indeks entri tabel tengok yang akan dibaca disimpan dalam akumulator, kemudian

  subrutin yang terkait dipanggil misalnya :

  MOV A, INDEKS_TABEL CALL TABEL

  Subrutin TABEL bisa berisi sebagai berikut : TABEL : MOVC A,@A+PC

  RET Pada tabel dituliskan segera setelah instruksi RET (return) dalam memori program. Tipe tabel semacam ini bisa diisi hingga 255 entri, dengan indeks 1 hingga

  255. Indeks 0 tidak dapat digunakan, karena pada saat instruksi, PC mengandung alamat dari instruksi RET, dengan demikian indeks 0 akan menunjuk pada instruksi RET tersebut.

2.1.2.5. Intruksi-intruksi Register Khusus.

  Bank-bank register, yang masing-masing berisi R0 hingga R7 atau 8 register, dapat diakses melalui instruksi yang op-kodenya mengandung 3-bit spesifikasi register (000 untuk R0, 001 untuk R1 hingga 111 untuk R7). Pengaksesan register dengan cara demikian bisa menghemat penggunaan kode instruksi, karena tidak memerlukan sebuah byte untuk alamat. Saat instruksi tersebut dikerjakan, satu dari delapan register pada bank yang terpilih yang diakses.

  Beberapa instruksi hanya dikhususkan untuk suatu register tertentu. Misalnya suatu instruksi yang hanya bekerja pada akumulator saja. Sehingga tidak memerlukan alamat byte untuk menunjuk ke akumulator tersebut. Dalam hal ini, op- kodenya sendiri telah mengandung penunjuk ke register yang benar. Instruksi yang mengacu akumulator sebagai A akan dikodekan dengan op-kode spesifikakumulator.

  Tidak semua alamat pada SFR (register fungsi khusus) digunakan, alamat- alamat yang tidak digunakan tidak diimplementasikan pada chip. Jika dilakukan usaha pembacaan pada alamat-alamat yang tidak terpakai tersebut akan menghasilkan data acak dan penulisannya tidak menimbulkan efek sama sekali.

  Pengguna perangkat lunak sebaiknya jangan menuliskan “1” pada lokasi-lokasi ‘tak bertuan’ tersebut, karena dapat digunakan untuk mikrokontroler generasi selanjutnya.

  Dengan demikian, nilai-nilai reset atau non aktif dari bit-bit baru ini akan selalu ‘0’ dan nilai aktifnya adalah ‘1’.

2.1.3. Mode Pengalamatan.

  Mode pengalamatan pada keluarga MCS 51 terdiri dari dua mode yaitu Mode

  Pengalamatan Langsung (Direct Addressing) dan Mode Pengalamatan Tidak Langsung (Indirect Addressing). Dalam Pengalamatan Langsung, operan-operan ditentukan berdasarkan alamat 8-bit (1 byte) dalam suatu instruksi. Hanya RAM data internal dan SFR saja yang bisa diakses secara langsung.

  Mode Pengalamatan tak Langsung dalam pengalamatannya, intruksi

  menentukan suatu register yang digunakan untuk menyimpan alamat operan. Baik RAM internal maupun RAM eksternal dapat diakses secara tak langsung. Register alamat untuk alamat-alamat 8-bit bisa menggunakan Stack Pointer atau RO atau R1 dari bank register yang dipilih. Sedangkan untuk alamat 16-bit hanya bisa menggunakan register pointer data 16-bit atau DPTR. Beberapa instruksi menggunakan operan berupa register yang menyimpan alamat data disimpan. Dalam hal ini digunakan tanda “at” (@) yang dapat digunakan bersama dengan R0, R1, DPTR atau PC tergantung dari instruksi yang digunakan. Misalnya :

  ADD A,@R0 MOVC A,@A+PC

  Instruksi pertama menyalin data yang tersimpan di alamat yang ditunjukkan R0 ke akumulator. Sedangkan instruksi kedua untuk data yang disimpan dalam @A+PC.

2.1.4. Timer dan Counter dalam AT89S51.

  Pada dasarnya sarana masukkan yang satu ini merupakan seperangkat pencacah biner (binary counter) yang terhubung langsung ke saluran data mikrokontroller, sehingga mikrokontroler bisa membaca kondisi pencacah dan bila diperlukan mikrokotroler dapat pula merubah kondisi pencacah tersebut.

  Seperti layaknya pencacah biner, saat sinyal detak (clock) yang diberikan sudah melebihi kapasitas pencacah, maka pencacah akan memberikan sinyal

  

overflow atau limpahan, sinyal ini merupakan suatu hal yang penting dalam

  pemakaian pencacah dan terjadinya limpahan pencacah ini bisa dicatat dalam suatu register. Selain itu, sinyal detak yang diberikan ke pencacah bisa dikendalikan dengan mudah.

  Sinyal detak yang diberikan ke pencacah dibedakan menjadi 2 macam, yang pertama adalah sinyal detak yang dengan frekuensi tetap sudah diketahui besarnya dan yang kedua adalah sinyal detak dengan frekuensi yang bisa bervariasi.

  Jika sebuah pencacah bekerja dengan frekuensi tetap, dikatakan pencacah tersebut bekerja sebagai timer atau pewaktu, karena kondisi pencacah tersebut setara dengan waktu yang bisa ditentukan secara pasti.

  Jika sebuah pencacah bekerja dengan frekuensi yamg bervariasi, dikatakan pencacah tersebut bekerja sebagai counter atau pencacah, kondisi pencacah tersebut menyatakan banyak pulsa detak yang sudah diterima. Untai pencacah biner tersebut merupakan pencacah biner naik (count up binary counter).

2.1.4.1. Sarana Timer/Counter AT89S51.

  Keluarga mikrokontroler AT89S51 dilengkapi dengan dua perangkat

  

timer/counter , masing-masing dinamakan sebagai Timer 0 dan Timer 1. Perangkat

timer/counter tersebut merupakan perangkat keras yang terpadu dalam SFR.

  Pencacah biner timer 0 diakses melalui register TL0 (timer 0 low byte, memori data

  

internal alamat 6Ah) dan register TH0 (timer 0 high byte, memori data internal

  alamat 6Ch). Pencacah biner timer 1 diakses melalui register TL1 (timer 1 low byte, memori data internal alamat 6Bh) dan register TH1 (timer 1 high byte, memori data internal alamat 6Dh).

  Pencacah biner timer/counter AT89S51 merupakan pencacah biner 16 bit naik (count up binary counter) yang mencacah dari 000Fh sampai FFFFh, saat kondisi pencacah berubah dari FFFFh kembali ke 000Fh akan timbul sinyal limpahan (overflow).

  Untuk mengatur kerja timer/counter tersebut digunakan 2 register tambahan yang dipakai bersama oleh timer 0 dan timer 1. Register tambahan tersebut adalah register TCON (timer control register, memori data internal alamat 88h, bisa di alamat per bit) dan register TMOD (timer mode register, memori data internal alamat 89h, tidak bisa di alamati per bit). TL0, TH0, TL1, dan TH1 merupakan SFR (Special Function Register) yang dipakai untuk membentuk pencacah biner timer 0 dan timer 1. Kapasitas keempat register tersebut masing-masing 8-bit, bisa disusun menjadi 4 macam mode pencacah biner.

2.1.4.2. Mode Kerja Timer 0 dan Timer 1.

  Pada mode 0, 1 , dan 2, timer 0 dan timer 1 masing-masing bisa dibuat timer 0 bekerja pada mode 1 dan timer 1 bekerja pada mode 2, atau kombinasi lainnya sesuai dengan keperluan. Sedangkan pada mode 3 TL0, TH0, TL1 dan TH1 dipakai bersama-sama untuk menyusun sistem timer yang terpadu (khusus) a. MODE 0 – Pencacah Biner 13-bit

  Pencacah biner dibentuk dengan TLx (bisa TL0 atau TL1) sebagai pencacah biner 5 bit (meskipun kapasitas sesungguhnya 8 bit). Limpahan dari pencacah biner 5-bit ini dihubungkan ke THx (bisa TH0 atau TH1) membentuk sebuah untai pencacah biner 13-bit, limpahan dari pencacah 13-bit ini ditampung di TFx (bisa TF0 atau TF1) yang berada di dalam register TCON. Pada saat terjadi limpahan (dari 1FFFh ke 0000h) maka flag interupsi timer (TF1) akan diset (=1). b. MODE 1 – Pencacah Biner 16-bit Mode ini sama dengan mode 0, hanya saja register TLx dipakai sepenuhnya sebagai pencacah biner 8-bit, sehingga kapasitas pencacah biner yang terbentuk adalah 16-bit. Seiring dengan sinyal detak, kondisi pencacah biner 16-bit ini dimulai dari 0000h, 0001h, 0002h, ……, sampai FFFFh, kemudian kembali menjadi 0000h (pada saat itu terjadi sinyal limpahan atau overflow pada TFx).

  c. MODE 2 – Pencacah Biner 8-bit dengan Isi Ulang TLx dipakai sebagai pencacah biner 8-bit, sedangkan THx dipakai untuk menyimpan nilai yang disisikan ulang TL

  X setiap kali kondisi TLx melimpah atau

  berubah dari FFh menjadi 00h. Dengan cara tersebut bisa diperoleh sinyal overflow yang frekuensinya bisa ditentukan oleh nilai yang disimpan dalam THx.

  d. MODE 3 – Gabungan Pencacah Biner 16-bit dan 8-bit Pada mode 3 TL0, TH0, TL1 dan TH1 dipakai untuk membentuk 3 rangkaian pencacah, yang pertama adalah untai pencacah biner 16-bit tanpa fasilitas pemantau sinyal limpahan atau overflow yang dibentuk dengan TL1 dan TH1. Yang kedua adalah TL0 yang dipakai sebagai pencacah biner 8-bit dengan TF0 sebagai sarana pemantau limpahan. Pencacah biner ketiga adalah TH0 yang dipakai sebagai pencacah biner 8-bit dengan TF1 sebagai sarana pemantau limpahan, dengan demikian TH0 yang mengendalikan interupsi timer 1 (TF1).

  Mode 3 biasanya digunakan pada aplikasi yang membutuhkan sebuah timer

  atau pencacah 8-bit tambahan. Dengan timer 0 pada mode 3, AT89C51 seakan-akan memilki 3 buah timer. Pada mode 3 ini, timer dapat dihidupkan dan dimatikan menggunakan M1 dan M0 pada register TMOD. Pada kasus seperti ini, timer 1 masih dapat digunakan oleh port serial untuk menghasilkan baud rate, atau aplikasi apa saja yang tidak membutuhkan interupsi.

2.1.4.3. Register Pengatur Timer.

  Register timer digunakan untuk mengatur timer. Register pengatur timer

  terdiri dari register TCON dan register TMOD. Register-register tersebut merupakan

  

register untuk mengatur kerja timer 0 dan timer 1. Perhatikan Gambar 2.3 dan 2.4 di

  bawah: TMODE-TIMER MODE REGISTER

Gambar 2.3 Susunan Bit dalam Register TMODE [1]

  TCON-TIMER CONTROL REGISTER

  Register TMOD dan register TCON merupakan register yang digunakan

  untuk mengatur kerja timer 0 dan timer 1, susunan bit register TMOD dan TCON masing-masing ditunjukkan dalam gambar A dan B. Register TMOD dibagi menjadi 2 bagian secara simetris, bit 0 sampai 3 (TMOD.0 s/d TMOD.3) dipakai untuk mengatur timer 0, sedangkan bit 4 sampai 7 (TMOD.4 s/d TMOD.7) dipakai untuk mengatur timer 1, penjelasan sebagai berikut : Bit M0/M1 dipakai untuk menentukan Mode Timer seperti yang ditunjukkan pada tabel digambar 2.3 a. Bit C/T dipakai untuk mengatur sumber sinyal detak yang diberikan ke pencacah biner. Jika C/T = 0, maka sinyal detak diperoleh dari osilator kristal yang frekuensinya sudah dibagi 12, sedangkan jika C/T = 1 maka sinyal detak diperoleh dari kaki T0 (untuk timer 0) atau kaki T1 (untuk timer 1).

  b. Bit gate merupakan pengatur saluran sinyal detak. Bila bit GATE = 0, saluran sinyal detak hanya diatur oleh bit TRx (bisa TR0 atau TR1 pada register TCON).

  Bila bit GATE = 1 kaki INT0 (untuk timer 0) atau kaki INT1 (untuk timer 1) yang dipakai untuk mengatur sinyal detak.

  Register TCON dibagi menjadi 2 bagian, 4 bit yang pertama (bit 0 sampai bit