Anda di halaman 1dari 20

G. LANGKAH KERJA Pembuatan script (dalam ekstensi .

hex) BASCOM-AVR program menggunakan

1. Jalankan software BASCOM

2. Berikut tampilan awal BASOM-AVR

3. Ketikkan script program mengatur arah gerak LED ke Kanan-Kiri dengan saklar Push Button $regfile = m16def.dat Dim A As Byte Do Portb = &B00000001 Bitwait Pinc.6 Do For A = 1 To 7 Rotate Portb, Left Waitms 100 If Pinc.1 = 1 Then Exit Do End If Next For A = 1 To 7 Rotate Portb, Right Waitms 100

If Pinc.1 = 1 Then Exit Do End If Next If Pinc.1 = 1 Then Exit Do End If Loop Loop End

4. Kompile script program dengan cara mengklik ikon 5. Tunggu beberapa saat porgram sedang di kompile (diubah dari bahasa .bas atau basic menjadi ekstensi .hex)

6. Kemudian ketikkan program mengambil data saklar geser dan mengeluarkan ke LED $regfile "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 24 Config Portb = Output Config Portc = Input Portc = &HFF Do Portb = Pinc Loop End

7. Kompile script program dengan cara mengklik ikon atau menekan (f7). 8. Tunggu beberapa saat porgram sedang di kompile (diubah dari bahasa .bas atau basic menjadi ekstensi .hex)

9. Kemudian ketikkan program tantangan Program untuk menyalakan led pada portB dan portD dengan ketentuan (Jika pushbuttons 1 ditekan, maka semua led pada portB dan portD menyala kedap-kedip, jika pushbuttons 2 ditekan, maka led pada portB dan portD akan menyala secara zig-zag) $regfile "m16def.dat" $crystal = 1000000 Config Portb = Output Config Portd = Output Dim A As Integer, C As Byte C = &B10000000 Do Bitwait Pinc.0, Set Bitwait Pinc.0, Reset Do Portb = &B11111111 Portd = &B11111111 Waitms 30 Portb = &B00000000 Portd = &B00000000 Waitms 30 If Pinc.1 = 1 Then go to Ar End If Ar Do Portb = C Waitms 1000 Shift C, Right, 1 Portd = C Waitms 1000 Shift C, Right, 1 Loop Until Portb = &B00000000 Loop End

10. Kompile script program dengan cara mengklik ikon menekan (f7).

atau

11. Tunggu beberapa saat porgram sedang di kompile (diubah dari bahasa .bas atau basic menjadi ekstensi .hex)

Melakukan Percobaan di Lab menggunakan Mikrokontroler AVR

PERCOBAAN PROGRAM MENGATUR ARAH GERAK LED KE KANAN-KIRI DENGAN SAKLAR PUSH BUTTON

1. Klik Start --- AVRprog.

2. Kemudian akan muncul tampilan awal AVRprog. Untuk melakukan percobaan, klik browse untuk memasukkan file sintax-nya.

3. Kemudian arahkan ke direktori tempat file tersebut. Select dan Klik Open.

4. Setelah file sintaxnya telah masuk di AVRprog, klik program untuk menjalankannya.

PROGRAM

MENGAMBIL

DATA

SAKLAR

GESER

DAN

MENGELUARKAN KE LED

1. Klik Advanced untuk melakukan percobaan berikutnya.

2. klik Chip Erase. dan Klik Close

3. Kemudian Klik Browse untuk memasukkan file sintax-nya.

4. kemudian arahkan ke direktori tempat file tersebut. klik open.

5. setelah file sintaxnya telah masuk di avrprog, klik program untuk menjalankannya.

PROGRAM TANTANGAN Program untuk menyalakan led pada portB dan portD dengan ketentuan (Jika pushbuttons 1 ditekan, maka semua led pada portB dan portD menyala kedapkedip, jika pushbuttons 2 ditekan, maka led pada portB dan portD akan menyala secara zig-zag)

1. Klik Advanced untuk melakukan percobaan berikutnya

2. Klik Chip Erase. dan Klik Close

3. Kemudian Klik Browse untuk memasukkan file sintax-nya.

4. Kemudian arahkan ke direktori tempat file tersebut. Klik Open.

5. Setelah file sintaxnya telah masuk di AVRprog, Klik program untuk menjalankannya.

