VISUAL BASIC
TUGAS AKHIR
Diajukan sebagai salah satu syarat untuk memperoleh gelar Sarjana
NAMA : AGUNG EKA PUTRA NIM : 41405110043
FAKULTAS TEKNIK INDUSTRI PROGRAM STUDI TEKNIK ELEKTRONIKA
JAKARTA JANUARI 2009
ii Yang bertanda tangan di bawah ini,
N a m a : Agung Eka Putra N.I.M : 41405110043 Jurusan : Teknik Elektro Fakultas : Teknologi Industri
Judul Skripsi : Pengendalian Mobil Remote Control Melalui Personal
Computer (PC) Dengan Menggunakan Visual Basic
Dengan ini menyatakan bahwa hasil penulisan Tugas Akhir yang telah saya buat ini merupakan hasil karya sendiri dan benar keasliannya. Apabila ternyata di kemudian hari penulisan Tugas Akhir ini merupakan hasil plagiat atau penjiplakan terhadap karya orang lain, maka saya bersedia mempertanggungjawabkan sekaligus bersedia menerima sanksi berdasarkan aturan tata tertib di Universitas Mercu Buana.
Demikian, pernyataan ini saya buat dalam keadaan sadar dan tidak dipaksakan.
Penulis,
iii
PENGENDALIAN MOBIL REMOTE CONTROL MELALUI PERSONAL
COMPUTER (PC) DENGAN MENGGUNAKAN VISUAL BASIC
TUGAS AKHIR
NAMA : AGUNG EKA PUTRA NIM : 41405110043
Koordinator Tugas Akhir Pembimbing Tugas Akhir
( Jaja Kustija MSc ) ( Ir. Eko Ihsanto M.Eng )
Ketua Program Studi Teknik Elektro
iv
Puji syukur saya panjatkan kepada Allah SWT, karena atas rahmat dan hidayah-Nya, saya dapat menyelesaikan tugas akhir ini. Pembuatan tugas akhir ini dilakukan dalam rangka memenuhi syarat untuk mencapai gelar Sarjana Teknik Jurusan Teknik Elektronika pada Fakultas Teknologi Industri Universitas Mercu Buana. Saya menyadari bahwa, tanpa bantuan dan bimbingan dari berbagai pihak, dari masa perkuliahan sampai pada pembuatan tugas akhir ini, sangatlah sulit bagi saya untuk menyelesaikannya. Oleh karena itu, saya mengucapkan terima kasih kepada :
1. Ir. Eko Ihsanto M.Eng, selaku dosen pembimbing yang telah menyediakan waktu, tenaga dan pikiran untuk mengarahkan saya dalam pembuatan tugas akhir ini;
2. Istri dan orang tua saya yang telah memberikan dukungan material dan moral;
3. Rekan-rekan mahasiswa yang turut membantu saya dalam penyelesaian tugas akhir ini.
Akhir kata, saya berharap Allah SWT berkenan membalas segala kebaikan semua pihak yang telah membantu. Semoga tugas akhir ini dapat membawa manfaat bagi pengembangan ilmu.
Jakarta, 29 Desember 2008
v Nama : Agung Eka Putra
Program Studi : Teknik Elektronika
Judul : Pengendalian Mobil Remote Control Melalui Personal Computer (PC) Dengan Menggunakan Visual Basic
Tugas Akhir ini membahas tentang suatu perangkat elektronik yang dapat memantau kondisi lingkungan di sekitarnya untuk berbagai macam keperluan, misalnya sebagai pendukung keamanan, survey lapangan ke tempat yang tak terjangkau manusia, dsb. Pemantauan dilakukan dari jauh dengan memanfaatkan
Personal Computer (PC) yang telah dilengkapi dengan program Pengendali
Mobil Remote Control. Mobil Remote Control dipilih sebagai perlengkapan pemantauan karena mudah didapat dan harganya terjangkau. Mobil Remote
Control dipadukan dengan kamera untuk proses monitoring serta sebagai
feedback untuk operatornya. Pembahasan difokuskan pada sistem komunikasi serial antara PC dengan mikrokontroler AT89C51. Penggunaan pemrograman Visual Basic memudahkan pengoperasian mobil Remote Control karena cukup
user-friendly dan dapat dimodifikasi sesuai keperluan.
Kata kunci :
vi Name : Agung Eka Putra
Study Program: Electronic Engineering
Title : Controlling Remote Control Car with Personal Computer (PC) using Visual Basic
This is study an electronic peripheral available for monitoring area in any kind of need, for example as security supporter, survey field to place of which can not be reached by human, etc. Monitoring done from a distance by using Personal Computer (PC) which have been provided with “Pengendali Mobil Remote Control” program. Remote Control car is selected as monitoring equipment because it’s easy to get and cheap. Remote Control car attached with camera for monitoring process and also as feedback for the operator. The study focussed at serial communications system between PC with mikrokontroler AT89C51. Usage of Visual Basic programming make the operation of Remote Control car become easy because is enough user-friendly and can be modified according to need.
Key words :
vii
HALAMAN JUDUL ... i
LEMBAR PERNYATAAN ... ii
LEMBAR PENGESAHAN ... iii
KATA PENGANTAR ... iv
ABSTRAK .……… v
DAFTAR ISI ………. vii
DAFTAR GAMBAR .……… ix DAFTAR TABEL .………. x DAFTAR LAMPIRAN ………. xi BAB 1 PENDAHULUAN ... 1 1.1 Latar Belakang ... 1 1.2 Tujuan Penulisan ... 1 1.3 Batasan Masalah ………. 1 1.4 Sistematika Penulisan ………. 2
BAB 2 TINJAUAN PUSTAKA ………... 3
2.1 Komunikasi Serial ……….. 3
2.1.1 Jenis Komunikasi Data Serial ………... 3
2.1.2 Protokol Serial ………... 3
2.1.3 Pengaksesan Port Serial PC Dengan Visual Basic ... 4
2.1.3.1 Properti MSComm ……… 4 2.1.3.2 Even MSComm ………. 5 2.2 RS232 Converter ……… 7 2.3 Mikrokontroler AT89C51 ……….. 10 2.3.1 Jalur Input/Output ………. 12 2.3.2 Timer/Counter ………... 13 2.3.3 Sistem Interupsi ………. 15 2.3.4 Port Serial ……….. 22 2.3.5 Instruksi Mikrokontroler ...……… 26
2.3.5.1 Instruksi Transfer Data ……….. 26
2.3.5.2 Instruksi Aritmatika ………... 27
2.3.5.3 Instruksi Logika ………. 28
2.3.5.4 Instruksi Pencabangan (Branch) ………... 29
BAB 3 RANCANG BANGUN ... 31
3.1 Prinsip Kerja Sistem ... 31
3.2 Perangkat Keras ... 33
3.3 Perangkat Lunak ... 34
3.3.1 Pemrograman Mikrokontroler ………... 34
3.3.2 Pemrograman Pada PC ……….. 35
3.4 Format Data Serial ………. 36
3.5 Kamera Digital Wireless ……… 36
3.6 TV Tuner ………...………. 36
BAB 4 PENGUJIAN DAN ANALISA SISTEM ... 37
4.1 Hasil Rancang Bangun ... 37
viii
4.3 Pengujian ... 40
4.3.1 Pengujian Secara Software ... 40
4.3.2 Pengujian Secara Elektronik ... 41
BAB 5 KESIMPULAN DAN SARAN ... 48
DAFTAR REFERENSI ...………...……… 49
ix
Gambar 2.1 Timing Format Asynchronous – UART ... 3
Gambar 2.2 Spesifikasi Level Logic RS232C ... 8
Gambar 2.3 Konektor DB9 ... 9
Gambar 2.4 Konfigurasi Pin AT89C51 ………. 11
Gambar 2.5 Blok Diagram IC AT89C51 ………... 12
Gambar 2.6 Register Timer Control (TCON) ... 14
Gambar 2.7 Register Timer Mode Operation (TMOD) ... 14
Gambar 2.8 Bagan Kerja Prosesor Melayani Interupsi ... 16
Gambar 2.9 Peta Memory Program ... 19
Gambar 2.10 Bagan Lengkap Sistem Interupsi AT89C51 ... 21
Gambar 2.11 Register Serial Data Buffer (SBUF) ... 23
Gambar 2.12 Register Serial Port Control (SCON) ………... 24
Gambar 2.13 Sistem Pembangkit Clock Untuk UART ... 26
Gambar 3.1 Blok Diagram Sistem Keseluruhan ... 31
Gambar 3.2 Skematik Diagram Perangkat Keras Sistem ... 33
Gambar 3.3 Diagram Alir Program Mikrokontroler ... 34
Gambar 3.4 Diagram Alir Perangkat Lunak Pada PC ... 35
Gambar 3.5 Format Data Serial ... 36
Gambar 4.1 Perangkat Keras Sistem ... 37
Gambar 4.2 Tampilan Perangkat Lunak Sistem ... 37
Gambar 4.3 Menu Instalasi Langkah Pertama ... 38
Gambar 4.4 Menu Instalasi Langkah kedua ... 38
Gambar 4.5 Menu Instalasi Software TV Tuner ... 39
Gambar 4.6 Pengujian Dengan Hyper Terminal ... 40
Gambar 4.7 Pengujian Dengan Visual Basic ... 41
Gambar 4.8 Blok Pengujian Secara Elektronik ... 41
Gambar 4.9 Pengukuran Pada TP 1 Saat Tombol A Ditekan ... 42
Gambar 4.10 Pengukuran Pada TP 1 Saat Tombol B Ditekan ... 42
Gambar 4.11 Pengukuran Pada TP 1 Saat Tombol C Ditekan ... 43
Gambar 4.12 Pengukuran Pada TP 1 Saat Tombol D Ditekan ... 43
Gambar 4.13 Pengukuran Pada TP 2 Saat Tombol A Ditekan ... 44
Gambar 4.14 Pengukuran Pada TP 2 Saat Tombol B Ditekan ... 44
Gambar 4.15 Pengukuran Pada TP 2 Saat Tombol C Ditekan ... 44
Gambar 4.16 Pengukuran Pada TP 2 Saat Tombol D Ditekan ... 45
Gambar 4.17 Pengukuran Pada TP 3 Saat Tombol A Ditekan ... 45
Gambar 4.18 Pengukuran Pada TP 3 Saat Tombol B Ditekan ... 46
Gambar 4.19 Pengukuran Pada TP 3 Saat Tombol C Ditekan ... 46
x
Tabel 2.1 Nilai-nilai Properti Even Error pada CommEvent ………. 5
Tabel 2.2 Nilai-Nilai Properti Even Komunikasi Pada CommEvent ... 6
Tabel 2.3 Spesifikasi RS232C………. 9
xi
Listing Program Mikrokontroler ... 50
Listing Program Visual Basic ……… 53
Data Sheet AT89C51 ... 58
1
1.1 Latar Belakang
Pemantauan kondisi lingkungan di suatu tempat terkadang sangat diperlukan, misalnya untuk mendukung penjaga keamanan dalam melaksanakan tugasnya sehingga tidak perlu turun langsung ke lokasi untuk mengetahui lingkungan sekitarnya setiap saat secara terus menerus. Ataupun pemantauan ke tempat-tempat yang tidak mungkin dilakukan oleh manusia ,misalnya tempat yang penuh gas/asap beracun, tempat dengan ruangan yang sempit, dsb. Untuk mengatasi hal tersebut, diperlukan adanya suatu sistem pemantau yang dapat dikendalikan dari jarak jauh untuk memonitor suatu kondisi lingkungan secara audio visual dan realtime di lapangan dengan menggunakan komputer yang dioperasikan oleh seorang operator.
Untuk merealisasikan hal tersebut di atas, dalam tugas akhir ini dibuat suatu perangkat yang dapat memonitor suatu kondisi secara audio visual dan dikendalikan dari jarak jauh dengan menggunakan komputer.
1.2 Tujuan Penulisan
Tujuan dari penulisan tugas akhir ini adalah untuk merancang dan membuat sistem pengendali mobil remote control melalui PC dengan
menggunakan Visual Basic yang dapat digunakan diantaranya untuk keperluan pemantauan lingkungan.
1.3 Batasan Masalah
Permasalahan yang akan dibahas pada tugas akhir ini hanya dibatasi pada proses komunikasi data antara PC dengan mikrokontroler secara serial, melalui visual basic.
1.4 Sistematika Penulisan
Dalam Penulisan laporan tugas akhir ini, disusun berdasarkan bab-bab yang terdiri atas lima bab dan selanjutnya diperjelas dalam beberapa sub bab. Secara keseluruhan skripsi ini disusun dalam sistimatika sebagai berikut:
BAB 1 PENDAHULUAN
Berisi latar belakang, tujuan penulisan, batasan masalah, dan Sistematika penulisan.
BAB 2 TINJAUAN PUSTAKA
Bagian pertama menjelaskan mengenai port serial, bagian kedua menjelaskan mengenai konverter RS 232, dan ketiga menjelaskan mengenai mikrokontroler AT89S51.
BAB 3 RANCANG BANGUN
Bagian pertama menjelaskan mengenai prinsip kerja sistem keseluruhan, bagian kedua menjelaskan mengenai perancangan perangkat keras, bagian ketiga mmenjelaskan mengenai perancangan perangkat lunak pada komputer dan perancangan perangkat lunak pada mikrokontroler, dan yang keempat menjelaskan format data serial dari PC yang akan dikirimkan ke mikrokontroler.
BAB 4 PENGUJIAN DAN ANALISA SISTEM
Pada bab ini dibahas mengenai beberapa pengujian system yaitu: Melakukan uji koneksi dengan menggunalan hyper terminal,
Kemudian melakukan pengujian secara keseluruhan, dan dilanjutkan dengan menganalisa data hasil pengujian tersebut.
BAB 5 KESIMPULAN
Merupakan hasil yang didapat dari rancang bangun sistem secara keseluruhan.
3
2.1 Komunikasi Serial
2.1.1 Jenis komunikasi data serial
Ada dua macam cara pengiriman (transmisi) data secara serial. Kedua cara tersebut dibedakan oleh sinyal detak (clock) yang dipakai untuk mendorong data serial, yang pertama yaitu detak dikirim bersama-sama dengan data serial, cara tersebut dikatakan sebagai transmisi data serial secara synchron, sedangkan cara yang kedua yaitu disebut asynchron dimana detak dibangkitkan oleh masing-masing system pengirim maupun penerima.
2.1.2 Protokol Serial
Format populer untuk transmisi data kecepatan rendah adalah
asynchronous protokol. Format tipical untuk komunikasi asynchronous
adalah 12 bit. Start bit menginisialisasikan rangkaian pewaktuan. Hal ini dideteksi oleh perubahan dari High ke Low. Berikutnya adalah delapan bit data, diawali dengan LSB (Least Significant Bit) diakhiri dengan MSB (Most Significant Bit). Kemudian diikuti oleh opsional bit parity. Terakhir, line menjadi High untuk satu atau dua bit (stop bit), menandakan karakter telah habis. Format ini ditunjukkan pada Gambar 2.1 .
2.1.3 Pengaksesan port serial pada PC menggunakan pemograman Visual Basic 6.0
Pengaksesan port serial melalui visual basic yaitu dengan menggunakan kontrol MSComm. Kontrol MSComm menyediakan fasilitas komunikasi antara program aplikasi yang kita buat dengan port serial untuk mengirim atau menerima data melalui port serial. Setiap MSComm hanya menangani satu port serial, sehingga jika kita ingin menggunakan lebih dari satu port serial, kita juga harus menggunakan MSComm sebanyak port serial yang kita pakai.
2.1.3.1 Properti MSComm
Jumlah properti pada MSComm sangat banyak beberapa properti yang sering dipakai adalah sebagai berikut:
CommPort : Digunakan untuk menentukan nomor port serial yang akan dipakai.
Setting : Digunakan untuk menset nilai baud rate, parity, jumlah bit data, dan jumlah bit stop.
PortOpen : Digunakan untuk membuka ataupun menutup port serial yang dihubungkan dengan MSComm ini.
Input : Digunakan untuk mengambil data string yang ada pada buffer penerima.
Output : Digunakan untuk menulis data string pada buffer kirim.
Berikut adalah contoh penggunaan properti tersebut untuk komunikasi menggunakan modem.
Private Sub Form_Load ( ) MSComm1.commPort = 1
MSComm1.Settings = “4800,N,8,1” MSComm1.inputlen = 0
MSComm1.PortOpen = True
MSComm1.output = “ATV1Q0” & Chr$(13) Do
DoEvents
Buffer$ = Buffer$ & MSComm1,input
Loop Until InStr(Buffer$, “OK” & vbCRLF) MSComm1.PortOpen = False
Kode-kode program pada prosedur di atas melakukan aksi sebagai berikut:
x Port serial yang digunakan adalah COM1
x Setting MSComm adalah baud rate 4800, tanpa paritas, jumlah data 8 bit, dan jumlah bit stop adalah 1 bit.
x Memerintahkan kontrol MSComm membaca seluruh isi buffer ketika menggunakan perintah Input (MSComm1.InputLen = 0)
x Membuka port serial
x Mengirim perintah “ATV1Q0” diikuti ASCII 13 (enter) ke modem x Menunggu modem mengirimkan jawaban “OK” ke komputer x Menutup port serial
2.1.3.2 Even Pada MSComm
MSComm hanya mempunyai satu even saja, yaitu even OnComm. Even OnComm dibangkitkan jika nilai properti dari CommEvent berubah yang mengindikasikan telah terjadi even pada port serial baik even komunikasi maupun even error. Tabel 2.1 dan Tabel 2.2 berikut adalah nilai-nilai dari properti CommEvent. Nilai properti ini tidak tersedia pada saat design time, tetapi hanya dapat dibaca pada saat run time.
Tabel 2.1 Nilai-nilai Properti Even Error pada CommEvent
Konstanta Keterangan
comEventFrame Hardware mendeteksi adanya kesalahan framing comEventRxParity Hardware mendeteksi adanya kesalahan pariti comEventRxOver Buffer penerima mengalami over fllow, tidak
ada ruang kosong lagi pada buffer penerima comEventRxFull Buffer kirim penuh
comEventOverrun Port mengalami overrun comEventBreak Sinyal Break diterima
comEventDCB Mendapatkan kembali Device Control Block (DCB) dari port serial
Tabel 2.2 Nilai-Nilai Properti Even Komunikasi Pada CommEvent
Konstanta Keterangan
comEvSend Jumlah karakter pada buffer kirim lebih sedikit
daripada nilai property Sthreshold. Even ini akan dibangkitkan jika nilai pada property Sthreshold tidak diisi ‘0’.
comEvReceive Telah diterima karakter sebanyak nilai property
Rthreshold. Even ini akan dibangkitkan terus menerus sampai data diambil dari buffer penerima menggunakan perintah input. Even ini akan dibangkitkan jika nilai pada property Rthreshold tidak diisi ‘0’.
comEvCTS Terjadi perubahan pada saluran Clear to Send
comEvDSR Terjadi perubahan pada saluran Data Set Ready
comEvCD Terjadi perubahan pada saluran Carier Detect
comEvRing Terdeteksi adanya sinyal Ring
comEvEOF Karakter End of file diterima
Berikut adalah contoh penggunaan even OnComm untuk komunikasi menggunakan mikrokontroler. Akan dibaca hanya even comEvReceive saja, even yang lain diabaikan.
Private Static Sub MSComm1_OnComm() Dim Buffer As Variant
Select Case MSComm1.CommEvent
Case comEvReceive
If MSComm1.InBufferCount >= 3 then Buffer = CStr (MSComm1.Input)
If Mid(Buffer, 1, 1) = “O” Then
If Mid(Buffer, 2, 1) = “K” Then StatusBar1.Panels(“value”).Text = “Value:” & Asc(Mid(Buffer, 3, 1))
StatusBar1.Panels(“Status”).Text = “status: Connect” End If End If End Selec End Sub
Kode-kode program pada prosedur diatas akan melakukan aksi sebagai berikut:
x Mendeteksi even comEvReceive, kemudian menentukan apakah sudah diterima tiga buah karakter pada buffer penerima
x Menentukan apakah karakter yang diterima adalah karakter ‘OK’. Jika karakter yang diterima adalah karakter ‘OK’, maka akan diubah nilai ‘Value’ dan nilai ‘Status’ pada property panel control StatusBar1
2.2 RS232C Converter
RS232 (Recommended Standard 232) merupakan sebuah antar muka standar yang disetujui oleh Electronic Industries Association (EIA) untuk komunikasi DTE (Data Terminal Equipment) dengan DCE (Data
Circuit-Terminating Equipment) secara serial. Standard EIA RS232 pertama kali
dipublikasikan pada tahun 1962. Standar ini sudah ada jauh sebelum IC TTL populer. Pada tahun 1987, EIA mengeluarkan standar versi baru dan merubah nama menjadi EIA-232D dan pada tahun 1991 menjadi EIA/TIA-232-E. EIA/TIA-232-E merupakan revisi ke lima dari standar RS232. Namun demikian banyak orang masih menganggap sebagai standar RS232C, atau hanya RS232.
Antar muka (interface) secara serial lebih sulit dibandingkan dengan antar muka (interface) secara paralel. Dalam banyak kasus, beberapa alat yang dihubungkan dengan port serial akan membutuhkan pengubah transmisi serial ke parallel. Hal ini dapat dilakukan dengan menggunakan IC Universal
Asynchronous Receiver/Transmitter ( UART ).
Peralatan yang menggunakan kabel serial untuk komunikasinya dibagi menjadi dua golongan utama yaitu DCE (Data Communication Equipment) dan DTE (Data Terminal Equipment). Yang tergolong DCE adalah peralatan seperti modem, printer, mouse, dan plotter. Dan yang tergolong DTE adalah Komputer atau terminal.
Dalam ketentuan RS232C, level logika 1 (Mark) dinyatakan dengan tegangan antara –3 sampai –15 Volt dengan beban (-25 Volt tanpa beban), dan level logika 0 (Space) dinyatakan dengan tegangan antara +3 sampai +15 Volt dengan beban (+25 Volt tanpa beban). Mengingat komponen digital pada umumnya bekerja dengan sumber tegangan +5 Volt, dan level logika ‘0’ dinyatakan dengan tegangan antara 0 sampai 0,8 Volt dan level logika ‘1’ dinyatakan dengan tegangan 3,5 sampai 5 Volt, maka antara rangkaian digital dan saluran RS232C biasanya disisipkan IC ‘RS232-TTL Voltage Translator’.
Standar RS232C juga membatasi maksimum slew rate pada output driver. Batasan ini dimasukkan untuk membantu mengurangi kemungkinan cross-talk diantara sinyal yang berdekatan. Semakin kecil rise dan fall time, maka semakin kecil pula kemungkinan untuk terjadi cross-talk. Berdasarkan keadaan ini slew rate maksimum yang diizinkan adalah 30V/µs. Dan juga RS232C telah menentukan besar baud rate maksimum yaitu 20k bit / detik. Ketentuan ini dimaksudkan untuk mengurangi kemungkinan terjadinya cross-talk. Impedansi antara driver dan receiver juga telah ditentukan. Beban pada driver dispesifikasikan sebesar 3k sampai 7k. Untuk daerah antara +3 dan -3 volt level logikanya tidak didefinisikan. Tegangan open circuit tidak boleh lebih dari 25 volt ( referensi terhadap ground ). Arus short circuit tidak boleh melebihi 500mA. Spesifikasi level logic RS 232 dapat dilihat pada Gambar 2.2
Gambar 2.2 Spesifikasi Level Logic RS232C
Dalam saluran RS232C level logika ditransmisikan sebagai perbedaan tegangan antara saluran dan Ground, cara semacam ini dikatakan sebagai
unbalanced (single-ended) data transmission (transmisi data tidak imbang). Unbalanced (single-ended) data transmission menggunakan single konduktor,
dengan tegangan direferensikan terhadap sinyal ground (common) yang menunjukkan keadaan logic. Jika sinyal menerima gangguan derau listrik (electrical noise), bisa berakibat fatal pada penerima karena derau yang diterima bisa disalah tafsirkan sebagai sinyal digital.
Saluran RS232C banyak dipakai untuk menghubungkan komputer dengan alat pendukungnya, misalnya komputer dengan printer, dan komputer dengan modem. Namun hubungan antara alat tidak lebih dari 50 feet (sekitar 16,4 meter). Untuk lebih jelasnya, spesifikasi RS 232 dapat dilihat pada Tabel 2.3 dan
konfigurasi dari port serial PC dapat dilihat pada Gambar 2.5 dengan keterangan tiap kaki terdapat pada Tabel 2.4.
Tabel 2.3 Spesifikasi RS232C
Spesifikasi Keterangan
Mode operasi Single Ended
Jumlah Tx dan Rx yang diizinkan 1 Tx, 1Rx ( point to point ) Panjang kabel maksimum 50 feet
Data Rate maksimum 20 kbps
Range output driver minimum ±5V sampai ±15V Range output driver maksimum ±25V Impedansi pada Tx 3kവ sampai 7kവ
Sensitivitas input Rx ±3V
Range tegangan input Rx s15V Resistansi input Rx maksimum 3k sampai 7k
Receiver Threshold ±3V
Gambar 2.3 Konektor DB9
Tabel 2.4 RS232C Pada DB9
Nomor Pin Sinyal Deskripsi
1 DCD Data Carrier Detect
2 RD Receive Data
3 TD Transmit Data
4 DTR Data Terminal Ready
5 GND Signal Ground
6 DSR Data Set Ready
7 RTS Ready To Send
8 CTS Clear To Send
Sinyal Fungsi
DCD Saat modem mendeteksi sinyal carrier dari modem ujung yang lain pada line telepon, maka line ini akan aktif.
RD Sinyal ini dihasilkan DCE (Data Circuit-Terminating Equipment) dan diterima oleh DTE (Data Terminal Equipment).
TD Sinyal ini dihasilkan DTE (Data Terminal Equipment) dan diterima oleh DCE (Data Circuit-Terminating Equipment).
DTR Mengindikasikan kesiapan dari DTE. Sinyal ini ON oleh DTE saat siap untuk mengirim atau menerima data.
DSR Mengindikasikan kesiapan dari DCE. Sinyal ini ON oleh DCE saat siap untuk mengirim atau menerima data.
RTS Saat DTE siap untuk mengirim data ke DCE, RTS akan ON. Pada sistem simplex dan duplex, kondisi ini menunjukkan DCE pada mode receive. Pada sistem half-duplex, kondisi ini menunjukkan DCE pada mode transmit. Setelah RTS diaktifkan, DCE harus mengaktifkan CTS sebelum memulai komunikasi.
CTS Digunakan bersama dengan RTS untuk mengadakan handshaking antara DTE dan DCE. Setelah DCE menerima perintah RTS, hal ini menyebabkan CTS ON saat siap untuk memulai komunikasi.
2.3 Mikrokontroler AT89C51
Mikrokontroler adalah kombinasi CPU dengan memori, serta I/O yang berbentuk satu chip atau dikenal dengan SCM (Single Chip Microcomputer) yang merupakan suatu unit pengontrol yang sudah memenuhi sistem minimum komputer. Terdapat 2 macam memori yang memiliki sifat yang berbeda, yaitu: 1. Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan
catu daya. Dipakai untuk menyimpan program. Ketika di-reset, mikrokontroler akan langsung bekerja dengan program dalam ROM tersebut, sesuai dengan keperluannya. Dalam susunan IC mikrokontroler AT89C51 memori penyimpan program ini dinamakan sebagai Memory Program
2. Random Access Memory (RAM) isinya akan hilang atau terhapus ketika IC tidak mendapatkan catu daya. Dipakai untuk menyimpan data pada saat
program bekerja. Selain itu, RAM dipakai pula untuk Stack. RAM yang dipakai untuk menyimpan data ini disebut juga sebagai Memory Data
Keistimewaan dari IC mikrokontroler AT89C51 ini adalah:
x Sebuah CPU (Central Processing Unit) 8 bit yang termasuk keluarga MCS-51
x Memiliki 4 KiloByte Reprogrammable flash Memory x Memiliki 128 Bytes Internal RAM
x Maksimum frekuensi clock sampai 24MHz x Memiliki 32 Programmable I/O Lines x Memiliki dua 16 bit timer/counter x Memiliki 6 sumber interupsi
x Memiliki sebuah port serial dengan kontrol serial full duplex UART x Kemampuan melaksanakan operasi perkalian, pembagian, dan operasi
boolean (Bit)
Konfigurasi pin dan blok diagram dari mikrokontroler AT89C51 dapat dilihat pada Gambar 2.4 dan Gambar 2.5.
Gambar 2.5 Blok Diagram IC AT89C51
2.3.1 Jalur Input/Output Mikrokontroler
Mikrokontroler AT89C51 memiliki 32 jalur input/output yang terdiri dari 4 port parallel yaitu port 0, port 1, port 2 dan port 3. Adapun penjelasan dari masing–masing port adalah sebagai berikut:
a. Port 0
Port 0 merupakan port parallel 8 bit open drain dua arah
masukan TTL. Port 0 dapat juga dikonfigurasikan menjadi data bus atau alamat rendah yang dimultipleks selama akses ke eksternal program dan data memori.
b. Port 1
Port 1 merupakan port parallel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan (general purpose)
c. Port 2
Port 2 merupakan port parallel selebar 8 bit dua arah (bidirectional). Port 2 ini juga digunakan untuk mengirimkan byte alamat bila dilakukan pengaksesan memori eksternal.
d. Port 3
Port 3 merupakan port parallel 8 bit dua arah yang memiliki fungsi pengganti. Fungsi pengganti meliputi TxD (Transmit Data), RxD (Receive Data), INT0 (Interrupt 0), INT1 (Interrupt 1), T0 (Timer 0), T1 (Timer 1), WR (Write), dan RD (Read). Bila fungsi pengganti ini tidak digunakan, port 3 dapat digunakan sebagai port parallel 8 bit serbaguna.
2.3.2 Timer/Counter
Pada mikrokontroler AT89C51 terdapat 2 buah timer/counter 16 bit yang dapat diatur melalui perangkat lunak, yaitu timer/counter 0 dan timer/counter 1. Perioda waktu timer/counter secara umum ditentukan oleh persamaan berikut :
1. Sebagai timer/counter 8 bit
T = (255 – TLx) x 1 siklus mesin (2-1) Dimana TLx adalah isi register TL0 atau TL1
2. Sebagai timer/counter 16 bit
T = (65536 – THx TLx) x siklus mesin (2-2) THx = isi register TH0 atau TH1
Pengontrol kerja timer/counter adalah register timer control (TCON). Adapun definisi dari bit-bit pada timer control adalah sebagai berikut :
MSB LSB
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Gambar 2.6 Register Timer Control (TCON)
Ket :
TF1 : Timer 1 overflow flag
TR1 : Bit untuk menjalankan timer 1 TF0 : Timer 0 overflow flag
TR0 : Bit untuk menjalankan timer 0 IE1 : Eksternal Interupt 1 edge flag IT1 : Interupt 1 control bit
IE0 : Eksternal Interupt 0 edge byte IT0 : Interupt 0 control bit
Pengontrol pemilihan mode operasi timer/counter adalah register timer mode (TMOD) yang mana definisi bit-bitnya adalah sebagai berikut:
MSB LSB
GATE C / T M1 M0 GATE C / T M1 M0
Gambar 2.7 Register Timer Mode Operation (TMOD)
GATE : Gate harus diset 1 untuk mengaktifkan fungsi
timer/counter
C / T : Pemilih fungsi timer atau counter. Clear (0) untuk
operasi timer dengan masukan dari sistem clock internal. Set (1) untuk operasi counter dengan masukan pin T0 atau T1.
Tabel 2.4 Mode operasi timer
M1 M0 MODE OPERASI
0 0 0 Timer 13 bit
0 1 1 Timer / Counter 16 bit 1 0 2 Timer auto reload 8 bit
TL0 adalah timer / counter 8 bit yang dikontrol oleh kontrol bit standar timer 0 1 1 3 TH0 adalah timer 8 bit dan dikontrol bit
timer 1
2.3.3 Sistem Interupsi
Pengetahuan mengenai interupsi sangat membantu mengatasi masalah pemrograman mikrokontroler dalam hal menangani banyak peralatan input/output.
Saat kaki RESET pada IC mikrokontroler menerima sinyal reset
Program Counter diisi dengan sebuah nilai, nilai tersebut dinamakan
sebagai vektor reset (reset vector) yang merupakan nomor awal memori-program yang menampung memori-program yang harus dijalankan.
Pembahasan di atas memberi gambaran bahwa proses reset merupakan peristiwa perangkat keras (sinyal reset diumpankan ke kaki Reset) yang dipakai untuk mengatur kerja dari perangkat lunak, yakni menentukan aliran program prosesor (mengisi Program Counter dengan vektor reset).
Program yang dijalankan dengan cara reset, merupakan program
utama bagi prosesor.
Peristiwa perangkat keras yang dipakai untuk mengatur kerja dari perangkat lunak tidak hanya terjadi pada proses reset, tapi terjadi pula dalam proses interupsi.
Dalam proses interupsi, terjadinya sesuatu pada perangkat keras tertentu dicatat dalam flip-flop khusus, flip-flop tersebut sering disebut sebagai ‘petanda’ (flag), catatan dalam petanda tersebut diatur sedemikian rupa sehingga bisa merupakan sinyal permintaan interupsi pada prosesor.
Jika permintaan interupsi ini dilayani prosesor, Program Counter akan diisi dengan sebuah nilai. Nilai tersebut dinamakan sebagai vektor interupsi (interrupt vector), yang merupakan nomor awal memori-program yang menampung program yang dipakai untuk melayani permintaan interupsi tersebut.
Program yang dijalankan dengan cara interupsi, dinamakan sebagai program layanan interupsi (ISR - Interrupt Service Routine). Saat prosesor menjalankan ISR, pekerjaan yang sedang dikerjakan pada program utama sementara ditinggalkan, selesai menjalankan ISR prosesor kembali menjalankan program utama, seperti yang digambarkan dalam Tabel 2.8
Gambar 2.8 Bagan Kerja Prosesor Melayani Interupsi
Sebuah prosesor bisa mempunyai beberapa perangkat keras yang merupakan sumber sinyal permintaan interupsi, masing-masing sumber interupsi dilayani dengan ISR berlainan, dengan demikian prosesor mempunyai beberapa vektor interupsi untuk memilih ISR mana yang dipakai melayani permintaan interupsi dari berbagai sumber. Kadang kala sebuah vektor interupsi dipakai oleh lebih dari satu sumber interupsi yang sejenis, dalam hal semacam ini ISR bersangkutan harus menentukan sendiri sumber interupsi mana yang harus dilayani saat itu.
Jika pada saat yang sama terjadi lebih dari satu permintaan interupsi, prosesor akan melayani permintaan interupsi tersebut menurut perioritas yang sudah ditentukan, selesai melayani permintaan interupsi
perioritas yang lebih tinggi, prosesor melayani permintaan interupsi berikutnya, baru setelah itu kembali mengerjakan program utama.
Saat prosesor sedang mengerjakan ISR, bisa jadi terjadi permintaan interupsi lain, jika permintaan interupsi yang datang belakangan ini mempunyai perioritas lebih tinggi, ISR yang sedang dikerjakan ditinggal dulu, prosesor melayani permintaan yang perioritas lebih tinggi, selesai melayani interupsi perioritas tinggi prosesor meneruskan ISR semula, baru setelah itu kembali mengerjakan program utama. Hal ini dikatakan sebagai interupsi bertingkat (nested interrupt), tapi tidak semua prosesor mempunyai kemampuan melayani interupsi secara ini.
Seperti terlihat dalam Gambar 2.9 AT89C51 mempunyai 6 sumber interupsi, yakni Interupsi External (External Interrupt) yang berasal dari kaki INT0 dan INT1, Interupsi Timer (Timer Interrupt) yang berasal dari
Timer 0 maupun Timer 1, Interupsi Port Seri (Serial Port Interrupt)
yang berasal dari bagian penerima dan bagian pengirim Port Seri.
Bit IE0 (atau bit IE1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Eksternal. Ada 2 keadaan yang bisa meng-aktip-kan petanda ini, yang pertama karena level tegangan ‘0’ pada kaki INT0 (atau INT1), yang kedua karena terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki INT0 (atau INT1). Pilihan bentuk sinyal ini ditentukan lewat bit IT0 (atau bit IT1) yang terdapat dalam register
TCON.
x Kalau bit IT0 (atau IT1) =’0’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat kaki INT0=’0’.
x Kalau bit IT0 (atau IT1) =’1’ maka bit IE0 (atau IE1) dalam TCON menjadi ‘1’ saat terjadi transisi sinyal ‘1’ menjadi ‘0’ pada kaki
INT0.
Menjelang prosesor menjalankan ISR dari Interupsi Eksternal, bit
IE0 (atau bit IE1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Eksternal sudah dilayani. Namun jika permintaan Interupsi
Ekternal terjadi karena level tegangan ‘0’ pada kaki IT0 (atau IT1), dan level tegangan pada kaki tersebut saat itu masih =’0’ maka bit IE0 (atau bit IE1) akan segera menjadi ‘1’ lagi.
Bit TF0 (atau bit TF1) dalam TCON merupakan petanda (flag) yang menandakan adanya permintaan Interupsi Timer, bit TF0 (atau bit
TF1) menjadi ‘1’ pada saat terjadi limpahan pada pencacah biner Timer 0 (atau Timer 1).
Menjelang prosesor menjalankan ISR dari Interupsi Timer, bit
TF0 (atau bit TF1) dikembalikan menjadi ‘0’, menandakan permintaan Interupsi Timer sudah dilayani.
Interupsi port seri terjadi karena dua hal, yang pertama terjadi setelah port seri selesai mengirim data 1 byte, permintaan interupsi semacam ini ditandai dengan petanda (flag) TI=’1’. Yang kedua terjadi saat port seri telah menerima data 1 byte secara lengkap, permintaan interupsi semacam ini ditandai dengan petanda (flag) RI=’1’.
Petanda di atas tidak dikembalikan menjadi ‘0’ menjelang prosesor menjalankan ISR dari Interupsi port seri, karena petanda tersebut masih diperlukan ISR untuk menentukan sumber interupsi berasal dari TI atau RI. Agar port seri bisa dipakai kembali setelah mengirim atau menerima data, petanda-petanda tadi harus di-nol-kan lewat program.
Petanda permintaan interupsi (IE0, TF0, IE1, TF1, RI dan TI) semuanya bisa di-nol-kan atau di-satu-kan lewat instruksi, pengaruhnya sama persis kalau perubahan itu dilakukan oleh perangkat keras. Artinya permintaan interupsi bisa diajukan lewat pemrograman, misalnya permintaan interupsi eksternal IT0 bisa diajukan dengan instruksi SETB
IE0.
Semua sumber permintaan interupsi yang di bahas di atas, masing-masing bisa di-aktip-kan atau di-nonaktip-kan secara tersendiri lewat bit-bit yang ada dalam register IE (Interrupt Enable Register).
Bit EX0 dan EX1 untuk mengatur interupsi eksternal INT0 dan
ES untuk mengatur interupsi port seri, seperti yang digambarkan dalam gambar 2.8. Di samping itu ada pula bit EA yang bisa dipakai untuk mengatur semua sumber interupsi sekaligus.
Setelah reset, semua bit dalam register IE bernilai ‘0’, artinya sistem interupsi dalam keadaan non-aktip. Untuk mengaktipkan salah satu sistem interupsi, bit pengatur interupsi bersangkutan diaktipkan dan juga
EA yang mengatur semua sumber interupsi. Misalnya instruksi yang dipakai untuk mengaktipkan interupsi ekternal INT0 adalah SETB EX0 disusul dengan SETB EA.
Saat AT89C51 menanggapi permintaan interupsi, Program Counter diisi dengan sebuah nilai yang dinamakan sebagai vektor interupsi, yang merupakan nomor awal dari memori-program yang menampung ISR untuk melayani permintaan interupsi tersebut. Vektor interupsi itu dipakai untuk melaksanakan inststuksi LCALL yang diaktipkan secara perangkat keras.
Vektor interupsi untuk interupsi eksternal INT0 adalah $0003, untuk interupsi timer 0 adalah $000B, untuk interupsi ekternal INT1 adalah $0013, untuk interupsi timer 1 adalah $001B dan untuk interupsi port seri adalah $0023.
Jarak vektor interupsi satu dengan lainnya sebesar 8, atau hanya tersedia 8 byte untuk setiap ISR. Jika sebuah ISR memang hanya pendek saja, tidak lebih dari 8 byte, maka ISR tersebut bisa langsung ditulis pada memori-program yang disediakan untuknya. ISR yang lebih panjang dari 8 byte ditulis ditempat lain, tapi pada memori-program yang ditunjuk oleh
vektor interupsi diisikan instruksi JUMP ke arah ISR bersangkutan.
Masing-masing sumber interupsi bisa ditempatkan pada dua tingkatan perioritas yang berbeda. Pengaturan tingkatan perioritas isi dilakukan dengan bit-bit yang ada dalam register IP (Interrupt Priority).
Bit PX0 dan PX1 untuk mengatur tingkatan perioritas interupsi eksternal INT0 dan INT1, bit PT0 dan PT1 untuk mengatur interupsi timer 0 dan timer 1, bit PS untuk mengatur interupsi port seri, seperti yang digambarkan dalam Gambar 2.9
Setelah reset, semua bit dalam register IP bernilai ‘0’, artinya semua sumber interupsi ditempatkan pada tingkatan tanpa perioritas. Masing-masing sumber interupsi bisa ditempatkan pada tingkatan perioritas utama dengan cara men-‘satu’-kan bit pengaturnya. Misalnya interupsi timer 0 bisa ditempatkan pada tingkatan perioritas utama dengan instruksi SETB PT1.
Sebuah ISR untuk interupsi tanpa prioritas bisa diinterupsi oleh sumber interupsi yang berada dalam tingkatan perioritas utama. Tapi interupsi yang berada pada tingkatan perioritas yang sama, tidak dapat saling meng-interupsi.
Jika 2 permintaan interupsi terjadi pada saat yang bersamaan, sedangkan kedua interupsi tersebut terletak pada tingkatan perioritas yang berlainan, maka interupsi yang berada pada tingkatan perioritas utama akan dilayani terlebih dulu, setelah itu baru melayani interupsi pada tingkatan tanpa perioritas.
Jika kedua permintaan tersebut bertempat pada tingkatan perioritas yang sama, perioritas akan ditentukan dengan urutan sebagai berikut : interupsi eksternal INT0, interupsi timer 0, interupsi ekternal INT1, interupsi timer 1 dan terakhir adalah interupsi port seri.
Gambar 2.10 menggambarkan sistem interupsi AT89C51 selangkapnya, berikut dengan masing-masing bit dalam register-register
SFR (Special Function Register) yang dipakai untuk mengatur masing-masing sumber interupsi.
Saklar yang digambarkan dalam Gambar 2.10 mewakili bit dalam register yang harus diatur untuk mengendalikan sumber interupsi, kotak bergambar bendera kecil merupakan flag (petanda) dalam register yang mencatat adanya permintaan interupsi dari masing-masing sumber interupsi. Kedudukan saklar dalam gambar tersebut menggambarkan kedudukan awal setelah AT89C51 di-reset.
2.3.4 Port Serial
Pada mikrokontroler AT89C51 terdapat dua cara pengiriman data seri yaitu sinkron dan asinkron. Transmisi data seri secara sinkron adalah pengiriman data dilakukan bersamaan dengan clock sedangkan transmisi data secara asinkron adalah pengiriman data tidak dilakukan bersamaan dengan clock, sehingga rangkaian penerima data harus membangkitkan sendiri clock pendorong data seri.
Port seri pada mikrokontroler AT89C51 dapat bekerja dalam 4 mode, 1 mode bekerja secara sinkron dan 3 mode lainnya bekerja secara asinkron. Adapun keempat mode tersebut adalah sebagai berikut :
1 Mode 0
Mode ini bekerja secara sinkron, data seri dikirim dan diterima melalui kaki P3.0 (RxD), dan kaki P3.1 (TxD) dipakai untuk menyalurkan clock pendorong data seri. Data dikirim/diterima 8 bit sekaligus, dimulai dari bit yang bobotnya paling kecil (bit 0) dan diakhiri dengan bit yang bobotnya paling besar (bit 7). Kecepatan pengiriman data (baud rate) adalah 1/12 frekuensi osilator kristal.
2. Mode 1
Mode ini dan mode-mode berikutnya bekerja secara asinkron, data dikirim melalui kaki P3.1 (TxD) dan diterima melalui kaki P3.0 (RxD). Pada Mode 1 data dikirim/diterima 10 bit sekali gus, diawali dengan 1 bit start, disusul dengan 8 bit data yang dimulai dari bit yang bobotnya paling kecil (bit 0), diakhiri dengan 1 bit stop. Pada mikrokontroler AT89C51 yang berfungsi sebagai penerima bit stop ditampung pada RB8 dalam register SCON. Kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan. Mode inilah yang umum dikenal sebagai UART (Universal Asynchronous Receiver/Transmitter).
3. Mode 2
Data dikirim/diterima 11 bit sekaligus, diawali dengan 1 bit start, disusul 8 bit data yang dimulai dari bit yang bobotnya paling kecil
(bit 0), kemudian bit ke 9 yang bisa diatur lebih lanjut, diakhiri dengan 1 bit stop. Pada mikrokontroler AT89C51 yang berfungsi sebagai pengirim bit 9 tersebut berasal dari bit TB8 dalam register
SCON sedangkan yang berfungsi sebagai penerima bit 9 ditampung pada bit RB8 dalam register SCON, bit stop diabaikan tidak ditampung. Kecepatan pengiriman data (baud rate) bisa dipilih antara 1/32 atau 1/64 frekuensi osilator kristal.
4. Mode 3
Mode ini sama dengan Mode 2, hanya saja kecepatan pengiriman data (baud rate) bisa diatur sesuai dengan keperluan, seperti halnya Mode 1.
Register-register pada port seri terdiri dari SBUF (Serial Data
Buffer) dan SCON (Serial Port Control Register). SBUF merupakan SFR (Special Function Register) yang terletak pada memori-data internal
dengan nomor 99H. SBUF mempunyai kegunaan ganda, data yang disimpan pada SBUF akan dikirim keluar mikrokontroler lewat port seri, sedangkan data dari luar mikrokontroler yang diterima port seri diambil dari SBUF pula. Jadi meskipun hanya menempati satu nomor memori-data internal (nomor 99H), sesungguhnya SBUF terdiri dari 2 register yang berbeda. Adapun register SBUF dapat dilihat sebagai berikut :
Gambar 2.11 Register Serial Data Buffer (SBUF)
Sedangkan register SCON merupakan SFR (Special Function
Register) yang terletak pada memori-data internal dengan nomor 98H
yang merupakan register utama untuk mengatur kerja port seri. Setelah
SCON dan penjelasan dari masing-masing bit ditunjukkan pada Gambar 2.12
Gambar 2.12 Register Serial Port Control (SCON)
Bit SM0 dan bit SM1 (bit 7 dan bit 6 pada register SMOD) dipakai untuk menentukan mode kerja port seri. Setelah reset, kedua bit ini bernilai ‘0’.
Bit REN (bit 4) dipakai untuk mengaktipkan kemampuan port seri menerima data. Pada mode 0 kaki RxD (kaki P3.0) dipakai untuk mengirim data seri (REN=’0’) dan juga untuk menerima data seri (REN=’1’). Sifat ini terbawa pula pada saat port seri bekerja pada mode 1, 2 dan 3, meskipun pada mode-mode tersebut kaki RxD hanya dipakai untuk mengirim data, agar kaki RxD bisa dipakai untuk menerima data terlebih dulu harus dibuat REN=’1’. Setelah reset bit REN bernilai ‘0’.
Pada mode kerja 2 dan mode kerja 3, port seri bekerja dengan 9 bit data, SBUF yang kapasitasnya 8 bit tidak cukup untuk keperluan ini. Bit ke-sembilan yang akan dikirim terlebih dulu diletakkan di TB8 (bit 3), sedangkan bit RB8 (bit 2) merupakan bit yang dipakai untuk menampung bit ke-sembilan yang diterima port seri.
Pada mode kerja 1, RB8 dipakai untuk menampung bit stop yang diterima, dengan demikian apa bila RB8 bernilai ‘1’ maka data diterima dengan benar, sebaliknya apa bila RB8=’0’ berarti terjadi kesalahan kerangka (framing error). Kalau bit SM2 (bit 5) bernilai ‘1’, jika terjadi kesalahan kerangka, RI tidak akan menjadi ‘1’ meskipun SBUF sudah berisi data dari port seri.Bit ke 9 ini bisa dipakai sebagai bit pariti, hanya
saja bit pariti yang dikirim harus ditentukan sendiri dengan program dan diletakkan pada TB8, dan bit pariti yang diterima pada RB8 dipakai untuk menentukan integritas data secara program pula. Tidak seperti dalam UART standar, semuanya itu dikerjakan oleh perangkat keras dalam IC UART.
Bit TI (bit 1) merupakan petanda yang setara dengan petanda
TDRE (Transmitter Data Register Empty) yang umum dijumpai pada
UART standar. Setelah port seri selesai mengirim data yang disimpan ke-dalam SBUF, bit TI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam pengiriman data berikutnya.
Bit RI (bit 0) merupakan petanda yang setara dengan petanda RDRF (Receiver Data Register Full) yang umum dijumpai pada UART standar. Setelah SBUF menerima data dari port seri, bit RI akan bernilai ‘1’ dengan sendirinya, bit ini harus di-nol-kan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam penerimaan data berikutnya.
Selain mengatur mode kerja dari port serial hal lain yang harus ditentukan pada transmisi data seri khususnya transmisi data seri asinkron adalah mengatur kecepatan transmisi data (Baud Rate). Kecepatan transmisi (Baud Rate) merupakan suatu hal yang amat penting dalam komunikasi data seri asinkron, mengingat dalam komunikasi data seri asinkron clock tidak ikut dikirimkan, sehingga harus diusahakan bahwa kecepatan transmisi mengikuti standar yang sudah ada.
Dalam AT89C51, clock untuk transmisi data dibangkitkan dengan sarana Timer 1 seperti yang digambarkan dakan diagram Gambar 2.13 Untuk keperluan ini, Timer 1 dioperasikan sebagai 8 bit auto reload timer (mode 2), artinya TL1 bekerja sebagai timer 8 bit menerima clock dari osilator kristal yang frekuensinya sudah dibagi 12 terlebih dulu, setiap kali pencacah (counter) nilainya menjadi 0 maka nilai yang sebelumnya sudah disimpan di TH1 secara otomatis diisikan lagi ke TL1, sehingga TL1 akan menghasilkan clock yang frekuensinya diatur oleh TH1, clock ini
berikutnya dibagi lagi dengan 32 sebelum dipakai sebagai clock untuk UART. Hubungan frekuensi pada sistem tersebut dinyatakan dengan persamaan berikut :
(2-3)
Kalau kecepatan transmisi sudah ditentukann dan frekuensi kristal sudah dipastikan, maka nilai yang disimpan di TH1 bisa dihitung berdasarkan persamaan berikut :
(2-4)
Dalam persaman di atas, K adalah konstanta yang nilainya 1 atau 2, tergantung pada nilai yang tersimpan di bit SMOD dalam register PCON. Jika SMOD=’0’ K bernilai 1 dan K akan bernilai 2 kalau SMOD=’1’. Perlu dicacat, setelah AT89C51 di-reset, SMOD akan bernilai ‘0’, artinya jika tidak diatur lebih lanjut K bernilai 1.
Untuk mendapatkan kecepatan transmisi yang umum dipakai dalam komunikasi data seri asinkron (1200 Baud, 2400 Baud, 4800 Baud, 9600 Baud dan 19200 Baud), dari persamaan di atas bisa diturunkan ternyata frekuensi kristal yang paling tepat adalah 11.059 MHz.
Gambar 2.13 Sistem Pembangkit Clock Untuk UART
2.3.5 Instruksi Mikrokontroler 2.3.5.1 Instruksi Transfer Data
Kelompok instruksi ini digunakan untuk memindahkan data dari : x Register ke register
x Register ke memori x Antarmuka ke register x Antarmuka ke memori
Contoh: MOV A,R1: Pindahkan register R1 ke akumulator MOV A,@R1: Pindahkan isi memori yang alamatnya
ditunjukkan oleh register R1 ke akumulator MOV A,P0:Pindahkan isi Port 0 ke akumulator
Jadi pengiriman data dan pengambilan data dari suatu register, alamat/port dapat dilakukan dengan menggunakan intruksi MOV.
2.3.5.2 Instruksi Aritmatika
Intruksi aritmatika meliputi penambahan (ADD), pengurangan (SUB), perkalian (MUL) dan pembgian (DIV).
x Penambahan (ADD)
Penambahan ini akan menjumlahkan suatu data dengan isi akumulator dan hasilnya disimpan di dalam akumulator. Penambahan ini hanya melibatkan register akumulator. Penambahan ada dua macam, yaitu tanpa carry (ADD) atau penambahan dengan carry (ADC).
ADD: (A) m (A) + data ADC: (A) m (A) + (C) + data x Pengurangan (SUB)
Instruksi ini mengurangkan isi akumulator dengan isi carry flag dan hasilnya akan disimpan pada akumulator.
SUB: (A) m (A) - (C) – data x Perkalian (MUL)
Instruksi ini akan mengalikan isi akumulator dengan isi register B.
MUL: (AB) m (A) x (B)
Byte bawah hasil perkalian disimpan di dalam akumulator. Byte
x Pembagian (DIV)
Sama halnya dengan perkalian, pembagian juga melibatkan register B. isi register akumulator akan dibagi oleh isi register B.
DIV: (AB) m (A) : (B)
Akumulator akan berisi hasil bagi, sedangkan register B akan berisi sisa pembagian.
x Penambahan satu (INC)
Proses increment merupakan penambahan satu pada isi suatu register atau memori.
INC A : (A) m (A) + 1
Pemakaian instruksi increment menghemat pemakaian memori karena instruksi INC merupakan instruksi 1 byte (tidak memakai operand).
x Pengurangan satu (DEC)
Proses decrement merupakan kebalikan dari increment, yaitu mengurangkan satu dari isi suatu register atau memori.
DEC R1 : (R1) m (R1) - 1
Pada instruksi ini, isi register R1 dikurangi satu dari hasilnya disimpan dalam register tersebut. Sama seperti INC, instruksi ini juga merupakan instruksi 1 byte.
2.3.5.3 Instruksi Logika
x Logika AND (ANL)
Instruksi ini melakukan proses logika AND antara:
suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain.
x Logika OR
Logika ini melakukan proses logika OR antara suatu register dengan register, register dengan data, carry flag dengan isi suatu alamat bit, dan lain-lain.
x Logika NOT
Logika ini melakukan proses logika NOT pada suatu register,
carry flag, atau isi suatu alamat bit, dan lain-lain.
2.3.5.4 Instruksi Percabangan (Branch)
Instruksi ini akan melakukan percabangan ke suatu alamat. Instruksi ini terdiri dari dua bagian yaitu percabangan dengan syarat dan percabangan tanpa syarat.
1. Percabangan dengan syarat
Instruksi percabangan dengan syarat yang biasanya dipakai adalah :
x CJNE
Instruksi ini akan membandingkan isi register atau isi memori dengan suatu data. Bila sama maka instruksi akan menuju instruksi selanjutnya. Tetapi bila tidak sama instruksi akan lompat ke label yang dituju.
CJNE R0, #03H, Mulai
Contoh instruksi ini berarti jika R0 tidak sama dengan 03H maka instruksi akan lompat menuju label mulai.
x DJNZ
Instruksi ini akan mengurangi isi register atau isi memori dengan satu. Bila sudah 0, instruksi dilanjutkan ke label. Sebagai contoh :
DJNZ R2, Ulang
Ini berarti apabila R2 tidak sama dengan nol, maka setelah dikurangi 1, pelaksanaan instruksi harus melompat ke label ulang. Tetapi apabila R2 sama dengan nol maka pelaksanaan instruksi menuju instruksi selanjutnya.
x JNB
Instruksi ini akan menguji suatu alamat bit. Bila isinya 0, instruksi akan menuju label. Bila isinya 1, instruksi selanjutnya yang akan di eksekusi.
JNB TF0, Mulai
Ini berarti bila TF0 (Timer 0 over flow flag ) = 0, instruksi akan menuju label mulai.
2. Percabangan Tanpa syarat
Instruksi percabangan tanpa syarat ini meliputi SJMP (Short jump) dan LJMP (Long jump).
Contoh : SJMP Start, maka eksekusi program akan menuju label start tanpa syarat apapun.
31
3.1 Prinsip Kerja Sistem
Prinsip kerja sistem secara keseluruhan yaitu dimulai dari pembacaan tombol yang ditekan pada keyboard (tombol ”W” untuk arah maju, tombol ”S” untuk arah mundur, tombol ”A” untuk belok kiri dan ”D” untuk belok kanan), yang dilakukan dengan perangkat lunak yang dibuat menggunakan Visual Basic, kemudian mengirimkan kode ASCII dari tombol yang ditekan ke mikrokontroler secara serial. Selanjutnya mikrokontroler akan menterjemahkan kode ASCII tersebut sebagai perintah untuk menggerakkan mobil mainan dengan cara mengirimkan melalui pemancar radio. Terakhir, radio penerima akan men-decode data yang diterima untuk menggerakkan roda kendali dan stir sesuai dengan data yang diterimanya. Untuk memonitor kondisi sekitar lingkungan mobil remote
control dipadukan dengan kamera wireless sehingga dapat memantau kondisi
lingkungan secara audio visual pada layar monitor PC.
Blok Diagram dan Fungsinya
Secara keseluruhan, sistem pengendali mobil remote control ini terdiri atas beberapa bagian yang dapat digambarkan menjadi blok diagram pada Gambar 3.1
Secara keseluruhan, sistem dibagi menjadi empat bagian yaitu PC, Konverter RS232 , Mikrokontroler, Encoder dan Transmitter, Receiver dan
Decoder, Driver dan motor. Setiap bagian terdiri atas komponen-komponen
utama dan pendukungnya. 1) PC
PC berfungsi sebagai pemberi perintah berupa penekanan tombol pada
keyboard dan dapat melihat kondisi lingkungan di sekitar mobil mainan itu berada.
2) RS 232
RS 232 berfungsi untuk mengubah level PC ke level tegangan TTL agar data dari PC dapat diterima oleh mikrokontroler.
3) Mikrokontroler
Mikrokontroler berfungsi untuk menterjemahkan kode ASCII yang dikirim dari PC kemudian mengubahnya menjadi data yang dapat dikirim melalui transmitter .
4) Encoder dan Transmitter
Encoder dan Transmitter berfungsi untuk mengubah data digital
menjadi frekuensi dan mengirimkannya melalui gelombang radio. 5) Decoder dan Receiver
Decoder dan Receiver berfungsi untuk menerima sinyal gelombang
radio dan mengubah frekuensi informasi yang diterima menjadi data yang dapat menggerakkan driver.
6) Driver
Memberikan tegangan dan arus sesuai dengan data yang diterima sehingga dapat menggerakkan motor stir atau motor penggerak.
3.2 Perangkat Keras
Perangkat keras secara keseluruhan dibuat dengan menggunakan komponen-komponen sesuai dengan fungsi dari blok-blok system yang digambarkan pada Gambar 3.1. Laptop sebagai kendali yang memberikan input kepada mikrokontroler secara serial melalui RS 232 sebagai penyesuai level logic PC dengan level TTL mikrokontroler, kontroler yang digunakan adalah IC AT89S51 yang memiliki 32 bit terminal I/O, transmitter remote control mobil mainan yang sudah jadi dengan mempelajari karakteristiknya sehingga dapat langsung diberikan sinyal masukan dari mikrokontroler, Gambar 3.2 memperlihatkan skematik diagram dari perangkat keras sistem.
3.3 Perangkat Lunak
Perangkat lunak yang dibuat terdiri atas dua perangkat lunak, yaitu pemograman pada mikrokontroler dan pemrograman pada PC.
3.3.1 Pemrograman Mikrokontroler
Pemrograman pada mikrokontroler dilakukan dengan membuat subrutin-subrutin sebagai berikut: inisialisasi port serial, pembanding data kode ASCII, dan pemberian data terhadap output.
Algoritma pemrosesan data secara keseluruhan menggunakan mikrokontroler dapat digambarkan pada Gambar 3.3 Diagram alir program mikrokontroler .
3.3.2 Pemrograman Pada PC
Algoritma pemprosesan data pada perangkat lunak PC adalah sebagai berikut: pertama inisialisasi port serial PC yaitu mengatur baud rate, dan format data serialnya, serta inisialisasi buffer data, dan pembuatan tampilan awal. Setelah penginisialisasian, berikutnya membaca penekanan tombol pada keyboard dan membandingkan dengan kode ASCII yang diinginkan, selanjutnya mengirimkan kode ASCII tersebut ke kontroler secara serial
Proses pengolahan data pada perangkat lunak komputer dapat digambarkan pada diagram alir Gambar 3.4.
3.4 Format Data Serial
Format data serial yang dikirimkan ke kontroler yaitu 1 byte dengan diawali start bit dan diakhiri dengan stop bit sesuai standar RS 232, yang diperlihatkan pada Gambar 3.5 berikut.
Gambar 3.5 Format Data Serial
3.5 Kamera Digital Wireless
Agar dapat melakukan pemantauan lingkungan disekitarnya, mobil remote
control dipadukan dengan kamera wireless. Gambar yang diperoleh dari kamera
ini, dapat dijadikan sebagai feedback untuk operatornya. Gambar yang diambil dapat berupa foto maupun video, lalu disimpan di dalam hardisk komputer sesuai keperluan.
3.6 TV Tuner
TV tuner berperan sebagai penghubung antara kamera dengan komputer
sehingga komputer dapat menampilkan gambaran situasi lingkungan yang diambil oleh kamera secara real time.
37
4.1 Hasil Rancang Bangun
Berdasarkan rancang bangun pada Bab 3, maka dibuatlah sistem secara keseluruhan, dan hasilnya pada Gambar 4.1 memperlihatkan perangkat keras, dan Gambar 4.2 memperlihatkan tampilan window perangkat lunaknya.
(a) Transmitter (b) Receiver Gambar 4.1 Perangkat Keras Sistem
4.2 Instalasi Software
Software yang digunakan adalah ”Pengendali Mobil Remote Control”
yang dibuat dengan pemrograman visual basic. Selain itu juga menggunakan
software dari TV tuner yang sudah tersedia bersama produknya.
4.2.1 Software Pengendali Mobil Remote Control
Berikut ini adalah cara instalasi software Pengendali Mobil Remote Control :
Gambar 4.3 Menu Instalasi Langkah Pertama
Pada menu instalasi yang ditunjukkan pada gambar diatas, Klik ”OK”. Maka akan muncul menu instalasi yang baru seperti pada gambar dibawah ini :
Gambar 4.4 Menu Instalasi Langkah Kedua
Klik ikon bergambar PC untuk melanjutkan proses instalasi. Lalu ikuti langkah selanjutnya sampai dengan selesai.
4.2.2 Software TV Tuner
Setelah TV Tuner dihubungkan pada PC, lakukan proses instalasi program agar monitor pada PC dapat menampilkan gambaran lingkungan sekitar yang diambil oleh kamera wireless. Kemudian pasang alat penerima audio video. Berikut ini adalah cara instalasi software :
Gambar 4.5 Menu Instalasi Software TV Tuner
Pilih ”DirectX9.0” jika PC belum memiliki DirectX minimum versi 9.0. Setelah selesai menginstal DirectX9.0, pilih ”UTV380”, maka akan muncul menu baru. Pilih ”Instal APP” dan ikuti langkah selanjutnya. Setelah itu, lanjutkan dengan menginstal ”USB-Driver”, ikuti langkah selanjutnya sampai selesai.
Setelah proses instalasi selesai, hubungkan alat penerima audio video ke TV tuner. Pemakaian software TV tuner ini sangat mudah karena cukup user-friendly dengan pemakainya. Untuk melakukan capture image ataupun recording video sudah disediakan dalam menu softwarenya. TV tuner yang dipakai pada tugas akhir ini hanyalah salah satu contoh, kita dapat menggunakan berbagai jenis dan merk yang lainnya.
4.3 Pengujian
Setelah selesai proses rancang bangun, maka dilakukan serangkaian pengujian. Pengujian dilakukan secara software dan elektronik.
4.3.1 Pengujian secara software
Pengujian secara software dilakukan dengan menggunakan fasilitas
Hyper Terminal yang tersedia di sistem operasi Windows. Melalui Hyper Terminal ini dapat diketahui apakah tombol keyboard yang ditekan telah
berfungsi sesuai dengan inisialisasi program pada mikrokontroler atau tidak.
Hasil pengujian menggunakan Hyper Terminal pada Gambar 4.6 menunjukkan bahwa tombol-tombol pada keyboard yaitu tombol A, B, C, D yang digunakan untuk mengendalikan mobil remote control telah berfungsi dengan baik sesuai dengan program pada mikrokontroler.
Gambar 4.6 Pengujian Dengan Hyper Terminal
Selanjutnya pengujian dilakukan dengan menggunakan program visual basic. Tombol-tombol keyboard yang digunakan dirubah. Mobil
remote control dipadukan dengan kamera dan TV tuner agar dapat
melakukan fungsi pemantauan lingkungan karena menghasilkan feedback berupa audio visual bagi operatornya.
Gambar 4.7 Pengujian Dengan Visual Basic
Pengujian dengan program visual basic juga berjalan dengan baik. Tombol-tombol pada keyboard yaitu tombol W, S, D, A telah berfungsi dengan baik sesuai pemrograman dengan visual basic, dan arah pergerakan mobil remote control ditunjukkan pada sudut kanan atas software.
4.3.2 Pengujian secara elektronik
Pengujian secara elektronik dilakukan berdasarkan gambar berikut:
Pengamatan pada TP1 :
Saat tombol A ditekan menghasilkan Frekuensi sebesar 4,808 kHz
Gambar 4.9 Pengukuran Pada TP1 Saat Tombol A Ditekan
Saat tombol B ditekan menghasilkan Frekuensi sebesar 3,205 kHz
Saat tombol C ditekan menghasilkan Frekuensi sebesar 3,205 kHz
Gambar 4.11 Pengukuran Pada TP1 Saat Tombol C Ditekan
Saat tombol D ditekan menghasilkan Frekuensi sebesar 2,405 kHz
Gambar 4.12 Pengukuran Pada TP1 Saat Tombol D Ditekan
Pengamatan pada TP2 :
Setelah dilakukan pengujian pada TP2, bentuk gelombang yang dihasilkan pada TP2 adalah kebalikan dari bentuk gelombang pada TP1, dengan perincian sebagai berikut :
Gambar 4.13 Pengukuran Pada TP2 Saat Tombol A Ditekan
Gambar 4.14 Pengukuran Pada TP2 Saat Tombol B Ditekan
Gambar 4.16 Pengukuran Pada TP2 Saat Tombol D Ditekan
Pengamatan pada TP3 :
Saat tombol A ditekan menghasilkan frekuensi sebesar 48.92 MHz
Saat tombol B ditekan menghasilkan frekuensi sebesar 49,08 MHz
Gambar 4.18 Pengukuran Pada TP3 Saat Tombol B Ditekan
Saat tombol C ditekan menghasilkan frekuensi sebesar 49,60 MHz
Saat tombol D ditekan menghasilkan frekuensi sebesar 49,70 MHz
48
Berdasarkan pengujian secara software maupun elektronik, maka dapat disimpulkan sebagai berikut :
1. Pengendali mobil remote control ini dapat memantau situasi lingkungan sekitarnya dari jarak jauh secara real time melalui Personal Computer
(PC) dengan program visual basic.
2. Bentuk gelombang input RS232 akan berbanding terbalik dengan outputnya.
3. Pemrograman visual basic memudahkan penggunaan alat ini dan memudahkan modifikasi program sesuai kebutuhan.
DAFTAR REFERENSI
Budiharto Widodo, M.Kom, S.Si, “Interfacing Komputer dan Mikrokontroler”, PT Elex Media Komputindo, Jakarta, 2004.
MADCOMS, “Panduan Pemrograman dan referensi kamus Visual Basic 6.0”, Andi , Yogjakarta, 2006.
Putra, Agfianto Eko, Belajar Mikrokontroler AT89C51/52/55 (Teori dan
Aplikasi). Edisi pertama, Yogyakarta : Gava Media, 2002.
Malik, Moh. Ibnu dan Anistardi, Bereksperimen Dengan Mikrokontroler 8031. Jakarta : PT. Elex Media Komputindo, 1997.
Retna Prasetya, Catur Edi Widodo, “Intefacing Port Paralel dan Port Serial
Dengan Visual Basic 6.0”, Andi , Yogyakarta, 2004.
Suhata, ST, “VB Sebagai Pusat Kendali Peralatan elektronik”, PT Elex Media Komputindo, Jakarta, 2005.
LISTING PROGRAM MIKROKONTROLER
;================================================= ; Pengendali Mobil Remote Control
; Program pada mikrokontroler menggunakan ; Komunikasi serial dengan baud rate 9600 bps ;Agung Eka Putra
;================================================= ORG 0H SJMP START ORG 23H SJMP SERI_INT START:
MOV TMOD,#20H ; timer 1 mode 2 MOV TH1,#0FDH ; baudrate 9600 bps
MOV SCON,#52H ; mode 1 serial 8 bit baudrate variabel SETB TR1 ; timer1 on
SETB ES ; serial interupt SETB EA ; all interupt aktif
MOV P2,#0FFH
STOP:
SJMP STOP
SERI_INT:
JB RI,TERIMA ; cek RI, jika berlogic 1 maka lompat ke label terima
CLR TI
RETI ; kembali dari interrupt TERIMA:
MOV A,SBUF ; copy-kan data dari serial buffer ke Accumulator
CLR RI
CEKBACK:
CJNE A,#'B',CEKFRONT ; apakah data di Accumulator = B
CLR P2.0 ; BACK ON SETB P2.1 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.0 RETI CEKFRONT: CJNE A,#'A',CEKLEFT CLR P2.1 SETB P2.0 SETB P2.2
SETB P2.3 ACALL DELAY SETB P2.1 RETI CEKLEFT: CJNE A,#'D',CEKRIGHT CLR P2.2 ; LEFT ON SETB P2.3 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKRIGHT: CJNE A,#'C',CEKBACK1 CLR P2.3 ; RIGHT ON
SETB P2.2 ; LEFT OFF
CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKBACK1: CJNE A,#'b',CEKFRONT1 CLR P2.0 SETB P2.1 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.0 RETI CEKFRONT1: CJNE A,#'a',CEKLEFT1 CLR P2.1 SETB P2.0 SETB P2.2 SETB P2.3 ACALL DELAY SETB P2.1 RETI CEKLEFT1: CJNE A,#'d',CEKRIGHT1 CLR P2.2 SETB P2.3 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKRIGHT1: CJNE A,#'c',CEKOUT
CLR P2.3 SETB P2.2 CLR P2.1 ACALL DELAY SETB P2.1 RETI CEKOUT: MOV P2,#0FFH MOV P1,#0FFH RETI DELAY: MOV R4,#1 DELAY2: ACALL DELAY1 DJNZ R4,DELAY2 RET DELAY1: DJNZ R2,$ DJNZ R3,DELAY1 RET END
LISTING PROGRAM VISUAL BASIC Program pada form Utama
Public digital As Byte
Private Sub Form_LinkClose() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Unload Me End If Unload Me End Sub
Private Sub Form_Load() mnStatus.Enabled = False Text1.Visible = False End Sub
Private Sub mnExit_Click()
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
Unload Me End If Unload Me End Sub
Private Sub text1_keypress(keyAscii As Integer) If MSComm1.PortOpen = True Then
' untuk maju
If keyAscii = &H57 Then ' JIKA W besar MSComm1.Output = "A"
Label1.Caption = "maju" Text1.Text = &HA
ElseIf keyAscii = &H77 Then ' jika w kecil MSComm1.Output = "A"
Label1.Caption = "maju" Text1.Text = &HA
'untuk mundur
ElseIf keyAscii = &H53 Then ' jika S besar MSComm1.Output = "B"
Label1.Caption = "mundur" Text1.Text = &HA
ElseIf keyAscii = &H73 Then ' jika s kecil MSComm1.Output = "B"
Label1.Caption = "mundur" Text1.Text = &HA
ElseIf keyAscii = &H41 Then ' jika A besar MSComm1.Output = "D"
Label1.Caption = "kiri" Text1.Text = &HA
ElseIf keyAscii = &H61 Then ' jika a kecil MSComm1.Output = "D"
Label1.Caption = "kiri" Text1.Text = &HA
ElseIf keyAscii = &H44 Then ' jika D besar MSComm1.Output = "C"
Label1.Caption = "kanan" Text1.Text = &HA
ElseIf keyAscii = &H64 Then ' jika d kecil MSComm1.Output = "C" Label1.Caption = "kanan" Text1.Text = &HA End If End If End Sub
Private Sub mnSetting_Click() FormProperti.Show vbModal End Sub
Public Sub Get_Disconnect() If MSComm1.PortOpen = True Then MSComm1.PortOpen = False End If
mnConnect.Enabled = True mnDisconnect.Enabled = True
StatusBar1.Panels("Status").Text = "Status : Disconnect"
StatusBar1.Panels("Setting").Text = "Setting : COM" & MSComm1.CommPort & "," & MSComm1.Settings
End Sub
Public Sub Get_Connect() Dim i As Integer
On Error GoTo Handle_Error MSComm1.PortOpen = True mnDisconnect.Enabled = True mnConnect.Enabled = True
StatusBar1.Panels("Status").Text = "Status : Connect"
StatusBar1.Panels("Setting").Text = "Setting : COM" & MSComm1.CommPort & "," & MSComm1.Settings
Exit Sub Handle_Error: