TUGAS AKHIR
SISTEM PEMANTAU WAKTU PROSES DAN HASIL PRODUKSI PADA INDUSTRI PENGEMASAN BARANG DENGAN MEMANFAATKAN KOMUNIKASI SERIAL PADA MIKROKONTROLER AT89S52 Diajukan Guna Melengkapi Salah Satu Persyaratan Untuk Menempuh Gelar Sarjana ( S1) Program Study Teknik Elektronika
Disusun Oleh : KUNTO YUDHITOMO (0140312-046)
PROGRAM STUDI TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI UNIVERSITAS MERCU BUANA JAKARTA 2007
ABSTRAK
Teknologi sekarang ini telah berkembang dengan pesat dan salah satunya dibidang mikrokontroler. adanya perkembangan teknologi tersebut salah satunya bisa dimanfaatkan di bidang industri. Pada proyek akhir ini dibuat sebuah alat monitoring waktu dan hasil produksi, yang meliputi pembuatan perangkat keras (hardware) dan perangkat lunak (software). Alat ini menggunakan mikrokontroler at89s52 sebagai unit pengendali dan pengolahan data berdasar input data yang diterima, keypad akan menginput data target dan tact time. Sensor ldr sebagai pendeteksi barang akan menginput data yang memicu perubahan data actual dan different. Hasil input dan pengolahan data tadi ditampilkan kedalam seven segment sebagai out put penampilkan data target, tact time, actual dan different. Data-data tadi yang akan dimonitor selama proses produksi berlangsung. tact time adalah waktu proses produksi, yaitu waktu yang diperlukan untuk menghasilkan 1 buah output ( barang jadi ). target adalah jumlah output yang dikehendaki. actual adalah jumlah output yang sudah dihasilkan. different adalah selisih jumlah target dan actual.
DAFTAR ISI
HALAMAN JUDUL LEMBAR PENGESAHAN SURAT PERNYATAAN
………………………………………….….. …………………………………….……………
i ii
KATA PENGANTAR ……………………………………………………….. iii ABSTRAK ………………………………………………………………....…
v
DAFTAR ISI ……………………………………………………………….… vi DAFTAR GAMBAR ………………………………………………………… ix DAFTAR TABEL …………..………………………………………………. xii BAB I
BAB II
PENDAHULUAN 1.1
Latar belakang masalah…………………………………. 1
1.2
Permasalahan……………………………………………. 2
1.3
Maksud dan tujuan……………………………………… 3
1.4
Pembatasan masalah…………………………………….. 4
1.5
Metodologi………………………………………………. 5
DASAR TEORI 2.1
Sistem minimum mikrokontroler AT89S52 …………...
6
2.1.1
mikrokontroler AT89S52 ……………………..
6
2.1.2
Perangkat Instruksi Mirokontroller Msc-51 ….
26
2.1.3
Perangkat Lunak yang berhubungan dengan Mikrokontroler ……………………….. 30
BAB III
BAB IV
2.2
Transistor sebagai Saklar …………………………….. 34
2.3
Relai DC ……………………………………………… 35
2.4
Dioda cahaya LED …………………………………… 37
2.5
LDR ………………………………………………….. 37
2.6
Penampil 7-segmen ………………………………… 38
2.7
Saluran 20 mA Current Loop ………………………… 40
PERANCANGAN SISTEM 3.1
Deskripsi perancangan …..……………………………. 42
3.2
Perancangan mikrokontroler 1 …………..……………. 47
3.3
Perancangan mikrokontroler 2 ……..…………………. 52
3.4
Perancangan mikrokontroler 3 …………………..……. 55
3.5
Perancangan catu daya …………………………….…. 57
3.6
Perancangan keypad …………………………………. 58
3.7
Perancangan display …………………………………... 61
PENGUJIAN DAN ANALISA 4.1
Pengoperasian alat …………………………………….. 65
4.2
Sensor …………………………………………………. 67
4.3
Perhitungan waktu ……………………………………. 70
4.4
Perhitungan baud rate dan data serial ………………… 72
4.5
Pengiriman data dari mikrokontroler 1 ke mikrokontroler 2 …………………………………... 73
4.6
Penerimaan data oleh mikrokontroler 2 …………….… 77
4.7
Pengiriman dan penerimaan data actual, target dan different dari mikrokontroler 2 ke mikrokontroler 3 ...
BAB V
82
PENUTUP
5.1
Kesimpulan …………………………………………... 90
5.2
Saran ………………………………………………….. 92
DAFTAR PUSTAKA ……………………………………………………..… 93 LAMPIRAN ………………………………………………………….……… 94
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah Perkembangan teknologi elektronika yang semakin pesat terutama setelah ditemukan piranti mikrokontroler dan mikroprosesor. Dengan menggunakan piranti – piranti tersebut berbagai macam alat yang digunakan untuk mempermudah aktivitas manusia dalam kehidupan sehari – hari. Salah satu penerapan mikrokontroler adalah digunakan sebagai otomatisasi proses industri diantaranya adalah sebagai sistem pemantau waktu proses produksi pada industri perakitan barang. Untuk menghasilkan satu buah output barang jadi diperlukan standar waktu agar jumlah target output perusahaan dapat terpenuhi. Pada suatu proses produksi yang baik, diperlukan untuk memonitor waktu dan hasil dari proses produksi yang sedang berlangsung. Proses pemantauan ini akan membandingkan target yang ditetapkan dengan hasil produksi yang sedang dihasilkan. Dengan mengetahui perbedaan hasil ini secara langsung, pihak – pihak yang berkaitan dengan sistem produksi akan dapat mengambil kesimpulan dan keputusan yang lebih cepat dan tepat tentang proses produksi yang sedang dilaksanakan apakah proses itu berjalan dengan baik atau ada masalah di proses tersebut. Pihak – pihak ini antara lain Leader Produksi, Operator, Engineering Process, Supervisor dan Manajer Produksi.
Informasi yang lebih cepat ini akan sangat berpengaruh terhadap efisiensi baik itu waktu, biaya dan tenaga. Kita bisa membayangkan apabila terjadi masalah di proses produksi, tetapi masalah ini baru diketahui oleh pimpinan perusahaan setelah satu hari sesudahnya hanya karena tidak adanya informasi yang tepat. Hal ini akan mempengaruhi proses produksi selanjutnya dan mengakibatkan delay dalam produksi. Nilai – nilai yang dipantau terdiri dari nilai tact time, target (total & real time), actual dan different. Tact time adalah waktu proses produksi, yaitu waktu yang diperlukan untuk menghasilkan 1 buah output ( barang jadi ). Target total adalah jumlah output yang dikehendaki oleh perusahaan yang bersangkutan untuk tiap line atau group. Target real timel adalah jumlah output yang dikehendaki oleh perusahaan yang bersangkutan untuk tiap line atau group pada kurun waktu tertentu. Actual adalah jumlah output yang dihasilkan oleh line atau group tersebut. Different adalah perbedaan jumlah target dan actual.
1.2 Permasalahan Permasalahan pada tugas akhir ini adalah cara memonitoring hasil dan waktu proses produksi, serta pengiriman data hasil monitoring tadi ketempat yang berjauhan. Untuk dapat melakukan monitoring dan pengiriman data tersebut tersebut diperlukan software (program) mikrokotroler sebagai unit pengendali yang akan mengolah data berdasar nilai-nilai yang dimasukkan yaitu nilai target dan nilai tact time, serta pengiriman data serial antar mikrokontroler.
1.3 Maksud dan Tujuan Tujuan penulisan tugas akhir ini adalah membuat sebuah sistem pemantau untuk memonitor waktu produksi dan hasil produksi secara realtime dengan memanfaatkan mikrokontroler at89s52 sebagai unit pengendali, keypad sebagai input data, sensor ldr sebagai pendeteksi barang dan display seven segment sebagai tampilan data target, tact time, actual dan different selama proses waktu produksi. Serta pemanfaatan komunikasi serial untuk pengiriman data antar mikrokontroler sehingga data bisa diakses ditempat lain yang letaknya berjauhan
1.4 Pembatasan Masalah Penulisan tugas akhir ini membatasi pada permasalahan yang berhubungan dengan judul tugas akhir yaitu “ Sistem Pemantau Waktu Proses dan hasil Produksi pada Industri Pengemasan Barang dengan Memanfaatkan Komunikasi Serial pada Mikrokontroler AT89S52”
dengan
ruang lingkup pembahasan
sebagai berikut. -
Mikrokontroler AT89S52 pengolah data
tact time, actual, target dan
pengirim informasi serial. -
Mikrokontroler AT89S52 penerima data secara serial.
-
Penampil 7 segment ( data tact time, target, actual, different ).
-
Keypad sebagai alat untuk memasukkan data target dan tact time.
-
Buzzer sebagai penanda telah tercapainya tact time.
-
Sensor sebagai sistem pendeteksi output.
-
Sistem perangkat lunak yang mengendalikan mikrokontroler.
1.5 Metodologi Tugas akhir ini ditekankan pada perancangan dan perakitan rangkaian agar dapat menunjukan unjuk - kerja yang sesuai dengan yang direncanakan. Perangkat keras ini dirancang sesederhana mungkin namun selama tidak menurunkan unjuk - kerja sistem secara keseluruhan. Untuk selanjutnya dioptimalkan fasilitas yang dimiliki oleh mikrokontroler AT89S52 untuk menunjang unjuk kerja - sistem. Metode yang akan digunakan untuk mencapai keberhasilan dalam penelitian ini adalah sebagai berikut: 1. Studi pustaka untuk mempelajari cara kerja mikrokontroler AT89S52 baik arsitektur maupun programnya serta komponen komponen elektronik pendukungnya. 2. Metode eksperimen •
Merancang dan menguji display seven segment, keypad matrix sebagai input dan sistem minimal mikrokontroler AT89S52 sebagai
•
Pembuatan
diagram
alir
untuk
pemrograman
yang
akan
dimasukkan kedalam mikrokontroler AT89S52 •
Implementasi semua rancangan ke sistem yang sebenarnya, baik pembuatan hardware maupun software.
•
Menguji kinerja sistem secara keseluruhan.
•
Menganalisa hasil dan membuat kesimpulan
1.6 Sistematika Penulisan Laporan Laporan akhir penelitian ini berupa sebuah karya tulis (skripsi) yang direncanakan terdiri atas lima bab. Sistematika penulisanya adalah sebagai berikut: BAB I :
PENDAHULUAN Pada Bab I dibahas perihal latar belakang masalah, pemecahan masalah, batasan masalah, maksud dan tujuan, dan sistematika penulisan.
BAB II:
LANDASAN TEORI Semua teori dan rumus yang merupakan acuan perancangan dan pembuatan rangkaian dijelaskan pada Bab II ini, yang meliputi penjelasan tentang gambaran alat, sifat, karakteristik, dan kegunaan komponen-komponen pendukung.
BAB III:
PERANCANGAN ALAT Pada bab ini diuraikan mengenai perancangan bagian – bagian sistem.
BAB IV:
PEMBAHASAN Dalam
Bab
IV
dibahas
tentang
pengoperasian
menganalisis tiap bagian dan keseluruhan sistem.
alat
dan
BAB V:
PENUTUP Merupakan bab akhir penyusunan laporan Tugas akhir, yang berisi tentang kesimpulan dan saran-saran dari penyusun.
BAB II DASAR TEORI
2.1 Sistem Minimum Mikrokontroler AT89S52 Sistem minimum adalah suatu sistem yang menggunakan komponen minimal sesuai dengan kebutuhan yang dapat melaksanakan tugas khusus. Mikrokontroler dapat dibagi menjadi 2 bagian yaitu. 1. Perangkat keras yang berupa wujud nyata dari mikrokontroler itu sendiri. 2. Perangkat lunak yang berupa program atau instruksi yang diisikan ke mikrokontroler. 2.1.1 Mikrokontroler AT89S52 Mikrokontroller 89S52 adalah salah satu anggota dari keluarga mikrokontroler 8051 dengan 4 kbyte Flash Ferom yang dikemas dalam paket 40 pin dengan catu daya tunggal. Diagram susunan kaki dan simbol logika untuk mikrokontroler 89S52 ditunjukkan pada Gambar 2.1.1. Fungsi Masing–masing kaki mikrokontroler 8951: Vcc,Gnd Port 0
: Catu daya 5V dan ground selama pengoperasian. : Port I/O 8 bit dengan saluran terbuka dua arah, termutiplek untuk alamat rendah (A7..A0) dan data (D0..D7).
Port 1
: Port I/O 8 bit quasi dua arah. Port ini dipakai untuk alamat rendah (A7..A0) selama pengujian dan pemrograman EPROM internal.
Port 2
: Port I/O 8 bit quasi dua arah. Port ini dipakai untuk alamat tinggi (A15-A8) ketika dipakai untuk eksternal memori, dan dipakai untuk alamat tinggi selama pemrograman dan pengujian EPROM internal.
Gambar 2.1 Susunan kaki-kaki mikrokontroler 89S52 Port 3
: Port I/O 8 bit quasi dua arah. Port ini juga memiliki fungsi khusus yaitu: - RXD (P3.0) : Masukan data port serial - TXD (P3.1) : Keluaran data port serial - INT0 (P3.2)
: Masukan interupsi 0 dari luar
- INT1 (P3.3) : Masukan interupsi 1 dari luar - T0 (P3.4) - T1 (P3.5)
: Masukan ke pencacah 1
- WR (P3.6)
: sinyal tulis untuk memori luar
- RD (P3.7) RS
: Masukan ke pencacah 0
: Sinyal baca untuk memori luar dari luar
: Transisi rendah ke tinggi pin ini (pada pendekatan 3V) akan mereset mikrokontroler
ALE/PRO : Dipakai untuk menangkap atau me-latch alamat rendah A0..A7) ke memori eksternal selama operasi normal. Menerima masukan pulsa program selama pemrograman EPROM internal. PSEN
: Merupakan Program Strobe Enable dimana keluaran PSEN adalah sinyal kontrol yang mengijinkan atau mengaktifkan program memori eksternal (EPROM eksternal) ke bus data selama operasi normal.
EA/Vpp
: Nilai tinggi, mikrokontroler 8051 menjalankan instruksi dari ROM/ EPROM internal jika PC (Program Counter) kurang dari 4096 byte. Ketika kondisi rendah, mikrokontroler menjalankan instruksi dari
ROM/EPROM eksternal (memori program luar). Pin ini juga menerima 21V untuk suplai tegangan pemrograman EPROM. XTAL1
: Masukan kepenguat osilator kristal atau masukan sumber osilator luar yang tersedia.
XTAL2
: Output dari penguat osilator.
Gambar 2.2 Diagram blok mikrokontroler 89S52
Arsitektur mikrokontroler terdiri atas : A. Instruction Decoder Berfungsi sebagai penerjemah program yang telah dibaca, serta mengendalikan sumber dan tujuan dari data seperti pada operasi fungsi dari Arithmetic Logic Unit (ALU)
B. Program Counter dan Data Pointer Register program counter (PC) merupakan register 16 bit yang digunakan untuk mengalamati lokasi instruksi program yang tersimpan dalam ROM. Register Data Pointer adalah register 16-bit, terbagi atas register DPH (Data Pointer High Order Byte) dan DPL (Data Pointer Low Orde Byte). DPTR digunakan dalam pengalamatan register tak langsung untuk memindahkan isi memori program, memindahkan variable data dari atau ke memori data luar, serta mencabang ruang alamat memori program sampai 64 kbytes. C. Register A dan B Register A, adalah akumulator yang digunakan dalam berbagai operasi termasuk aritmatika dan logika. Register B dengan register A digunakan untuk proses perkalian dan pembagian.
D. Register Program Status Word Register Program Status Word (PSW) terdiri atas 4 flags yang diapaki secara otomatis terhadap operasi matematika, yaitu carry flag (CY), auxiliary carry (AC), parity (P). Flag 0 (F0) dipakai untuk keperluan umum sedangkan RS0 dan
RS1 dipakai untuk pemilihan register bank. Flag-flag pada register PSW tersebut merupakan register yang dapat dialamati bit.
E. RAM Data Internal RAM data internal berkapasitas sebesar 128 byte terbagi dalam 3 bagian yang berbeda, yaitu: 1. Alamat 00h…1Fh yang membentuk 32 register yang terbagi dalam 4 bank yaitu bank 0 sampai bank 3, masing-masing mempunyai 8 register, yaitu R0 sampai R7. 2. Alamat 20h…2Fh merupakan daerah yang dapat dialamati secara bit. 3. alamat 30h…7Fh merupakan daerah memori yang dapat digunakan secara umum dan hanya dialamati secara byte.
F. Stack Pointer (SP) Register Stack Pointer (SP) menunjuk ke suatu alamat RAM internal yang terhubung dengan operasi tertentu untuk menyimpan dan mengambil data secara cepat.
Port 0, Port1, Port2, dan Port3 Empat port ini menyediakan 32 jalur I/O masing-masing 8 jalur I/O untuk melakukan perantaraan ke luar mikrokontroler.
G. Special Function Register (SFR) Special Function Register (SFR) merupakan register khusus yang menangani beberapa
perantaraan
CPU
dan
fungsi-fungsi
yang
ada
di
sekeliling
mikrokontroler.
Pewaktu dan Pencacah Mikrokontroler 89S52 mempunyai 2 pewaktu/pencacah (timer/counter) 16 bit yang digunakan untuk pengukuran interval waktu, lebar pulsa, mencacah kejadian, interupsi secara periodis, dan membangkitkan pulsa laju data serial.. Pewaktu dan pencacah dikendalikan oleh bit-bit dalam register Timer Control (TCON) dan Timer Mode (TMOD) seperti ditunjukkan Gambar 2.3 dan Gambar 2.4. Hasil pencacah 0 terletak pada register Timer Lower (TL0) dan register Timer High (TH0).
8 7 6 5 4 3 2 0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 Gambar 2.3 Register Timer Control (TCON) Timer Control (TCON) terdiri atas : Bit 7 6 5 4 3 2 1 0
Simbo l TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Fungsi Timer 1 overflow flag Timer 1 run control bit Timer 0 overflow flag Timer 0 run control bit External interrupt 1 edge flag External interrupt 1 signal control bit External interrupt 0 edge flag External interrupt 0 signal control bit
7 6 5 4 3 2 1 0 Gate C/T M1 M0 Gate C/t M1 M0 Timer 1
Timer 0
Gambar 2.4 Register Timer Mode
Timer Mode (TMOD) terdiri atas : Bit 7/3 6/2 5/1 4/0
Simbol Gate C/T M1 M0
Fungsi OR gate enable which controls RUN/STOP of timer Timer or counter selector for timer I/O Mode select bit 1 Mode select bit 0 M1 0 0 1 1
M0 0 1 0 1
Mode 0 1 2 3
Masukan pada untai pencacah adalah sebagai pencacah jika berasal dari sumber luar dan sebagai pewaktu bila masukan berasal dari sumber osilator internal. Masukan dari sumber luar atau dari osilator internal ditentukan oleh bit C/T. Jika menggunakan osilator internal maka bit C/T diset 0 dan bit Gate diset 0. sedangkan frekuensi osilator akan di bagi 12 sebelum masuk ke untai pencacah. Jika masukan dari sumber luar (T0 atau T1) maka bit Gate diset 1 dengan syarat INT0 dan INT1 tinggi. Pencacah diaktifkan dengan menset bit TR0 dan TR1. Pencacah akan berlangsung sampai terjadi luapan saat pencacah berguling dari FFFFh ke 0000h, dengan bit TF1 dan TF0 akan diset 1 dan permintaan interupsi dibangkitkan.
TMOD
mempunyai
2
register
kembar
4
bit,
mesing-masing
mengendalikan salah satu pewaktu. TCON mempunyai 4 bit orde tinggi untuk bit kendali pewaktu dan 4 bit orde rendah untuk bit kendali interupsi eksternal. Ada 4 mode yang dapat dikonfigurasi pada pewaktu/pencacah, yaitu: 1. Mode 0 (Pencacah dengan Praskala) Mode 0 merupakan pencacah atau pewaktu dengan menggunakan praskala. Register TH0/TH1 bekerja sebagai pencacah 8-bit dan TL0/TL1 Sebagai pencacah 5 bit. 2. Mode 1 (Pencacah 16 bit) Dalam mode ini register TH0/TL0 dan register TH1/TL1 digunakan sebagai pencacah 16 bit. 3. Mode 2 (Pencacah dengan Auto-reload) Mode 2 merupakan pencacah/pewaktu auto-reload. Register TL1/TL0 bekerja sebagai pencacah 8-bit TH1/TH0 digunakan untuk menahan suatu nilai tertentu yang akan disimpan ke TL1/TL0 pada setiap TL1/TL0 terjadi luapan, yaitu ketika berguling dari FFh ke 00, dan akan membangkitkan pulsa untuk pengiriman dan penerimaan data pada port serial. 4. Mode 3 Untuk pencacah 1, pengubahan ke mode 3 akan menghentikan pencacah 1, yang merupakan cara lain menggunakan TR1 (TCON.6) untuk menghentikan dan menjalankan pencacah 1. Untuk pencacah 0, TH0 sebagai pencacah 8 bit yang diaktifkan oleh bit TR1 dan jika terjadi luapan bit TF1 akan diset 1. sedangkan bit TR1 dan
bit TF1 tidak dapat digunakan untuk mengendalikan pencacah 1. TL0 sebagai pencacah 8 bityang dikendalikan oleh bit Gate 0, C/T,TR0,TF0.
H. Sistem Interupsi Mikrokontroler 89S52 memilki 5 fasilitas interupsi dan dapat dibangkitkan pada saat meminta interupsi. Tiga interupsi dibangkitkan secara otomatis oleh operasi internal, yaitu pencacah 0 (TF0), pencacah 1 (TF1), dan komunikasi serial (R1 atau T1). Dua interupsi dibangkitkan oleh sinyal luar dari pin INT0 dan INT1. Permintaan interupsi diaktifkan dengan menset bit-bit yang terdapat dalam register IE. Sumber interupsi tersebut adalah seperti berikut 1. Interupsi dari luar Masukan interupsi berasal dari kaki INT0 (P3.2) dan INT1 (P3.3) yang dikendalikan oleh 4 bit bawah dari register TCON. Ketika IT0 dan IT1 di set satu, permintaan interupsi dari kaki INT0 dan INT1 akan diaktifkan oleh transisi dari keadaan tinggi ke rendah, atau sebaliknya jika IT0 dan IT1 diset ke 0, maka interupsi dari luar akan diaktifkan oleh level rendah atau 0. Flag interupsi IE0 dan IE1 akan diset 1 jika pada kaki INT0 dan INT1 telah diaktifkan. Flag IE0 dan IE1 akan diset kembali ke 0 pada saat interupsi dibangkitkan kemudian dilanjutkan dengan menjalankan program pelayanan interusi. 2. Interupsi dari pewaktu atau pencacah Interupsi ini terjadi pada saat pewaktu atau pencacah terjadi luapan, maka flag TF0 atau TF1 akan diset 1, kemudian interupsi akan dibangkitkan dan
setelah pelayanan interupsi di jalankan flag TF0 dan TF1 akan diset kembali ke 0. 3. Interupsi dari komunikasi serial Interupsi akan terjadi bila T1 diset 1 saat data serial telah selesai dikirim dan R1 diset 1 saat data serial telah diterima semua. Bit R1 dan T1 tidak di set kembali ke 0 oleh pemanggil program interupsi. Program yang menangani komunikasi data serial harus mereset R1 dan T1 ke 0 untuk operasi komunikasi serial berikutnya. 4. Reset Reset merupakan interupsi istimewa karena program tidak dapat mengabaikan aksi tegangan dari rendah ke tinggi pada pin RST, ketika perintah harus melompat ke alamat 0000h. untuk mereset mikrokontroler kaki reset harus ditahan tinggi K. Port Serial pada AT89S52 1. Operasi Serial Port AT89S52 mempunyai On Chip Serial Port yang dapat digunakan untuk komunikasi data serial secara Full Duplex sehingga Port Serial ini masih dapat menerima data pada saat proses pengiriman data terjadi. Untuk menampung data yang diterima atau data yang akan dikirimkan, 89S52 mempunyai sebuah register yaitu SBUF yang terletak pada alamat 99H di mana register ini berfungsi sebagai buffer sehingga pada saat mikrokontroler ini membaca data yang pertama dan data kedua belum diterima secara penuh, maka data ini tidak akan hilang.
Pada kenyataannya register SBUF terdiri dari dua buah register yang memang menempati alamat yang sama yaitu 99H. Register tersebut adalah Transmit Buffer Register yang bersifat write only (hanya dapat ditulis) dan Receive Buffer Register yang bersifat read only (hanya dapat dibaca). Pada proses penerimaan data dari Port Serial, data yang masuk ke dalam Port Serial akan ditampung pada Receive Buffer Register terlebih dahulu dan diteruskan ke jalur bus internal pada saat pembacaan register SBUF sedangkan pada proses pengiriman data ke Port Serial, data yang dituliskan dari bus internal akan ditampung pada Transmit Buffer Register terlebih dahulu sebelum dikirim ke Port Serial. Gambar 2.5 Blok diagram port serial
Port Serial 89S52 dapat digunakan untuk komunikasi data secara sinkron maupun asinkron. Komunikasi data serial secara sinkron adalah merupakan bentuk komunikasi data serial yang memerlukan sinyal clock untuk sinkronisasi di mana sinyal clock tersebut akan tersulut pada setiap bit pengiriman data sedangkan komunikasi asinkron tidak memerlukan sinyal clock sebagai sinkronisasi.
Gambar 2.6 Komunikasi sinkron dan komunikasi asinkron Pengiriman data pada komunikasi serial 89S52 dilakukan mulai dari bit yang paling rendah (LSB) hingga bit yang paling tinggi (MSB). 2. Komunikasi Sinkron Sinyal clock pada komunikasi sinkron diperlukan oleh peralatan penerima data untuk mengetahui adanya pengiriman setiap bit data. Tampak pada gambar 2.6 bahwa sinyal clock tersulut (positive edge) pada saat pengiriman bit yang pertama dan setiap perubahan bit data. Peralatan atau komponen penerima akan mengetahui adanya pengiriman bit yang pertama ataupun perubahan bit data dengan mendeteksi sinyal clock. Pada aplikasinya, komunikasi sinkron dari serial port AT89S52 selalu digunakan untuk mengakses shift register, PISO (Parallel In Serial Out) untuk proses penerimaan data dari PISO ke Port Serial AT89S52 atau SIPO (Serial In Parallel Out) untuk proses pengiriman data dari AT89S52 ke SIPO. Shift Register tersebut dapat berupa IC Shift Register seperti 74164, 74165 atau berupa internal shift register dari mikrokontroler lain seperti Port Serial AT89S52 pula. Gambar 3.2 menunjukkan kondisi yang terjadi pada saat pengiriman data dari Register
SBUF AT89S52 ke SIPO dan penerimaan data oleh Register SBUF dari PISO. Hal yang perlu diperhatikan apabila Shift Register menggunakan IC 74164 atau 74165 adalah, bentuk komunikasi serial Shift Register ini dimulai dari bit tertinggi (MSB) hingga bit terendah (LSB) sehingga data yang terkirim ataupun diterima selalu mempunyai posisi yang terbalik bobot bitnya.
Gambar 2.7 Pengiriman data 5AH dari port serial 89S52 ke SIPO 3. Komunikasi Asinkron Seperti telah disebutkan sebelumnya, komunikasi asinkron tidak memerlukan sinyal clock sebagai sinkronisasi, namun pengiriman data ini harus diawali dengan start bit dan diakhiri dengan stop bit seperti yang tampak pada gambar 3.2. Sinyal clock yang merupakan baudrate dari komunikasi data ini dibangkitkan oleh masing - masing baik penerima maupun pengirim data dengan frekwensi yang sama. Penerima hanya perlu mendeteksi adanya start bit sebagai awal pengiriman data, selanjutnya komunikasi data terjadi antar dua buah shift register yang ada pada pengirim maupun penerima. Setelah 8 bit data diterima, maka
penerima akan menunggu adanya stop bit sebagai tanda bahwa 1 byte data telah terkirim dan penerima dapat siap untuk menunggu pengiriman data berikutnya.
Gambar 2.8 Komunikasi UART Pada aplikasinya proses komunikasi asinkron ini selalu digunakan untuk mengakses komponen-komponen yang mempunyai fasilitas UART (Universal Asynchronous Receiver/Transmitter) seperti Port Serial PC atau Port Serial mikrokontroler yang lain. 4. Mode Operasi Port Serial Port Serial 89S52 mempunyai 4 buah mode operasi yang diatur oleh bit ke 7 dan bit ke 5 dari Register SCON (Serial Control). SCON
Gambar 2.9 Register SCON SM0: Serial Port Mode bit 0, bit Pengatur Mode Serial SM1: Serial Port Mode bit 1, bit Pengatur Mode Serial SM2: Serial Port Mode bit 2, bit untuk mengaktifkan komunikasi multiprosesor pada kondisi set.
REN: Receive Enable, bit untuk mengaktifkan penerimaan data dari Port Serial pada kondisi set. Bit ini di set dan clear oleh perangkat lunak. TB8: Transmit bit 8, bit ke 9 yang akan dikirimkan pada mode 2 atau 3. Bit ini di set dan clear oleh perangkat lunak
Tabel 2.1 Mode operasi port serial SM0 0 0 1 1
SM1 0 1 0 1
MODE 0 1 2 3
DESKRIPSI shift register 8 bit UART 8 bit dengan baund rate yang dapat diatur UART 9 bit dengan baund rate permanent UART 9 bit dengan baund rate yang dapat diatur
RB8: Receive bit 8, bit ke 9 yang diterima pada mode 2 atau 3. Pada Mode 1 bit ini berfungsi sebagai stop bit. TI: Transmit Interrupt Flag, bit yang akan set pada akhir pengiriman karakter. Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak RI: Receive Interrupt Flag, bit yang akan set pada akhir penerimaan karakter. Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak.
b. Mode 0 Shift Register 8 bit SCON
Gambar 2.10 SCON Mode 0 Pada Mode ini Port Serial berfungsi sebagai komunikasi data sinkron yang memerlukan sinyal clock sebagai sinkronisasi. P3.1/TXD pada 89S52 berfungsi sebagai Clock dan P3.0/RXD sebagai jalur pengiriman maupun penerimaan data. Pengiriman data dilakukan dengan menuliskan data yang akan dikirimkan ke dalam Register SBUF (gambar 3.3). Data akan dikirimkan secara serial sinkron
melalui P3.0/RXD beserta sinyal clock melalui P3.1/TXD dengan frekuensi 1/12 dari frekuensi kristal yang digunakan oleh osilator 89S52. Penerimaan data dilakukan dengan mengaktifkan bit REN (biasa dilakukan pada awal program) dan clear bit RI pada saat proses pengambilan data akan dilakukan. Pada saat kondisi RI di-clear maka pada siklus mesin berikutnya sinyal clock akan dikirim keluar melalui pin P3.1/TXD dan data yang ada pada P3.0/RXD akan digeser ke dalam SBUF. c. Mode 1 UART 8 bit dengan Baud Rate yang dapat diatur SCON
Gambar 2.11 SCON mode 1 Pada mode ini komunikasi data dilakukan secara 8 bit data asinkron yang terdiri 10 bit yaitu 1 bit start, 8 bit data dan 1 bit stop. Baudrate pada mode ini dapat diatur dengan menggunakan Timer 1. Tidak seperti pada mode 0, pada mode ini yang merupakan mode UART, fungsi-fungsi alternatif dari P3.0/RXD dan P3.1/TXD digunakan. P3.0 berfungsi sebagai RXD yaitu kaki untuk penerimaan data serial dan P3.1 berfungsi sebagai TXD yaitu kaki untuk pengiriman data serial. Hal ini juga berlaku pada modemode UART yang lain seperti mode 2 dan mode 3. Pengiriman data dilakukan dengan menuliskan data yang akan dikirim ke Register SBUF. Data serial akan digeser keluar diawali dengan bit start dan diakhiri dengan bit stop dimulai dari bit yang berbobot terendah (LSB) hingga bit berbobot tertinggi (MSB). Bit TI akan set setelah bit stop keluar melalui kaki
TXD yang menandakan bahwa proses pengiriman data telah selesai. Bit ini harus di-clear oleh perangkat lunak setelah pengiriman data selesai. Penerimaan data dilakukan oleh mikrokontroler dengan mendeteksi adanya perubahan kondisi dari logika high ke logika low pada kaki RXD di mana perubahan kondisi tersebut adalah merupakan bit start. Selanjutnya data serial akan digeser masuk ke dalam SBUF dan bit stop ke dalam bit RB8. Bit RI akan set setelah 1 byte data diterima ke dalam SBUF kecuali bila bit stop = 0 pada komunikasi multiprosesor (SM2 = 1). d. Mode 2 UART 9 bit dengan Baudrate permanen SCON Gambar 2.12 SCON mode 2 Pada mode ini komunikasi data dilakukan secara asinkron dengan 11 bit, 1 bit start, 8 bit data, 1 bit ke 9 yang dapat diatur dan 1 bit stop. Pada proses pengiriman data, bit ke 9 diambil dari Bit TB8 dan pada proses penerimaan data bit ke 9 diletakkan pada RB8. e. Mode 3 UART 9 bit dengan Baudrate yang dapat diatur SCON
Gambar 2.13 SCON mode 3 Mode ini sama dengan Mode 2, namun baudrate pada mode ini dapat diatur melalui Timer 1.
5. Inisialisasi dan akses Register Port Serial Untuk mengakses port serial, ada beberapa hal yang harus diatur terlebih dahulu dengan mengisi beberapa register tertentu yaitu: - Tentukan Mode Serial - Tentukan Baudrate Serial Proses penentuan mode serial dilakukan dengan mengisi SCON seperti yang telah dijelaskan pada Mode Operasi Serial.
6. Baudrate Serial Baud rate dari Port Serial 89S52 dapat diatur pada Mode 1 dan Mode 3, namun pada Mode 0 dan Mode 2, baudrate tersebut mempunyai kecepatan yang permanen yaitu untuk Mode 0 adalah 1/12 frekwensi osilator dan Mode 2 adalah 1/64 frekwensi osilator. Dengan mengubah bit SMOD yang terletak pada Register PCON menjadi set (kondisi awal pada saat sistem reset adalah clear) maka baud rate pada Mode 1, 2 dan 3 akan berubah menjadi dua kali lipat. Pada Mode 1 dan 3 baudrate dapat diatur dengan menggunakan Timer 1. Cara yang biasa digunakan adalah Timer Mode 2 (8 bit auto reload) yang hanya menggunakan register TH1 saja. Pengiriman setiap bit data terjadi setiap Timer 1 overflow sebanyak 32 kali sehingga dapat disimpulkan bahwa: Lama pengiriman setiap bit data = Timer 1 Overflow X 32 ...........(3.1) Baud rate (jumlah bit data yang terkirim tiap detik) = 1 Timer 1 Overflow x 32
Apabila diinginkan baudrate 9600 bps maka timer 1 harus diatur agar overflow setiap 1 detik 9600 x32 Timer 1 overflow setiap kali TH1 mencapai nilai limpahan (overflow) dengan frekwensi sebesar fosc/12 atau periode 12/fosc. Dari sini akan ditemukan formula sebagai berikut: Dengan frekuensi osilator sebesar 11,0592 MHz maka TH1 adalah 253 atau 12 x (256 − TH1) 1 = fosc 9600 x32 9600 =
fosc 12 x(256 − TH1) x32
0FDH. Selain variabel-variabel di atas, masih terdapat sebuah variabel lagi yang menjadi pengatur baudrate serial yaitu Bit SMOD pada Register PCON. Apabila bit ini set maka faktor pengali 32 pada formula 3.1 akan berubah menjadi 16. Oleh karena itu dapat disimpulkan formula untuk baudrate serial untuk Mode 1 dan Mode 3 adalah: Baud Rate =
fosc 12 x(256 − TH1) xK
Tabel 2.2 mode Serial dengan baudrate
2.1.2
Perangkat Instruksi Mirokontroller Msc-51
Keluarga msc-51 memiliki 256 perangkat instruksi, tetapi dalam penulisan ini yang akan dibahas hanya instruksi yang berkaitan dengan program yang dipakai saja. Seluruh instruksi dapat dikelompokkan dalam 4 bagian yang meliputi instruksi 1 byte sampai 4 byte. Perangkat instruksi mikrokontroller mcs-51 dapat dibagi menjadi lima kelompok yaitu: 1. Intruksi Transfer data Instruksi ini memindahkan data antara register ke register, memori ke memori, register ke memori, antarmuka register dan antar muka memori.. 2. Instruksi Aritmatika
instrusi ini melaksanakan operasi arismatika yang meliputi penjumlahan, pengurangan, penambahan satu, pengurangan satu, perkalian dan pembagian. 3. Instruksi logika dan manipulasi bit Melaksanakan
operasi
logika
AND,OR,XOR,
perbandingan,
dan
Pergeseran data. 4. Instruksi Percabangan Instruksi ini mengubah urutan normal pelaksanaan suatu program. Dengan instruksi ini program yang sedang di laksanakan akan mencabang kesuatu alamat tertentu. Instruksi percabangan dibedakan atas percabangan bersyarat dan percabangan tanpa syarat. 5. Instruksi Stack,I/O dan kontrol. Instruksi ini mengatur penggunaan stack, membaca/menulis port I/O, serta pengontrolan-pengontrolan. Perangkat Instruksi Mikrokontroller AT 89S52 1. ACALL (Absolute Call) Instruksi ini digunakan untuk memanggil sub-sub rutin program Format : ACALL (alamat kode) 2. ANL (Logical AND Immediate Data) Instruksi ini sebagai instruksi gerbang logika and, yang berfungsi sebagai pengali data terhadap nilai yang ditentukan. Format : ANL A,#data. Contoh : ANL A,#0001000B
Ini berarti data acumulator akan dikalikan dengan 00010000 Biner Jika A bernilai 11100001 maka hasilnya adalah 00000000 Jika A bernilai 11110001 maka hasilnya adalah 00010000 3. CJNE (Compare Indirect Address to Immediate Data) Instrksi ini akan membandingkan data langsung dengan lokasi memori yang dialamati oleh register R atau Akumulator A. apabila tidak sama maka instruksi akan menuju ke alamat kode. Format : CJNE R,#data,Alamat kode atau CJNE A,#data,Alamat kode 4. CLR (Clear Accumulator) Instruksi ini akan mereset data akumulator menjadi 00H. Format : CLR A
5. DEC (Decrement Indirect Address) Instruksi ini akan mengurangi isi lokasi memori yang ditujukan oleh register R dengan 1, dan hasilnya disimpan pada lokasi tersebut. 6. DJNZ (Decrement Register And Jump Id Not Zer) Instruksi ini akan mengurangi nilai register dengan 1 dan jika hasilnya sudah 0 maka instruksi selanjutnya akan dieksekusi. Jika belum 0 akan menuju ke alamat kode. Format : DJNZ Rr,Alamat Kode 7. INC (Increment Indirect Address) Instruksi ini akan menambahkan isi memori dengan 1 dan menyimpannya pada alamat tersebut.
Format : INC Rr 8. JB (Jump if Bit is Set) Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 1 maka akan menuju ke alamat kode dan jika 0 tidak akan menuju ke alamat kode. Format : JB alamat bit,alamat kode 9. JNB (Jump if Bit is Not Set) Instruksi ini akan membaca data per satu bit, jika data tersebut adalah 0 maka akan menuju ke alamat kode dan jika 1 tidak akan menuju ke alamat kode. Format : JNB alamat bit,alamat kode
10. JMP (Jump to sum of Accumulator and Data Pointer) Instruksi untuk memerintahkan loncat kesuato alamat kode tertentu. Format : JMP alamat kode. 11. MOV Instruksi ini untuk memindahkan isi akumulator/register atau data dari nilai luar atau alamat lain. Format : MOV a,#data (Memindahkan data ke accumulator) MOV R,A (Memindahkan Accumulator ke Register) MOV Pp,Pp (Memindahkan data port ke port) 12. ORL (Logical OR Immediate Data to Accumulator)
Instruksi ini sebagai instruksi Gerbang logika OR yang akan menjumlahkan Accumulator terhadap nilai yang ditentukan. Format : ORL A,#data Contoh : ORL A,#0001000B Ini berarti data acumulator akan dijumlahkan dengan 00010000 Biner Jika A bernilai 11100001 maka hasilnya adalah 11110001 Jika A bernilai 11110001 maka hasilnya adalah 11110001 13. RET (Return from subroutine) Intruksi untuk kembali dari suatu subrutin program ke alamat terakhir subrutin tersebut di panggil. Format : RET
14. SETB (Set Bit) Instruksi untuk mengaktikan atau memberikan logika 1 pada sebuat bit data. Format : SETB A.1 (memberikan logika 1 pada accumulator bit ke 1) SETB P1.1 (memberikan logika 1 pada Port 1 bit ke 1) 15. CLRB (Clear Bit) Instruksi untuk memberikan logika 0 pada sebuat bit data. Format : CLRB A.1 (memberikan logika 0 pada accumulator bit ke 1) CLRB P1.1 (memberikan logika 0 pada Port 1 bit ke 1)
2.1.3 Perangkat Lunak yang berhubungan dengan Mikrokontroler Untuk mengisi mikrokontroler AT89S52/AT89C52 dibutuhkan MCS51 ProgrammerBoard AT89S52/52, PC, dan disket instalasi berisi compiler dan program. Compiler dan program (atmel mcu software version 1.0) ini harus diinstal terlebih dulu ke dalam PC. Sebelum melakukan langkah-langkah pembuatan program assembler pindahkan dahulu file-file (51.exe, asm51.exe, h.exe, oh.exe, tppatch.exe dan tvdemo.exe) ke dalam direktori yang akan digunakan untuk menyimpan program.
Program assembler dapat dibuat dari beberapa editor teks diantaranya ms dos editor dan notepad, untuk menulis program assembly MCS51 mengikuti langkah – langkah sebagai berikut : 1. Jalankan program notepad (.txt) 2. Ketik listing progarm pada notepad, lalu simpan file tersebut pada folder yang ditunjuk 3. Jalankan ms dos promt dari menu start | programs | ms dos prompt 4. Tunjuk nama folder dari file.txt 5. Kompilasifile.txt dengan mengetik asm51 nama_file.txt pada ms dos prompt, komilasi file.txtx ini akan menghasilkan file dengan ekstensi .lst dan .obj
6. Jika terjadi kesalahan dalam kompilasi tesebut, bisa diperbaiki dengan membuka nama_file.txt dan perbaiki kesalahanya lalu lakukan kompilasi file.txt lagi. 7. Untuk membuat file dengan ekstensi .hex maka ketik oh nama_file.obj Langkah-langkah Mengisi program assembley ke chips adalah : 1. Pastikan kabel ISP telah terhubung LPT program 2. Hidupkan power board MCS 51 3. Jalankan program atmel mcu software version 1.0
Gambar 2.14 tampilan program 4. Pilih port LPT yang digunakan
5. Tentukan tipe atmel yang digunakan
Gambar 2.15 tampilan pemilihan tipe atmel 6. jika program menemukan tipe yang anda tentukan maka program menjadi sebagai berikut
Gambar 2.16 tampilan program mengenali chip 7. buka file hex
8. jalankan auto program 9. jalankan chips, insturuction -> run target
2.2. Transistor sebagai Saklar Transistor dapat bekerja di daerah aktif dan daerah jenuh. Apabila transistor dirancang bekerja di daerah aktif, maka transistor tersebut berfungsi sebagai penguat. Akan tetapi apabila transistor dirancang sebagai saklar maka transistor harus bekerja di daerah jenuh.
Transistor pada keadaan jenuh, jika VCE kurang dari VCE saturasi ( sekitar 0,2 volt ). Pada keadaan tersebut, besarnya tahanan antara kolektor dan emitor mendekati 0 Ω, sehingga arus Ic yang mengalir ke kolektor adalah maksimal. Pada konfigurasi emitor bersama bias tetap, untuk menentukan nilai nilai Rc dan Rb agar transistor jenuh, yang pertama kali ditentukan yaitu Ic. Vcc-Vce sat Ic = RC Ic Ib = ß Rb dapat dicari dengan rumus : Vcc-Vbe Ic = Ib vcc
Rc
vcc
Rb
Ic
out
Ib
Gambar 2.17 Konfigurasi emitor bersama bias tetap
Gambar 2.18 karakteristik transisitor 2.3. Relai DC Relai berfungsi untuk menghubungkan atau memutuskan aliran arus listrik yang dikontrol dengan memberikan tegangan dan arus tertentu di koilnya. Relai mempunyai 2 bagian penting yaitu komponen yang diberi inti besi dan pelat untuk menarik kontak – kontak. Besi yang dililiti kumparan digunakan sebagai magnet jika dialiri arus listrik, sedangkan pelat digunakan sebagai saklar yang menggerakkan kontak. Berdasarkan susunan kontaknya , relai dibagi menjadi ; 1. Relai NO ( Normally Open ), yaitu relai yang kontaknya akan tertutup jika dialiri arus listrik. 2. Relai NC ( Normally Close ), yaitu relai yang kontaknya akan terbuka jika dialiri arus listrik.
3. Relai CO ( Change Over ) atau relai tukar sambung, yaitu relai yang mempunyai kontak tengah yang tersambung dengan sebuah kontak dan apabila dialiri arus listrik, kontak tersebut akan terputus kemudian menyambung dengan kontak lainnya. Prinsip kerja relai dapat dijelaskan sebagai berikut : Jika kumparan diberi arus listrik searah, maka akan timbul medan magnet dan inti besi akan bersifat magnet, kemudian magnet ini akan menarik pelat didekatnya. Karena pelat terhubung dengan kontak, maka kontak akan berubah posisinya. Untuk memagnetisasi inti besi cukup digunakan arus kecil, sedangkan arus yang lebih besar dialirkan ke rangkaian.
Gambar 2.19 Konfigurasi relai
2.4. Dioda cahaya LED LED Adalah dioda kalau diberi panjaran maju, pertemuannya menegluarkan cahaya. Tingkat keterangan cahaya berbanding lurus dengan dengan arus maju yang mengalirinya. Arus maju berkisar 10 … 20 ma untuk kecerahan maximum, Proses pengkawatannya selalu diperlukan perlawanan deretan resistan bagi LED, guna membatasi kuat arus.
Gambar 2.20 Simbol LED 2.5. LDR Resistor peka cahaya atau fotoresistor adalah komponen elektronika yang resistansinya akan menurun jika ada penambahan intensitas cahaya yang mengenainya. Fotoresistor dapat merujuk pula pada light-dependent resistor (LDR), atau fotokonduktor. Fotoresistor dibuat dari semikonduktor beresistansi tinggi. Jika cahaya yang mengenainya memiliki frekuensi yang cukup tinggi, foton yang diserap oleh semikonduktor akan menyebabkan elektron memiliki energi yang cukup untuk meloncat ke pita konduksi. Elektron bebas yang dihasilkan (dan pasangan lubangnya) akan mengalirkan listrik, sehingga menurunkan resistansinya.
Gambar 2.21 Simbol LDR
106
OHM
105 104 103 102 0.5 1.0 1.5
2.0 2.5
LUMEN
Gambar 2.22 Karakteristik LDR 2.6. Penampil 7-segmen Penampil 7-segmen yang digunakan adalah penampil 7-segmen common anode. Masing masing segmen (dari a sampai g) berisi satu LED. Penampilpenampil yang digunakan mempunyai anode-anode yang saling dibutuhkan, sebagai hubungan tungggal (common anode). Untuk mengaktifkan segmensegmen LED pada penampil ini diperlukan tegangan rendah pada masukannya.
Gambar 2.23 Posisi segmen-segmen dari penampil
Prinsip Kerja Seven Segment:
Gambar 2.24 Pengkawatan seven segment Tabel 2.3 Susunan pin 7segment terhadap port mikrokontroller
B7
B6
B5
B4
B3
B2
B1
B0
Hex
a
B
c
D
e
g
f
Dot
0
0
0
0
0
0
1
0
1
05H
1
1
0
0
1
1
1
1
1
9FH
2
0
0
1
0
0
0
1
1
23H
3
0
0
0
0
1
0
1
1
0BH
4
1
0
1
0
1
0
1
0
99H
5
0
1
0
0
1
0
1
0
49H
6
0
1
0
0
0
0
0
1
41H
Tampilan
7
0
0
0
1
1
1
1
1
1FH
8
0
0
0
0
0
0
0
1
01H
9
0
0
0
0
1
0
0
1
09H
2.7. Saluran 20 mA Current Loop Saluran 20 mA Current Loop (saluran arus 20 mA) pada awalnya dipakai menyalurkan sinyal telex semasa mesin telex masih merupakan mesin mekanis murni sebelum awal tahun 1960-an, waktu itu dipakai arus sebesar 60 mA dipakai untuk menghidup-matikan relai dalam mesin itu. Saluran ini bisa dipakai dalam jarak yang sangat jauh sampai puluhan kilometer dengan kecepatan transmisi telex yang sangat rendah, hanya 50 Baud. Pada tahun 1962 mesin Teletype Model ASR33 mulai memakai saluran arus 20 mA yang menjadi standard sampai sekarang. Dalam perkembangannya, kini arus sebesar 20 mA itu tidak dipakai untuk menghidup-matikan relai, tapi untuk menyala/padamkan LED dalam optocoupler. Saluran arus 20 mA ini bisa dipakai menyalurkan data sampai sejauh 3000 feet dengan kecepatan 19200 Baud, tapi bisa dipakai untuk jarak yang lebih jauh lagi kalau kecepatan transmisinya diturunkan. Gambar 2.21 memperlihatkan rangkaian dasar saluran arus 20 mA, dalam gambar ini bagian Pengirim disebelah kiri dan bagian Penerima di bagian kanan terletak didua tempat berlainan yang jaraknya jauh, dan catu daya bagian Pengirim sama sekali terpisah dengan catu daya bagian Penerima
(digambarkan dengan simbol ground yang berlainan). IC Voltage Regulator LM317 dengan tahanan 56 Ohm membentuk sebuah rangkaian sumber arus 20 mA, transistor NPN dipakai sebagai saklar pemutus arus, dan opto-coupler 4N31 sebagai detektor arus. Jika Data Seri di bagian penerima = ‘1’, transistor NPN yang berfungsi sebagai saklar arus akan mengalirkan arus dari LM317 ke ground melalui LED dalam 4N31 yang berada di bagian penerima. Arus ini akan menyalakan LED dalam 4N31 dan akibatnya transistor dalam 4N31 mengalirkan arus dari Vcc dan membuat Data Serti di bagian penerima menjadi ‘1’ pula. Jika Data Seri di bagian Pengirim =’0’, arus dari LM317 tidak disalurkan melalui 4N31, akibatnya Data Seri di bagian penerima juga menjadi ‘0’. Bisa dibayangkan, sebesar-besaran gangguan listrik yang diterima oleh saluran arus ini, hampir tidak mungkin bisa membangkitkan arus yang cukup besar yang sampai bisa mengganggu nyala atau padam LED dalam 4N31. Disinilah letak kekebalan saluran arus 20 mA terhadap gangguan listrik yang diterima sepanjang perjalanan saluran. Untuk menghemat biaya, IC LM317 dan resistor 56 Ohm bisa digantikan dengan tahanan sekitar 500 Ohm. Tapi harus diperhatikan, makin panjang saluran nilai resistandi (tahanan) dari kabel akan makin besar pula.
BAB III PERANCANGAN SISTEM
3.1 Deskripsi Perancangan Pada suatu proses produksi yang baik, diperlukan untuk memonitor waktu dan hasil dari proses produksi yang sedang berlangsung. Proses pemantauan ini akan membandingkan target yang ditetapkan dengan hasil produksi yang sedang dihasilkan. Dengan mengetahui perbedaan hasil ini secara langsung, pihak – pihak yang berkaitan dengan sistem produksi akan dapat mengambil kesimpulan dan keputusan yang lebih cepat dan tepat tentang proses produksi yang sedang dilaksanakan apakah proses itu berjalan dengan baik atau ada masalah di proses tersebut. Pihak – pihak ini antara lain Leader Produksi, Operator, Engineering Process, Supervisor dan Manajer Produksi. Informasi yang lebih cepat ini akan sangat berpengaruh terhadap efisiensi baik itu waktu, biaya dan tenaga. Kita bisa membayangkan apabila terjadi masalah di proses oleh produksi, tetapi masalah ini baru diketahui setelahakhir shift hanya karena tidak adanya informasi yang tepat. Hal ini akan mempengaruhi proses produksi selanjutnya dan mengakibatkan delay dalam produksi. Ada tidaknya suatu masalah dapat dilihat dari pencapaian suatu group produksi. Jika perbedaan antara target yang ditetapkan dengan hasil yang dicapai oleh group tersebut sangat besar, tentunya ada masalah yang terjadi di group tersebut.
Sistem pemantau waktu proses produksi ini bukan hanya dapat dilihat atau diakses oleh orang – orang yang ada di tempat produksi tetapi juga dapat diakses oleh orang yang tidak berada di tempat produksi seperti manager produksi. Untuk dapat diakses oleh orang - orang yang berada di tempat lain, tentu diperlukan pengiriman data hasil pemantauan yang berada tempat produksi ke kantor produksi. Penulis merancang sistem pengiriman serial ke mikrokontroler penerima yang berada di kantor produksi. Pemilihan sistem pengiriman data serial ini berdasarkan pertimbangan penghematan kabel dan kekebalan terhadap gangguan yang terjadi selama pengiriman data yang dapat diakibatkan oleh distorsi atau interferensi medan – medan elektromagnetik selama pengiriman. Penulis merancang sistem pemantau hasil produksi menggunakan mikrokontroler buatan Atmel yaitu seri AT89S52 bukan hanya karena mikrokontroler ini mudah didapat di pasaran tetapi juga karena harganya yang murah dan sistem pemrogramannya yang mudah dan sudah dikuasai. Pemantauan hasil produksi ini memiliki besaran – besaran yang harus dipantau, yaitu : 10. Tact time; yaitu waktu proses produksi yang ditetapkan untuk menghasilkan 1 dus barang jadi (target produksi selama 1 shift dibagi waktu dalam 1 shift). Waktu tact time ini ditetapkan oleh Production Engineer berdasarkan perhitungan waktu yang diperlukan orang bungkus untuk menyelesaikan pengemasan barang dalam hitungan dus dikalikan banyaknya orang bungkus didalam satu line selama 1 shift. Sehingga didapat target produksi setiap satu shift.
Gambar 3.1 Layout produksi
11. Target; adalah jumlah barang yang harus dihasilkan oleh tiap group yang dipantau. Penetapan jumlah target ini berdasarkan waktu kerja dibagi dengan tact time. 12. Actual; adalah jumlah barang yang dihasilkan oleh tiap group yang sedang dipantau. 13. Different; adalah perbedaan nilai target dan actual. Gambaran umum alat terlihat pada gambar: KEYPAD 1
2
3
4
5
6
7
8
9
0
RESET ENTER
DIFFERENT SENSOR INPUT
TARGET MIKROKONTROLER 1 AT 89S52
Komunikasi
serial
DIFFERENT
ACTUAL
MIKROKONTROLER 2 AT 89S52
ACTUAL
TACT TIME TACT TIME Komunikasi
serial
MIKROKONTROLER 3 AT 89S52
LAMPU RUN,INDIKATOR
TARGET BEL BUZZER
Gambar 3.2 Skema alat
VCC
P10 P11 P12 P13 P14 P15 P16 P17 P30/RXD P31/TXD P32/INT0 P33/INT1 P14/T0 P15/T1 P16/WR P17/RD 11,059
33 P
10 U
VCC
4K7 4K7 J1
1K
VCC
9012
RELAI X1
VCC
10 U
P00 P01 P02 P03 P04 P05 P06 P07
4K7
9012
4K7
ALE/P PSEN
4K7 9012
P25
P26
4
5
6
7
8
9
0
RST
1
X2
9012
9012 VCC
P24
EA/VP
4K7 9012
9012
STOP
X1
10 K
4K7 9012
P20 P21 P22 P23 P24 P25 P26 P27
RESET
33 P
4K7 9012
4K7
VCC
11,059
33 P
9012
STOP
ALE/P PSEN
P30/RXD P31/TXD P32/INT0 P33/INT1 P34/T0 P35/T1 P36/WR P37/RD
1K 12 V 4K7
4K7 9012
EA/VP
MIKRO 1
4K7 9012
4K7
X2
P10 P11 P12 P13 P14 P15 P16 P17
9012
P00 P01 P02 P03 P04 P05 P06 P07
X1
10 K
4K7 9012
P20 P21 P22 P23 P24 P25 P26 P27
RESET
33 P
VCC
9012
MIKRO 2
VCC
X1
VCC
4K7
2
3
P20 P21 vcc
P22
12V LED LDR
J1
1K
ENTER P23
J3 680
100 K
VCC
P10 P11 P12 P13 P14 P15 P16 P17
J2
P30/RXD P31/TXD P32/INT0 P33/INT1 P14/T0 P15/T1 P16/WR P17/RD
X1 11,059
33 P
33 P
VCC
10 U
VCC
4K7
MIKRO 3
P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27
X1
EA/VP
X2
ALE/P PSEN
RESET
4K7 9012
4K7
4K7 9012
4K7 9012
10 K
Gambar 3.3 Skema rangkaian
9012
4K7 9012
9012
VCC
3.2 Perancangan Mikrokontroler 1 MIKROKONTR OLER2
MIKROKONTR OLER1
KEYPAD
7SEGMENT
LED START/STOP
BUZZER
SENSOR LDR
Gambar 3.4 Rancangan mikrokontroler 1
4K7
4K7
VCC
P10 P11 P12 P13 P14 P15 P16 P17
4K7
9012
9012
4K7 J1
1K
VCC
MIKRO 1
P30/RXD P31/TXD P32/INT0 P33/INT1 P34/T0 P35/T1 P36/WR P37/RD
1K 12 V 4K7 9012
RELAI X1
VCC
VCC
9012
P00 P01 P02 P03 P04 P05 P06 P07
4K7
VCC
EA/VP
X2
ALE/P PSEN
RESET
33 P 10 U
10 K
4K7 9012
9012
P26
4
5
6
7
8
9
0
RST
2
3
P20 P21 vcc
P22
12V LED LDR
J1
P25
1
X1
9012
VCC
P24
11,059
33 P
4K7 9012
STOP
P20 P21 P22 P23 P24 P25 P26 P27
4K7 9012
1K
ENTER P23
J3 680
100 K
Gambar 3.5 Rangkaian mikrokontroler 1 Mikrokontroler 1 berfungsi untuk membaca data keypad, menghitung data tact time dan data actual. Data tact time, actual dan target dikirim secara serial ke mikrokontroler 2.
Tabel 3.1 Tabel input output mikrokontroler 1 NO 1
NAMA PIRANTI
KEYPAD ANGKA 0
PORT MIKROKONTROLER 1 KOLOM : P2.4 - P2.6
–9 BARIS : P2.0 - P2.3 2
TOMBOL RESET
PORT RESET ( KAKI NO 9 )
3
TOMBOL ENTER
P2.6
4
BUZZER
P3.3
5
7 SEGMENT UNTUK DATA
P 0.0 - P 0.7
6
7 SEGMENT UNTUK SAKLAR
P 1.0 - P 1.5
7
DETEKTOR BARANG
P 2.7
8
SAKLAR RUN/STOP
P 2.4
9
LED START/RUN LINE
P 1.7
10 LED STOP/STOP LINE
P 1.6
11 PENGIRIMAN DATA SERIAL
P 3.1
Bagian – bagian dari rangkaian mikrokontroler 1 adalah: 1. Rangkaian Keypad 2. Mikrokontroler 1 Mikrokontroler 1 menggunakan kristal dengan frekuensi 12 MHz. Pengiriman data serial ke mikrokontroler 2 menggunakan baudrate 9600 dan mode 1. Mode 1 berarti data dikirim atau diterima 10 bit sekaligus, diawali dengan 1 bit start, 8 bit data yang dimulai dari bit yang bobotnya paling kecil ( bit 0 ) dan diakhiri dengan bit stop. Pengiriman serial ini digolongkan pengiriman data serial secara asinkron. 3. 7 segment data tact time dan actual seven segment dipergunakan untuk menampilkan data tact time dan actual dalam bentuk angka.
4. Buzzer Buzzer dalam rangkaian ini berfungsi sebagai indikator bila tidak ada barang produksi yang dihasilkan selama tact time. 5. Sensor Sensor dalam rangkaian tugas akhir ini berfungsi untuk mendeteksi adanya barang produksi yang telah selesai. Sensor diletakkan di konveyor. Sensor terdiri dari pengirim dan detektor. Pengirim berupa LED ultra bright dan penerima berupa sensor LDR. Rangkaian pengirim adalah rangkaian serial LED ultra bright dan resistor 680 Ω. Resistor digunakan untuk membatasi arus pada LED ultra bright. Dengan menggunakan rumus sederhana. Vs – Vf R = If 12 – 2 volt R =
= 666 Ω ≈ 680 Ω 15 mA
dengan
Vs
Vf = Tegangan
= Tegangan sumber ( volt ) LED, biasanya 2 volt tergantung dari pabrik
pembuatnya If = Arus forward, antara 5 mA – 25 mA. Rangkaian penerima berupa sensor LDR yang dihubungkan dengan transistor difungsikan sebagai saklar. Nilai resistansi LDR yang berada
antara 40 KΩ (bila mendapatkan cahaya) sampai 1 MΩ (bila tidak mendapatkan cahaya) dapat dimanfaatkan untuk mengatur tegangan thevenin yang jatuh pada LDR. Sehingga syarat transistor cutoff (VBE < 0,7V) atau transistor saturasi (VBE ≥ 0,8V) dapat dipenuhi. Sehingga transistor dapat digunakan sebagai saklar. 12 V
5V
LED
LDR
1K AT89S52 P27
100 K 680
Gambar 3.6 Detektor barang produksi 7.
Led start dan stop, berfungsi untuk memberitahukan kondisi produki sedang jalan atau sedang berhenti. LED start diwakili oleh LED warna hijau, sedangkan LED stop diwakili oleh LED warna merah. 5V
AT89S52 1K 1K
Gambar 3.7 rangkaian LED
Adapun diagram alir mikrokontroler 1 adalah sebagai berikut, START Inisialisasi komunikasi data serial Masukkan data target melalui keypad
Enter ?
tdk
ya Masukkan data actual melalui keypad
Enter ?
tdk
ya Kirim data target dan tact time secara serial ke mikrokontroler 2
Kirim data actual secara serial ke mkrokontroler 2
Mulai menghitung tact time
Sensor Barang ON
Tact time Tercapai ?
tdk
Tact time = 0 Actual = Actual + 1
tdk
ya Hentikan penghitungan tact time Hidupkan buzzer
Sensor Barang ON
tdk
ya
Gambar 3.8 Diagram alir mikrokontroler 1
3.3 Perancangan Mikrokontroler 2
MIKROKONTROLER 3
MIKROKONTROLER 1
MIKROKONTROLER 2
7SEGMENT
Gambar 3.9 Rancangan mikrokontroler 2
VCC
P10 P11 P12 P13 P14 P15 P16 P17 P30/RXD P31/TXD P32/INT0 P33/INT1 P14/T0 P15/T1 P16/WR P17/RD
X1 11,059
33 P
33 P
VCC
10 U
VCC
4K7
MIKRO 2
P00 P01 P02 P03 P04 P05 P06 P07 P20 P21 P22 P23 P24 P25 P26 P27
X1
EA/VP
X2
ALE/P PSEN
RESET
4K7 9012
4K7
4K7 9012
4K7 9012
9012
4K7 9012
9012
STOP
10 K
Gambar 3.10 Rangkaian mikrokontroler 2
Mikrokontroler 2 berfungsi untuk menerima data ( tact time dan target) dari mikrokontroler 1, menampilkan data ( target dan different ) ke 7 segment
dan mengirim data ke mikrokontroler 3 secara serial. Bagian – bagian mikrokontroler 2 adalah mikrokontroler dan 7 segment.
Tabel 3.2 Tabel input output mikrokontroler 2 NO
NAMA PIRANTI
PORT MIKROKONTROLER 2
1
7 SEGMENT UNTUK DATA
P 0.0 - P 0.7
2
7 SEGMENT UNTUK SAKLAR
P 1.0 - P 1.5
3
TOMBOL RESET
PORT RESET ( KAKI NO 9 )
4
PENGIRIMAN DATA SERIAL
P 3.1
5
PENERIMA DATA SERIAL
P 3.0
6
SAKLAR RUN/STOP
P 2.4
Mikrokontroler 2 menggunakan kristal dengan frekuensi 12 MHz. Pengiriman data serial ke mikrokontroler 3 menggunakan baudrate 9600 dan mode 1. Mode 1 berarti data dikirim atau diterima 10 bit sekaligus, diawali dengan 1 bit start, 8 bit data yang dimulai dari bit yang bobotnya paling kecil ( bit 0 ) dan diakhiri dengan bit stop. Pengiriman serial ini digolongkan pengiriman data serial secara asinkron. Mikrokontroler 2 juga menerima data serial dari mikrokontroler 1 dengan baudrate 9600 dan mode1, sehingga ada interupsi serial dari mikrokontroler 1. Adapun Diagram Alir Mikrokontroler 2 sebagai berikut,
Gambar 3.11 Diagram alir mikrokontroler 2
3.4 Perancangan Mikrokontroler 3
MIKROKONTR OLER2
MIKROKONTR OLER3
7SEGMENT
START
Inisialisasi komunikasi data serial
Tampilkan data target dan different
Tunggu interupsi data serial masuk
Hitung Tact time
tdk
Tact time Tercapai ? ya Target = target + 1 Reset tact time
Kirim data tact time, target,actual dan different secara serial ke mikrokontroler
2
Gambar 3.12 Rancangan mikrokontroler 3
VCC
VCC
4K7 P10 P11 P12 P13 P14 P15 P16 P17 P30/RXD P31/TXD P32/INT0 P33/INT1 P14/T0 P15/T1 P16/WR P17/RD
X1 11,059
33 P
MIKRO 2
VCC
10 U
4K7
P20 P21 P22 P23 P24 P25 P26 P27 EA/VP
X2
ALE/P PSEN
RESET
33 P
9012
P00 P01 P02 P03 P04 P05 P06 P07
X1
4K7
4K7 9012
4K7 9012
9012
4K7 9012
9012
10 K
Gambar 3.13 Rangkaian mikrokontroler 3 Mikrokontroler 3 berfungsi menerima data target, actual dan different dari mikrokontroler 2 dan menampilkannya ke 7 segment. Mikrokontroler 3 terdiri rangkaian mikrokontroler dan 7 segment. Tabel 3.3 Tabel input output mikrokontroler 3 NO
NAMA PIRANTI
PORT MIKROKONTROLER 3
1
7 SEGMENT UNTUK DATA
P 0.0 - P 0.7
2
7 SEGMENT UNTUK SAKLAR
P 1.0 - P 1.7, P3.2
3
TOMBOL RESET
PORT RESET ( KAKI NO 9 )
4
PENERIMA DATA SERIAL
P 3.0
Mikrokontroler 3 menggunakan kristal dengan frekuensi 12 MHz. Mikrokontroler 3 menerima data dari mikrokontroler 2 yang menggunakan baudrate 9600 dan mode 1. Mode 1 berarti data dikirim atau diterima 10 bit sekaligus, diawali dengan 1 bit start, 8 bit data yang dimulai dari bit yang bobotnya paling kecil ( bit 0 ) dan diakhiri dengan bit stop. Pengiriman serial ini digolongkan pengiriman data serial secara asinkron.
Adapun Diagram Alir Mikrokontroler 3 sebagai berikut, START
Inisialisasi komunikasi data serial
Tampilkan data actual, target dan different
tdk
Ada interupsi? ya Terima interupsi
Ubah data actual, target, different
Gambar 3.14 Diagram alir mikrokontroler 3
3.5 Perancangan Catu Daya Catu daya merupakan salah satu bagian dari sistem perancangan yang memiliki fungsi tidak kalah penting yaitu mencatu tegangan yang stabil bagi mikrokontroler dan penggerak konveyor. Dalam perancangan ini dibutuhkan 3 buah catu daya yaitu. 1. Catu daya mikrokontroler ( 5 Vdc ). 2. Catu daya saluran 20 mA current loop (saluran arus 20 mA) ( 12 Vdc ).
Catu daya mikrokontroler harus mempunyai syarat kestabilan tegangan keluaran. Sedangkan catu daya saluran arus 20 Ma dan relai tidak perlu stabil. 12 VDC
7805
5 VDC
VIN
220 V
IN4002
IN4002
IN4002
IN4002
VOUT GND
12 V 100 nF
100 nF GND
Gambar 3.15 Perancangan catu daya Catu daya mikrokontroler merupakan catu daya yang menghasilkan tegangan + 5 volt DC yang stabil sehingga diperlukan IC regulator tegangan 7805. Sedangkan catu daya saluran 20 mA, relai.
3.6 Perancangan keypad
Kolom 1 P2.4
Kolom 3 P2.6
Kolom 2 P2.5
1
2
3 Baris/P20
4
5
6 Baris/P21
7
8
9 Baris/P22
0
RST
ENTER Baris/P23
RST MIKRO1
Gambar 3.16 Rancangan keypad Keypad diperlukan untuk memasukkan data berupa data target dan data tact time. Data target adalah jumlah produksi yang harus dicapai dalam satu shift. Sedangkan data tact time adalah waktu yang diperlukan untuk membuat 1 buah barang produksi dengan satuan detik. Sebagai contoh jika data tact time adalah 30 detik, maka diperlukan waktu 150 detik (30x5) untuk mencapai target 5 dus barang produksi yang harus dihasilkan. Jumlah keypad yang diperlukan adalah 12 buah yaitu angka 0 – 9 , enter/start, reset dan stop/pause. Keypad dihubungkan dengan port 2 dari mikrokontroler 1. Dengan menggunakan metode matrik, maka 3 bit tinggi
digunakan untuk pengeluaran data kolom dan 4 bit rendah untuk pembacaan data baris. Dengan metode ini maka 1 port dapat digunakan untuk 12 keypad. Prinsip kerja dari sistem matrik adalah dengan mengeluarkan logika tinggi atau data #0FFh ke port 2, kemudian dengan membuat nol port 2.4 ( kolom 1). Untuk mendeteksi adanya tombol yang ditekan maka baris 1 dicek apakah berlogika tinggi atau tidak. Jika berlogika rendah maka tombol 1 ditekan, jika tidak maka baris 2 dicek dan seterusnya. Tombol reset merupakan reset manual yang terhubung dengan tegangan + 5 volt dan kaki reset ( no 9 ) pada mikrokontroler. Sedangkan tombol enter terhubung dengan port 2.6 dan ground. Tabel 3.4 Perancangan keypad
BARIS
Baris1/P2.0 Baris2/P2.1 Baris3/P2.2 Baris4/P2.3
Kolom1/P2.4 1/001H 4/004H 7/007H 0/000H
KOLOM Kolom2/P2.5 2/002H 5/005H 8/008H RESET
Listing program untuk pembacaan keypad adalah sebagai berikut. Keypad3x4: mov clr uli1: jb mov mov ret kei1: jb mov mov ret kei2: jb mov mov ret
keyport,#0FFh kolom1 baris1,kei1 data2,#001h tanda,#001 baris2,kei2 data2,#004h tanda,#001 baris3,kei3 data2,#007h tanda,#001
Kolom3/P2.6 3/003H 6/006H 9/009H ENTER
kei3: jb mov mov ret
baris4,kei4 data2,#000h tanda,#001
Data #0FFh dikirim ke P2. Kemudian kolom 1 di clear dan baris 1 sampai baris 4 dicek apakah ada penekanan tombol atau tidak. Jika ada logika rendah disalah satu baris 1 sampai baris 4, berarti ada penekanan tombol dan data 2 disi dengan data hexadesimal yang sesuai. Jika tidak ada penekanan tombol maka kolom 1 diset kembali dan kolom 2 diclear. Baris kembali dicek untuk mendeteksi penekanan tombol. Demikian seterusnya sampai ditemukan adanya penekanan tombol. kei4: setb clr jb mov mov ret
kolom1 kolom2 baris1,kei5 data2,#002h tanda,#001
jb mov mov ret
baris2,kei6 data2,#005h tanda,#001
jb mov mov ret
baris3,kei8 data2,#008h tanda,#001
setb clr jb mov mov ret
kolom2 kolom3 baris1,kei9 data2,#003h tanda,#001
jb mov mov ret
baris2,kei10 data2,#006h tanda,#001
jb mov mov ret
baris3,kei11 data2,#009h tanda,#001
kei5:
kei6:
kei8:
kei9:
kei10:
kei11:
mov mov ret
keydata,#0FFh tanda,#000
3.7 Perancangan Display Display yang digunakan terdiri dari : 1. 6 unit 7 segment untuk rangkaian mikrokontroler 1. 2. 6 unit 7 segment untuk rangkaian mikrokontroler 2. 3. 9 unit 7 segment untuk rangkaian mikrokontroler 3. Display berfungsi untuk menampilkan bilangan ratusan, puluhan dan satuan dari data tact time, target, actual dan different. 7 segment ini tidak dinyalakan bersamaan, tetapi dinyalakan secara bergantian dengan cepat, sehingga mata melihat seakan – akan menyala secara bersamaan. 7 segment ini jika dinyalakan bersamaan, maka untuk menyalakan 6 unit 7 segment akan membutuhkan 6x7=42 jalur atau 6 port. Sedangkan AT89S52 hanya mempunyai 4 port saja, sehingga rangkaian yang lain tidak bisa menggunakan port mikrokontroler dan membutuhkan 2 unit mikrokontroler. Hal ini menjadi tidak efisien.
VCC AT89S52 P1..
AT89S52 P2..
Gambar 3.17 Rangkaian penggerak 7 segment Cara penyalaan 7 segment secara bergantian dinamakan dengan scanning dan hanya membutuhkan dua port, yaitu port 1 sebagai saklar untuk menghubungkan Vcc dengan common anoda pada 7 segment dan port 0 digunakan untuk mengirimkan data karakter yang akan ditampilkan pada 7 segment. Agar ada arus yang mengalir dari Vcc ke common anoda, maka port 1 harus diberi logika 0 sehingga transistor S9012 menjadi ON dan arus mengalir dari Vcc ke common anoda. Data tampilan 7 segment dikirim melalui port 0, karena menggunakan konfigurasi common anoda maka untuk menyalakan LED 7 segment harus dikirim logika 0. Secara garis besar algoritma programnya adalah.
1. Siapkan data tampilan listing programnya adalah sebagai berikut : isiTabel_segment: mov R0,#020h mov @R0,#11000000b inc R0 mov @R0,#11111001b inc R0 mov @R0,#10100100b inc R0 mov @R0,#10110000b inc R0 mov @R0,#10011001b inc R0 mov @R0,#10010010b inc R0 mov @R0,#10000010b inc R0 mov @R0,#11111000b inc R0 mov @R0,#10000000b inc R0 mov @R0,#10010000b inc R0 mov @R0,#00000000b ret
;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9
2. Kirim ke port 0 listing programnya adalah sebagai berikut : kirim_segment..: mov R0,#020h mov a,data.. add A,R0 mov R0,A mov A,@R0 mov P0,A ret
3. Aktifkan transistor pada 7 segment yang melalui port 1 listing programnya adalah sebagai berikut : mov
p1,#0……h
isinya tergantung port mana yang ingin diaktifkan, contoh #0feh, #0fdh
4. Tunggu sebentar delay_segment: push B mov B,#01h loop_delay: push B mov B,#0afh loop_delay2: djnz B,loop_delay2 pop B djnz B,loop_delay pop B ret
5. Matikan tampilan 7 segment melalui port 1 mov
P1,#0ffh
6. Siapkan data berikutnya dan ulangi langkah 2, dan seterusny
BAB IV PENGUJIAN DAN ANALISA
4.1 Pengoperasian Alat Adapun pengoperasian dari alat ini adalah : 1. Alat dihubungkan ke sumber tegangan 220V/AC. 2. 3 digit nilai target melalui keypad, lalu enter. Contoh jika nilai target 300, maka angka yang dimasukkan adalah angka 3 lalu 0, dan 0, lalu enter. 3. 3 digit nilai tact time dimasukkan melalui keypad. Nilai tact time berupa nilai waktu dalam satuan detik. Misalkan nilai tact time adalah 1 menit, maka angka yang di masukkan angka 0, lalu 6, lalu 0, dan enter. Nilai maksimal yang dapat dimasukkan adalah 999. 4. Mikrokontroler 1 akan mengirim data target dan tact time ke mikrokontroler 2. Mikrokontroler 1 berfungsi untuk menampilkan nilai tact time dan nilai actual. Sedangkan mikrokontroler 2 akan menampilkan nilai target dan different. Penggunaan 2 buah mikrokontroler ini karena keterbatasan jumlah port pada mikrokontroler dan untuk penambahan jika misalkan diinginkan jumlah digit yang lebih besar, masih ada port atau kaki IC mikro yang dapat digunakan. 5. Mikrokontroler 1 akan menghitung dan menampilkan nilai tact time lewat seven segment, jika nilai tact time telah tercapai maka mikrokontroler akan berhenti menghitung tact time. Mikrokontroler 1 akan menghidupkan bel buzzer untuk mengingatkan kepada orang bungkus di tiap line bahwa
mereka mengerjakan tugasnya terlalu lambat dan
harus segera
menyelesaikan pekerjaannya.. Buzzer dapat direset atau dimatikan dengan melewatkan barang yang sudah jadi melalui sensor. Sensor ini berfungsi: a.Mematikan bel buzzer ( melalui mikrokontroler ). b.Mereset hitungan tact time kembali ke nol. c.Menghitung kembali tact time. d.Menaikkan jumlah actual ( actual + 1 ) Jika sensor mendeteksi adanya barang sebelum waktu tact time terpenuhi, maka bel buzzer tetap mati. 6.
Mikrokontroler 2 juga akan menghitung nilai tact time, tetapi jika waktu tact time terpenuhi, akan mereset hitungan tact time kembali ke awal dan menambahkan nilai target ( target + 1 ). Mikrokontroler 2 juga akan mengurangkan data target dengan data actual ( atau sebaliknya, tergantung mana yang memiliki nilai terbesar ). Dan mengirimkan data target, actual dan different ke mikrokontroler 3 yang berada di tempat yang lain ( kantor ).Jika nilai target yang dihitung oleh mikrokontroler 2 telah sama dengan nilai target yang dimasukkan lewat keypad, maka mikrokontroler 2 akan berhenti mencacah dan mempertahankan nilai target.
7.
Mikrokontroler 3 akan menerima data target, actual dan different dari mikrokontroler 2 serta menampilkan data tersebut lewat seven segment.
8.
Alat ini dilengkapi juga dengan tombol / keypad untuk reset dan tombol untuk menghentikan sementara ( pause ) untuk keadaan tertentu misalkan pada waktu istirahat atau masa – masa persiapan.
4.2 Sensor Rangkaian sensor dihubungkan dengan P 2.7 pada mikrokontroler 1, listing program nya adalah sebagai berikut : setb p2.7 ………………………………………… jnb p2.7,asik ljmp rest1 ……………………………………………
; sensor barang on? tidak, lompat ke asik ; ya, lompat ke rest1
rest1: acall tampil jnb p2.7,rest ljmp rest1
; sensor barang on? ya, ke rest ; tidak, ke rest1
P 2.7 diset pada posisi high, kemudian dilakukan pengecekan apakah P 2.7 pada posisi high (1) atau low (0), apabila P 2.7 pada posisi low maka program akan lanjut keperhitungan tact time (label asik). 12 V
5V
LED
LDR
1K
AT89S52 P27
V out
+
100 K 680
-
V th ( V in)
Gambar 4.1 Rangkaian sensor
Nilai resistansi LDR yang berada antara 50 KΩ (bila mendapatkan cahaya) sampai 2 MΩ (bila tidak mendapatkan cahaya) dapat dimanfaatkan untuk mengatur tegangan thevenin yang jatuh pada LDR, dimana syarat transistor cutoff (VBE < 0,7V) atau transistor saturasi (VBE ≥ 0,8V) dapat dipenuhi. Sehingga transistor dapat digunakan sebagai saklar.
Saat sensor tidak mendeteksi adanya barang maka cahaya yang jatuh pada LDR akan mengakibatkan resistansi pada LDR menjadi rendah (50 K Ohm). Kondisi LDR mendapat cahaya : ( R = 50 K Ohm)
100 K Ohm VTH = x 5 volt = 3,33 volt 50 K Ohm + 100 K Ohm
Saat sensor mendeteksi adanya barang maka cahaya yang jatuh pada ldr akan mengakibatkan resistansi pada ldr menjadi naik (2 M Ohm ). Kondisi LDR tidak mendapat cahaya : ( R = 2 M Ohm)
VTH =
100 K Ohm 2 M Ohm + 1 00 K Ohm
x 5 volt = 0,23 volt
Pada rangkaian sensor ini dilakukan pengukuran pada 2 titik yaitu Vth sebagai input yang akan mengatur kondisi transistor dan Vout yang merupakan masukan untuk P 2.7 pada mikrokontroler.
Tabel 4.1 Pengukuran tegangan sensor NO 1 2
KONDISI
Vth (Vin)
V out
3,2 V 0,2 V
0,1 V 5V
Ldr terkena cahaya Ldr tidak terkena cahaya
POSISI TRANSISTOR Saturasi Cut off
Dari pengukuran rangkaian terdapat selisih antara hasil pengukuran dan perhitungan teori, hal ini lebih dikarenakan keterbatasan pembacaan skala pada multimeter. Pada saat saturasi (LDR terkena cahaya) Vout yang terukur sebesar 0,1 V, ini disebabkan karena adanya jatuh tegangan pada transistor. Pengujian kemampuan sensor mendeteksi barang : Pada pengujian ini dibandingkan jumlah barang yang dideteksi dengan tampilan di display, dilakukan pengujian sebanyak 50 kali pendeteksian, dimana alat ini diharapkan memiliki keakuratan 100%, Hasil pengujian dapat dilihat di table 4.2. Tabel 4.2 Pengujian jumlah barang yang terdeteksi sensor JUMLAH BARANG YANG LEWAT 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ANGKA DISPLAY 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
ERROR (%) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
JUMLAH BARANG YANG LEWAT 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
ANGKA DISPLAY 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
ERROR (%) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
18 19 20 21 22 23 24 25
18 19 20 21 22 23 24 25
0 0 0 0 0 0 0 0
43 44 45 46 47 48 49 50
43 44 45 46 47 48 49 50
0 0 0 0 0 0 0 0
Dari table dapat dilihat bahwa jumlah barang yang ditampilkan sama dengan jumlah yang dideteksi (error 0 %) , berarti alat ini memiliki keakuratan 100 %.
4.3 Perhitungan waktu Untuk menghitung tact time diperlukan satuan waktu berupa detik. Agar dapat menghasilkan waktu 1 detik, pada mikrokontroler AT89C51 ada fasilitas timer. Untuk itu digunakan timer 0 sebagai timer mode 16 bit. Pada saat timer mikrokontroler akan menghitung tunda waktu dengan timer maka pada saat yang sama keluaran ke 7 segment akan blank atau mati. Untuk melakukan kedua hal itu secara bersama – sama, diperlukan IC latch untuk menahan data yang masuk dari mikrokontroler. Namun hal ini dapat disiasati dengan menghasilkan timer dengan waktu tunda 10 mili detik kemudian menampilkan
data ke 7 segment. Keadaan ini diulang sehingga mencapai
pengulangan 100 kali ( 10 mili detik x 100 = 1 detik ). Listing program : cacah equ -500 ratusan equ 20 start: acall isitabel_segment ; panggil rutin isitabel_segment acall tampil ; panggil rutin tampil acall tunda ; panggil rutin tunda ( tunda 10 milidetik ) stop: setb p2.7 ……………………………………………………………….. jnb p2.7,asik ; sensor barang on? tidak, lompat ke rest1 ljmp rest1
asik: inc mov cjne mov
r4 ; naikkan r4 a,r4 a,#073h,start ; jika sudah mencapai 100 nolkan r4, jika tidak kembali ke start r4,#000h
mov mov
TMOD,#01h R5,#ratusan
; gunakan timer 0 mode 16 bit ; isi R5 dengan 500
TH0,#high cacah TL0,#low cacah TR0
; timer mulai kerja
TF0,tunggu TF0 TR0 R5,lagi
; ; ; ;
tunda: lagi: mov mov setb tunggu: jnb clr clr djnz
tunggu sampai melimpah hapus limpahan pencacah timer stop kurangi R5 jika 0 kembali
ret Analisa timer : Pada timer dilakukan pengujian dengan membandingkan tampilan display untuk menghitung tact time dengan waktu pada stop wacth, pengukuran diukur dalam hitungan detik. Hasil pengujian dapat dilihat pada tabel 4.2 Tabel 4.3 Pengukuran error pada timer DISPLAY STOP WATCH (DETIK) ERROR (%) 10 10,08 0,79 12 12,07 0,58 14 14 0,00 16 16,05 0,31 18 17,99 -0,06 20 20,05 0,25 22 21,94 -0,27 24 23,93 -0,29 26 25,83 -0,66 28 27,8 -0,72 30 29,8 -0,67 32 32,06 0,19 34 33,89 -0,32 36 35,86 -0,39 38 37,88 -0,32 40 39,76 -0,60 42 41,85 -0,36 44 43,8 -0,46 46 45,78 -0,48 48 47,64 -0,76 50 49,6 -0,81
52 54 56 58 60
51,56 53,5 56,53 57,5 59,45
-0,85 -0,93 0,94 -0,87 -0,93
Pada pengujian ini diambil durasi waktu dari 10 sampai 60 detik, karena di lapangan pemakaian tact time biasanya berkisar antara 10 sampai 60 detik, dengan toleransi error tidak boleh lebih dari ± 1%. Dari tabel diatas dapat dilihat bahwa error tidak lebih dari ± 1%. Error pada pengujian itu ditimbulkan karena 2 faktor : 5. Kecepatan penekanan tombol start dan stop pada stopwach 6. Skala pada display yang terbatas, tidak bisa menjangkau mili detik. 7. Looping program perulangan dimana pada perulangan 100 kali, program harus juga menjalankan beberapa instuksi yang memakan waktu beberapa μs.
4.4 Perhitungan Baudrate dan data serial Pada alat pemantau hasil produksi pada industri pengemasan barang ini, baudrate dibuat 9600 bps. Untuk membangkitkan baudrate sebesar 9600 bps, maka sesuai persamaan berikut dimana frekuensi osilator menggunakan 12 Mhz dan nilai bit SM1 = 1, dan nilai TH1 ( nilai isi ulang ) harus diisi dengan data 249 atau F9H. Untuk perhitungan mendapatkan nilai dari TH1 adalah sebagai berikut: Fosc Baudrate = 12x(256 – TH)x32
12 MHz 9600
= 12x(256 – TH)x32
256 – TH1 = 3,25 TH1
= 252,75
TH1
= F9H
Inisialisasi komunikasi serial dimulai dengan mengisikan nilai TMOD dengan data #020h yang berarti mengaktifkan timer 1 sebagai timer 8 bit auto reload. Kemudian mengatur baudrate 9600 dengan mengisi TH1 dengan data #0f9h. Register SCON diisi data #050h yang berarti menggunakan komunikasi serial. Listing inisialisasi komunikasi serial
mov
TMOD,#020h ;timer 1 mode 2 ( 8 bit auto reload ) mov
TH1,#0f9h
;baudrate 9600 (12MHz)
setb
TR1
;start timer 1
mov
SCON,#050h ;serial communication mode 1
4.5 Pengiriman data dari mikrokontroler 1 ke mikrokontroler 2 Pengiriman data serial dari mikrokontroler 1 ke mikrokontroler 2 ada 2 tahap, yaitu. 1. Pengiriman data ( tact time dan target ) Pengiriman data tact time dan target ini dilaksanakan setelah mengisi data target dan tact time melalui keypad dan menekan enter. Listing program; start1:
acall clr acall mov jnb clr inc mov
data_serial a kirim_data sbuf,a ;kirim TI,$ TI save1 a,save1
;panggil subrutin data_serial ;panggil subrutin kirim_data data ;tunggu sampai selesai ;nolkan TI ;naikkan data di save1 ;isi a dengan data di save1
cjne mov
a,#006,start1;a=#006 ?tidak,lompat ke start1 save1,#000h ;ya,isi save1 dengan #000
mov mov inc mov inc mov inc mov inc mov inc mov ret
R1,#030h @R1,data2 R1 @R1,data4 R1 @R1,data5 R1 @R1,data22 R1 @R1,data24 R1 @R1,data25
;isi R1 dengan #030h ;alamat R1 diisi dengan ;naikkan R1 ( #031h ) ;alamat R1 diisi dengan ;naikkan R1 ( #032h ) ;alamat R1 diisi dengan ;naikkan R1 ( #033h ) ;alamat R1 diisi dengan ;naikkan R1 ( #034h ) ;alamat R1 diisi dengan ;naikkan R1 ( #035h ) ;alamat R1 diisi dengan
mov mov add mov mov ret
R1,#030h a,save1 a,R1 R1,a a,@R1
;isi R1 dengan #030h ;isi a dengan data save1 ;jumlahkan isi R1 dengan a ;pindahkan isi a ke R1 ;data di alamat R1 pindah ke a
data_serial: data2 data4 data5 data22 data24 data25
kirim_data:
Cara kerja dari program tersebut adalah, kita menempatkan data tact time ( data2, data4, data5 ) dan target ( data22, data 24, data25 ) ke alamat 030h sampai 035h. Data dipanggil satu persatu mulai dari data2 sampai data25 kemudian dikirim ke mikrokontroler 2 dengan menggunakan register SBUF. Setiap kali mengirim data maka data save1 dinaikkan. Setelah data save1 mencapai nilai 006h maka pengiriman data telah lengkap dan data save1 dinolkan kembali. 2. Pengiriman data actual Pengiriman data actual dilaksanakan setelah detektor barang mendeteksi adanya barang produksi yang lewat. Sesaat setelah ada barang produksi, maka data actual berubah menjadi actual + 1. Data baru ini langsung dikirim ke mikrokontroler 2 dan diteruskan ke mikrokontroler 3. Data yang dikirim ke mikrokontroler 2 berupa data actual yang terdiri dari data10 ( satuan ), data11 (data puluhan ), data12 ( data ratusan ) dan data 001h. Listing program;
start1:
acall clr acall mov jnb clr inc mov cjne mov ………………
data_serial ;panggil subrutin data_serial a kirim_data ;panggil subrutin kirim_data sbuf,a ;kirim data TI,$ ;tunggu sampai selesai TI ;nolkan TI save1 ;naikkan data di save1 a,save1 ;isi a dengan data di save1 a,#004,start1;a=#006 ?tidak,lompat ke start1 save1,#000h ;ya,isi save1 dengan #000
mov mov inc mov inc mov inc mov ret
R1,#010h @R1,data10 R1 @R1,data11 R1 @R1,data12 R1 @R1,#001h
;isi R1 dengan #030h ;alamat R1 diisi dengan ;naikkan R1 ( #031h ) ;alamat R1 diisi dengan ;naikkan R1 ( #032h ) ;alamat R1 diisi dengan ;naikkan R1 ( #033h ) ;alamat R1 diisi dengan
mov mov add mov mov ret
R1,#010h a,save1 a,R1 R1,a a,@R1
;isi R1 dengan #030h ;isi a dengan data save1 ;jumlahkan isi R1 dengan a ;pindahkan isi a ke R1 ;data di alamat R1 pindah ke a
data_serial: data10 data11 data12 001h
kirim_data:
Dalam komunikasi data serial ini akan dikirimkan data tact time sebesar 169 detik. Untuk itu data terdiri dari satuan berupa angka 9 ( data2 ) , puluhan berupa angka 6 ( data4 ) dan ratusan berupa angka 1( data5 ). Yang pertama kali dikirim adalah data satuan, yaitu angka 9.
TX CLOCK TULIS KE SUBF
KIRIM
DATA
GESER
TXD
D0
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START TI
Gambar 4.2 Pengiriman angka 9 ke mikrokontroler 2 Dari gambar terlihat bahwa transmisi data dimulai saat sinyal KIRIM diaktifkan ( = 0 ) yang kemudian akan menempatkan bit start pada jalur TXD. Satu bit kemudian, DATA diaktifkan, yang sekaligus akan mengaktifkan bit keluaran dari register geser pengiriman ke TXD. Pulsa penggeseran yang pertama akan muncul satu bit kemudian. Data tact time ( angka 9 ) diubah ke biner menjadi 10010000 b dengan nilai paling kiri adalah LSB dan paling kanan adalah MSB. Saat bit data digeser keluar ke kanan, data 0 akan diisikan dari kiri. Saat MSB dari byte data berada pada posisi keluaran dari register geser, data 1 yang telah diisikan ke posisi 9 sebelumnya berada di kiri MSB dan sisa posisi di sebelah kirinya berisi 0. Kondisi ini memberikan tanda pada unit kontrol TX untuk melakukan penggeseran yang terakhir kemudian menonaktifkan KIRIM dan
menset TI. Hal ini terjadi pada siklus mesin ke sepuluh setelah sinyal ‘TULIS KE SBUF’. TX CLOCK TULIS KE SUBF KIRIM
DATA
GESER
TXD
D0
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START TI
Gambar 4.3 Pengiriman angka 6 ke mikrokontroler 2 Data tact time kedua yang dikirim adalah data puluhan berupa angka 6. Angka 6 ini diubah biner menjadi 01100000 b dengan nilai paling kiri adalah LSB dan paling kanan adalah MSB. Biner ini dikirim ke mikrokontroler 2 seperti terlihat pada gambar 4.3.
TX CLOCK TULIS KE SUBF
KIRIM
DATA
GESER
D0
TXD
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START TI
Gambar 4.4 Pengiriman angka 1 ke mikrokontroler 2 Data tact time ketiga yang dikirim adalah data ratusan berupa angka 1. Angka 1 ini diubah biner menjadi10000000 b dengan nilai paling kiri adalah LSB dan paling kanan adalah MSB. Biner ini dikirim ke mikrokontroler 2 seperti terlihat pada gambar 4.4. 4.6 Penerimaan data oleh mikrokontroler 2 Penerimaan data serial yang dikirim dari mikrokontroler 1 ke mikrokontroler 2 ada 2 tahap, yaitu: 1. Penerimaan data tact time dan target Penerimaan data tact time dan target ini didapat setelah kita mengisi data target dan tact time melalui keypad pada mikrokontroler 1 dan menekan enter. naik: clr inc mov cjne jnb
ES serial a,serial a,#001h,lompatan1 RI,$
clr mov setb reti lompatan1: cjne jnb clr mov setb reti lompatan2: cjne jnb clr mov setb reti lompatan3: cjne jnb clr mov setb reti lompatan4: cjne jnb clr mov setb reti lompatan5: cjne jnb clr mov mov mov setb
RI data2,SBUF ES a,#002h,lompatan2 RI,$ RI data4,SBUF ES a,#003h,lompatan3 RI,$ RI data5,SBUF ES a,#004h,lompatan4 RI,$ RI data22,SBUF ES a,#005h,lompatan5 RI,$ RI data24,SBUF ES a,#006h,lompatan6 RI,$ RI data25,SBUF serial,#006h tanda,#003h ES
reti Cara kerja dari program tersebut adalah, mikrokontroler 2 mendeteksi adanya penerimaan data yang dikirim dari mikrokontroler 1. Data pertama yang dikirim oleh mikrikontroler 1 disimpan seara berurutan sebagai data tact time ( data2, data4, data5 ) dan target ( data22, data 24, data25). Data diterima satu persatu mulai dari data2 sampai data25 dengan menggunakan register SBUF. Setiap kali mengirim data maka data serial dinaikkan. Setelah data serial mencapai nilai 006h maka penerimaan data pertama telah lengkap dan data serial diset ke nilai 006h untuk penerimaan data actual.
2. Penerimaan data actual. Penerimaan data actual dilaksanakan setelah sensor barang mendeteksi adanya barang yang lewat. Sesaat setelah ada barang yang terdeteksi, maka data actual pada mikrokontroler 1 berubah menjadi actual + 1. Data baru ini langsung dikirim ke mikrokontroler 2. Data yang diterima oleh mikrokontroler 2 disimpan sebagai data actual yang terdiri dari data26 ( satuan ), data27 (data puluhan ), data28 ( data ratusan ). Data diterima satu persatu mulai dari data26 sampai data28 dengan menggunakan register SBUF. Setiap kali penerimaan data maka data serial dinaikkan. Setelah data serial mencapai nilai 009h maka penerimaan data kedua telah lengkap dan data serial diset ke nilai 006h untuk penerimaan data actual berikutnya. Listing program; naik: clr ES inc serial mov a,serial cjne a,#001h,lompatan1 jnb RI,$ clr RI mov data2,SBUF setb ES reti
. . . . . . . . . . . . . .. . . . . . . lompatan6: cjne jnb clr mov setb reti lompatan7: cjne jnb clr mov setb reti lompatan8: cjne jnb clr mov mov
a,#007h,lompatan7 RI,$ RI data26,SBUF ES a,#008h,lompatan8 RI,$ RI data27,SBUF ES a,#009h,lompatan9 RI,$ RI data28,SBUF serial,#006h
setb reti
ES
Data tact time sebesar 169 yang dikirim oleh mikrokontroler 1 akan diterima oleh mikrokontroler 2 dengan urutan yang sama dengan urutan pengiriman. Yaitu angka 9, angka 6 dan angka 1. Penerimaan dimulai saat terjadi transisi 1 ke 0 pada RXD. Dalam hal ini, RXD dicuplik dengan laju 16 kali baudrate yang ditetapkan. Saat transmisi dideteksi, pencacah pembagi 16 direset dan 1FFFh dituliskan ke dalam register geser masukan. Saat data masuk dari kanan ( data angka 9 atau 10010000 biner dengan nilai paling kiri adalah LSB dan paling kanan adalah MSB ), data 1 digeser keluar ke kiri. Pada saat bit start tiba di posisi paling kiri dalam register geser ( sebuah register 9 bit dalam mode 1 ), maka akan memberi tanda pada KONTROL RX untuk melakukan penggeseran yang terakhir isi SBUF dan RB8 serta menset RI, sinyal - sinyal ini dihasilkan, jika dan hanya jika kondisi ini bertepatan dengan waktu pulsa geser yng terakhir. Yaitu RI=0 dan SM2=1 atau bit stop yang diterima=1. Jika salah satu kondisi ini tidak dipenuhi,maka frame data yang diterima akan hilang. Namun jika kedua kondisi itu dipenuhi, maka bit stop akan ditampung di RB8, dan 8 bit masuk ke SBUF dan RI diaktifkan. Setelah itu unit akan melihat atau menunggu transisi 1 ke 0 lagi pada RXD.
RX CLOCK
D0
RXD
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.5 Penerimaan angka 9 dari mikrokontroler 1 Data tact time kedua yang diterima adalah data puluhan berupa angka 6. Angka 6 ini diubah biner menjadi 0110000 b dengan nilai paling kiri adalah LSB dan paling kanan adalah MSB. Biner ini diterima oleh mikrokontroler 2 seperti terlihat pada gambar 4.6. RX CLOCK
D0
RXD
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.6 Penerimaan angka 6 dari mikrokontroler 1 Data tact time ketiga yang diterima adalah data ratusan berupa angka 1. Angka 1 ini diubah biner menjadi 10000000 b dengan nilai paling kiri adalah LSB
dan paling kanan adalah MSB. Biner ini diterima oleh mikrokontroler 2 seperti terlihat pada gambar 4.7.
RX CLOCK
D0
RXD
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.7 Penerimaan angka 1 dari mikrokontroler 1
4.7 Pengiriman dan
penerimaan data actual, target dan different dari
mikrokontroler 2 ke mikrokontroler 3 Proses pengiriman data serial dari mikrokontroler 2 ke mikrokontroler 3 bekerja dengan cara menempatkan data target ( data31, data32, data33 ), different ( data10, data 11, data12 ) dan actual ( data26, data27, data28 ) ke alamat 030h sampai 038h. Data dipanggil satu persatu mulai dari data31 sampai data28 kemudian dikirim ke mikrokontroler 3 dengan menggunakan register SBUF. Setiap kali mengirim data maka data save1 dinaikkan. Setelah data save1 mencapai nilai 009h maka pengiriman data telah lengkap dan data save1 dinolkan kembali. Lising program :
mulai3: acall acall clr clr acall mov jnb clr inc mov cjne mov clr clr setb setb ret data_serial: mov mov inc mov inc mov inc mov inc mov inc mov inc mov inc mov inc mov ret kirim_data: mov mov add mov mov ret
mulai1 data_serial ; a ES kirim_data ; sbuf,a ; TI,$ ; TI ; save1 ; a,save1 a,#009,mulai3 ; save1,#000h ; c A EA ES
panggil rutin data_serial panggil rutin kirim_data isi sbuf dgn isi a ( kirim data ) tunggu sampai selesai nolkan TI naikkan save1 a = #009? Tdk, ke mulai3 isi save1 dgn #000
R1,#030h @R1,data31 R1 @R1,data32 R1 @R1,data33 R1 @R1,data10 R1 @R1,data11 R1 @R1,data12 R1 @R1,data26 R1 @R1,data27 R1 @R1,data28
; isi r1 dgn #030h ; isi alamat r1 dgn data31
R1,#030h a,save1 a,R1 R1,a a,@R1
; ; ; ; ;
; isi alamat r1 dgn data32 ; isi alamat r1 dgn data33 ; isi alamat r1 dgn data10 ; isi alamat r1 dgn data11 ; isi alamat r1 dgn data12 ; isi alamat r1 dgn data26 ; isi alamat r1 dgn data27 ; isi alamat r1 dgn data28 isi r1 dgn #030h isi a dgn data di save1 tambahkan a dgn R1 simpan hasilnya ke r1 isi a dgn alamat yg ditunjuk oleh r1
Proses penerimaan data serial dari mikrokontroler 2 ke mikrokontroler 3 adalah sebagai berikut :
Listing program; naik: clr ES inc serial mov a,serial cjne a,#001h,lompatan1 jnb RI,$
clr mov setb reti lompatan1: cjne jnb clr mov setb reti lompatan2: cjne jnb clr mov setb reti lompatan3: cjne jnb clr mov setb reti lompatan4: cjne jnb clr mov setb reti lompatan5: cjne jnb clr mov mov setb reti lompatan6: cjne jnb clr mov setb reti lompatan7: cjne jnb clr mov setb reti lompatan8: cjne jnb clr mov mov setb
RI data2,SBUF ES a,#002h,lompatan2 RI,$ RI data4,SBUF ES a,#003h,lompatan3 RI,$ RI data5,SBUF ES a,#004h,lompatan4 RI,$ RI data22,SBUF ES a,#005h,lompatan5 RI,$ RI data24,SBUF ES a,#006h,lompatan6 RI,$ RI data25,SBUF serial,#006h ES a,#007h,lompatan7 RI,$ RI data26,SBUF ES a,#008h,lompatan8 RI,$ RI data27,SBUF ES
a,#009h,lompatan9 RI,$ RI data28,SBUF serial,#000h ES
reti lompatan9: mov clr reti end
serial,#000h c
Cara kerja dari program tersebut adalah, mikrokontroler 3 mendeteksi adanya penerimaan data dari mikrokontroler 2 . data
yang dikirim oleh
mikrikontroler 2 disimpan oleh mikrokontroler 3 secara berurutan sebagai data target ( data2, data4, data5 ), different ( data10, data 11, data12 ) dan actual ( data26, data27, data28 ). Data diterima satu persatu mulai dari data2 sampai data28 dengan menggunakan register SBUF. Setiap kali penerimaan data maka data serial dinaikkan. Setelah data serial mencapai nilai 009h maka penerimaan data telah lengkap dan data serial diset ke nilai 000h untuk penerimaan data berikutnya. Pada pengujian dikirimkan data dari mikrokontroler 2 ke mikrokontroler 3 yang terdiri data – data ; •
Data target yang besarnya 15 terdiri angka 0, angka 1 dan angka 5
• Data actual yang besarnya 10 terdiri angka 0, angka 1 dan angka 0 • Data different yang besarnya 5 terdiri angka 0, angka 0 dan angka 5 Yang pertama dikirim adalah data target yaitu angka 5 yang disimpan di data31, angka 1 yang disimpan di data32 dan angka 0 yang disimpan di data33.
TX CLOCK TULIS KE SUBF KIRIM
DATA
GESER
TXD DATA 10
D0
D1
D2
D3
D4
D2
D3
D4
D2
D3
D4
D5
D6
D7
BIT STOP
D6
D7
BIT STOP
D6
D7
BIT STOP
BIT START TXD DATA 11
D0
D1
D5
BIT START TXD DATA 12
D0
D1
D5
BIT START TI
Gambar 4.8 Pengiriman angka 015 ( data target ) ke mikrokontroler 3
Data ini diterima oleh mikrokontroler 3 dengan urutan yang sama dengan urutan pengiriman yaitu data target diterima terlebih dulu dari angka 5 ( data2 ), angka 1 ( data4 ) dan angka 0 ( data5 ).
RX CLOCK
D0
RXD DATA 10
D1
D2
D3
D4
D1
D2
D3
D4
D1
D2
D3
D4
D5
D6
D7
BIT STOP
D6
D7
BIT STOP
D6
D7
BIT STOP
BIT START RXD DATA 11
D0
D5
BIT START RXD DATA 12
D0
D5
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.9 Penerimaan angka 015 ( data target ) oleh mikrokontroler 3 Pengiriman ke dua adalah data actual yaitu angka 0 yang disimpan di data26, angka 1 yang disimpan di data27 dan angka 0 yang disimpan di data28, terlihat pada gambar 4.10. TX CLOCK TULIS KE SUBF
KIRIM
DATA GESER
TXD DATA 52 TXD DATA 53 TXD DATA 54
D0
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START D0 BIT START D0
D1
D1
D2
D2
D3
D3
D4
D4
D5
D5
D6
D6
D7
D7
BIT STOP
BIT STOP
BIT START
TI
Gambar 4.10 Pengiriman angka 010 ( data actual ) ke mikrokontroler 3
Data actual diterima oleh oleh mikrokontroler 3 dengan urutan angka 0 ( data26 ), angka 1 ( data27) dan angka 0 ( data28 ) RX CLOCK
D0
RXD DATA 52
D1
D2
D3
D4
D2
D3
D4
D2
D3
D4
D5
D6
D7
BIT STOP
D6
D7
BIT STOP
D6
D7
BIT STOP
BIT START RXD DATA 53
D0
D1
D5
BIT START RXD DATA 54
D0
D1
D5
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.11 Penerimaan angka 010 ( data actual ) oleh mikrokontroler 3 Pengiriman ke tiga adalah data different yaitu angka 5 yang disimpan di data10, angka 0 yang disimpan di data11 dan angka 0 yang disimpan di data12. TX CLOCK TULIS KE SUBF
KIRIM
DATA GESER
TXD DATA 14 TXD DATA 15 TXD DATA 16
D0
D1
D2
D3
D4
D5
D6
D7
BIT STOP
BIT START D0 BIT START D0
D1
D1
D2
D2
D3
D3
D4
D4
D5
D5
D6
D6
D7
D7
BIT STOP
BIT STOP
BIT START
TI
Gambar 4.12 Pengiriman angka 005 ( data different ) ke mikrokontroler 3
Data different diterima oleh mikrokontroler 3 dengan urutan angka 5 ( data26 ), angka 0 ( data27 ) dan angka 0 ( data 28 ). RX CLOCK
D0
RXD DATA 52
D1
D2
D3
D4
D2
D3
D4
D2
D3
D4
D5
D6
D7
BIT STOP
D6
D7
BIT STOP
D6
D7
BIT STOP
BIT START RXD DATA 53
D0
D1
D5
BIT START RXD DATA 54
D0
D1
D5
BIT START BIT DETEKTOR SAMPLE TIMES
GESER
RI
Gambar 4.13 Penerimaan angka 005 ( data different ) oleh mikrokontroler 3
BAB V PENUTUP
5.I Kesimpulan 2
Miniatur Sistem Pemantau Waktu Proses Produksi ( Tact time, Target, Actual dan Different ) pada Industri Pengemasan Barang dengan Memanfaatkan Komunikasi Serial pada Mikrokontroler AT89S52”, terdiri atas 7 diagram blok fungsi, yaitu:
keypad, mikrokontroler 1 ( tact time dan actual ),
mikrokontroler 2 ( target dan different ), mikrokontroler 3 ( penerima data serial ), seven segment dan drivernya dan rangkaian sensor barang. 3
Sensor digunakan untuk mendeteksi barang yang dihasilkan, data sensor diterima oleh mikrokontroler AT89S52 dan diolah yang kemudian hasilnya akan ditampilkan dalam bentuk display seven segment, led dan buzzer
4
Ldr berfungsi sebagai sensor yang bekerja berdasarkan banyaknya intensitas cahaya yang jatuh pada nya, saat barang melewati sensor ldr tidak mendeteksi cahaya, sehingga out sensor akan mengirim data ke mikrokontroler yang menandakan bahwa sensor mendeteksi adanya barang
5
Pengiriman data dari mikrokontroler 1 ke mikrokontroler 2 dan dari mikrokontroler 2 ke mikrokontroler 3
dilakukan secara serial, untuk
pengiriman data ( target, actual dan different ) dapat diperpanjang jaraknya dengan menggunakan rangkaian 20 mA current loop. Rangkaian ini terdiri
dari data serial untuk mengendalikan basis transistor dan dihubungkan dengan tegangan 12 VDC dan pengirim optocoupler. 6
Pengiriman data serial antar mikrokontroler menggunakan baudrate 9600 dan mode 1. Mode 1 berarti data dikirim atau diterima 10 bit sekaligus, diawali dengan 1 bit start, 8 bit data yang dimulai dari bit yang bobotnya paling kecil ( bit 0 ) dan diakhiri dengan bit stop.
7
Dengan tact time yang cepat maka target dan actual akan semakin banyak, sebaliknya jika tact time-nya lambat maka target dan actual semakin sedikit.
8
Sistem pewaktuan menggunakan timer 0 dengan selang waktu 10 mili detik kemudian menyalakan LED seven segment dan diulang selama 100 kali untuk menghindari penggunaan IC latch sehingga lebih hemat.
9
Sistem tampilan
seven segment yang digunakan menggunakan proses
scanning, dengan proses ini daya yang dibutuhkan lebih hemat dan pengkabelannnya (wiring) lebih sederhana.
5.2 Saran 1. Untuk mendapatkan jarak pengrimanan/kontrol yang lebih jauh, dapat digunakan pemancar dan penerima dengan gelombang radio. 2. Dengan memanfaatkan semua port I/O mikrokontroler, maka jumlah digit seven segment yang digunakan bisa diperbanyak sampai 5 digit tact time, actual, target dan different.
3. Untuk membuat sistem pemantau yang sebenarnya, beberapa komponen perlu diubah yaitu LED seven segment dengan ukuran yang lebih besar agar tampak jelas dan driver seven segment-nya.
DAFTAR PUSTAKA
Roger L Thokheim, Sutrisno, Elektronika Digital, Erlangga, Jakarta, 1995 Frank D Petruzella, Sumanto, Elektronika Industri, Andi, Yogyakarta, 2001 Agfianto Eko Putra, Belajar
Mikrokontroler AT89C51/52/55, Gava Media,
Yogyakarta, 2004 Suhata, VB Sebagai Pusat Kendali Peralatan Elektonik, Elex Media Komputindo, Jakarta, 2005 Wasito S, Vademekum Elektronika, Gramedia, Jakarta,1995
LAMPIRAN LISTING PROGRAM : data4 data5 data6 data7 data8 data10 data11 data12 data22 data24 data25 data26 data27 data28 serial data29 data31 data32 data33 save1 tanda data13 cacah ratusan
equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ
45h 46h 4Ah 4Bh 4Ch 4Dh 4Eh 4Fh 50h 51h 52h 47h 48h 49h 53h 54h 55h 56h 57h 58h 59h 5Ah -500 equ
20
org mov mov mov mov mov mov mov mov mov mov acall ljmp org ljmp
0h serial,#000h data10,#000h data11,#000h data12,#000h data22,#0000h data24,#0000h data25,#0000h data31,#0000h ; data target per waktu satuan data32,#0000h ; data target per waktu puluhan data33,#0000h ; data target per waktu ratusan mulai1 aman 23h naik
mov mov setb mov setb setb mov mov mov mov mov mov mov mov mov mov mov
TMOD,#020h TH1,#0f9h TR1 SCON,#050h EA ES r1,#000h r2,#000h r3,#000h r4,#000h r5,#000h r6,#000h r7,#000h data1,#0000h data6,#0000h data7,#0000h data8,#0000h
aman:
; data hitungan tact time puluhan ; data hitungan tact time ratusan ; data hitungan tact time satuan ; ; ; ;
data data data data
untuk untuk untuk untuk
pengolahan pengolahan pengolahan pengolahan
tact tact tact tact
time time time time
ke ke ke ke
hex hex hex hex
mov data13,#0000h ; data untuk pengolahan tact time ke hex mov data2,#000h mov data4,#000h mov data5,#000h mov data26,#000h mov data27,#000h mov data28,#000h mov data29,#000h hitung: call mulai1 mov a,tanda cjne a,#003h,hitung mov tanda,#000h acall mulai3 ;========================================= ;mengubah data tact time ke bentuk heksa ;========================================== hex: acall mulai1 mov B,#000ah ; isi B dgn #00ah = #010 desimal mov A,data4 ; isi a dgn data4 mul AB ; kalikan data di A dgn data di B add A,data2 ; tambahkan isi A dgn data2 mov data1,A ; pindahkan hasil penjumlahan ke data1 mov B,#0064h ; isi B dgn data #064h = 100 desimal mov A,data5 ; isi a dgn data5 mul AB ; kalikan isi A dgn isi B mov data6,b ; pindahkan isi B ke data6 ( bit tinggi ) addc A,data1 ; tambahkan isi A dgn data1 mov data1,A ; pindahkan hasilnya ke data1 jc staru ; jika ada carry, lompat ke staru star: mov data13,data6 ; pindah isi data6 ke data13 ( bit tinggi ) mov data8,data1 ; pindah isi data1 ke data8 ( bit rendah ) ljmp start2 staru: mov a,#0001h ; isi a dgn #001 add a,data6 ; tambahkan a dgn data6 mov data6,a ; pindahkan hasil penjumlahan ke data6 ljmp star ; lompat ke star aman14: ljmp start2: mov cjne mov ljmp terus2: mov
aman a,data13 ; a,#000,terus2 ; data7,data8 ; start ; data7,#0ffh
pindah isi data13 ke a a = #000? Tdk, ke terus2 pindah isi data8 ke data7 lompat ke start
; isi data7 dgn #0ffh
;======================== ;menghitung waktu/timer ;======================== start: acall mulai1 ; panggil rutin tampil ( nyalakan seven segment ) acall tunda stop1: setb p2.4 ; tombol stop ditekan? Ya, lompat ke tampil1 jnb p2.4,tampil1 lanjut:
acall segmen) inc mov cjne mov
mulai1
; panggil rutin tampil ( nyalakan seven
r4 ; naikkan r4 a,r4 a,#064h,start ; mencapai 100? Ya nolkan r4 r4,#000h
pitu: mov inc mov cjne cjne dec mov cjne mov mov ljmp terus4: ljmp tampil1: acall ljmp terus3: mov mov ljmp
a,r7 a r7,a ; naikkan data r7 a,data7,terus4 ; r7 telah sama dgn data7? Tdk, ke terus4 a,#0ffh,res ; r7 sama dgn #0ffh? Tdk, ke res ( tact time tercapai ) data13 ; turunkan data13 a,data13 a,#000h,terus3 ; data13 sama dgn #000? Tdk, ke terus3 data7,data8 ; isi data8 ke data7 r7,#000h ; r7 isi dgn #000 terus1 ; lompat ke terus1 terus1 mulai1 stop1
; panggil rutin tampil ; lompat ke stop1
r7,#000h data7,#0ffh terus1
; nolkan r7 ; lompat ke terus1
;============================= ; Menghitung data target ;============================= res: mov r7,#000h ; nolkan r7 acall mulai1 inc data31 ; naikkan data target satuan mov a,data31 cjne a,#00ah,mulai2 ; target sudah 10? Tdk, lompat ke mulai2 mov data31,#0000h inc data32 ; naikkan data target puluhan mov a,data32 cjne a,#00ah,mulai2 ; target sudah 10? Tdk, lompat ke mulai2 mov data32,#0000h inc data33 ; naikkan data target ratusan mov a,data33 cjne a,#00ah,mulai2 ; target sudah 10? Tdk, lompat ke mulai2 mov data33,#0000h ljmp mulai2 ;============================== ; Menghitung waktu tact time ;============================== terus1: mov a,r6 ; isi a dgn r6 inc a mov r6,a cjne a,#00ah,start ; a = 10? Tidak, lompat ke start clr a ; ya, mov r6,a ; nolkan r6 mov a,r2
inc mov cjne clr mov mov inc mov cjne clr ljmp
mulai2: acall ljmp mulai3: acall acall clr clr acall mov jnb clr inc mov cjne mov clr clr setb setb ret mulai1: acall mov acall mov acall mov mov acall mov Acall mov mov acall mov Acall mov mov acall mov acall mov mov acall mov Acall
a ; r2,a a,#00ah,start ; a r2,a a,r3 a ; r3,a a,#00ah,start ; a aman
naikkan nilai r2 a = 10? Tidak, lompat ke start
naikkan nilai r2 a = 10? Tidak, lompat ke start
mulai3 star mulai1 data_serial ; a ES kirim_data ; sbuf,a ; TI,$ ; TI ; save1 ; a,save1 a,#009,mulai3 ; save1,#000h ; c A EA ES
panggil rutin data_serial panggil rutin kirim_data isi sbuf dgn isi a ( kirim data ) tunggu sampai selesai nolkan TI naikkan save1 a = #009? Tdk, ke mulai3 isi save1 dgn #000
isitabel_segment A,data10 kirim_segment10 p1,#0feh delay_segment P1,#0ffh A,data11 kirim_segment11 p1,#0fdh delay_segment P1,#0ffh A,data12 kirim_segment12 p1,#0fbh delay_segment P1,#0ffh A,data31 kirim_segment31 p1,#0f7h delay_segment P1,#0ffh A,data32 kirim_segment32 p1,#0efh delay_segment
mov mov acall mov Acall mov ret
P1,#0ffh A,data33 kirim_segment33 p1,#0dfh delay_segment P1,#0ffh
mulai: acall isitabel_segment mov A,data10 acall kirim_segment10 mov p1,#0feh acall delay_segment mov P1,#0ffh mov A,data11 acall kirim_segment11 mov p1,#0fdh Acall delay_segment mov P1,#0ffh mov A,data12 acall kirim_segment12 mov p1,#0fbh Acall delay_segment mov P1,#0ffh mov A,data31 acall kirim_segment31 mov p1,#0f7h acall delay_segment mov P1,#0ffh mov A,data32 acall kirim_segment32 mov p1,#0efh Acall delay_segment mov P1,#0ffh mov A,data33 acall kirim_segment33 mov p1,#0dfh Acall delay_segment mov P1,#0ffh ljmp star kirim_segment10: mov R0,#020h mov a,data10 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment11: mov R0,#020h mov a,data11 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment12: mov R0,#020h mov a,data12 add A,R0 mov R0,A mov A,@R0 mov P0,A
ret kirim_segment22: mov R0,#020h mov a,data22 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment24: mov R0,#020h mov a,data24 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment25: mov R0,#020h mov a,data25 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment31: mov R0,#020h mov a,data31 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment32: mov R0,#020h mov a,data32 add A,R0 mov R0,A mov A,@R0 mov P0,A ret kirim_segment33: mov R0,#020h mov a,data33 add A,R0 mov R0,A mov A,@R0 mov P0,A ret delay_segment: push B mov B,#01h loop_delay: push B mov B,#0afh loop_delay2: djnz B,loop_delay2 pop B djnz B,loop_delay pop B ret ret
;========================================== ; mengubah heksa ke bentuk karakter angka ;========================================== isiTabel_segment: mov R0,#020h ; isi r0 dgn mov @R0,#11000000b ;0 ; isi alamat 11000000b(angka0) inc R0 ; naikkan r0 mov @R0,#11111001b ;1 ; isi alamat 11111001b(angka1) inc R0 ; naikkan r0 mov @R0,#10100100b ;2 ; isi alamat 10100100b(angka2) inc R0 ; naikkan r0 mov @R0,#10110000b ;3 ; isi alamat 10110000b(angka3) inc R0 ; naikkan r0 mov @R0,#10011001b ;4 ; isi alamat 10011001b(angka4) inc R0 ; naikkan r0 mov @R0,#10010010b ;5 ; isi alamat 10010010b(angka5) inc R0 ; naikkan r0 mov @R0,#10000010b ;6 ; isi alamat 10000010b(angka6) inc R0 ; naikkan r0 mov @R0,#11111000b ;7 ; isi alamat 11111000b(angka7) inc R0 ; naikkan r0 mov @R0,#10000000b ;8 ; isi alamat 10000000b(angka8) inc R0 ; naikkan r0 mov @R0,#10010000b ;9 ; isi alamat 10010000b(angka9) inc R0 ; naikkan r0 mov @R0,#00000000b ; isi alamat ret
naik: clr inc mov cjne jnb clr mov setb reti lompatan1: cjne jnb clr mov setb reti lompatan2: cjne jnb clr mov setb
ES serial a,serial a,#001h,lompatan1 RI,$ RI data2,SBUF ES a,#002h,lompatan2 RI,$ RI data4,SBUF ES a,#003h,lompatan3 RI,$ RI data5,SBUF ES
#020h r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data r0 dgn data 00000000b / off
reti lompatan3: cjne jnb clr mov mov setb reti lompatan4: cjne jnb clr mov mov setb reti lompatan5: cjne jnb clr mov mov mov mov setb reti lompatan6: cjne jnb clr mov setb reti lompatan7: cjne jnb clr mov setb reti
lompatan8: cjne jnb clr mov setb reti lompatan9: cjne jnb clr mov mov setb itung: mov cjne mov
a,#004h,lompatan4 RI,$ RI data22,SBUF data10,data22 ES a,#005h,lompatan5 RI,$ RI data24,SBUF data11,data24 ES a,#006h,lompatan6 RI,$ RI data25,SBUF serial,#006h data12,data25 tanda,#003h ES a,#007h,lompatan7 RI,$ RI data26,SBUF ES a,#008h,lompatan8 RI,$ RI data27,SBUF ES
a,#009h,lompatan9 RI,$ RI data28,SBUF ES a,#00ah,lompatan10 RI,$ RI data29,SBUF serial,#006h ES a,data29 a,#001h,itung data29,#000h
;========================================== ;menghitung selisih data actual & target ;========================================== ulang2: acall mulai1 mov a,data10 ; isi a dgn data10 cjne a,#000h,mx1 ; a = 0 ? tidak, lompat ke mx1 mov data10,#009h mov a,data11 ; isi a dgn data11 cjne a,#000h,mx2 ; a = 0 ? tidak, lompat ke mx2 mov data11,#009h mov a,data12 ; isi a dgn data12 cjne a,#000h,mx3 ; a = 0 ? tidak, lompat ke mx3 acall mulai3 reti mx1: mov data10,a dec data10 acall mulai3 reti mx2: mov data11,a dec data11 acall mulai3 reti mx3: mov data12,a dec data12 acall mulai3 reti ;============================================= ; pengiriman data serial ke mikrokontroler3 ;============================================= kirim_data: mov R1,#030h ; isi r1 dgn #030h mov a,save1 ; isi a dgn data di save1 add a,R1 ; tambahkan a dgn R1 mov R1,a ; simpan hasilnya ke r1 mov a,@R1 ; isi a dgn alamat yg ditunjuk oleh r1 ret data_serial: mov R1,#030h ; isi r1 dgn #030h mov @R1,data31 ; isi alamat r1 dgn data31 inc R1 mov @R1,data32 ; isi alamat r1 dgn data32 inc R1 mov @R1,data33 ; isi alamat r1 dgn data33 inc R1 mov @R1,data10 ; isi alamat r1 dgn data10 inc R1 mov @R1,data11 ; isi alamat r1 dgn data11 inc R1 mov @R1,data12 ; isi alamat r1 dgn data12 inc R1 mov @R1,data26 ; isi alamat r1 dgn data26 inc R1 mov @R1,data27 ; isi alamat r1 dgn data27 inc R1 mov @R1,data28 ; isi alamat r1 dgn data28 ret ;===================== ;tunda 10 mili detik
;===================== tunda: mov
R5,#ratusan
; isi r5 dgn #020
lagi: mov mov setb tunggu: jnb clr clr djnz ret end
TH0,#high cacah; isi TH0 dgn #500 TL0,#low cacah ; isi TL0 dgn #500 TR0 ; mulai mencacah TF0,tunggu TF0 TR0 R5,lagi
; ; ; ;
tunggu sampai meluap nolkan TF0 hentikan penghitungan kurangi r5, jika belum 0 lompat ke lagi