H. HASIL PERCOBAAN

PERCOBAAN PROGRAM MENGATUR ARAH GERAK LED KE KANAN-KIRI DENGAN SAKLAR PUSH BUTTON

Keadaan awal

Keadaan awal setelah program dijalankan

LED bit tujuh pada portB, menyala

LED bit enam pada portB, menyala

LED bit lima pada portB, menyala

LED bit empat pada portB, menyala

LED bit tiga pada portB, menyala `

LED bit dua pada portB, menyala

LED bit satu pada portB, menyala

LED bit nol pada portB, menyala

LED bit satu pada portB, menyala

LED bit dua pada portB, menyala

LED bit tiga pada portB, menyala

LED bit empat pada portB, menyala

LED bit lima pada portB, menyala

LED bit enam pada portB, menyala

LED bit tujuh pada portB, menyala

PERCOBAAN PROGRAM MENGAMBIL DATA SAKLAR GESER DAN MENGELUARKAN KE LED

Keadaan awal

Keadaan awal setelah program dijalankan

Saklar tiga ditekan, LED bit tiga pada portb dan portd, menyala

Saklar nol ditekan, LED bit nol pada portb dan portd, menyala

Saklar satu ditekan, LED bit satu pada portb dan portd, menyala

Saklar dua ditekan, LED bit dua pada portb dan portd, menyala

Saklar empat ditekan, LED bit empat pada portb dan portd, menyala

Saklar lima ditekan, LED bit lima pada portb dan portd, menyala

Saklar enam ditekan, LED bit enam pada portb dan portd, menyala

Saklar tujuh ditekan, LED bit tujuh pada portb dan portd, menyala

PROGRAM TANTANGAN Program untuk menyalakan led pada portB dan portD dengan ketentuan (Jika pushbuttons 1 ditekan, maka semua led pada portB dan portD menyala kedapkedip, jika pushbuttons 2 ditekan, maka led pada portB dan portD akan menyala secara zig-zag)

Keadaan awal

Push button 1 ditekan, LED pada portb dan portd menyala

Kemudian LED portb dan portd mati

Dan LED portb dan portd menyala kembali (proses berkedip)

push button 2 ditekan, LED bit tujuh pada portb menyala (proses awal zigzag)

Kemudian LED bit enam pada portd menyala

Kemudian LED bit lima pada portb menyala

Kemudian LED bit empat pada portd menyala

Kemudian LED bit tiga pada portb menyala

Kemudian LED bit dua pada portd menyala

Kemudian LED bit satu pada portb menyala

dan LED bit nol pada portd menyala

I. ANALISIS DATA Mengatur Arah Gerak LED ke Kiri-Kanan Dengan Saklar Push Button Program ini merupakan program mengatur arah gerak LED kekiri dan kekanan dengan saklar push button, dengan menggunakan instruksi awal $regfile = "m16def.dat" merupakan pendeklarasian atau library yang menyatakan bahwa mikrokontroller yang digunakan adalah ATMega16.

Selanjutnya instruksi $crystal = 1000000 merupakan kecepatan kristal 1 juta baris perclock.instruksi Dim A As Byte merupakan perintah dimana A

dideklarasikan dalam bentuk byte kemudian dilanjutkan dengan instruksi Do merupakan Perintah Perulangan, program utama dimulai.selajutnya Portb = &B00000001 merupakan suatu perintah dimana portb diset dengan nilai byte dalam bilangan biner yaitu &B00000001artinya biner yang bersimbol 1 akan menyala pada bit pertama(portB.0).Untuk mengatur LED berjalan kekiri dan kekanan terlebih dahulu kita mengeset push button 2 (Q1) sebagai tombol tekan yang akan memulai eksekusi maka digunakan instruksi Bitwait Pinc.6 , Set, dan Bitwait Pinc.6 , Reset merupakan instruksi push button dimana portc.6 sebagai push button 2 ketika diset/tekan kemudian direset/lepas program akan mulai melakukan eksekusi.kemudian dilanjutkan kembali dengan instruksi Do sebagai penunjuk Perintah Perulangan.Untuk membuat LED menyalah dari bit pertama sampai pada bit kedelapan (portB.0-portB.7) ataupun dari bit kedelapan kebit pertama (portB.7-portB.0) digunakan instruksi For A = 1 To 7 merupakan suatu perintah dimana variabel A dijadikan sebagai penghitung Loop, sehingga akan terjadi proses Loop

sebanyak 7 kali.kemudian, dilanjutkan dengan instruksi Rotate Portb , Left merupakan suatu perintah dimana setelah setiap kali proses looping nilai bit dari portB = &B00000001 akan digeser kekiri sehingga nantinya akan menjadi portB= &B00000010 kemudian lagi akan dirotate( putar) sehingga nantinya akan menjadi portB= &B00000100, instruksi tersebut akan menampilkan LED berjalan dari kiri ke kanan (bawah ke atas) dilanjutkan pada instruksi Waitms 100 merupakan Delay 100 milisecond, artinya perintah untuk memberi jeda selama 100 ms. Sehingga ketika program dijalankan, tampilan tiap perubahan

memiliki jeda

selama 100 ms.Instruksi If Pinc.1 = 1 Then, merupakan

instruksi dimana ketika kita menekan push button 2 (Q1) maka program akan melakukan reset atau berhenti, selanjutnya instruksi Exit Do, dan End If merupakan perintah memberhentikan program running LED sedangkan

instruksi Next merupakan perintah dimana ketika menekan push button 1 (Q0) program akan tetap berjalan. Selanjutnya kembali ke instruksi For A = 1 To 7 merupakan suatu perintah dimana penghitung Loop, sehingga variabel A dijadikan sebagai Loop sebanyak 7 kali.

akan terjadi proses

kemudian, dilanjutkan dengan instruksi Rotate Portb , Right merupakan suatu perintah dimana setelah setiap kali proses looping nilai bit dari portB= &B00000001 akan digeser kekanan sehingga nantinya akan menjadi portB= &B10000000 kemudian lagi akan dirotate( putar) sehingga nantinya akan menjadi portB= &B01000000, instruksi tersebut akan menampilkan LED berjalan dari kanan ke kiri (atas ke bawah) dilanjutkan pada instruksi Waitms 100 merupakan Delay 100 milisecond, artinya perintah untuk memberi jeda selama 100 ms. Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 100 ms.Selanjutnya kembali ke nstruksi If Pinc.1 = 1 Then,Exit Do, dan End If sebagai perintah untuk memberhentikan program running LED. instruksi Loop merupakan Perintah perulangan, ulangi ke awal (mulai dari do) dan instruksi terakhir adalah End merupakan proses telah selesai.

Mengambil Data Saklar Geser Dan Mengeluarkan ke LED Program ini merupakan program mengambil data saklar geser dan mengeluarkan ke LED, dengan menggunakan instruksi awal $regfile =

"m16def.dat" merupakan pendeklarasian atau library yang menyatakan bahwa mikrokontroller yang digunakan adalah ATMega16. Selanjutnya kecepatan kristal 1 juta baris

instruksi $crystal = 1000000 merupakan

perclock. instruksi $hwstack = 32 merupakan nilai default 32 yang dimiliki hardware stack/tipe data abstrak . sama dengan instruksi $wstcak = 8 merupakan nilai default 32 yang dimiliki hardware stack/tipe data abstrak Sedangkan instruksi $framesize = 24 merupakan framesize dengan nilai

default 24 perclock. Selanjutnya dilanjutkan instruksi Config Portb = Output yang mengkonfigurasikan bahwa Port B menjadi output dan instruksi Config Portc = Input merupakan suatu perintah dimana mengkonfigurasikan portC sebagai input penghubung pada saklar.Selanjutnya instruksi Portb= &HFF merupakan suatu perintah mengeset nilai pada portb yaitu 11111111 dengan instruksi ini semua lampu nantinya akan menyalah pada portb,dilanjutkan dengan instruksi Do merupakan Perintah Perulangan, program utama dimulai.Instruksi Portb = Pinc merupakan suatu perintah dimana LED pada portB dan LED pada PortC akan menyalah secara bersamaan ketika

menekan saklar S0 sampai saklar S7 atau terakhir. Begitupun sebaliknya, ketika menonaktifkan saklar, maka LED pada portB dan portC akan mati secara bersamaan. instruksi Loop merupakan Perintah perulangan, ulangi ke awal (mulai dari do) dan instruksi terakhir adalah End merupakan proses telah selesai.

Tantangan Program untuk menyalakan led pada portB dan portD dengan ketentuan (Jika pushbuttons 1 ditekan, maka semua led pada portB dan portD menyala kedap-kedip, jika pushbuttons 2 ditekan, maka led pada portB dan portD akan menyala secara zig-zag)

Dengan menggunakan instruksi awal merupakan pendeklarasian atau library

$regfile = "m16def.dat" yang menyatakan bahwa

mikrokontroller

yang digunakan adalah ATMega16. Selanjutnya instruksi kecepatan kristal 1 juta baris

$crystal = 1000000 merupakan

perclock.instruksi Config Portb = Output dan Config Portd = Output suatu perintah mengkonfigurasikan Port B menjadi output.instruksi Dim A As Integer , C As Byte merupakan suatu perintah dimana A dideklarasikan sebagai integer dan C dideklarasikan sebagai Byte ,kemudian instruksi C = &B10000000 merupakan suatu instruksi dimana c sebagai byte diset dengan nilai awal &B10000000 dilanjutkan dengan instruksi Do merupakan Perintah Perulangan, program utama dimulai.instruksi Bitwait Pinc.0 , Set dan Bitwait

Pinc.0 , Reset merupakan instruksi push button dimana portc.0 sebagai push button 1(Q0) ketika diset/tekan kemudian direset/lepas program akan mulai melakukan eksekusi.kemudian dilanjutkan kembali sebagai dengan instruksi Do

penunjuk Perintah Perulangan.Selanjutnya instruksi Portb =

&B11111111 dan Portd = &B11111111 merupakan suatu peruntah mengeset nilai &B11111111 pada portb dan portd sehingga kedua LED pada port nantinya akan menyalah. selanjutnya, instruksi Waitms 30 merupakan Delay 30 milisecond, artinya perintah untuk memberi jeda selama 30 ms. Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 30 ms.selanjutnya instruksi Portb = &B00000000 dan Portd = &B00000000 merupakan suatu perintah mereset nilai dengan &B00000000 pada portb dan portd sehingga kedua LED pada port nantinya akan mati/nonaktif. instruksi Waitms 30 merupakan Delay 30 milisecond, artinya perintah untuk memberi jeda selama 30 ms. Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 30 ms,selanjutnya instruksi If Pinc.1 = 1 Then merupakan instruksi dimana ketika kita menekan push button 2 (Q1) maka program akan melakukan reset atau berhenti.Instruksi A=1 ,End if dan Loop until A=1 merupakan suatu perintah untuk memberhentikan program running LED dilanjutkan dengan instruksi Do sebagai perintah perulangan. Untuk membuat LED menyalah secara zig-zag digunakan instruksi portb= c merupakan suatu perintah mengeset nilai portb dengan nilai C(byte) dimana nilai C adalah &B10000000 dilanjutkan dengan instruksi Waitms 1000 merupakan Delay 1000 milisecond, artinya perintah untuk memberi jeda selama 1000ms. Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama 1000 ms dilanjutkan dengan instruksi Shift C,Right ,1 merupakan suatu perintah dimana nilai C=&B10000000 akan digeser satu kali kekanan sehingga nilai C = &B01000000.Selanjutnya instruksi portd=C merupakan suatu perintah dimana portd akan diset dengan nilai pada C

sehingga nilai portd sekarang adalah &B01000000 kemudian kembali dilanjutkan dengan instruksi Waitms 1000 merupakan Delay 1000 milisecond, artinya perintah untuk memberi jeda selama 1000ms. Sehingga ketika program dijalankan, tampilan tiap perubahan memiliki jeda selama

1000 ms.selanjutnya kembali keinstruksi Shift C,Right ,1 merupakan suatu perintah dimana nilai C=&B01000000 akan digeser satu kali kekanan sehingga nilai C = &B00100000. Instruksi Loop Until Portb = &B00000000 merupakan suatu perintah perulangan dimana apabila nilai

portb=&B00000000 maka akan lanjut ke instruksi berikutnya, instruksi Loop merupakan Perintah perulangan, ulangi ke awal (mulai dari do) dan instruksi terakhir adalah End merupakan proses telah selesai.

J. KESIMPULAN