TUGAS AKHIR
UNIT DETEKSI TIKET
PADA SISTEM IDENTIFIKASI TIKET
PENUMPANG OTOMATIS
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Program Studi Teknik Elektro
Disusun oleh:
HERNOMO KUSTRIATMOJO
NIM: 015114060
PROGRAM STUDI TEKNIK ELEKTRO
JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
FINAL PROJECT
TICKET DETECTING UNIT
ON AUTOMATIC PASSENGER TICKET
IDENTIFICATION SYSTEM
Presented as Partial Fulfillment of the Requirements
To Obtain The Technical Engineering Degree
In Electrical Engineering
By:
HERNOMO KUSTRIATMOJO
Student Number: 015114060
ELECTRICAL ENGINEERING STUDY PROGRAM
ELECTRICAL ENGINEERING DEPARTMENT
ENGINEERING FACULTY
SANATA DHARMA UNIVERSITY
LEMBAR PERSETUJUAN
TUGAS AKHIR
UNIT DETEKSI TIKET
PADA SISTEM IDENTIFIKASI
TIKET PENUMPANG OTOMATIS
(TICKET DETECTING UNIT
OF AUTOMATIC PASSENGER
TICKET IDENTIFICATION SYSTEM)
Disusun Oleh
:
HERNOMO KUSTRIATMOJO
NIM: 015114060
LEMBAR PENGESAHAN TUGAS AKHIR
UNIT DETEKSI TIKET
PADA SISTEM IDENTIFIKASI
TIKET PENUMPANG OTOMATIS
KATA PENGANTAR
Terpujilah Tuhan atas kasihNya yang melimpah sehingga penulis dapat
menyelesaikan Tugas Akhir ini.
Terima kasih yang mendalam penulis ucapkan kepada pihak – pihak yang
telah membantu penulis dalam penyelesaian Tugas Akhir ini. Mereka adalah:
1.
Ir. Greg.Heliarko, SJ.,SS.,BST., MA., Msc., selaku Dekan Fakultas Teknik.
2.
Bapak A. Bayu Primawan, S.T., M.Eng. selaku Kaprodi Teknik Elektro.
3.
Bapak Pdt. Obaja Sigit Karyono, M.Th sebagai pembimbing penulis.
4.
Bapak Ir. Iswanjono, M.T. sebagai pembimbing Tugas Akhir.
5.
Bapak Petrus Setyo Prabowo, ST. sebagai Pembimbing Akademik.
6.
Keluarga Besar GKN Gloria Yogyakarta.
7.
Segenap Dosen di Jurusan Teknik Elektro yang telah melayani sebagai
pengajar dan penasihat.
8.
Segenap Laboran Teknik Elektro.
9.
“The Winning Team” : Indra, Sulis, Liong, dan Yayuk. Never Give Up!
10. Rekan seangkatan TE’01 atas kebersamaannya di tahun-tahun yang silam.
11. Fajar Ira J., S. Farm, Apt. dan Pungkas Yoga K, ST. untuk pengertian dan
semua toleransi yang diberikan.
12. Keluarga Bp. Haryono ( Tasura 52 ), Keluarga Ibu Tukilah ( Gg. Nilam ), dan
Keluarga Bp. Suparno ( Jl. P. Puger II ).
13. Gloria Smile Jogjakarta : Dwi D., SP, Fernandez J.N., S.E. dan Kristiana T.A.,
S.Pd. akhirnya kita semua jadi sarjana !
DAFTAR ISI
HALAMAN JUDUL...i
TITLE PAGE...ii
HALAMAN PERSETUJUAN...iii
HALAMAN PENGESAHAN...iv
HALAMAN PERNYATAAN KEASLIAN KARYA...v
KATA PENGANTAR...vi
HALAMAN MOTO DAN PERSEMBAHAN...vii
DAFTAR ISI...viii
DAFTAR GAMBAR...ix
DAFTAR TABEL...x
DAFTAR LAMPIRAN...xi
INTISARI...xii
ABSTRACT...xiii
BAB I PENDAHULUAN
1.1
Judul...1
1.2
Latar Belakang Masalah...1
1.3
Tujuan
Penelitian...2
1.3.1
Tujuan
Umum...2
1.3.2
Tujuan
Khusus...2
2.1
Transfer
Data...4
2.1.1 RS
232...4
2.2 Mikrokontroler
AT89S8252...6
2.2.1
Organisasi
memori
AT89S8252...7
2.2.2
Memori
Program...8
2.2.3 Memori
Data...8
2.2.4 Register fungsi khusus (Special Function Register)...9
2.2.5
Mode Pengalamatan dan Instruksi Mikrokontroler...17
BAB II RANCANGAN PENELITIAN
3.1 Perancangan
Perangkat
Keras...19
3.1.1
Pengondisi
Sinyal
RS
232...20
3.1.2
LED Output...21
3.1.3 On-Chip
Oscilator...21
3.2
Perancangan Perangkat Lunak...22
3.2.1
Pemrograman
Mikrokontroler...22
3.2.1.1
Inisialisasi...23
3.2.1.2 Pemrograman Penerimaan Pada mikrokontroler...24
3.2.1.3 Pemrograman Pembandingan Data pada
Mikrokontroler...25
BAB IV ANALISA DAN PEMBAHASAN
4.1
Program Penerimaan Data...28
4.2
Program Pembandingan Data...30
4.2.2
Pembandingan Data...31
4.2.3 Pengaktifan
Perangkat
Keras...32
BAB V KESIMPULAN DAN SARAN
DAFTAR GAMBAR
Gambar 2.1
Blok Diagram Sistem ...3
Gambar 2.2
Komunikasi Asinkron tanpa bit paritas ...4
Gambar 2.3
Konektor serial DB – 9 ...5
Gambar 2.4
Memori data dan memori program pada mikrokontroler
AT89S8252 ...7
Gambar 2.5
Peta memori dan metode untuk mengakses isinya ...9
Gambar 2.6
Akumulator ...9
Gambar 2.7
Register B ...10
Gambar 2.8
Program Status Word ...10
Gambar 2.9
Register AUXRI ...11
Gambar 2.10 Register TCON ...14
Gambar 2.11 Register TMOD ...15
Gambar 3.1
Diagram Blok Perangkat Keras ...19
Gambar 3.2
Konfigurasi MAX 232 ...20
Gambar 3.3
Konfigurasi LED ...21
Gambar 3.4
Konfigurasi On-Chip Oscilator ...21
Gambar 3.5
Diagram Alir Perangkat Lunak ...22
Gambar 3.6
Flowchart Program Utama AT89S8252 ...23
Gambar 3.7
Flowchart Terima_Data ...25
Gambar 3.8a Flowchart Banding_Data ...26
Gambar 3.8b Flowchart Banding_Data ...27
Gambar 4.1
Pengaksesan EEPROM ...29
Gambar 4.2
10 byte data yang diterima di IRAM...30
Gambar 4.3a Kondisi port setelah pembandingan data (bila data tidak sesuai ) 31
Gambar 4.3b Kondisi port setelah pembandingan data (bila data sesuai ) ...32
Gambar 4.3c Kondisi port setelah pembandingan data (nomor kursi 10 ) ...33
DAFTAR TABEL
Tabel 2.1
Konfigurasi pin dan nama sinyal konektor serial DB-9 ...5
Tabel 2.2
Register Bank Select ...10
Tabel 2.3
Fungsi alternatif port 3 ...13
Tabel 2.4a
Fungsi – fungsi register TMOD ...15
INTISARI
Sistem transportasi modern membutuhkan pelayanan yang cepat dan
akurat. Dibutuhkan sebuah sistem yang memudahkan penumpang bis untuk
memperoleh pelayanan transportasi secara cepat dengan tidak mengesampingkan
kenyamanan dan keamanan dalam melakukan sebuah perjalanan darat.
Alat yang dibuat adalah sebuah modul yang bisa menerima serta
menyimpan data. Penelitian ini menggunakan AT89S8252 sebagai pengolah
utama, RS232 sebagai antar muka serial, masukan dari interupsi serial dan
keluaran dihubungkan pada perangkat keras bis.
Tujuan pembuatan alat ini adalah untuk menerima data kode baris yang
tercetak pada tiket penumpang untuk dibandingkan dengan data yang tersimpan
pada mikrokontroler.
ABSTRACT
Modern transportation system require the quick and accurate service. It
need a system that can facilitating bus passenger to obtain get the transportation
service quickly with not overrule the comfort and security te get a land
transportation.
Appliance made is a module which can accept and also saving data. This
research use AT89S8252 as main processor, RS232 as interface system, input
from interupting serial and output connected at bus hardware.
BAB I
PENDAHULUAN
I. 1. Judul
Unit Deteksi Tiket pada Sistem Identifikasi Tiket Penumpang Otomatis
.
1. 2. Latar Belakang Masalah
Pada era sekarang ini, penumpang yang menggunakan jasa yang
menyediakan transportasi (bus, kereta api dan lain-lain) sering kali mengalami
pelayanan yang kurang memuaskan. Hal ini disebabkan karena kualitas pelayanan
yang kurang baik, sehingga menyebabkan gangguan-gangguan terhadap tata cara
pelaksanaan transportasi antar daerah, kesalahan identifikasi penumpang,
kesalahan penumpang mengidentifikasi sarana transportasi yang dipakai, dan
praktek percaloan serta hal-hal yang lebih cenderung merugikan pihak pemakai
sarana transportasi. Untuk dapat meningkatkan kualitas pelayanan menjadi lebih
baik, hal yang perlu diperbaiki yaitu dalam pembuatan tiket, dimana tiket tersebut
harus mampu memberikan informasi tentang identitas penumpang (nama, jenis
kelamin, nomor tempat duduk, nama/nomor kendaraan, asal, dan tujuan) dengan
jelas dan tepat.
1. 3. Tujuan Penelitian
1. 3. 1. Tujuan Umum
Tujuan umum dari alat ini adalah sebagai berikut:
a)
Membuat sistem identifikasi dengan metode pengecekan data secara
berulang.
b)
Merancang perangkat yang dapat mengaplikasikan program penyimpanan
dan pembandingan data dan menghasilkan keluaran visual.
c)
Merancang dan membuat program yang dapat mengirim data penumpang
secara serial.
d)
Merancang program yang mampu menyimpan/menulis sejumlah data dan
mengaksesnya kembali.
1. 3. 2. Tujuan Khusus
Tujuan khusus dari penelitian ini adalah untuk mengaplikasikan ilmu yang
telah diperoleh penulis dalam pendalaman teori serta untuk menyelesaikan
program penelitian terpadu.
1. 4. Batasan Masalah
Untuk Unit Deteksi Tiket Pada sistem ini, penelitian yang dilakukan adalah
pada proses penyimpanan dan pembandingan data :
1.
Dengan menggunakan Mikrokontroler AT89S8252 sebagai pengatur
sistem,
2.
Menggunakan
Visual Basic
6.0 sebagai perangkat lunak sistem,
3.
RS 232 sebagai saluran transmisi, serta
4.
LED sebagai indikator keluaran.
BAB II
DASAR TEORI
Pada penelitian ini akan dibuat suatu alat yang akan membandingkan suatu
data dari PC yang berupa byte-byte data dengan data yang diinterupsikan dari port
mikrokontroler. Semula data yang diperoleh dari PC berupa byte data yang berisi
nomor bus dan nomor kursi terlebih dahulu ditransfer melalui kabel serial RS 232,
kemudian data tersebut disimpan di memori data mikrokontroler. Bila ada
interupsi dari port mikrokontroler (interupsi berupa masukan data dari
Barcode
Reader
), maka data masukan dari port ini akan dibandingkan dengan data yang
telah tersimpan di memori data. Bila data tersebut sama dengan salah satu data di
memori, maka keluaran bernilai 1 (LED hijau menyala). Sebaliknya bila data
tidak ada yang sama dengan salah satu data pada memori, keluaran akan bernilai 0
(LED merah menyala).
Penelitian ini dikhususkan pada dua topik, yaitu transfer data dari PC ke
memori mikrokontroler dan pembandingan data di memori tersebut terhadap
interupsi port mikrokontroler.
AT89S825
2
Memori Data
Data
penumpang
Barcode
Reader
Pemban-dingan
YES (LED Hijau)NO (LED Merah)
Transfer
dan
2. 1. Transfer Data
Dikenal dua cara komunikasi data serial, yaitu secara sinkron dan secara
asinkron. Pada komunikasi secara sinkron,
clock
dikirimkan bersama-sama
dengan data serial, sedangkan pada komunikasi secara asinkron,
clock
tidak
dikirimkan bersama data serial namun dibangkitkan sendiri baik pada sisi
pengirim maupun pada sisi penerima. Pada IBM PC kompatibel port serialnya
termasuk jenis asinkron. Komonikasi data serial ini dikerjakan oleh UART
(
Universal Asynchronous Receiver/Transmitter
). IC UART dibuat khusus untuk
mengubah data paralel menjadi data serial dan menerima data serial yang
kemudian diubah kembali menjadi data paralel.
Pada UART, kecepatan pengiriman data (
Baud Rate
) dan fase
clock
pada
sisi
transmitter
dan pada sisi
receiver
harus sinkron. Untuk itu diperlukan
sinkronisasi antara
transmitter
dan
receiver
. Hal ini dilakukan oleh bit “Start” dan
bit “Stop”.
Bit
data
Æ
7 6 5 4 3 2 1 0
Start
Stop
Gambar 2. 2. Komunikasi asinkron tanpa bit paritas
2. 1. 1. RS 232
Standar sinyal komunikasi serial RS 232 dikembangkan oleh
Electronic
Industry Association and the Telecommunications Industry Association
(EIA/TIA)
dan dipublikasikan pertama kali tahun 1962. Standar ini hanya menyangkut
komunikasi data antar komputer (
Data Terminal Equipment
– DTE) dengan
alat-alat pelengkap komputer (
Data Circuit – Terminating Equipment
– DCE).
2.
Logika “0” terletak antara 3 volt sampai 25 volt
3.
Daerah tegangan antara –3 volt sampai 3 volt adalah invalid level
(tidak memiliki level logika, sehingga harus dihindari)
4.
Daerah tegangan dibawah –25 volt dan di atas 25 volt harus dihindari
untuk mencegah kerusakan alat.
DB - 9
9 8 7 6
5 4 3 2
1 Received Line Signal Detector
Received Data
Transmitted Data
Data Terminal Ready DCE Ready
Signal Ground Ring Indicator
Clear To Send Request To Send
Gambar 2. 3. Konektor serial DB-9
Tabel 2.1. Konfigurasi pin dan nama sinyal konektor serial DB-9
Nomor
Pin
Nama
Sinyal
Direction
Keterangan
1 DCD In
Data Carrier Detect / Received Line Signal
Detect
2 RxD In
Receive
Data
3 TxD Out
Transmit
Data
4 DTR Out
Data
Terminal
Ready
5 GND -
Ground
6
DSR
In
Data Set Ready
7
RST
Out
Request to Send
8
CTS
In
Clear to Send
Keterangan mengenai fungsi saluran RS232 pada konektor DB-9 adalah
sebagai berikut :
1.
Received Line Signal Detect, dengan saluran ini DCE memberitahukan ke
DTE bahwa pada terminal masukan data masuk.
2.
Received Data, digunakan DTE menerima data dari DCE
3.
Transmit Data, digunakan DTE mengirimkan data ke DCE
4.
Data Terminal Ready, pada saluran ini DTE memberitahukan kesiapan
terminalnya
5.
Signal Ground, saluran ground
6.
Ring Indicator, pada saluran ini DCE memberitahu ke DTE bahwa sebuah
stasiun menghendaki hubungan dengannya
7.
Clear to Send, dengan saluran ini DCE memberitahukan bahwa DTE boleh
mulai mengirim data
8.
Request To Send, dengan saluran ini DCE diminta mengirim data oleh
DTE
9.
DCE Ready, sinyal aktif pada saluran ini menunjukkan bahwa DCE sudah
siap
Untuk dapat menggunakan port serial kita perlu mengetahui alamatnya.
Biasanya tersedia dua port serial pada CPU, yaitu COM1 dan COM2.
Base
Address
COM1 biasanya adalah 1016 (3F8h) dan COM2 biasanya 760 (2F8h).
Alamat tersebut adalah alamat yang biasa digunakan, tergantung dari komputer
yang digunakan. Tepatnya kita bisa melihat pada peta memori tempat menyimpan
alamat tersebut, yaitu memori 0000.0400h untuk
base address
COM1 dan memori
0000.0402h untuk
base address
COM2.
2. 2. Mikrokontroler AT89S8252
yang dipakai memiliki fitur: 8KB
In-Sistem Programmable Flash
, 2 KB
EEPROM, 256 Bytes RAM, 32 jalur I/O, tiga 16-bit
timers
/
counters
,
Watchdog
Timer
, 2 data pointer, 6 vektor dua level interupsi, serial
port
full duplex
, osilator
on-chip
dan
clock circuitry
.
2. 2. 1. Organisasi Memori AT89S8252
Memori merupakan rangkaian elektronis yang digunakan untuk
menyimpan informasi secara temporer atau permanen. Memori biasanya
digunakan untuk menyimpan data yang diperoleh dari saluran masukan-keluaran
atau untuk menyimpan program dari sebuah sistem.
Mikrokontroler AT89S8252 memiliki ruang alamat untuk memori program
dan memori data yang terpisah, seperti terlihat pada (Gambar 2.4.) di bawah.
Setiap memori program dan memori data eksternal dapat dialamati hingga
64K
bytes.
Gambar 2. 4. Memori data dan memori program pada mikrokontroler AT89S8252
untuk pengaksesan data memori dengan alamat 16 bit, harus dilakukan dengan
menggunakan register DPTR (Data Pointer). Program memori hanya dapat dibaca
saja (diletakkan pada ROM/ EPROM). Untuk membaca program memori
eksternal, mikrokontroler akan mengirim sinyal PSEN (
Program Store Enable
).
Sebagai data memori eksternal dapat digunakan RAM eksternal (maksimum 64
Kbyte). Dalam pengaksesannya mikrokontroler akan mengirimkan sinyal RD
(
Read
, melakukan operasi pembacaan data) dan WR (
Write
, melakukan operasi
penulisan data). Bila diperlukan, program memori dan eksternal data dapat
dikombinasikan dengan menyatukan sinyal RD dan PSEN ke dalam input gerbang
AND dan menggunakan output dari gerbang tersebut sebagai sinyal
read
(baca)
untuk program memori / Eksternal Data.
2. 2. 2. Memori Program
Memori program atau sering disebut dengan
flash memory
pada
mikrokontroler AT89S8252 memiliki kapasitas sebesar 8KB
yang hanya bisa
dibaca saja. Bila pin dihubungkan pada
ground
program memori dapat di akses
secara eksternal, bila pin
E
A
dihubungkan pada V
CCprogram memori 4KB dapat
diakses langsung pada alamat 0000H-FFFH secara internal dan pada alamat
1000H-FFFFH secara eksternal.
2. 2. 3. Memori Data
Memori data menggunakan memori jenis RAM. RAM merupakan memori
yang dapat dibaca dan ditulis. RAM dipakai sebagai penyimpan data pada saat
program bekerja. Isi RAM akan hilang bila catu daya mati (
Volatile Memory
).
Gambar 2. 5. Peta memori dan metode untuk mengakses isinya
Mikrokontroler AT89S8252 memiliki tambahan fitur yang tidak dimiliki
jenis MCS-51. Salah satunya adalah EEPROM yang terpasang pada chip
(on-Chip). EEPROM yang ditanamkan pada MCS825252 memiliki kapasitas sebesar
2 kiloByte yang terletak pada alamat 000h sampai 7FFh. Untuk mengakses
EEPROM on-chip ini dilakukan pengaturan dengan mengeset bit EEMEN pada
register WMCON.
2. 2. 4. Register Fungsi Khusus (Special Function Register)
Peta dari memori
on-chip
disebut dengan ruang register fungsi khusus
(
Special Function Register
).
a.
Akumulator
ACC atau akumulator yang menempati lokasi E0H digunakan sebagai register
untuk penyimpanan data sementara dan dapat dialamati secara bit addressable.
Gambar2. 6. Akumulator
b.
Register B
Gambar 2. 7. Register B
c.
Program Status Word (PSW)
Register PSW (lokasi D0H) mengandung informasi status program seperti
terlihat pada (Gambar 2. 8.).
Gambar 2. 8. Program Status Word
Fungsi bit pada PSW sebagai berikut:
CY (carry flag)
: bit ini akan diset oleh sejumlah instruksi
matematika seperti ADD, ADDC, SUBB, MUL, DIV dan juga termasuk
instruksi untuk rotasi.
AC (auxillary carry)
: bit ini akan diset pada penjumlahan dua
buah bilangan BCD (Binary Code Desimal) yang menghasilkan carry dari bit
ketiga ke bit keempat atau jika nibble bawahnya berada pada range 0AH
sampai 0FH.
F0 (flag 0)
:
flag
untuk fungsi umum.
RS0, RS1
(register bank select)
: dua bit RS1 Dan RS0 digunakan untuk
memilih bank register yang penggunaannya ditunjukkan pada tabel berikut:
Tabel 2. 2. Register Bank Select
P (parity flag)
: bit ini akan diset menjadi satu jika bit-bit 1
pada akumulator berjumlah ganjil. Sebagai contoh jika isi akumulator adalah
15H (00010101) maka bit P akan diset menjadi 1 karena jumlah bit satu pada
akumulator adalah 3 buah.
d.
Stack Pointer
Register
Stack Pointer
(lokasi 81H) merupakan register dengan panjang
8-bit, digunakan dalam proses simpan dan ambil dari/ ke
stack
. Dan operasi
yang sering melibatkan stack pointer adalah PUSH, POP, LCALL, ACALL,
RET, dan RETI.
e.
Data Pointer
Register Data Pointer terdiri dari DPTR untuk byte tinggi (DPH) dan
byte rendah (DPL). Pada AT89S8252 memiliki 2 buah DPTR untuk
memudahkan pengaksesan baik internal maupun eksternal, yaitu DP0 di lokasi
82H-83H dan DP1 di lokasi 84H-85H. Untuk menggunakannya harus
menginisialisasi bit DPS pada register AUXR1 (lokasi A2H). Bila DPS = 0,
maka memilih register DPTR DP0L-DP0H dan bila DPS = 1, maka memilih
register DPTR DP1L-DP1H. Register AUXR1 dapat dilihat pada (Gambar 2.
9.).
Gambar 2. 9. Register AUXR1
f.
Kontrol Register
g.
Port
masukan/keluaran (I/O
port)
Sama seperti keluarga MCS-51 lainnya mikrokontroler AT89S8252
memiliki 4
port
masukan/keluaran (I/O
port
) yang diberi nama
port
0,
port
1,
port
2 dan
port
3. Setiap
port
selain sebagai jalur masuk atau keluar data, juga
memiliki karakteristik masing-masing.
Port
0 merupakan
port
keluaran/masukan (I/O) bertipe
open drain
bidirectional
.
Port
0 juga dapat dikonfigurasikan sebagai bus alamat data
bagian rendah selama proses pengaksesan memori data dan program eksternal.
Port
ini berada di alamat 80H pada SFR.
Port
1 merupakan
port
I/O dwiarah yang dilengkapi dengan
pull-up
internal. Jika ‘1’ dituliskan ke kaki-kaki
port
1, masing-masing kaki akan di
pull high
dengan
pull up
internal sehingga dapat digunakan sebagai masukan.
Port
1 berada di alamat 90H juga menerima alamat bagian rendah (
low bit
)
selama pemrograman dan verifikasi
flash
.
Port
2 berada di alamat A0H dan memiliki karakteristik yang mirip
dengan
port
1.
Port
2 akan memberikan byte alamat bagian tinggi selama
pengambilan instruksi dari memori program eksternal dan selama pengaksesan
memori data eksternal yang menggunakan perintah dengan alamat 16-bit
(misalnya: MOVX @DPTR).
Port
ini juga menerima alamat begian tinggi
selama pemrograman dan verifikasi
flash
.
Tabel 2. 3. fungsi alternatif Port 3
Pin
Port
Fungsi
Alternatif
P3.0 RXD
(masukan
port
serial)
P3.1 TXD
(keluaran
port
serial)
P3.2
INT
0
(interupsi 0 eksternal)
P3.3
INT
1
(interupsi 1 eksternal)
P3.4 T0
(
input
eksternal timer 0)
P3.5 T1
(
input
eksternal timer 1)
P3.6
WR
(memori data eksternal jalur tulis)
P3.7
RD
(memori data eksternal jalur baca)
h.
Timer / Counter
Mikrokontroler AT89S8252 mempunyai tiga buah register
t
imer/counter
16 bit , Timer 0,Timer 1 serta Timer 2. Pada saat sebagai Timer,
register naik satu (
increment
) setiap satu
cycle
. Jika digunakan osilator 12
Mhz, maka satu
cycle
sama dengan 1/12 frekuensi osilator = 1µs. Pada saat
sebagai counter, register naik satu (
increment
) pada saat transisi 1 ke 0 dari
input eksternal , T0 atau T1.
Apabila periode tertentu telah dilampaui,
timer/counter
segera
menginterupsi mikrokontroler untuk memberitahukan bahwa perhitungan
periode waktu telah selesai dilaksanakan. Periode waktu
timer/counter
secara
umum ditentukan oleh persamaan berikut:
* Sebagai T/C 8 bit
(
TLx
)
s
T
=
255
−
*
1
μ
dimana TLx adalah isi register TL0 atau TL1.
* Sebagai T/C 16 bit
(
THxTLx
)
s
T
=
65535
−
*
1
μ
Register TCON
Pengontrol kerja
timer/counter
ada pada register timer control
(TCON). Adapun definisi dari bit-bit pada
timer control
adalah sebagai
berikut:
Gambar 2. 10 Register TCON
TF1
(
Timer 1 Overflow
)
Bit ini akan otomatis diset menjadi 1 jika timer 1 telah terjadi
overflow
, dan akan dinolkan pada saat menjalankan rutin interupsi.
TR1 (
Timer 1 Run control bit
)
Bit ini digunakan untuk megaktifkan atau menonaktifkan kerja dari
timer/counter
.
TF0 (
Timer 0 overflow
)
Bit ini akan otomatis diset menjadi 1 jika timer 0 telah terjadi
overflow
, dan akan dinolkan pada saat menjalankan rutin interupsi.
IE1 (
Interrupt 1 Edge flag
)
Di
set
oleh
hardware
ketika interupsi eksternal mendeteksi adanya
edge
. Di
clear
ketika proses interupsi.
IT1 (
Interrupt 1 Type control bit
)
Di
set / clear
oleh
software
untuk menentukan pen-triger-an
interrupsi eksternal pada transisi turun / low level.
IE0 (
Interrupt 0 Edge flag
)
Di
set
oleh
hardware
ketika interupsi eksternal mendeteksi adanya
edge
. Di
clear
ketika ada interupsi.
IR0 (
Interrupt 0 Type control bit
)
Di
set/clear
oleh perangkat lunak untuk menentukan pen-
triger
-an
interrupsi eksternal pada transisi turun /
low level
Pengontrol pemilihan mode operasi
timer/counter
ada pada register
timer mode
(TMOD) . Definisi bit-bitnya adalah sebagai berikut:
Gambar 2. 11. Register TMOD
Tabel 2. 4a Fungsi-fungsi Register TMOD
Simbol
Fungsi
GATE
Gate control setdan kondisi pin “TRx” sedang. Timer/counter set ‘x’ akan aktif jika pin “INT” . highGate control clear. Timer”x” akan aktif jika “TRx” set
C / T
Selector timer/counter. Clear untuk mode timer ( input dari internalclock ) dan set untuk mode counter (input dari pin “Tx” )
M1
Bit untuk memilih mode timer/counterM0
Bit untuk memilih mode
timer/counter
Tabel 2. 4b Kombinasi M0 dan M1
M1 M0 Mode
Operasi
0 0 0
Timer
13 bit
0 1 1
Timer/counter
16 bit
1 0 2
Timer/counter
pengisian otomatis (
auto reload
)
8 bit
1 1 3
(
Timer
0)
Mode
Timer/Counter
Mode 0
Pada mode ini timer bekerja sebagai timer 13 bit yang terdiri
dari counter 8-bit dengan pembagi 32 (pembagi 5 bit). Setelah
perhitungan selesai, mikrokontroler akan mengeset Timer Interrupt
Flag (TF1). Dengan membuat GATE = 1, timer dapat dikontrol oleh
input dari luar (INT1), untuk fasilitas pengukuran lebar pulsa. Register
13 bit yang digunakan terdiri dari 8 bit dari TH1 dan 5 bit bawah dari
TL1 ( bit 6,7,8 tidak digunakan ). Mengeset TR1 tidak akan
menghapus isi register. Operasi pada mode 0 untuk Timer 0 dan Timer
1 adalah sama.
Mode 1
Mode 1 sama dengan mode 0 kecuali register timer akan
bekerja dalam mode 16 bit.
Mode 2
Mode 2 menyusun register
timer
sebagai 8 bit
counter
(TL1)
dengan kemampuan pengisian otomatis.
Overflow
dari TL1 tidak
hanya men-
set
TF1 tetapi juga mengisi TL1 dengan isi TH1 yang diisi
sebelumnya oleh
software
. Pengisian ulang ini tidak mengubah nilai
TH1.
Mode 3
timer
0 dalam mode 3, t
imer
1 dapat dihidupkan atau dimatikan, atau
dapat digunakan oleh
port
serial sebagai pembangkit
baud rate
dalam
aplikasi komunikasi serial
.i.
Register WMCON
Nilai SFR ini saat reset adalah 0000 0000b. Adapun bit-btnya adalah sebagai
berikut :
PS2 PS1 PS0 EEMWE EEMEN DPS WDTTRST WDTEN
Keterangan :
a.
PS2, PS1, PS0 adalah bit prescaler untuk wacthdog timer.
b.
EEMWE adalah pengaktif penulisan EEPROM data memori, harus diset
sebelum penulisan dan bit tersebut harus direset setelah penulisan.
c.
EEMEN adalah bit pengaktif pengaksesan data internal EEPROM, harus
bernilai 1 saat akan mengakses internal EEPROM dan bernilai 0 saat
mengakses memori eksternal.
d.
DPS adalah Data Pointer Select
e.
WDTRST adalahWacthdog Timer Reset dan bendera EEPROM Ready /
busy
f.
WDTEN adalah bit pengaktif Wacthdog Timer.
2. 2. 5. Mode Pengalamatan dan Instruksi Mikrokontroler
Untuk mengakes data di dalam memori mikrokontroler dapat dilakukan
dengan beberapa mode, yaitu:
1.
Direct Addressing Mode (Mode Pengalamatan Langsung)
Pada
direct addressing
instruksi yang dikeluarkan secara spesifik
akan menyebutkan alamat dari operan yang diproses. Hanya internal Data
RAM dan SFR yang dapat diproses dengan menggunakan
direct
addressing
ini. Contoh: MOV A,55h.
2.
Indirect
Addressing Mode
(Mode Pengalamatan Tak langsung)
diproses. Baik internal maupun eksternal RAM dapat diakses
menggunakan
indirect addressing
ini. Register alamat untuk 8 bit yang
dapat dipakai adalah R0 dan R1 dari bank register, atau Stack Pointer.
Pada pengalamatan 16 bit dapat menggunakan register DPTR (Data
Pointer). Contoh: MOV A, @R0
3.
Register Addressing Mode (Mode Pengalamatan Register)
Bank register berisi register R0 sampai R7 yang dapat diakses dengan
instruksi-instruksi tertentu dimana hanya akan melibatkan 3 bit register spesifik
yang berisi opcode dari instruksi. Instruksi yang mengakses register dengan cara
ini akan lebih efisien, karena mode ini akan menghilangkan bagian byte alamat.
Saat instruksi ini dieksekusi, satu dari delapan register dari bank register akan
diakses. Contoh : MOV A,R2.
4.
Immediate Addressing Mode (Mode Pengalamatan Segera)
BAB III
RANCANGAN PENELITIAN
3. 1. Perancangan Perangkat keras
Perangkat keras terdiri dari sebuah modul mikrokontroler yang
dihubungkan pada PC (
Personal Computer
) menggunakan Kabel serial RS 232.
PC tersambung pada modul mikrokontroler melalui kabel serial DB-9 untuk
mengirim data. Data yang masuk ke mikrokontroler disimpan untuk kemudian
dibandingkan dengan data interupsi dari port yang lain. Keluarannya dihubungkan
dengan LED warna sebagai indikator output. Secara umum blok diagramnya
ditunjukkan pada gambar 3. 1.
VCC
PC
2
Barcode
Reader
AT89S825
2
LED
HIJA
LED
MERAH
Max232
3. 1. 1. Pengondisi sinyal RS 232
Saluran transmisi RS 232 yang digunakan memiliki karakteristik sebagai
berikut, level logika “0” dinyatakan dengan tegangan antara +3 sampai +15 volt,
dan level logika “1” dinyatakan dengan tegangan antara –3 sampai –15 volt.
Standar itu tidak sesuai dengan komponen digital yang pada umumnya bekerja
dengan sumber tegangan +5 volt, dan level logika “0” dinyatakan dengan
tegangan antara 0 – 0,8 volt serta logika “1” dinyatakan dengan tegangan 3,5
sampai 5 volt, maka dibutuhkan sebuah pengondisi sinyal untuk menyamakan
ketentuan tersebut.
IC MAX 232 memiliki 2 buah RS232
Line Driver
dan 2 buah RS232
Line
Receiver
. IC ini akan berperan sebagai IC
translator
yang akan menyamakan level
tegangan antara RS232 dengan perangkat digital yang digunakan. Dalam IC
tersebut dilengkapi dengan pengganda tegangan DC sehingga meskipun catu daya
untuk IC MAX232 hanya +5 volt, ia sanggup bekerja pada level RS232 antara –
10 sampai +10 volt.
P1 DB9 AT89S8252 5 9 4 8 3 7 2 6 1 U2 MAX232 13 12 8 9 11 14 10 7 R1IN R2IN T1IN T2IN C+ C1-C2+ C2-V+ V-R1OUT R2OUT T1OUT T2OUT 1 3 4 Port 3.0 Port 3.1 5 2 6
3. 1. 2. LED Output
Keluaran dari sistem adalah dua buah LED yang berbeda warna. Warna
Hijau untuk “YA” (data yang diinterupsikan sama dengan salah satu data yang
terdapat dalam memori) dan sebaliknya warna merah untuk “TIDAK” (dalam
memori tidak ada data yang sama dengan data interupsi). Kedua LED
dihubungkan langsung pada port mikrokontroler.
LED Hijau VCC
LED Merah
330 AT89S8252
Port 0.0 Port 0.1
Gambar 3. 3. Konfigurasi LED
3. 1. 3. On-Chip Oscilator
Mikrokontroler AT89S8252 memiliki rangkaian osilator internal.
Komponen-komponen yang dibutuhkan untuk menghidupkan osilator internal
adalah 2 buah kapasitor (dari data sheet AT89S8252 nilai kapasitor adalah 30 pF –
33pF) dan sebuah resonator keramik/kristal yang dihubungkan dengan kaki
XTAL1 dan XTAL2 pada pin mikrokontroler, seperti pada gambar 3. 4.
AT89S8252
30p
XTAL1 XTAL2
XTAL1 XTAL2
CRYSTAL 30p
12 MHz
3. 2. Perancangan Perangkat Lunak
Perancangan perangkat lunak meliputi pemrograman mikrokontroler untuk
pengiriman data dan pemrograman mikrokontroler untuk pembandingan data serta
keluarannya.
MULAI
Kirim Data ke µC
SELESAI Pembandingan Data
Gambar 3. 5. Diagram Alir Perangkat Lunak
3. 2. 1. Pemrograman mikrokontroler
Mikrokontroler dapat bekerja bila pada mikrokontroler tersebut
dimasukkan instruksi-instruksi yang diprogramkan. Pada alat ini program terdiri
dari program utama dan subrutin-subrutin pendukungnya, yaitu subrutin
penerimaan data, serta subrutin pembandingan data.
NO
YES
YES
NO
Gambar 3. 6. Flowchart Program Utama AT89S8252
3. 2. 1. 1. Inisialisasi
Port serial akan digunakan dengan konfigurasi 8 bit UART dengan baud
rate 9600 bps, menggunakan Timer 1 untuk menghasilkan detak baud rate.
Inisialisasinya adalah :
SM0 SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1 0 0 1
Gate C/T M1 M0 GATE C/T M1
0 0 1 0 0 0 0
SCON :
TMOD :
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
0 1 0 0 0 0 0 0
1 1 1 1 1 1 0 1
TCON :
TH1 :
SELESAI Output LED
Sub Banding_Data Ada data
dari reader ?
A
A
MULAISub Terima_Data Ada data
dari PC ?
Inisialisasi
Dengan mengatur SMO = 0 dan SM1 = 1 menjadikan port serial bekerja
dalam mode UART 8 bit. REN = 1 akan mengaktifkan port serial agar dapat mulai
menerima karakter. Dengan mengatur TI = 1 berarti karakter pertama dapat
dikirim (SBUF dalam kondisi kosong). M1 = 1 dan M0 = 0 maka Timer 1 bekerja
sebagai pewaktu 8 bit dengan isi ulang otomatis, dan TR1 = 1 akan mengaktifkan
Timer 1 itu sendiri. Bit-bit lainnya diisi 0 karena tidak digunakan. Untuk
mengaktifkan interupsi serial itu sendiri dilakukan dengan mengatur EA = 1 dan
ES = 1 pada register IE (
Interrupt Enable
).
TH1 didapat dari 9600/32 = 300. Karena menggunakan timer 1 yang
memiliki laju 1000 kHz, maka 1000/300 = 3,33 dibulatkan menjadi 3. Yang
diisikan ke TH1 adalah –3 atau FDh.
3. 2. 1. 2. Pemrograman Penerimaan data pada mikrokontroler
Data yang akan dikirim dari PC adalah sekelompok data yang
terdiri dari 32 data penumpang, yang besarnya 7 byte tiap data,
sehingga total data yang dikirimkan adalah 32
×
7 byte = 224 byte
data. Oleh karena itu pada
counter register
diisikan nilai 224 sebagai
pencacah data.
Penyimpanan data terdapat pada subrutin penerimaan data. Sehingga
pengaksesan EEPROM terdapat dalam subrutin ini. Pengaksesan EEPROM
dimulai dengan menentukan nilai bit-bit EEMEN, EEMWE, WDTRST yang
terdapat dalam register WMCON.
Terima_Data
Inisialisasi
(counter, register, serialport)
NO
YES Baca Karakter dari PC
Simpan karakter dari PC ke EEPROM
Karakter Habis ?
RET
3. 2. 2. 3. Pemrograman Pembandingan data pada mikrokontroler
Interupsi
dari
barcode reader
pada mikrokontroler yang telah berisi data,
akan dilayani di alamat lain dari memori data. Sejumlah data yang masuk
disimpan dahulu di alamat yang berbeda, dan setelah semua data dari interupsi
barcode reader
masuk, maka akumulator digunakan sebagai wadah pembanding
data.
Banding_Data
NO
YES
Inisialisasi (counter,register,serialport)
Baca karakter dari reader
Simpan karakter reader
karakter Habis ?
B
BAB IV
ANALISA DAN PEMBAHASAN
Hasil dari alat yang telah dibuat adalah sebuah modul mikrokontroler yang
telah diprogram untuk memenuhi kebutuhan sistem. Unit deteksi tiket terdiri dari
dua program utama, yaitu penerimaan data yang mengakses memori eksternal dan
pembandingan data yang berisi program pemindahan data antar mikrokontroler,
pembandingan, serta pengiriman data ke perangkat keras.
4. 1. Program Penerimaan Data
Data yang diterima adalah basis data penumpang yang dikirim
administrator. Tetapi karena perangkat keras, dalam hal ini komunikasi serial
belum dapat bekerja, maka penerimaan dilakukan dalam bentuk simulasi. Untuk
itu data masukan dimasukkan melalui
keypad.
Program penerimaan data akan menjalankan dua langkah, langkah
pertama adalah saat mikrokontroler aktif dan siap untuk menerima data,
instruksinya adalah:
SERINT:
JB RI,TERIMA_CH
CLR TI
JUMP SERINT
Bila tidak ada interupsi dari PC, maka program akan berputar di tiga
instruksi tersebut. Langkah kedua adalah pada saat ada interupsi. Program akan
mengerjakan instruksi terima data yang ditunjuk oleh label ‘
TERIMA_CH’yang
berisi :
TERIMA_CH:
PUSH PSW
PUSH ACC
WRT_EEPROM:
orl WMCON,#EEMEN
orl WMCON,#EEMWE
MOV A,SBUF
CLR RI
INC DPTR
MOV P0,A
MOV SBUF,A
POP ACC
POP PSW
RETI
Setelah menyimpan nilai akumulator dan PSW, instruksi
‘MOVX @DPTR,A’akan menyimpan data yang terkirim ke EEPROM, dan instruksi
‘POP ACC’dan
‘
POP PSW’akan menampilkan nilai akumulator kembali.
Basis data yang disimpan secara manual adalah sebanyak 32 data. Setiap
data berisi tanggal, bulan, tahun, kode bis serta nomor kursi. Pada percobaan
berikut diambil contoh tanggal 3, bulan oktober tahun 2006, kode bis 4, sebanyak
32 kursi. Sehingga data yang diisikan melalui keypad adalah 03 untuk tanggal, 10
untuk bulan, 06 untuk tahun, 04 untuk kode bis, serta 01 sampai 32 untuk nomor
kursi. Pengisian EEPROM dapat dilihat pada gambar 4.1.
Pada gambar dapat dilihat bahwa data telah terisi dalam EEPROM (Static
RAM) mulai dari alamat 0000 sampai 013F (320 byte).
10 data pertama
Alamat
10 data terakhir
Alamat Akhir
Gambar 4.1b. pengaksesan EEPROM
Setelah EEPROM berisi semua data yang telah dikirim, maka data tersebut
siap dibandingkan dengan data dari
reader
.
4. 2. Program Pembandingan Data
Secara khusus program pembandingan data akan melakukan tiga langkah,
yaitu pemindahan data antar mikrokontroler, pembandingan, serta pengaktifan
perangkat keras. Perangkat keras terdiri dari konfigurasi LED sebagai penampil
kursi serta modul pintu yang terdiri dari motor, solenoid, dan sensor cahaya.
4.2.1. Pemindahan Data Antar Mikrokontroler
Data yang dikirimkan oleh mikrokontroler sejawat adalah berupa data
heksadesimal yang terdiri dari 5 karakter, dan masing-masing terdiri dari 2 byte,
sehingga dalam pengirimannya dibutuhkan 10 byte penampung. Dalam
pengamatan ini digunakan keypad sebagai sumber data masukan. Instruksi yang
digunakan dalam penerimaan data ini adalah :
TAKE_IT:
JNB P2.5,$
MOV A,SBUF
CLR RI
MOV @R0,A
INC R0
Instruksi ‘
MOV A,SBUF’serta
‘MOV @R0,A’akan menyimpan data di
IRAM sebelum data tersebut dibandingkan dengan data yang tersimpan di
EEPROM. Data tersebut berupa data heksadesimal yang berjumlah 10 byte.
Ketentuannya adalah byte pertama dan kedua menunjukkan tanggal, byte 3 dan
byte 4 menunjukkan bulan, byte 5 dan byte 6 menunjukkan tahun, byte 7 dan byte
8 menunjukkan kode bis, byte 9 dan byte 10 menunjukkan nomor kursi. Lebih
jelasnya ditunjukkan pada gambar 4.2.
Data
Data Tanggal
Nomor
Data
Nomor Bis
Gambar 4.2. 10 byte data yang diterima di IRAM
4.2.2. Pembandingan Data
Pembandingan dilakukan sesaat setelah semua data diterima, instruksinya
adalah:
NEXT1:
1 MOVX A,@DPTR
2 INC DPTR ;NAIKKAN DPTR
3 INC R0
4 DEC R4
5 CJNE A,31H,NEXT ;SIMPAN KE IRAM
6 DJNZ R4,NEXT2
7 JMP MERAH
4.2.3. Pengaktifan perangkat keras
Hasil dari pembandingan data adalah sesuai atau tidak sesuai. Perangkat
keras pertama yaitu modul pintu akan dipanggil apabila data sesuai. Instruksinya
adalah :
CALL INDRA
. . . RET
Gambar 4.3a. Kondisi port setelah pembandingan data ( bila data tidak sesuai )
Port 3.3Gambar 4.3a memperlihatkan pembandingan data tidak sesuai. Port 3.3
yang berkondisi ‘
low
’ akan mengaktifkan LED merah sebagai indikator data tidak
sesuai. Dari sini program akan kembali ke program awal, yaitu menunggu data
berikutnya.
Port 3.2
Gambar 4.3b. Kondisi port setelah pembandingan Data ( bila data sesuai )
Gambar 4.3b memperlihatkan pembandingan data sesuai. Port 3.2 yang
berkondisi ‘
low
’ akan mengaktifkan LED hijau sebagai indikator data sesuai.
Adapun Port – port lain yang juga berkondisi ‘low’ memperlihatkan bahwa
program menjalankan sistem selanjutnya, yaitu
driver
pintu. Sub sistem driver
pintu tidak dijelaskan dalam tulisan ini.
konfigurasi portnya adalah sebagai berikut, P1.0 sampai P1.7 untuk baris 1 sampai
8, dan P3.4 sampai P3.7 untuk kolom 1 sampai 4. Sehingga saat P1.0 dan P3.4
berlogika ‘1’ maka LED 1 akan menyala, dan saat P1.0 dan P3.5 berlogika ‘1’,
maka LED 2 yang menyala, begitu seterusnya. Ketentuan ini terdapat dalam
program di sub sistem driver LED, yang terdapat dalam listing program pada
lampiran. Untuk itu pengaktifan LED dimulai dengan memanggil subrutinnya.
Instruksinya:
CALL LIONG_MULAI . . .
RET
LED_1:
CJNE A,#01H,LED_2
lagi_1: setb p1.0 ;kirim data 0000 0001B sehingga diport 1 berlogika 1 setb p3.4 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
CALL DELAY ;lakukan penundaan sesaat
clr p1.0
CALL DELAY
djnz r0,lagi_1
setb p1.0 setb p3.4
Di bawah ini akan diambil contoh 2 pengamatan, yaitu di kursi nomor 10
dan 11.
a)
Bila yang di deteksi kursi nomor 10, maka tabel akan mengerjakan
instruksi:
LED_10:
CJNE A,#010H,LED_11
lagi10: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1 setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1 CALL DELAY ;lakukan penundaan sesaat
clr p1.2
clr p3.5
CALL DELAY
djnz r0, lagi10
setb p1.2
setb p3.5
jmp menunggu
Port 1.2
Gambar 4.3c. Kondisi port setelah pembandingan Data (nomor kursi 10 )
Port 3.5
Port 1.2 dan Port 3.5 yang berkondisi ‘high’ akan menyalakan LED
nomor 10 sesuai dengan perancangan nyala LED di kursi/
display
bis. Hal
ini bisa dilihat pada listing program ( tertera pada Lampiran ) di baris 477
dan 478. Sedangkan bit – bit lain yang tidak aktif menandakan tidak ada
LED lain yang menyala selama LED nomor 10 menyala.
b)
Bila yang di deteksi kursi nomor 11, maka tabel akan mengerjakan
instruksi:
LED_11:
CJNE A,#011H,LED_12
lagi11: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1 setb p3.6 ;kirim data 0010 0000B sehingga diport 3 berlogika 1 CALL DELAY ;lakukan penundaan sesaat
clr p1.2
clr p3.6
CALL DELAY
djnz r0, lagi11
setb p1.2
setb p3.6
jmp menunggu
Hasil pengamatan diperlihatkan di gambar 4.3c :
Gambar 4.3c. Kondisi port setelah pembandingan Data (nomor kursi 11 )
Port 1.2 dan Port 3.6 yang berkondisi ‘high’ akan menyalakan LED nomor
11 ( dilihat pada listing program di baris 02DE dan 02E0 ). Sedangkan bit – bit
lain yang tidak aktif menandakan tidak ada LED lain yang menyala selama LED
nomor 11 menyala.
BAB V
KESIMPULAN DAN SARAN
5.1 KESIMPULAN
Dari penelitian ini dapat diambil kesimpulan sebagai berikut:
1.
Meskipun koneksi dengan PC belum berjalan dengan baik, namun
dengan menggunakan data manual, pengaksesan EEPROM
mikrokontroler AT89S8252 pada Unit Deteksi Tiket dapat
disimulasikan dengan baik dan sesuai dengan kinerja alat yang
direncanakan.
2.
Program pembandingan data pada mikrokontroler serta pencuplikan
nomor kursi dapat disimulasikan dengan baik sesuai ketentuan
konfigurasi penampil nomor kursi.
5.2. SARAN
Untuk kemajuan dan perbaikan mutu di kemudian hari, saran yang
diberikan adalah:
1.
Dengan mengintegrasi modul mikrokontroler, komunikasi, dan
perangkat keras menjadi satu piranti akan memudahkan pemrograman
perangkat lunaknya.
2.
Dalam Perancangan perangkat lunak sebaiknya memiliki cadangan
perangkat keras yang akan digunakan, sehingga bila sewaktu – waktu
terjadi kerusakan dapat ditanggulangi dengan segera.
Dari penelitian ini dapat diambil kesimpulan sebagai berikut:
disimulasikan dengan baik dan sesuai dengan kinerja alat yang
direncanakan.
4.
Program pembandingan data pada mikrokontroler serta pencuplikan
nomor kursi dapat disimulasikan dengan baik sesuai ketentuan
konfigurasi penampil nomor kursi.
5.2. SARAN
Untuk kemajuan dan perbaikan mutu di kemudian hari, saran yang
diberikan adalah:
1.
Dengan mengintegrasi modul mikrokontroler, komunikasi, dan
perangkat keras menjadi satu piranti akan memudahkan pemrograman
perangkat lunaknya.
AUTOMATI
C PASS
ENGER TI
CKE
T
IDENTIFI
CATION SY
LISTING PROGRAM MIKROKONTROLER HERNOMO KUSTRIATMOJO
NO. MHS : 015114060
1 0000 ;================================================================ 2 0000 ;====== AUTOMATIC PASSENGER TICKET IDENTIFICATION SYSTEM ====== 3 0000 ;======== MIKROKONTROLER AT 89S8252 ======== 4 0000 ;================================================================ 5 0000 ;
6 0000 ;
7 0000 ;================================================================ 8 0000 ;UNIT DETEKSI TIKET
9 0000 ;PADA SISTEM IDENTIFIKASI TIKET PENUMPANG OTOMATIS 10 0000 ;HERNOMO KUSTRIATMOJO
11 0000 ;================================================================ 12 0000 ;INISIALISASI UNTUK PENGAKSESAN EEPROM
13 0000 ;================================================================
14 0000 WMCON EQU 96h
15 0000 EEMEN equ 00001000b
16 0000 EEMWE equ 00010000b
17 0000 WDTRST equ 00000010b
18 0000 DPS equ 00000100b
19 0000 ;---21 0000 ;==========================================================
22 0000 ;PEMBUKA DAN PENUTUP PINTU BUS OTOMATIS 23 0000 ;BERBASIS MIKROKONTROLER AT89S8252
24 0000 ;PADA SISTEM IDENTIFIKASI TIKET PENUMPANG OTOMATIS
25 0000 ;========================================================== 26 0000 ;INDRA CHRISTIAWAN
27 0000 ;015114053
28 0000 ;========================================================== 29 0000 ;INISIALISASI PORT .ALAMAT MEMORI DAN DATA AWAL
30 0000 ;========================================================== 31 0000 ir1 bit p0.0
32 0000 ir2 bit p0.1 33 0000 led1 bit p0.2 34 0000 led2 bit p0.3 35 0000 cw1 bit p0.4 36 0000 cw2 bit p0.5 37 0000 ccw1 bit p0.6 38 0000 ccw2 bit p0.7
39 0000 sensir1 bit p2.0 40 0000 sensir2 bit p2.1 41 0000 senslmt1 bit p2.2 42 0000 senslmt2 bit p2.3 43 0000 sole bit p2.4
44 0000 ;---plus---45 0000 cek bit p2.7
46 0000 ;---47 0000 delay10 equ 200
48 0000 delay5 equ 100
50 0000 org 00h ; PROGRAM DIMULAI
52 0000 MOV R5,#32
53 0002 PC_8252:
54 0002 mov dptr,#0000h
55 0005 CLR ACC
56 0007 JNB P2.6,TRIMA ;CEK APAKAH ADA INTERUPSI SERIAL
57 000A JNB P2.5,BANDING ;MEMULAI PEMBANDINGAN DATA
58 000D JMP PC_8252
64 0010 TRIMA:
65 0010 SETB P3.3
66 0012 SETB P3.2
67 0014 sjmp start
68 0016 ;interupsi serial 69 0016 org 23h
70 0023 sjmp SERINT
71 0025 ;Mulai program utama 72 0025 ;
73 0025 org 30h 74 0030 start:
75 0030 MOV TMOD,#20H ;TIMER 1 MODE 2
76 0033 MOV TH1,#0F4H ;9600 BPS (XTAL 12 MHz)
77 0036 ;jika Xtal 11.0592MHz, isi TH1 = F4H
78 0036 MOV SCON,#50H ;MODE SERIAL, 8BIT UART
79 0039 SETB TR1 ;START BAUD RATE
80 003B MOV SP,#2FH ;DEFINISI LOKASI STAC
82 003E ;---83 003E ;INISIALISASI INTERUPSI
84 003E ;
85 003E SETB ES 86 0040 SETB EA
87 0042 ;INTERUPSI SERIAL SEKARANG DIAKTIFKAN 88 0042 ;
89 0042 SERINT:
90 0042 JB RI,TERIMA_CH ;APAKAH TERIMA KARAKTER, JIKA YA LOMPAT KE TERIMA_CH
91 0045 CLR TI ;TIDAK, HAPUS TI
92 0047 JB P2.6,PC_8252 93 004A JUMP SERINT
94 004D ;
95 004D ;YA TERIMA KARAKTER 96 004D TERIMA_CH:
97 004D PUSH PSW ;SIMPAN REGISTER2
98 004F PUSH ACC
99 0051 WRT_EEPROM: ;PENULISAN KE EEPROM
100 0051 orl WMCON,#EEMEN 101 0054 orl WMCON,#EEMWE
102 0057 MOV A,SBUF ;BACA DATA KARAKTER
103 0059 CLR RI ;KOSONGKAN RI (SIAP TERIMA LAGI)
104 005B MOVX @DPTR,A ;SIMPAN DATA KE EEPROM
105 005C INC DPTR ;DPTR + 1
106 005D ; MOV P0,A ;kirim ke port 0 juga
107 005D ; MOV SBUF,A ;KIRIM KEMBALI
108 005D ;EXIT
109 005D POP ACC 110 005F POP PSW 111 0061 JMP SERINT 112 0064 ;
113 0064 ;---114 0064 ;PROGRAM PENGAMBILAN DAN PEMBANDINGAN DATA DARI S52 KE S8252 115 0064 ;---117 0064 BANDING:
118 0064 SETB P2.5
119 0066 JB P2.5,$
120 0069 MOV P1,#0FFH
121 006C MOV P2,#0FFH
122 006F MOV P3,#0FFH
123 0072 MOV P0,#0FFH
124 0075 MOV R1,#10
129 007D JNB P2.5,$
130 0080 MOV A,SBUF
131 0082 CLR RI
132 0084 MOV @R0,A
133 0085 INC R0
134 0086 DJNZ R1,TAKE_IT
135 0088 YO2:
136 0088 MOV R4,#00H
137 008A MOV R4,#0A0H ;SET 32 DATA
138 008C orl WMCON,#EEMEN
139 008F orl WMCON,#EEMWE
140 0092 MOV R0,#30H
141 0094 NEXT:
142 0094 MOVX A,@DPTR
143 0095 CJNE A,#00H,HRNM
144 0098 DJNZ R4,TUMP_MERAH
145 009A JMP PC_8252
146 009D HRNM:
147 009D INC DPTR
148 009E INC R0
149 009F DEC R4
150 00A0 CJNE A,30H,NEXT ;SIMPAN KE IRAM
151 00A3 NEXT1:
152 00A3 MOVX A,@DPTR
153 00A4 INC DPTR ;NAIKKAN DPTR
154 00A5 INC R0
155 00A6 DEC R4
156 00A7 CJNE A,31H,NEXT ;SIMPAN KE IRAM
157 00AA DJNZ R4,NEXT2
158 00AC JMP MERAH
159 00AF NEXT2:
160 00AF MOVX A,@DPTR
161 00B0 INC DPTR ;NAIKKAN DPTR
162 00B1 INC R0
163 00B2 DEC R4
164 00B3 CJNE A,32H,NEXT ;SIMPAN KE IRAM
165 00B6 DJNZ R4,NEXT3
166 00B8 JMP MERAH
167 00BB NEXT3:
168 00BB MOVX A,@DPTR
169 00BC INC DPTR ;NAIKKAN DPTR
170 00BD INC R0
171 00BE DEC R4
172 00BF CJNE A,33H,NEXT ;SIMPAN KE IRAM
173 00C2 DJNZ R4,NEXT4
174 00C4 JMP MERAH
175 00C7 NEXT4:
176 00C7 MOVX A,@DPTR
177 00C8 INC DPTR ;NAIKKAN DPTR
178 00C9 INC R0
179 00CA DEC R4
180 00CB CJNE A,34H,NEXT ;SIMPAN KE IRAM
181 00CE DJNZ R4,NEXT5
182 00D0 JMP MERAH
184 00D3 TUMP_NEXT:
185 00D3 JMP NEXT
186 00D6 TUMP_MERAH:
187 00D6 JMP MERAH
189 00D9 NEXT5:
190 00D9 MOVX A,@DPTR
191 00DA INC DPTR ;NAIKKAN DPTR
195 00E0 DJNZ R4,NEXT6
196 00E2 JMP MERAH
197 00E5 NEXT6:
198 00E5 MOVX A,@DPTR
199 00E6 INC DPTR ;NAIKKAN DPTR
200 00E7 INC R0
201 00E8 DEC R4
202 00E9 CJNE A,36H,NEXT ;SIMPAN KE IRAM
203 00EC DJNZ R4,NEXT7
204 00EE JMP MERAH
205 00F1 NEXT7:
206 00F1 MOVX A,@DPTR
207 00F2 INC DPTR ;NAIKKAN DPTR
208 00F3 INC R0
209 00F4 DEC R4
210 00F5 CJNE A,37H,NEXT ;SIMPAN KE IRAM
211 00F8 DJNZ R4,NEXT8
212 00FA JMP MERAH
213 00FD NEXT8:
214 00FD MOVX A,@DPTR
215 00FE INC DPTR ;NAIKKAN DPTR
216 00FF INC R0
217 0100 DEC R4
218 0101 CALL TABEL2
219 0104 CJNE A,38H,NEXT ;SIMPAN KE IRAM
220 0107 DJNZ R4,NEXT9
221 0109 JMP MERAH
222 010C NEXT9:
223 010C MOVX A,@DPTR
224 010D INC DPTR ;NAIKKAN DPTR
225 010E INC R0
226 010F DEC R4
227 0110 CJNE A,39H,TUMP_NEXT ;SIMPAN KE IRAM
228 0113 CALL TABEL3
229 0116 JMP HIJAU
231 0119 MERAH:
232 0119 CLR P3.3
233 011B MOV DPTR,#00H
234 011E JMP PC_8252
235 0121 HIJAU:
236 0121 CLR P3.2
237 0123 MOV DPTR,#00H
238 0126 ORL A,B
239 0128 PUSH ACC
240 012A ACALL INDRA
241 012C POP ACC
242 012E CALL LIONG
243 0131 DJNZ R5,PULANG
244 0133 JMP SELESAI
245 0136 PULANG:
246 0136 JMP PC_8252
248 0139 SELESAI:
249 0139 SETB P3.3
250 013B CLR P3.2
251 013D CALL DELAY
252 0140 SETB P3.2
253 0142 CLR P3.3
254 0144 CALL DELAY
255 0147 JMP SELESAI
262 0151 ONE:
263 0151 CJNE A,#31H,TWO
264 0154 MOV B,#10H
265 0157 RET 266 0158 TWO:
267 0158 CJNE A,#32H,THREE
268 015B MOV B,#20H
269 015E RET 270 015F THREE:
271 015F CJNE A,#33H,FOUR
272 0162 MOV B,#30H
273 0165 RET 274 0166 FOUR:
275 0166 CJNE A,#34H,FIVE
276 0169 MOV B,#40H
277 016C RET 278 016D FIVE:
279 016D CJNE A,#35H,SIX
280 0170 MOV B,#50H
281 0173 RET 282 0174 SIX:
283 0174 CJNE A,#36H,SEVEN
284 0177 MOV B,#60H
285 017A RET 286 017B SEVEN:
287 017B CJNE A,#37H,EIGHT
288 017E MOV B,#70H
289 0181 RET 290 0182 EIGHT:
291 0182 CJNE A,#38H,NINE
292 0185 MOV B,#80H
293 0188 RET 294 0189 NINE:
295 0189 CJNE A,#39H,TEN
296 018C MOV B,#90H
297 018F TEN: 298 018F RET 299 0190 TABEL3: 300 0190 3ZERO:
301 0190 CJNE A,#30H,3ONE
302 0193 MOV A,#00H
303 0195 RET 304 0196 3ONE:
305 0196 CJNE A,#31H,3TWO
306 0199 MOV A,#01H
307 019B RET 308 019C 3TWO:
309 019C CJNE A,#32H,3THREE
310 019F MOV A,#02H
311 01A1 RET 312 01A2 3THREE:
313 01A2 CJNE A,#33H,3FOUR
314 01A5 MOV A,#03H
315 01A7 RET 316 01A8 3FOUR:
317 01A8 CJNE A,#34H,3FIVE
318 01AB MOV A,#04H
319 01AD RET 320 01AE 3FIVE:
321 01AE CJNE A,#35H,3SIX
322 01B1 MOV A,#05H
326 01B7 MOV A,#06H 327 01B9 RET
328 01BA 3SEVEN:
329 01BA CJNE A,#37H,3EIGHT
330 01BD MOV A,#06H
331 01BF RET 332 01C0 3EIGHT:
333 01C0 CJNE A,#38H,3NINE
334 01C3 MOV A,#06H
335 01C5 RET 336 01C6 3NINE:
337 01C6 CJNE A,#39H,3TEN
338 01C9 MOV A,#09H
339 01CB 3TEN: 340 01CB RET 341 01CC
;========================================================================== 342 01CC ;OEI HUI LIONG (015114066)
343 01CC ;PENAMPIL NOMOR TEMPAT DUDUK PADA BUS BERBASIS 344 01CC ;MIKROKONTROLER AT89S8252
345 01CC
;========================================================================== 346 01CC
;---347 01CC ;SUBRUTIN LIONG
348 01CC
;---349 01CC LIONG:
350 01CC p1 equ 90h ;port 1 dengan alamat 90H 351 01CC p3 equ 0b0h ;port 3 dengan alamat B0H 352 01CC ratusan equ 100 ;100 X 10000 UD = 1 DETIK 353 01CC cacah EQU -10000
354 01CC ;org 0h ;mulai dari alamat 0h 355 01CC mov p0,#0ffh
356 01CF mov p1,#0 357 01D2 mov p2,#0ffh 358 01D5 mov p3,#03h 359 01D8 MOV TMOD,#01h 360 01DB mov r0,#5 361 01DD ;
362 01DD LED_1:
363 01DD CJNE A,#01H,LED_2
364 01E0 lagi_1: setb p1.0 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
365 01E2 setb p3.4 ;kirim data 0010 0000B sehingga diport
3 berlogika 1
366 01E4 CALL DELAY ;lakukan penundaan sesaat
367 01E7 clr p1.0
368 01E9 CALL DELAY
369 01EC djnz r0,lagi_1
370 01EE setb p1.0
371 01F0 setb p3.4
372 01F2 jmp menunggu
374 01F5 LED_2:
375 01F5 CJNE A,#02H,LED_3
376 01F8 lagi_2: setb p1.0 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
377 01FA setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
378 01FC CALL DELAY ;lakukan penundaan sesaat
383 0208 setb p3.5
384 020A jmp menunggu
386 020D LED_3:
387 020D CJNE A,#03H,LED_4
388 0210 lagi3: setb p1.0 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
389 0212 setb p3.6 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
390 0214 CALL DELAY ;lakukan penundaan sesaat
391 0217 clr p1.0
392 0219 CALL DELAY
393 021C djnz r0, lagi3
394 021E setb p1.0
395 0220 setb p3.6
396 0222 jmp menunggu
398 0225 LED_4:
399 0225 CJNE A,#04H,LED_5
400 0228 lagi4: setb p1.0 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
401 022A setb p3.7 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
402 022C CALL DELAY ;lakukan penundaan sesaat
403 022F clr p1.0
404 0231 clr p3.7
405 0233 CALL DELAY
406 0236 djnz r0, lagi4
407 0238 setb p1.0
408 023A setb p3.7
409 023C jmp menunggu 411 023F LED_5:
412 023F CJNE A,#05H,LED_6
413 0242 lagi5: setb p1.1 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
414 0244 setb p3.4 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
415 0246 CALL DELAY ;lakukan penundaan sesaat
416 0249 clr p1.1
417 024B clr p3.4
418 024D CALL DELAY
419 0250 djnz r0, lagi5
420 0252 setb p1.1
421 0254 setb p3.4
422 0256 jmp menunggu 424 0259 LED_6:
425 0259 CJNE A,#06H,LED_7
426 025C lagi6: setb p1.1 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
427 025E setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
428 0260 CALL DELAY ;lakukan penundaan sesaat
429 0263 clr p1.1
430 0265 clr p3.5
431 0267 CALL DELAY
432 026A djnz r0, lagi6
433 026C setb p1.1
434 026E setb p3.5
435 0270 jmp menunggu 437 0273 LED_7:
438 0273 CJNE A,#07H,LED_8
439 0276 lagi7: setb p1.1 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
442 027D clr p1.1
443 027F clr p3.6
444 0281 CALL DELAY
445 0284 djnz r0, lagi7
446 0286 setb p1.1
447 0288 setb p3.6
448 028A jmp menunggu
450 028D LED_8:
451 028D CJNE A,#08H,LED_9
452 0290 lagi8: setb p1.1 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
453 0292 setb p3.7 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
454 0294 CALL DELAY ;lakukan penundaan sesaat
455 0297 clr p1.1
456 0299 clr p3.7
457 029B CALL DELAY
458 029E djnz r0, lagi8
459 02A0 setb p1.1
460 02A2 setb p3.7
461 02A4 jmp menunggu
462 02A7 LED_9:
463 02A7 CJNE A,#09H,LED_10
464 02AA lagi9: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
465 02AC setb p3.4 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
466 02AE CALL DELAY ;lakukan penundaan sesaat
467 02B1 clr p1.2
468 02B3 clr p3.4
469 02B5 CALL DELAY
470 02B8 djnz r0,lagi9
471 02BA setb p1.2
472 02BC setb p3.4
473 02BE jmp menunggu
474 02C1 LED_10:
475 02C1 CJNE A,#010H,LED_11
476 02C4 lagi10: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
477 02C6 setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
478 02C8 CALL DELAY ;lakukan penundaan sesaat
479 02CB clr p1.2
480 02CD clr p3.5
481 02CF CALL DELAY
482 02D2 djnz r0, lagi10
483 02D4 setb p1.2
484 02D6 setb p3.5
485 02D8 jmp menunggu
487 02DB LED_11:
488 02DB CJNE A,#011H,LED_12
489 02DE lagi11: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
490 02E0 setb p3.6 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
491 02E2 CALL DELAY ;lakukan penundaan sesaat
492 02E5 clr p1.2
493 02E7 clr p3.6
494 02E9 CALL DELAY
495 02EC djnz r0, lagi11
501 02F5 CJNE A,#012H,LED_13
502 02F8 lagi12: setb p1.2 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
503 02FA setb p3.7 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
504 02FC CALL DELAY ;lakukan penundaan sesaat
505 02FF clr p1.2
506 0301 clr p3.7
507 0303 CALL DELAY
508 0306 djnz r0, lagi9
509 0308 setb p1.2
510 030A setb p3.7
511 030C jmp menunggu
513 030F LED_13:
514 030F CJNE A,#013H,LED_14
515 0312 lagi13: setb p1.3 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
516 0314 setb p3.4 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
517 0316 CALL DELAY ;lakukan penundaan sesaat
518 0319 clr p1.3
519 031B clr p3.4
520 031D CALL DELAY
521 0320 djnz r0, lagi13
522 0322 setb p1.3
523 0324 setb p3.4
524 0326 jmp menunggu
526 0329 LED_14:
527 0329 CJNE A,#014H,LED_15
528 032C lagi14: setb p1.3 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
529 032E setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
530 0330 CALL DELAY ;lakukan penundaan sesaat
531 0333 clr p1.3
532 0335 clr p3.5
533 0337 CALL DELAY
534 033A djnz r0, lagi14
535 033C setb p1.3
536 033E setb p3.5
537 0340 jmp menunggu
539 0343 LED_15:
540 0343 CJNE A,#015H,LED_16
541 0346 lagi15: setb p1.3 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
542 0348 setb p3.6 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
543 034A CALL DELAY ;lakukan penundaan sesaat
544 034D clr p1.3
545 034F clr p3.6
546 0351 CALL DELAY
547 0354 djnz r0, lagi15
548 0356 setb p1.3
549 0358 setb p3.6
550 035A jmp menunggu
552 035D LED_16:
553 035D CJNE A,#016H,LED_17
554 0360 lagi16: setb p1.3 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
555 0362 setb p3.7 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
559 036B CALL DELAY 560 036E djnz r0, lagi16
561 0370 setb p1.3
562 0372 setb p3.7
563 0374 jmp menunggu
565 0377 LED_17:
566 0377 CJNE A,#017H,LED_18
567 037A lagi17: setb p1.4 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
568 037C setb p3.4 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
569 037E CALL DELAY ;lakukan penundaan sesaat
570 0381 clr p1.4
571 0383 clr p3.4
572 0385 CALL DELAY
573 0388 djnz r0, lagi17
574 038A setb p1.4
575 038C setb p3.4
576 038E jmp menunggu
578 0391 LED_18:
579 0391 CJNE A,#018H,LED_19
580 0394 lagi18: setb p1.4 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
581 0396 setb p3.5 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
582 0398 CALL DELAY ;lakukan penundaan sesaat
583 039B clr p1.4
584 039D clr p3.5
585 039F CALL DELAY
586 03A2 djnz r0, lagi18
587 03A4 setb p1.4
588 03A6 setb p3.5
589 03A8 jmp menunggu
591 03AB LED_19:
592 03AB CJNE A,#019H,LED_20
593 03AE lagi19: setb p1.4 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
594 03B0 setb p3.6 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
595 03B2 CALL DELAY ;lakukan penundaan sesaat
596 03B5 clr p1.4
597 03B7 clr p3.6
598 03B9 CALL DELAY
599 03BC djnz r0, lagi19
600 03BE setb p1.4
601 03C0 setb p3.6
602 03C2 jmp menunggu
604 03C5 LED_20:
605 03C5 CJNE A,#020H,LED_21
606 03C8 lagi20: setb p1.4 ;kirim data 0000 0001B sehingga diport 1 berlogika 1
607 03CA setb p3.7 ;kirim data 0010 0000B sehingga diport 3 berlogika 1
608 03CC CALL DELAY ;lakukan penundaan sesaat
609 03CF clr p1.4
610 03D1 clr p3.7
611 03D3 CALL DELAY
612 03D6 djnz r0, lagi20
613 03D8 setb p1.4
614 03DA setb p3.7