bab ii landasan teori 2.1 tinjauan pustaka -...
TRANSCRIPT
7
BAB II
LANDASAN TEORI
2.1 Tinjauan Pustaka
Flowmeter adalah alat yang digunakan untuk mengukur massa atau laju
aliran volumetrik cairan atau gas. Sebelum menetapkan flowmeter, juga
dianjurkan untuk menentukan apakah aliran informasi akan lebih berguna jika
disajikan dalam unit massa atau volumetrik. Ketika mengukur aliran bahan yang
mempunyai tekanan, aliran volumetrik tidak terlalu berarti, kecuali kepadatan
adalah konstan. Ketika kecepatan (volumetric aliran) dari cairan mampat diukur,
faktor gelembung udara akan menyebabkan kesalahan, karena itu, udara dan gas
harus dipindahkan sebelum mencapai fluida meter. (Noor Yudha Priyantini,
2010).
Tidak semua fluida yang berpindah dinamakan fluida bergerak. Yang
dimaksud fluida bergerak adalah jika fluida tersebut bergerak lurus terhadap
sekitar. Aliran fluida dikatakan aliran garis lurus apabila aliran fluida yang
mengalir mengikuti suatu garis (lurus melengkung) yang jelas ujung pangkalnya.
Aliran garis lurus juga disebut aliran berlapis atau aliran laminar (laminar flow).
Kecepatan- kecepatan partikel di tiap titik pada garis arus, searah dengan garis
singgung di titik itu. Dengan demikian garis arus tidak pernah berpotongan. Pada
fluida yang tak termampatkan, hasil kali antara kelajuan aliran fluida dan luas
penampangnya selalu tetap. Jadi A.v = konstan, atau disebut debit (Q). Debit
7
8
adalah volume fluida ( m3 ) yang mengalir melewati suatu penampang dalam
selang waktu tertentu. Dirumuskan dengan persamaan berikut:
Q = V/ t. …………………………………………………………..(2.1)
Keterangan : Q = debit ( m3 / s )
V = volume fluida ( m3 )
t = waktu fluida mengalir (s)
(Fathor Rohman, 2009)
Sistem kontrol fluida adalah sebuah alat yang dapat mengatur jumlah debit air
yang akan dikeluarkan. Dengan sistem digital, sistem kontrol ini dirancang untuk
mempermudah dalam pengemasan atau penakaran cairan dengan batas keluaran
yang ditentukan. Rancangan alat ini berupa perangkat keras dimana perangkat
yang satu dengan yang lainya berhubungan dan saling mendukung, adapun
perangkat keras tersebut terdiri dari Mikrokontroler, piringan derajat, optocoupler,
water meter termodivikasi, solenoid, pompa air dan LCD karakter. Sedangkan
perangkat lunaknya berupa program pada mikrokontroler dengan menggunakan
bahasa pemrograman assembly sehingga dapat mengontrol perangkat tersebut
baik berupa input maupun output.
2.2 Landasan Teori
2.2.1 Pengertian Mikrokontroller
Mikrokontroller dapat dikatakan sebuah sistem komputer yang seluruh
atau sebagian besar elemennya dikemas dalam satu chip sehingga sering disebut
9
sebagai single chip mikrokomputer. Tidak seperti sistem komputer yang mampu
menangani berbagai macam program aplikasi, mikrokontroller hanya dapat
digunakan untuk suatu aplikasi saja. Perbedaan lainya yaitu pada perbandingan
RAM (Rendom Acces Memory) dan ROM (Read Only Memory). Pada
Mikrokontroller perbandingan antara RAM dan ROM-nya besar, sedangkan pada
sistem komputer juga besar. (Budiharto, Widodo, Perancangan sistem dan aplikasi
mikrokontroller, 2005 hal 5).
Mikrokontroler merupakan sebuah chip yang dapat menyimpan program
yang fungsinya sebagi pengotrol rangkaian elektronik. Berbeda dengan
mikroprosesor yang merupakan Central Processing Unit (CPU) dimana memori
dan I/O pendukung komputer terpisah, pada mikrokontroler memori dan I/O
pendukung lainya terkemas dalam sebuah chip tersebut. Sehingga kelebihan
utama mikrokontroler menjadi sangat ringkas. Mikrokontroler jenis MCS51 sudah
mencapai 25 tahun, jenis mikrokontroller ini pertama kali dikembangkan pada
tahun 70-an oleh Intel Coorporatioan. Mikrokontroller MCS51 merupakan
keluarga yang masih banyak dikembang oleh produsen seperti Atmel corps,
Philips Semicunduktors, Cygnal Intergrated product,inc, Winbond Elektronics
Corp. Mikrokontroller jenis MCS51 terdiridari beberapa tipe diantaranya
AT89LS53, AT89S51, AT89S53 dan AT89S8252 dan salah satu yang banyak
digunakan pada saat ini adalah jenis AT89S51 maka itulah pada pembuatan alat
ini mikrokontroler yang akan digunakan adalah mikrokontroler AT89S51. (Danny
Cristanto.2004:1)
10
2.2.2 Arsitektur Mikrokontroler AT89S51
Mikrokontroler AT89S51 merupakan salah satu keluarga dari MCS-51
keluaran ATMEL. Jenis mikrokontroler ini pada prinsipnya dapat digunakan
untuk mengolah data per bit ataupun data 8 bit secara bersamaan.
Fasilitas yang dimiliki oleh mikrokontroler AT89S51 adalah sebagai
berikut:
1. Kompatibel dengan produk MCS-51
2. 4 Kb In System Programmable Flash Memory, dapat dilakukan
pemrograman 1000 tulis dan hapus
3. Range catu daya 4,0V s/d 5,0V
4. Operasi statis: 0 Hz s/d 33 MHz
5. Tiga Tingkat Program memory lock
6. 128 x 8 bit RAM internal
7. 32 Programmable Jalur I/O
8. Dua 16 bit Timer/ Counter
9. Enam Sumber Interupsi
10. Full Duplex Serial Channel
11. Low Power Idle dan Mode Power Down
12. Watcht Dog Timer
13. Dula Data Pointer
14. Power Off Flag
15. Fast Programming Time
16. Fleksibel ISP programming
11
Gambar 2.1 Diagram blok arsitektur mikrokontroler AT89S51
(Datasheet ATMEL AT89S51)
AT89S51 mempunyai konsumsi daya rendah, mikrokontroller 8-bit
CMOS dengan 4K byte momori Flash ISP (in system programmable) dapat
diprogram didalam sistem. Mikrokontroler ini dibuat dengan teknologi memori
nonvolatile kerapatan tinggi dan kompatibel dengan standart industri 8051, set
12
instruksi dan pin keluaran. Flash yang berada didalam chip memungkinkan
memori program untuk diprogram ulang pada saat chip didalam sistem atau
dengan menggunakan programmer memori nonvolatile konvensional. Dengan
mengkombinasikan CPU 8 bit yang serbaguna dengan flash ISP pada chip,
ATMEL 89S51 merupakan mikrokontroller yang luar biasa yang memberikan
fleksibilitas yang tinggi dan penyelesaian biaya yang efektif untuk beberapa
aplikasi kontrol.
AT89S51 memberikan fitur-fitur standar sebagai berikut: 4K byte Flash,
128 byte RAM, 32 jalur I/O, Timer Wachtdog, dua data pointer, dua 16 bit timer/
counter, lima vektor interupsi dua level, sebuah port serial full dupleks, oscilator
internal, dan rangkaian clock. Selain itu AT89S51 didisain dengan logika statis
untuk operasi dengan frekuensi sampai 0 Hz dan didukung dengan mode
penghematan daya. Pada mode idle akan menghentikan CPU sementara RAM,
timer/ counter, serial port dan sistem interupsi tetap berfungsi. Mode Power Down
akan tetap menyimpan isi dari RAM tetapi akan membekukan osilator,
menggagalkan semua fungsi chip sampai interupsi eksternal atau reset hardware
ditemui.
13
Gambar 2.2 Diagram pin mikrokontroler AT89S51
(Datasheet ATMEL AT89S51)
Berdasarkan jumlah pin, mikrokontroler AT89S51 mempunyai jumlah pin
sebanyak 40 pin. Adapun fungsi – fungsi dari masing – masing pin adalah sebagai
berikut:
a) Vcc
Digunakan sebagai tegangan masukan dari catu daya sebesar + 5V DC.
b) GND
Digunakan sebagai ground.
c) Port 0
Merupakan port paralel 8 bit dua arah. Berfungsi sebagai masukan dan
keluaran. Jika port 0 berlogika 1 maka dapat digunakan sebagai
masukan yang mempunyai impedansi tinggi. Posisi Low Significant Bit
(LSB) terletak pada pin 39 dan Most Significant Bit (MSB) terletak
14
pada pin 32. Selain sebagai masukan atau keluaran, port 0 juga
berfungsi sebagai:
1) Multipleks antara byte alamat rendah (A0 s/d A7) dan data (D0
s/d D7) pada saat mengakses memori program eksternal atau
memori data eksternal. Pada fungsi ini, port 0 membutuhkan
resistor pullup.
2) Masukan byte kode program selama pemrograman flash
memori (memori internal atau onchip) dan keluaran saat
verifikasi. Resistor pullup dibutuhkan pada saat verifikasi.
d) Port 1
Merupakan port paralel 8 bit dua arah. Berfungsi sebagai masukan dan
keluaran. Port 1 sudah dipasang resistor pullup secara internal. Jika
logika 1 dituliskan pada port 1 maka keluaran akan berlogika 1 dan
dapat digunakan sebagai masukan. Posisi SLB terletak pada pin 1 dan
MSB terletak pada pin 8.
e) Port 2
Merupakan port paralel 8 bit dua arah. Berfungsi sebagai masukan dan
keluaran. Port ini mengirim byte alamat bila dilakukan pengaksesan
memori eksternal. LSB terletak pada pin 21 dan MSB terletak pada pin
28. Fungsi lain dari port 2 adalah:
1) Sebagai byte alamat tingii (A8 s/d A15) pada saat menjalankan
program pada memori program eksternal dan mengakses data
pada memori data eksternal menggunakan pengalamatan 16 bit.
15
2) Sebagai byte alamat atas (A8 s/d A12) dan kendali saat
pemrograman memori flash internal dan verifikasi.
f) Port 3
Merupakan port paralel 8 bit dua arah. LSB terletak pada pin 10 dan
MSB terletak pada pin 17. Fungsi port 3 adalah sebagai masukan
signal kendali pada saat pemrograman memori flash dan verifikasi.
Port ini juga mempunyai beberapa fungsi khusus seperti ditunjukkan
pada Tabel 2.1
Tabel 2.1 Fungsi khusus port 3
Pin – pin pada Port 3 Fungsi Pengganti
P3.0 RXD (port input serial)
P3.1 TXD (port output serial)
P3.2 INT0 (interupt eksternal 0)
P3.3 INT1 (interupt eksternal 1)
P3.4 T0 (input eksternal timer 0)
P3.5 T1 (input eksternal timer 1)
P3.6 WR (perintah write pada memori eksternal)
P3.7 RD (perintah read pada memori eksternal)
g) RST
Berfungsi sebagai masukan reset. Pada kondisi high akan aktif selama
dua siklus.
h) ALE/PROG
Signal Address Latch Enable (ALE) digunakan untuk mengaktifkan IC
latch agar data alamat rendah disimpan. ALE aktif ketika mengakses
16
program eksternal. Pin ini juga digunakan untuk memberikan pulsa
pemrograman memori flash internal. Dalam keadaan normal, ALE
mengeluarkan pulsa dengan frekuensi konstan 1/6 frekuensi osilator.
Sehingga dapat digunakan untuk tujuan pewaktuan eksternal.
i) PSEN (Program Store Enable)
Merupakan strobe pembacaan ke memori eksternal.
j) EA/Vpp
External Access Enable (EA) digunakan sebagai masukan tegangan
pemrograman ketika akan memrogram memori flash internal. Jika
EA/Vpp pada kondisi low maka mikrokontroler menjalankan instruksi-
instruksi yang ada pada memori internal.
k) XTAL1 1
Sebagai masukan dari rangkaian osilator dan masukan rangkaian clock
internal.
l) XTAL 2
Sebagai keluaran dari rangkaian osilator.
2.2.3 Organisasi Memori
Mikrokontroler ATMEL-51 mempunyai organisasi memori yang terdiri
atas:
A. Memori Program (CODE)
Merupak ruang memori yang digunakan untuk mentimpan kode
program dan konstanta yang sifatnya tetap. Memori program bersifat
17
hanya bisa dibaca (Read Only Memory) dalam artian ketika sedang
eksekusi program memori ini hanya bersifat dibaca saja tidak dapat
diubah isinya.
B. Memori Data (DATA)
Yang dimaksud memori data adalah RAM internal (on chip). AT89S51
memiliki memori data internal sebesar 128 byte. Pada memori data
dibagi menjadi tiga bagian pengalamatan mulai alamat ox00 s/d 0x0F
dikenal sebagai register R0 s/d R7. Bagian berikutnya adalah mulai
alamat 0x20 s/d 0x2F sebanyak 128 bit merupakan lokasi memori yang
dapat dimanipulasi per bit (bit addressable) juga dikenal dengan
segment bit (BDATA). Bagian berikutnya adalah general purpose
RAM mulai alamat 0x30 s/d 0x7F.
C. Memori Data Indirect (IDATA)
Merupaka segment data seluruh ruang memori data internal yaitu
mulai alamat 0x00 s/d 0xFF. Pada 128 Pada 128 byte awal yaitu ooh
s/d 7FH secara fisik sama dengan segment DATA, dan 128 byte
diatasnya dimulai yaitu mulai alamat 0x80 s/d 0xFF overlap dengan
Psecial Function Register (SFR).
D. Memori Data Pengalamatan Bit (BIT)
Secara fisik memori data pengalamatan BIT ini berada pada memori
data (DATA) yang mulai pada alamat 0x20 s/d 0x30 (128 bit). Pada
jangkauan alamat ini masing-masing bit dapat dimanipulasi sendiri-
sendiri.
18
E. Memori Data Eksternal (XDATA)
XDATA adalah ruang memori data off chip atau tidak terdapat didalam
chip mikrokontroler. Ruang alamat ini diakses melalui Port 0 (P0) dan
Port 2 (P2). XDATA bersifat dapat dibaca dan ditulisi (read/write
memory). Pengaksesan memori program eksternal dikendalikan oleh
signal PSEN (Program StoryEnable), sedangkan pengaksesan memori
data eksternal dikendalikan oleh signal RD untuk dibaca dan signal
WR untuk tulis.
F. Memori Data Halaman Eksternal (PDATA)
Secara fisik PDATA sama dengan XDATA, perbedaannya pada
PDATA hanya menggunakan P0 untuk rendah dan P2 tetap terhubung
dengan register P2 di SFR
G. Special Function Register (SFR)
SFR merupakan register khusus yang digunakan sebagai kendali,
buffer atau fungsi khusus lainnya. SFR dipetakan mulai alamat 0x80
s/d 0xFF. Tidak seluruh ruangan alamat diimplementasikan dengan
suatu register. Beberapa register dapat dialamati per bit.
2.2.4 Pewaktuan CPU
Semua mikrokontroler ATMEL mempunyai osilator internal yang
digunakan sebagai sumber pewaktuan CPU. Penggunaan osilator internal
dilakukan dengan menghubungkan kristal atau keramik pada kaki XTAL1 dan
XTAL2 seperti pada gambar 2.3.
19
C1, C2 = 30 pF ± 10 pF for Crystals
= 40 pF ± 10 pF for Ceramic Resonator
Gambar 2.3 Rangkaian pewaktuan internal (Datasheet ATMEL AT89S51)
Atau dapat juga pewaktuan diambil dari sumber eksternal dengan koneksi
seperti pada gambar 2.4.
Gambar 2.4 Masukan pewaktuan eksternal (Datasheet ATMEL AT89S51)
20
2.2.5 Catu Daya
Catu daya merupakan pemberi sumber daya bagi perangkat elektronika.
Perangkat elektronika umumnya dicatu oleh power supply arus searah DC (direct
current) yang stabil agar dapat bekerja dengan baik. Baterai atau accu adalah
sumber catu daya DC yang paling baik. Namun untuk aplikasi yang membutuhkan
catu daya lebih besar, sumber dari baterai tidak cukup. Sumber catu daya yang
besar adalah sumber bolak-balik AC (alternating current) dari pembangkit tenaga
listrik. Untuk itu diperlukan suatu perangkat catu daya yang dapat mengubah arus
AC menjadi DC.
2.2.5.1 Penyearah (Rectifier)
Prinsip penyearah (rectifier) yang paling sederhana ditunjukkan pada
Gambar 2.5. Transformator diperlukan untuk menurunkan tegangan AC dari jala-
jala listrik pada kumparan primernya menjadi tegangan AC yang lebih kecil pada
kumparan sekundernya.
Gambar 2.5 Rangkaian penyearah sederhana setengah gelombang
21
Pada rangkaian ini, dioda berperan untuk hanya meneruskan tegangan
positif ke beban R1. Ini yang disebut dengan penyearah setengah gelombang (half
wave). Untuk mendapatkan penyearah gelombang penuh (full wave) diperlukan
transformator dengan center tap (CT) seperti pada Gambar 2.6 di bawah ini.
Gambar 2.6 Rangkaian penyearah sederhana gelombang penuh
Tegangan positif phasa yang pertama diteruskan oleh D1 sedangkan phasa
yang berikutnya dilewatkan melalui D2 ke beban R1 dengan CT transformator
sebagai common ground.. Dengan demikian beban R1 mendapat suplai tegangan
gelombang penuh seperti gambar di atas. Untuk beberapa aplikasi seperti
misalnya untuk men-catu motor dc yang kecil atau lampu pijar dc, bentuk
tegangan seperti ini sudah cukup memadai. Walaupun terlihat di sini tegangan
ripple dari kedua rangkaian di atas masih sangat besar.
2.2.5.2 Rangkaian Penyearah Setengah Gelombang Dengah Filter C
Gambar 2.7 adalah rangkaian penyearah setengah gelombang dengan filter
kapasitor C yang paralel terhadap beban R. Ternyata dengan filter ini bentuk
gelombang tegangan keluarnya bisa menjadi rata. Pada Gambar 2.8 menunjukkan
bentuk keluaran tegangan DC dari rangkaian penyearah setengah gelombang
22
dengan filter kapasitor. Garis b-c adalah garis lurus dengan kemiringan tertentu,
dimana pada keadaan ini arus untuk beban R1 dicatu oleh tegangan kapasitor.
Sebenarnya garis b-c bukanlah garis lurus tetapi eksponensial sesuai dengan sifat
pengosongan kapasitor
Gambar 2.7 Rangkaian penyearah setengah gelombang menggunakan kapasitor.
2.2.5.3 Bentuk Gelombang Dengan Filter Kapasitor
Kemiringan kurva b-c tergantung dari besar arus I yang mengalir ke beban
R. Jika arus I = 0 (tidak ada beban) maka kurva b-c akan membentuk garis
horizontal. Namun jika beban arus semakin besar, kemiringan kurva b-c akan
semakin tajam.
Gambar 2.8 Bentuk gelombang dengan kapasitor
23
2.2.5.4 .Rangkaian Penyearah Gelombang Penuh Dengan Filter C
Penyearah gelombang penuh dengan filter C dapat dibuat dengan
menambahkan kapasitor pada rangkaian. Bisa juga dengan menggunakan
transformator yang tanpa CT, tetapi dengan merangkai 4 dioda seperti pada
gambar 2.9 berikut ini
Gambar 2.9 Rangkaian penyearah gelombang penuh dengan kapasitor
Untuk kapasitor yang sebesar ini banyak tersedia tipe elco yang memiliki
polaritas dan tegangan kerja maksimum tertentu. Tegangan kerja kapasitor yang
digunakan harus lebih besar dari tegangan keluaran catu daya.
2.2.5.5 Regulator
Rangkaian penyearah sudah cukup bagus jika tegangan ripple-nya kecil,
namun ada masalah stabilitas. Jika tegangan PLN naik/turun, maka tegangan
outputnya juga akan naik/turun. Seperti rangkaian penyearah di atas, jika arus
semakin besar ternyata tegangan dc keluarnya juga ikut turun. Untuk beberapa
aplikasi perubahan tegangan ini cukup mengganggu, sehingga diperlukan
komponen aktif yang dapat meregulasi tegangan keluaran ini menjadi stabil.
24
Rangkaian regulator yang paling sederhana ditunjukkan pada Gambar
2.10.
Gambar 2.10 Rangkaian catu daya menggunakan regulator
2.2.6 Keypad
Keypad digunakan sebagai media masukan dalam berbagai aplikasi
elektronik. Rangkaian keypad berupa kaki baris dan kolom yang dapat
dihubungkan dengan piranti luar. Bila salah satu tombol keypad ditekan maka
keluaran yang dihasilkan berupa kombinasi baris dan kolom tersebut. Sebuah
keypad pada dasarnya adalah saklar - saklar push button yang disusun secara
matriks. Saklar - saklar push button yang menyusun keypad yang digunakan kali
ini mempunyai 3 kaki dan 2 kondisi.
Ketika saklar - saklar push button itu hendak disusun menjadi matriks
keypad, maka satu kaki akan menjadi indeks kolom, satu kaki menjadi indeks
baris dan satu kaki menjadi common. Satu misal akan dibuat matriks keypad 4x3
(4 baris dan 3 kolom), maka konfigurasinya adalah sebagaimana terlihat pada
Gambar 2.11
25
Gambar 2.11 Konfigurasi matriks keypad 3x4
2.2.7 Optokopler
Optokopler merupakan komponen elektronik opto isolator yang terdiri dari
pemancar cahaya atau emitter yang mengkopel secara optik terhadap photo
detector melalui media yang terisolasi. Pemancar cahaya dapat berupa penerang
lampu ataupun LED. Media isolasi berupa udara, plastik, gelas atau fiber.
Sedangkan photo detector dapat berupa photo konduktor, photo dioda, photo
transistor, photo SCR atau rangkaian photo dioda/amplifier. Mengenai
pengontrolan pemancaran cahaya dan photo detector memungkinkan pemindahan
informasi dari suatu rangkaian yang mengandung pemancar cahaya ke rangkaian
yang mengandung photo detector.
Informasi dilewatkan secara optik melintasi celah isolasi yang
perpindahannya memiliki sistem satu arah sehingga photo detector tidak
mempengaruhi rangkaian input. Isolasi optik mencegah adanya interaksi ataupun
26
kerusakan rangkaian input yang disebabkan oleh perbedaan tegangan yang relatif
tinggi terhadap rangkaian output.
Optokopler dirancang untuk menggantikan fungsi saklar mekanis dan
pengubahan pulsa secara fungsional optokopler sama dengan pasangan relay
mekanis karena suatu isolasi tingkat tinggi diantara terminal input dan
outputnya.Beberapa keunggulan optokopler komponen solid state adalah:
Kecepatan operasi lebih cepat
Ukuran kecil
Tidak mudah dipengaruhi getaran dan goncangan
Respon frekuensi
Tidak ada bounce
Kompatibel dengan banyak rangkaian – rangkaian logika dan
mikroprosesor.
(a) (b)
Gambar 2.12 (a) Simbol optokopler
(b) Bentuk fisik Optokopler MOC70T3 (datasheets
Motorola)
27
2.2.8 Relay
Relay adalah suatu rangkaian switching magnetik yang bekerja bila
mendapat catu dari rangkaian trigger. Relay memiliki tegangan dan arus nominal
yang harus dipenuhi output rangkaian pendrivernya/pengemudinya. Arus yang
digunakan pada rangkaian adalah arus DC.
Konstruksi dalam suatu relay terdiri dari lilitan kawat (coil) yang dililitkan
pada inti besi lunak. Jika lilitan kawat mendapatkan arus, inti besi lunak
menghasilkan medan magnet dan menarik switch kontak. Switch kontak
mengalami gaya tarik magnet sehingga berpindah posisi ke kutub lain atau
terlepas dari kutub asalnya. Keadaan ini akan bertahan selama arus mengalir pada
kumparan relay. Dan relay akan kembali ke posisi semula yaitu normaly-off, bila
tidak ada lagi arus yag mengalir padanya. Posisi normal relay tergantung pada
jenis relay yang digunakan. Dan pemakaian jenis relay tergantung pada keadaan
yang diinginkan dalam suatu rangkaian/sistem.
Menurut kerjanya relay dapat dibedakan menjadi:
Normaly Open (NO); saklar akan tertutup bila dialiri arus.
Normaly Close (NC); saklar akan terbuka bila dialiri arus.
Change Over (CO); relay ini mempunyai saklar tunggal yang normalnya tertutup
yang mana bila kumparan 1 dialiri arus maka saklar akan terhubung ke terminal
A, sebaliknya bila kumparan 2 dialiri arus maka saklar akan terhubung ke
terminal B.
Analogi rangkaian relay yang digunakan adalah saat basis transistor ini dialiri
arus maka transistor dalam keadaan tertutup yang dapat menghubungkan arus dari
28
kolektor ke emiter yang mengakibatkan relay terhubung. Sedangkan fungsi dioda
disini adalah untuk melindungi transistor dari tegangan induksi yang bisa mencapai
100 sampai 150 volt dimana tegangan ini dapat merusak transistor
Gambar 2.13 Simbol relay
Gambar 2.14 Rangkaian penggerak relay
2.2.9 Water Meter
Watermeter manual adalah alat atau bagian utama dari sistem, karena
watermeter manual inilah yang akan diubah tampilannya menjadi tampilan digital.
Watermeter manual mempunyai beberapa elemen, yaitu putaran piringan,
29
tampilan angka, tampilan skala, jarum untuk penunjuk skala. Elemen utama yang
dimanfaatkan pada watermeter manual adalah putaran piringan, karena dari
putaran piringan inilah maka menjadi masukan bagi sensor optocoupler untuk
nantinya diproses di dalam mikrokontroler dan di tampilkan pada display dalam
bentuk tampilan digital.
Watermeter sebagai alat yang digunakan untuk mengukur linier, nonlinier,
massa atau laju aliran volumetrik cairan atau gas. Sebelum menetapkan flow
meter, juga dianjurkan untuk menentukan apakah aliran informasi akan lebih
berguna jika disajikan dalam unit massa atau volumetrik. Ketika mengukur aliran
bahan kompresibel, aliran volumetrik tidak terlalu berarti, kecuali kepadatan (dan
kadang-kadang juga viskositas) adalah konstan. Ketika kecepatan (volumetrik
aliran) dari cairan mampat diukur, kehadiran ditangguhkan gelembung akan
menyebabkan kesalahan, karena itu, udara dan gas harus dipindahkan sebelum
mencapai fluida meter.
Gambar 2.15 Water meter
30
2.2.10 LCD (Liquid Crystal Display)
LCD (Liquid Crystal Display) merupakan suatu bentuk kristal cair yang
akan berubah warnanya apabila dikenakan tegangan padanya. LCD yang
digunakan adalah M1632 yang terdiri dari 2 baris, 16 kolom dimulai dari baris 1
paling atas dan kolom 0 paling kiri. Modul LCD Character dapat dengan mudah
dihubungkan dengan mikrokontroller seperti AT89S51. LCD Character 2×16,
dengan 16 pin konektor, yang didifinisikan sebagai berikut:
Tabel 2.2 PIN dan Fungsi LCD
PIN Nama Fungsi 1 VSS Ground voltage 2 VCC +5V 3 VEE Contrast voltage 4 RS Register Select
0 = Instruction Register 1 = Data Register
5 R/W Read/ Write, to choose write or read mode 0 = write mode 1 = read mode
6 E Enable 0 = start to lacht data to LCD character 1= disable
7 DB0 LSB 8 DB1 - 9 DB2 - 10 DB3 - 11 DB4 - 12 DB5 - 13 DB6 - 14 DB7 MSB 15 BPL Back Plane Light 16 GND Ground voltage
31
Display karakter pada LCD diatur oleh pin EN, RS dan RW. Jalur EN
dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa sedang
mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui
program EN harus dibuat logika low “0” dan set pada dua jalur kontrol yang lain
RS dan RW. Ketika dua jalur yang lain telah siap, set EN dengan logika “1” dan
tunggu untuk sejumlah waktu tertentu (sesuai dengan datasheet dari LCD
tersebut) dan berikutnya set EN ke logika low “0” lagi.
Jalur RS adalah jalur Register Select. Ketika RS berlogika low “0”, data
akan dianggap sebagi sebuah perintah atau instruksi khusus (seperti clear screen,
posisi kursor dll). Ketika RS berlogika high “1”, data yang dikirim adalah data
text yang akan ditampilkan pada display LCD. Sebagai contoh, untuk
menampilkan huruf “T” pada layar LCD maka RS harus diset logika high “1”.
Jalur RW adalah jalur kontrol Read/ Write. Ketika RW berlogika low (0), maka
informasi pada bus data akan dituliskan pada layar LCD. Ketika RW berlogika
high ”1”, maka program akan melakukan pembacaan memori dari LCD.
Sedangkan pada aplikasi umum pin RW selalu diberi logika low ”0”. Pada
akhirnya, bus data terdiri dari 4 atau 8 jalur (bergantung pada mode operasi yang
dipilih oleh user). Pada kasus bus data 8 bit, jalur diacukan sebagai DB0 s/d DB7.
Gambar 2.16 LCD (Liquid Crystal Display)
32
2.2.11 Solenoid
Solenoid adalah suatu alat dasar yang mengkonversi suatu sinyal listrik ke
dalam gerakan mekanis, pada umumnya seperti garis. solenoid terdiri dari suatu
kumparan dan alat pengisap. Pengisap tersebut mungkin adalah freestanding atau
dimuati pegas. Jika terdapat batang besi dan ditempatkan sebagian panjangnya di
dalam solenoid, batang tersebut akan bergerak masuk ke dalam solenoid saat arus
dialirkan. Hal ini dapat dimanfaatkan untuk menggerakkan tuas. Tuas inilah yang
nantinya untuk menggerakkan katup. Kumparan mempunyai beberapa rating
tegangan atau arus dan tipenya mungkin DC atau AC. Spesifikasi Solenoid
meliputi rating listrik dan gaya pengisap menarik atau mendorong ketika yang
diberi tegangan tertentu. Gaya ini mungkin dinyatakan dalam newton atau
kilogram di dalam sistem SI, dan dalam pound atau ons dalam Sistem Inggris.
Beberapa solenoid terbatas hanya untuk tugas sebentar-sebentar oleh karena
batasan yang berkenaan dengan panas. Dalam hal ini, duty cycle maksimum
(persentase total waktu) akan ditetapkan. Solenoid digunakan ketika suatu gaya
mendadak yang besar harus dipakai untuk melaksanakan beberapa pekerjaan.
Gambar 2.17 Solenoid valve
33
Keterangan gambar solenoid valve:
1. Blok katup
2. Masukan
3. Keluaran
4. Solenoid
5. Blok kumparan kawat
6. Terminal catu daya
7. Piston
8. Pegas
9. Lubang
2.2.12 Transistor
Transistor adalah suatu monokristal semikonduktor dimana terjadi dua
pertemuan P-N, dari sini dapat dibuat dua rangkaian yaitu P-N-P dan N-P-N.
Dalam keadaan kerja normal, transistor harus diberi polaritas sebagai berikut :
1. Pertemuan Emitter-Basis diberi polaritas dari arah maju seperti yang
ditunjukkan pada Gambar 2.18 (a).
2. Pertemuan Basis-kolektor diberi polaritas dalam arah mundur seperti
ditunjukkan pada Gambar 2.18 (b).
(a) NPN (b) PNP
Gambar 2.18 Dasar polaritas transistor
34
Transistor juga sering disebut sebagai suatu komponen yang dapat
memperbesar level sinyal keluaran sampai beberapa kali sinyal masukan. Sinyal
masukan disini dapat berupa sinyal AC ataupun DC. Prinsip dasar transistor
sebagai penguat adalah arus kecil pada basis mengontrol arus yang lebih besar
dari kolektor melewati transistor. Transistor berfungsi sebagai penguat ketika arus
basis berubah. Perubahan kecil arus basis mengontrol perubahan besar pada arus
yang mengalir dari kolektor ke emitter. Pada saat ini transistor berfungsi sebagai
penguat.
Dan dalam pemakiannya, transistor juga bisa berfungsi sebagai saklar
dengan memanfaatkan daerah penjenuhan (saturasi) dan daerah penyumbatan
(cut-off). Pada daerah penjenuhan nilai resistansi penyambungan kolektor emitter
secara ideal sama dengan nol atau kolektor terhubung langsung (short). Ini
menyebabkan tegangan kolektor emitter Vce = 0 pada keadaan ideal. Dan pada
daerah cut off, nilai resistansi persambungan kolektor emitter secara ideal sama
dengan tak terhingga atau terminal kolektor dan emitter terbuka yang
menyebabkan tegangan Vce sama dengan tegangan sumber Vcc.
Gambar 2.19 Kurva transistor sebagai saklar
35
2.2.13 Dioda
Dioda ialah jenis VACUUM tube yang memiliki dua buah elektroda.
Dioda tabung pertama kali diciptakan oleh seorang ilmuwan dari Inggris yang
bernama Sir J.A. Fleming (1849-1945) pada tahun 1904.
Hampir semua peralatan elektronika memerlukan sumber arus searah.
Penyearah digunakan untuk mendapatkan arus searah dari suatu arus bolak-balik.
Arus atau tegangan tersebut harus benar-benar rata tidak boleh berdenyut-denyut
agar tidak menimbulkan gangguan bagi peralatan yang dicatu.
Dioda sebagai salah satu komponen aktif sangat popular digunakan dalam
rangkaian elektronika, karena bentuknya sederhana dan penggunaannya sangat
luas. Ada beberapa macam rangkaian dioda, diantaranya : penyearah setengah
gelombang (Half-Wave Rectifier), penyearah gelombang penuh (Full-Wave
Rectifier), rangkaian pemotong (Clipper), rangkaian penjepit (Clamper) maupun
pengganda tegangan (Voltage Multiplier).
Anoda Katoda
Gambar 2.20 Simbol dioda
Sisi Positif (P) disebut Anoda dan sisi Negatif (N) disebut Katoda.
Lambang dioda seperti anak panah yang arahnya dari sisi P ke sisi N. Karenanya
36
ini mengingatkan kita pada arus konvensional dimana arus mudah mengalir dari
sisi P ke sisi N.
Dioda terbagi atas beberapa jenis antara lain :
Dioda germanium
Dioda silikon
Dioda selenium
Dioda zener
Dioda cahaya (LED)
Dioda termasuk komponen elektronika yang terbuat dari bahan
semikonduktor. Beranjak dari penemuan dioda, para ahli menemukan juga
komponen turunan lainnya yang unik. Dioda memiliki fungsi yang unik yaitu
hanya dapat mengalirkan arus satu arah saja. Struktur dioda tidak lain adalah
sambungan semikonduktor P dan N. Satu sisi adalah semikonduktor dengan tipe P
dan satu sisinya yang lain adalah tipe N. Dengan struktur demikian arus hanya
akan dapat mengalir dari sisi P menuju sisi N.
2.2.14 IC LM 78XX
Rangkaian penyearah sudah cukup bagus jika tegangan ripple-nya kecil,
namun ada masalah stabilitas. Jika tegangan PLN naik/turun, maka tegangan
outputnya juga akan naik/turun. Seperti rangkaian penyearah di atas, jika arus
semakin besar ternyata tegangan dc keluarnya juga ikut turun. Untuk beberapa
37
aplikasi perubahan tegangan ini cukup mengganggu, sehingga diperlukan
komponen aktif yang dapat meregulasi tegangan keluaran ini menjadi stabil.
Rangkaian regulator yang paling sederhana ditunjukkan pada gambar 2.12
Pada rangkaian ini, zener bekerja pada daerah breakdown, sehingga menghasilkan
tegangan output yang sama dengan tegangan zener atau Vout = Vz. Namun
rangkaian ini hanya bermanfaat jika arus beban tidak lebih dari 50mA.
Gambar 2.21 Regulator zener
Prinsip rangkaian catu daya yang seperti ini disebut shunt regulator, salah
satu ciri khasnya adalah komponen regulator yang paralel dengan beban. Ciri lain
dari shunt regulator adalah, rentan terhadap short-circuit. Perhatikan jika Vout
terhubung singkat (short-circuit) maka arusnya tetap I = Vin/R1. Disamping
regulator shunt, ada juga yang disebut dengan regulator seri. Prinsip utama
regulator seri seperti rangkaian pada gambar 7 berikut ini. Pada rangkaian ini
tegangan keluarannya adalah:
Vout = VZ + VBE ....................................................................................(2.2)
38
VBE adalah tegangan base-emitor dari transistor Q1 yang besarnya antara
0.2 - 0.7 volt tergantung dari jenis transistor yang digunakan. Dengan
mengabaikan arus IB yang mengalir pada base transistor, dapat dihitung besar
tahanan R2 yang diperlukan adalah :
R2 = (Vin - Vz)/Iz ....................................................................................(2.3)
Iz adalah arus minimum yang diperlukan oleh dioda zener untuk mencapai
tegangan breakdown zener tersebut. Besar arus ini dapat diketahui dari datasheet
yang besarnya lebih kurang 20 mA.
Gambar 2.22 Regulator zener follower
Jika diperlukan catu arus yang lebih besar, tentu perhitungan arus base IB
pada rangkaian di atas tidak bisa diabaikan lagi. Dimana seperti yang diketahui,
besar arus IC akan berbanding lurus terhadap arus IB atau dirumskan dengan IC =
bIB. Untuk keperluan itu, transistor Q1 yang dipakai bisa diganti dengan tansistor
darlington yang biasanya memiliki nilai b yang cukup besar. Dengan transistor
darlington, arus base yang kecil bisa menghasilkan arus IC yang lebih besar.
39
Teknik regulasi yang lebih baik lagi adalah dengan menggunakan Op-Amp
untuk men-drive transistor Q, seperti pada rangkaian gambar II.8. Dioda zener
disini tidak langsung memberi umpan ke transistor Q, melainkan sebagai tegangan
referensi bagi Op-Amp IC1. Umpan balik pada pin negatif Op-amp adalah
cuplikan dari tegangan keluar regulator, yaitu :
Vin(-) = (R2/(R1+R2)) Vout ……………………………….………………(2.4)
Jika tegangan keluar Vout menaik, maka tegangan Vin(-) juga akan menaik
sampai tegangan ini sama dengan tegangan referensi Vz. Demikian sebaliknya
jika tegangan keluar Vout menurun, misalnya karena suplai arus ke beban
meningkat, Op-amp akan menjaga kestabilan di titik referensi Vz dengan memberi
arus IB ke transistor Q1. Sehingga pada setiap saat Op-amp menjaga kestabilan :
Vin(-) = Vz ...............................................................................................(2.5)
Gambar 2.23 regulator dengan Op-amp
40
Dengan mengabaikan tegangan VBE transistor Q1 dan mensubsitusi rumus
(11) ke dalam rumus (10) maka diperoleh hubungan matematis :
Vout = ( (R1+R2)/R2) Vz .........................................................................(2.6)
Pada rangkaian ini tegangan output dapat diatur dengan mengatur besar R1 dan
R2.
Sekarang mestinya tidak perlu susah payah lagi mencari op-amp, transistor
dan komponen lainnya untuk merealisasikan rangkaian regulator seperti di atas.
Karena rangkaian semacam ini sudah dikemas menjadi satu IC regulator tegangan
tetap. Saat ini sudah banyak dikenal komponen seri 78XX sebagai regulator
tegangan tetap positif dan seri 79XX yang merupakan regulator untuk tegangan
tetap negatif. Bahkan komponen ini biasanya sudah dilengkapi dengan pembatas
arus (current limiter) dan juga pembatas suhu (thermal shutdown). Komponen ini
hanya tiga pin dan dengan menambah beberapa komponen saja sudah dapat
menjadi rangkaian catu daya yang ter-regulasi dengan baik.
Gambar 2.24 regulator dengan IC 78XX / 79XX
41
Misalnya 7805 adalah regulator untuk mendapat tegangan 5 volt, 7812
regulator tegangan 12 volt dan seterusnya. Sedangkan seri 79XX misalnya adalah
7905 dan 7912 yang berturut-turut adalah regulator tegangan negatif 5 dan 12
volt.
Selain dari regulator tegangan tetap ada juga IC regulator yang
tegangannya dapat diatur. Prinsipnya sama dengan regulator OP-amp yang
dikemas dalam satu IC misalnya LM317 untuk regulator variable positif dan
LM337 untuk regulator variable negatif. Bedanya resistor R1 dan R2 ada di luar
IC, sehingga tegangan keluaran dapat diatur melalui resistor eksternal tersebut.
Hanya saja perlu diketahui supaya rangkaian regulator dengan IC tersebut
bisa bekerja, tegangan input harus lebih besar dari tegangan output regulatornya.
Biasanya perbedaan tegangan Vin terhadap Vout yang direkomendasikan ada di
dalam datasheet komponen tersebut. Pemakaian heatshink (aluminium pendingin)
dianjurkan jika komponen ini dipakai untuk men-catu arus yang besar. Di dalam
datasheet, komponen seperti ini maksimum bisa dilewati arus mencapai 1 A.
Gambar 2.25 IC LM78XX
42
2.2.15 Perangkat Lunak (Bahasa Asembly)
Dalam pembuatan sebuah rangkaian mikrokontroler tidak hanya
dibutuhkan perangkat keras, tetapi juga dibutuhkan perangkat lunak. Fungsi dari
perangkat lunak ini sebagai pengendali untuk mengendalikan semua proses yang
ada dalam seluruh sistem dan mengaturnya. Perangkat lunak ini akan dimasukkan
dalam mikrokontroler. Pada pembuatan Tugas Akhir ini penulis menggunakan
perangkat lunak Assembly. Bahasa assembly dikategorikan sebagai bahasa tingkat
rendah (low level languange). Ini untuk menggambarkan kekhususannya sebagai
bahasa yang berorientasi pada mesin.
2.2.16 Pengenalan Bahasa Assembly
Mengingat CPU bekerja hanya dalam biner, dan dilakukan dengan
kecepatan yang sangat tinggi. Biner adalah serupa dengan dua buah keadaan,
kalau tidak 0 maka itu mestinya adalah 1, begitu pula sebaliknya. Maka kita harus
familiar dengan 010010110, itulah biner. Bilangan biner yang berupa kode
perintah dinamakan bahasa mesin. Pada komputer terdahulu, programer menulis
kode dalam bahasa mesin seperti itu. Namun agar lebih mudah dari menulis kode
dengan biner, dibuatkah format bilangan yang dapat merepresentasikan biner
dengan baik, yakni menggunakan bilangan Heksadesimal. Dan hasilnya,
programer merasa jauh lebih mudah dari pada mengingat kombinasi "0" dan "1".
Namun menulis kode dalam bahasa mesin, heksadesimal masih juga terlalu rumit
bagi kebanyakan programer. Akhirnya, pada masa sekarang, dibuatlah sebuah
bahasa assembler yang berisi mnumonic (symbol bahasa mesin dalam bahasa
43
manusia yang mudah diingat), untuk setiap instruksi kode mesin, dan didukung
juga beberapa kelebihan lain untuk mempermudah pembuatan program, termasuk
pengujian atas kemungkinan adanya error dalam penulisan. Sekarang mnumonic
digunakan secara luas dalam bidang ilmu pengetahuan, buku-buku tehnik yang
merujuk pada kode dengan tujuan semuanya agar lebih mudah untuk diingat.
Kode bahasa assembly diterjemahkan ke dalam bahasa mesin oleh sebuah
program lain, yang kemudian disebut sebagai Assembler.
Bahasa assembly juga dikenal sebagai bahasa tingkat rendah (low-level-
languages) karena bahasa ini adalah yang paling berhubungan langsung dengan
struktur CPU. Dalam memprogram bahasa ini, programer harus benar-benar
mengenal semua register dalam CPU, ukuran masing-masingnya, termasuk
berbagai detil dari instruksi serta efeknya terhadap register.
Namun sekarang, seseorang dapat menggunakan berbagai bahasa yang jauh lebih
memudahkan, misalnya seperti BASIC, Pascal, C, C++, Java , dan banyak lagi
lainnya.
Bahasa-bahasa di atas kemudian disebut dengan bahasa tingkat tinggi
(high-level languages) karena kita tidak perlu mengenal lebih jauh tentang isi dari
struktur CPU target. Bahasa ini kemudian diterjemahkan ke dalam bahasa
assembler, baru kemudian ke bahasa mesin, atau beberapa program dapat
langsung mengubah dari bahasa tingkat tinggi itu langsung menjadi bahasa mesin.
Program yang dapat melakukan itu kemudian disebut dengan Compiler. Misalnya
kita menulis program dalam bahasa C, maka kita harus menggunakan C-Compiler
untuk kemudian mengubah kode program kita menjadi bahasa mesin. Namun
44
untuk sekarang, kita berkonsentrasi pada bahasa assembly yang khusus untuk
8051, dan membuat program yang dapat bekerja dengan baik hanya dengan
menggunakan bahasa itu. Assembler yang kita gunakan ini adalah sebuah program
yang dibuat bersama-sama begitu diperkenalkannya Chip 8051 oleh Intel, yakni
program "ASM51.EXE" dengan nama resmi "MCS-51 MACRO ASSEMBLER
V2.3" buatan Intel Corporation.
2.2.17 Struktur Bahasa Assembly
Program bahasa assembly terdiri dari beberapa bagian. Setiap instruksi
diungkapkan dalam satu baris kode. Setiap instruksi terdiri dari mnumonic, dan
kadang ditambahkan 1 atau 2 operand. Operand adalah data yang hendak
dimanipulasi. Dan mnumonic itulah yang meninstruksi-kan CPU untuk
melakukan sesuatu terhadap operand.
Contoh program dalam assembly:
ORG 0 ;Mulai program dari alamat 0000
MOV R5,#25h ;Isikan 25h pada R5
MOV R7,#34h ;Isikan 34h pada R7
MOV A,#0 ;buat A = 0
ADD A,R5 ;Tambahkan isi R5 ke dalam A
;sehingga A = A + R5
ADD A,R7 ;Tambahkan isi R7 ke dalam A
;sehingga A = A + R5
ADD A,#12h ;Tambahkan 12h ke dalam A
END
45
Program dalam bahasa assembly yang dicontohkan di atas adalah
statement yang berurutan, di mana terdiri dari instruksi misalnya ADD dan MOV,
dan beberapa statement lain, yang disebut dengan Directive. Setiap instruksi,
adalah memerintahkan CPU untuk melakukan sesuatu hal, sedang directive ( juga
disebut dengan psuedo-instruction) memberikan arahan bagi assembler cara
menterjemahkan kode di belakang ungkapan directive tersebut. Ambil contoh,
intstruksi MOV dan ADD adalah sebuah perintah, sedang ORG dan END adalah
directive (petunjuk arahan) bagi assembler. ORG dalam contoh diatas meminta
kepada Assembler bahwa opcode selanjutnya agar ditempat dalam memory lokasi
0, sementara END adalah untuk memberitahukan assembler akhir dari program,
dan mengabaikan setiap text di bahwa END.
Pada prinsipnya instruksi bahasa assembly terdiri dari 4 bagian :
[label] mnumonic [operand] [;komentar]
Tanda kurung diatas (bracket) adalah menunjukkan bagiannnya, agar bisa
lebih jelas, dan bukan dimasukkan dalam kode yang sebenarnya. Adapun
penjelasannya adalah sebagai berikut ini :
1. Bagian Label adalah sebuah identifier yang merujuk padaa lokasi opcode.
Dengan kata lain nilai dari Label ini adalah relatif, dan ditentukan saat proses
kompilasi. Berbeda dengan identifier lain yang nilainya harus ditentukan
dengan expresi EQU, DATA, dll dengan diberikan nilai yang tetap
(Konstanta). Karena sifat dinamisnya Instruksi JUMP yang merujuk pada
Label, lokasi jump akan dihitung kembali agar menghasilkan lokasi Jump
yang tepat, pada lokasi milik Label. Deklarasi Label adalah mirip dengan
46
deklarasi identifier lain dan diakhiri dengan karakter titik-dua. Identifier hanya
bisa dibentuk dengan karakter pertama adalah karakter Alphabet, dan karakter
selanjutnya boleh juga numerik, dan karakter "_" serta "?". Panjang Label ini
juga tidak boleh melebihi 255 karakter.
2. Bagian menumonic dan bagian operand dalam bahasa assembly adalah bagian
utama dari kode program. Dan operand adalah spesifik atas mnumonic, yang
mengisyaratkan tugas tertentu (Seperti yang sudah diatur oleh pabrik pembuat
Chip dalam datasheet-nya). Ungkapan (statement) dalam bahasa assembly
misalnya adalah :
ADD A,B
MOV A,#67
ADD dan MOV adalah mnumonic dimana akan menghasilkan opcode. Sedang
"A,B" dan A,#67" adalah operand. Di luar kedua bagian ini, yakni mnumonic
dan operand adalah disebut sebagai instruksi-psuedo, atau directive. Ingat
bahwa sebuah directive tidak akan menghasilkan kode mesin (opcode), dan
mereka digunakan oleh assembler saat memutuskan bagaimana caranya untuk
menterjemahkan mnumonic dan operand yang ada di belakang directive
tersebut ke dalam kode mesin yang benar sesuai dengan kemauan kita. Dalam
contoh program dalam bahasa assembly di atas, ORG (original) dan END
adalah contoh dari directive (beberapa assembler menggunakan syntax .ORG
dan .END).
47
3. Bagian komentar dimulai dengan karakter semi-colon (titik-koma) yang
berarti karakter-karakter setelahnya adalah sebuah komentar. Assembler akan
segera mengabaikan karakter-karakter sesudah karakter semi-colon tersebut.
Mengingat assembler adalah menterjemahkan baris demi baris dalam program,
maka setiap komentar harus dimulai dari karakter semi-colon itu, walaupun
dalam baris tersebut tidak terdapat instruksi apapun.
2.2.18 Register
Dalam CPU, register-register digunakan untuk menyimpan data secara
sementara. Informasi dapat berupa data byte yang hendak diproses atau sebuah
data alamat yang menunjuk pada data yang lain. Register-register dari 8051 pada
umumnya adalah berupa register 8-bit. Dalam 8051 hanya ada satu jenis data
yakni data 8-bit (sama dengan namanya yakni komputer 8-bit). Register 8-bit
tersebut ditunjukkan dalam diagram mulai dari MSB (Most Significant Bit) / D7
sampai pada LSB (Least Significant bit) / D0. Dengan type data 8-bit tersebut,
setiap data yang lebih besar dari 8-bit harus dipecah menjadi beberapa bagian data
8-bit sebelum dapat diproses. Mengingat banyak register dalam 8051, register
yang paling banyak digunakan adalah A (Accumulator), B, R0, R1, R2, R3, R4,
R5, R6, R7, DPTR (DataPointer), dan PC (Program Counter). Semua register
tersebut adalah register 8-bit kecuali DPTR dan PC. Akumulator atau register A,
digunakan dalam semua instruksi aritmatika dan logika.
48
2.2.19 Instruksi MOV
Singkatnya instruksi MOV adalah menyalin isi data dari register yang satu
ke register yang lain, dengan format sebagai berikut :
MOV dest, source ;salin data source ke dest
Instruksi ini memerintahkan pada CPU untuk memindahkan (sebenarnya
adalah menyalin) operand source menuju operand destination.Seperti contohnya,
"MOV A,R0" adalah menyalin isi R0 ke register A. Setelah instruksi ini
dijalankan isi dari kedua register tersebut adalah sama. Instruksi MOV tidak
mengubah isi dari operand Source. Program berikut ini adalah contoh untuk
mengubah Akumulator menjadi 55h (h adalah hex), lalu kemudian memindahkan
nilainya kedalam beberapa register dalam CPU. Perhatikan tanda "#" dalam
instruksi tersebut. Hal itu mengindikasikan bahwa simbol dibelakangnya adalah
sebuah nilai.
MOV A,#55 ;Mengisi A dengan nilai 55h
MOV R0,A ;Salin isi A ke dalam R0
;Sekarang R0 = 55h
MOV R1,A ;Salin isi A ke dalam R1
;Sekarang R1 = 55h
MOV R2,A ;Salin isi A ke dalam R2
;Sekarang R2 = 55h
MOV R3,#95h ;Mengisi R3 dengan nilai 95h
;Sekarang R3 = 95h
49
MOV A,R3 ;Salin isi R3 ke dalam A
;Sekarang A = 95h
Saat menulis program untuk mikrokontroller 8051, hal-hal berikut ini
harus diperhatikan:
a. Bahwa sebuah nilai dapat langsung diberikan pada register-register
misalnya A, B, R0 s/d R7. Namun bagaimanapun juga untuk
mengindikasikan bahwa sebuah simbol adalah sebagai sebuah nilai, dan
bukan sebagai alamat atau yang lain, sebelumnya harus diberi
simbol pound atau pagar atau "#".
MOV A,#23h ;Mengisi A dengan nilai 23h
MOV R0,#12h ;Mengisi R0 dengan nilai 12h
MOV R1,#1Fh ;Mengisi R1 dengan nilai 1Fh
MOV R2,#2Bh ;Mengisi R2 dengan nilai 2Bh
MOV R3,#3Ch ;Mengisi R3 dengan nilai 3Ch
MOV R7,#9Dh ;Mengisi R7 denga nilai 9Dh
MOV R6,#0F9h ;Mengisi R6 denga nilai F9h
MOV R5,#12 ;Mengisi R5 denga nilai 12 desimal
Perhatikan pada instruksi "MOV R6,#0F9h" sebelum simbol F nampak di
sana diimbuhi oleh simbol "0" sehingga menjadi "0F9h". Hal ini penting
bagi assembler untuk membedakan apakah sebuah symbol yang dituliskan
itu sebagai sebuah angka bilangan atau sebuah identifier. Sedang identifier
harus selalu dimulai dari karakter alphabeth.
50
b. Jika nilai 0 s/d F kita isikan pada sebuah register 8-bit, maka akan
mengubah 4-bit paling kecil dari register tersebut. Dan kita akan
mendapatkan 4-bit teratas darinya akan dibuat menjadi 0. Misalnya dengan
instruksi "MOV A,#5", maka sejatinya instruksi tersebut adalah sama
dengan "MOV A,#05h", dan menghasilkan A = 05h. Dan dalam bilangan
biner adalah A = 00000101 biner.
c. Mengisikan sebuah nilai yang terlalu besar dari nilai yang sanggup
ditampung sebuah register akan menghasilkan error.
MOV A,#7F2h ; 7F2h > (8-bit atau FFh atau 255 desimal)
MOV R2,#456 ; 456d > (8-bit atau FFh atau 255 dec)
d. Untuk mengisikan nilai ke dalam register, kita harus mengimbuhkan
symbol pound (#). Jika tidak ada simbol tersebut, maka assembler akan
menganggapnya sebagai sebuah lokasi memory. Ambil contoh "MOV
A,17h" yang berarti pindahkan isi nilai dari memory 17h ke dalam A.
Sedang saat kita menginginkan untuk mengisi A dengan nilai 17h, maka
kita harus menuliskan dengan "MOV A,#17h". Tidak adanya symbol
pagar tersebut tidak akan membuat assembler menghasilkan error namun
assembler akan membuatkan kode yang bukan seperti kemauan kita, hanya
karena kesalahan kecil kita dalam menulis program. Biasanya hal ini biasa
terjadi bagi para pemula.
51
2.2.20 Instruksi ADD
Instruksi ADD adalah berdasar pada format :
ADD A,Source ;Tambahakan source ke Akumulator
Instruksi ini menambahkan sembarang tipe data ke dalam A dan A pula
bertindak sebagai penerima hasil dari operasi. Sehingga dapat dikata operand
tujuan (Dest) selalu adalah Akumulator (A).
Contohnya:
MOV A,#25h ;Isi A dengan nilai 25h
MOV R2,#34h ;Isi R2 dengan nilai 34h
ADD A,R2 ;Tambahakan keduanya
;Jadi A = A + R2
Menjalankan program di atas akan menghasilkan A = 59h (25h + 34h =
59h) dan nilai pada R2 tidak berubah setelah instruksi ADD, yakni 34h. Sekali
lagi operand source tidak akan berubah. Program di bawah ini adalah contoh
program yang lebih kompleks.
MOV R5,#25h ;Isi R7 dengan nilai 25h
MOV R7,#34h ;Isi R5 dengan nilai 34h
MOV A,#0 ;Clear isi A menjadi 0
ADD A,R5 ;Tambahakan A dengan isi R5
;Jadi A = A + R5
52
ADD A,R7 ;Tambahakan A dengan isi R7
;Jadi A = A + R7
Program di atas menghasilkan nilai 59h yang terdapat pada A. Ada banyak cara
untuk memberi pengalamatan, namun sedapat mungkin mencari cara yang paling
singkat dan cepat. Ini adalah cara lebih cepat.
MOV A,#25h ;Isi A dengan nilai 25h
ADD A,#34h ;Tambahakan A dengan 34h
Sekali lagi dapat kita lihat dari berbagai contoh di atas operand tujuan
selalu adalah A. Jika kita memaksa menuliskan kode seperti "ADD R2,A" tentu
akan menghasilkan error. 8051 memang hanya mendukung operasi arimatika dan
logika yang hanya menggunakan A sebagai akumulator, dan dengan kata lain
operasi tersebut dibatasi selebar 8-bit. Namun walaupun demikian hal itu sudah
lebih dari cukup untuk membuat program untuk berbagai aplikasi canggih,
misalnya robot.
Kita tahu bahwa 8051 juga memiliki 2 buah register 16-bit, walaupun
dirancang bukan untuk keperluan manipulasi data. Namun jika anda bertanya
apakah CPU 8051 dapat memanipulasi data yang lebih besar dari 8-bit?? Tentu
saja, tidak ada hal yang tidak mungkin. Seperti yang sudah kita ketahui
sebelumnya bahwa komputer 8-bit, idealnya hanya memproses data sampai
selebar 8-bit. Dalam kasus tertentu beberapa perintah dalam 8051 dapat diurutkan
untuk dapat menangani data yang lebih besar, seperti data 16-bit, 24-bit, maupun
53
32-bit. Semua bisa dilakukan. Tentu dengan memecah data tersebut dalam
beberapa data 8-bit,dan kemudian memprosesnya satu-persatu kemudian
menyatukan kembali data sehingga seperti hasil yang kita inginkan. Dalam
prakteknya hal itu bisa dilakukan dengan membuat kode-kode yang rumit dan
teliti.