Disusun oleh :
Nama : Ridho Fauzi
NIM : 221044015
Kel/Gol : A2
Asisten : Khalil, Rindo
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Bahasa pemrograman basicterkenal didunia sebagai bahasa pemrograman
yang handal. Sangat belakang dari namanya basic, bahasa ini sebenarnya bahasa
yang memiliki kemampuan tingkat tinggi. Bahkan banyak para programer
terkenal dunia memakai bahasa pemrograman ini sebagai senjata ampuhnya.
Bahasa pemrograman basic banyak digunakan untuk aplikasi mikrokontoler
karena kompatibel oleh mikrokontroler jenis AVR dan didukung dengan compiler
pemrograman berupa software BASCOM AVR. Bahasa basic memiliki penulisan
program yang mudah dimengerti walaupun untuk orang awam sekalipun. Karena
itu bahasa ini dinamakan bahasa basic. Jenis programnya seperti do, loop, if, then,
dan sebagainya masih banyak lagi.
Tabel 3.1 Instruksi dasar BASCOM AVR
INSTRUKSI KETERANGAN
DO…….LOOP Perulangan
IF…..THEN Percabangan
FOR…..NEXT Perulangan
SELECT…..CASE Percabangan
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
‘Inisialisasi
‘Deklarasi variable
‘Deklarasi konstanta
Do
‘Pernyataan-pernyataan
Loop
End
IF THEN ELSE
Instruksi ini dikerjakan jika memenuhi syarat-syarat atau kondisi tertentu, jika
tidak dipenuhi maka instruksi atau serangkaian instruksi lainya lah yang akan
dikerjakan.
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
If <kondisi> then
<perintah1>
Else
<perintah2>
End if
SELECT CASE
Digunakan untuk menangani pengujian kondisi yang jumlahnya cukup banyak.
Select case <variable>
Case 1: <perintah1>
Case 2: <perintah2>
End select
1.1.1.1. Pengulangan Operasi
FOR NEXT
Digunakan untuk melaksanakan perintah secara berulang sesuai dengan jumlah
yang di tentukan.
For <var> = <nilaiAwal>
To <nilaiAkhir> <step.angka>
<variable>
Next [<var>]
DO LOOP
Digunakan untuk melakukan perulangan terus menerus tanpa henti.
Do
<pernyataan>
Loop
WHILE WEND
Digunakan untuk melakukan pengulangan selama kondisi benar saja
While <kondisi>
<perintah>
Wend
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Exit
Perintah yang di gunakan untuk keluar secara langsung dari perulangan DO-
LOOP, FOR-NEXT, WHILE-WEND:
EXIT FOR
EXIT DO
EXIT WHILE
EXIT SUB
EXIT FUNCTION
1.1.1.1. Waktu Tunda
Waktu tunda (Delay) digunakan untuk menunda sementara main program
yang sedang berjalan dengan instruksi.
WAIT <lama waktu tunda dalam satuan secon>
WAITMS <lama waktu tunda dalam satuan milisecon>
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
1.1.2. Variabel
Variabel adalah suatu pengenal (Identifier) yang di gunakan untuk
mewakili suatu nilai tertentu di dalam proses program yang dapat di ubah ubah
sesuaidengan kebutuhan. Nama dari variable sesuai dengan kebutuhan, namun hal
yang terpenting adalah setiap variable harus:
Terdiri dari gabungan huruf dan angka dengan karakter pertamaharus
berupa huruf, maksimal 32 karakter. Tidak boleh mengandung spasi atau symbol
khusus seperti : $, ?, %, #, !, (, ), -, +, = dan lain sebagainya
kecuali Underscore ( _ ).
1.1.1. Deklarasi
Deklarasi sangat diperlukan bila akan menggunakan pengenal (Identifier) dalam
suatu program.
Deklarasi variable
Bentuk umum pendeklarasian suatu variable adalah
Dim nama_variabel AS tipe_data
Contoh:
DIM x As Integer ‘deklarasi x bertipe integer
Deklarasi Konstanta
Dalam bahasa basic, konstanta dideklarasikan langsung.
Contoh:
“Hello World” ‘assign string
1.1.2. Operator
o Operator penugasan
Operator penugasan (assignment Operator) dalam bahasa basic berupa “=”
o Operator aritmatika
* ‘untuk aritmatika
/ ‘untuk pembagian
+ ‘untuk penjumlahan
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
- ‘untuk pengurangan
% ‘untuk sisa pembagian (modulus)
o Operator hubungan (perbandingan)
Digunakan untuk membandingkan hubungan dua buah operand atau sebuah nilai /
variable, misalnya:
= ‘Equality (X = Y)
< ‘Less than (X < Y)
> ‘Greater than (X > Y)
<= ‘Less than or equal to (X <= Y)
>= ‘Greater than or equal to (X >= Y)
o Operator Logika
Digunakan untuk membandingkan logika hasil dari operator-operator hubungan.
Operator logika ada 4 macam, yaitu:
NOT ‘logical complement
AND ‘Conjunction
OR ‘Disjunction
XOR ‘Exclusive or
o Operator Bitwise
Digunakan untuk memanipulasi bit dari data yang ada di memori. Operator
bitwise dalam bahasa Basic:
Shift A, Left, 2 ‘Pergeseran Bit ke kiri
Shift A, Right, 2 ‘Pergeseran Bit ke kanan
Rotate A, Left, 2 ‘Putar Bit ke kiri
Rotate A, Right, 2 ‘Putar Bit ke kanan
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
dari Microcontroler ATMega16, jika menyala maka konfigurasi LED tersebut
merupakan Common Katoda, dan sebaliknya jika di beri VCC tidak menyala.
Maka konfigurasi tersebut adalah Common Anoda
pada toolbar.
5. Jika tidak terjadi error pada program maka program yang telah di
compile akan tersimpan dengan ekstensi *hex.
b. Pengiriman data Hex ke IC
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
1. Membuka Software KAZAMA dengan cara double click shortcut icon
pada desktop atau pilih dari Start.
Ridho Fauzi
221044015
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Do
PORTD = &B00000000
Wait 1
PORTD = &B11111111
Wait 1
Loop
END
Animasi Running LED
$regfile = “m16def.dat”
$crystal = 12000000
Ddrd = &B11111111
Do
PORTD = &B11111110
Waitms 500
PORTD = &B11111101
Waitms 500
PORTD = &B11111011
Waitms 500
PORTD = &B11110111
Waitms 500
PORTD = &B11101111
Waitms 500
PORTD = &B11011111
Waitms 500
PORTD = &B10111111
Waitms 500
PORTD = &B01111111
Waitms 500
Loop
END
Menggeser nyala LED ke kanan
Config PORTD = Output
LED alias PORTD
Dim DataLed As Byte
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
DataLed = &B01111111
Do
Led = DataLed
Rotate DataLed , Right, 1
Waitms 50
Loop
End
$regfile = “m16def.dat”
$Crystal = 12000000
Config PORTD = Output
PORTD = &B10101010
END
Pembahasaan :
Jadi dari percobaan 1 pada praktikum di atas dapat dijelaskan bahwa pada saat
akan melakukan percobaan menghidupkan LED dari hasil percobaan, pertama kita
amati dulu langkah percobaan yang mau kita dipraktikan yang ada pada modul
sebelum melakukan percobaan kemudian kita masukan kode yang tertera pada
modul yang mau dianalisis atau mau dipraktekan.
Dari analisis hasil percobaan diatas dapat dijelaskan PORTD lampu akan
meenyala, mati, menyala, mati secara bergantian atau berseling dengan waktu
tunda 1 detik.
$regfile = “m16def.dat”
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
$crystal = 12000000
Config PORTD = Output
Do
PORTD = &B00000000
Wait 1
PORTD = &B11111111
Wait 1
Loop
END
Pembahasaan :
Jadi dari percobaan 2 pada praktikum di atas dapat dijelaskan bahwa pada
praktikum ini mengajarkan bagaimana mengatur LED untuk berkedip (blink)
dengan pola tertentu menggunakan kode pemrograman. Kita akan memprogram
mikrokontroler untuk mengatur waktu menyala dan mati LED dengan interval
tertentu, yang akan menciptakan efek berkedip yang diinginkan.
Dari percobaan di atas dapat dijelaskan setiap 10 detik pada PORTD lampu
LED akan mati dan setiap 10 detik lampu LED akan menyala dan akan tetap terus
berulang.
$regfile = “m16def.dat”
$crystal = 12000000
Ddrd = &B11111111
Do
PORTD = &B11111110
Waitms 500
PORTD = &B11111101
Waitms 500
PORTD = &B11111011
Waitms 500
PORTD = &B11110111
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Waitms 500
PORTD = &B11101111
Waitms 500
PORTD = &B11011111
Waitms 500
PORTD = &B10111111
Waitms 500
PORTD = &B01111111
Waitms 500
Loop
END
Pembahasaan :
Jadi dari percobaan 3 pada praktikum di atas dapat dijelaskan bahwa pada
praktikum ini kita membuat efek animasi yang menyerupai lampu LED bergerak.
disini kita akan memprogram mikrokontroler untuk mengatur kecepatan dan pola
pergerakan lampu LED, seperti bergerak maju-mundur, berkedip, atau berputar.
Dari praktikum diatas dapat dijelaskan bahwa setiap 0,05 detik pada PORTD
lampu LED akan bergatian menyala.
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Pembahasaan :
Jadi dari percobaan 4 pada praktikum di atas dapat dijelaskan bahwa pada
praktikum ini adalah prinsipnya dengan mengatur output ke LED secara berurutan
dari satu pin ke pin berikutnya, menciptakan efek pergeseran cahaya dari kiri ke
kanan.
Dari percobaan diatas dapat dijelaskan bahwa setiap 0,05 detik pada PORTD
lampu LED akan menyala bergeser dari arah kiri ke kanan, kemudian kita akan
memprogram mikrokontroler agar LED menyala dan padam secara berurutan dari
kiri ke kanan dengan waktu tertentu.
1.5. Tugas
1. Tuliskan listing program nyala LED geser ke kanan 2x lalu geser ke kiri
2x dengan waktu tunda 1 detik.
$regfile = “m16def.dat”
$crystal = 12000000
Ddrd = &B11111111
Do
PORTD = &B11111110
Waitms 500
PORTD = &B11111101
Waitms 500
PORTD = &B11111011
Waitms 500
PORTD = &B11110111
Waitms 500
PORTD = &B11101111
Waitms 500
PORTD = &B11011111
Waitms 500
PORTD = &B10111111
Waitms 500
PORTD = &B01111111
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Waitms 500
Loop
END
$regfile = “m16def.dat”
$crystal = 12000000
Ddrd = &B11111111
Do
PORTD = &B01111111
Waitms 500
PORTD = &B10111111
Waitms 500
PORTD = &B11011111
Waitms 500
PORTD = &B1110111
Waitms 500
PORTD = &B11110111
Waitms 500
PORTD = &B11111011
Waitms 500
PORTD = &B11111101
Waitms 500
PORTD = &B11111110
Waitms 500
Loop
END
Pembahasaan :
Jadi dari percobaan pada praktikum di atas dapat dijelaskan bahwa pada
praktikum ini dimana kita dapat mengatur LED untuk meenyala dan mematikan
secara bergantian, bergeser ke kanan selama 2 kali, kemudian bergeser ke kiri
selama 2 kali, dengan jeda waktu 0,05 detik setiap kali pergeseran.
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
Dari percobaan diatas dapat dijelasakan bahwa setiap 0,05 detik lampu LED
pada PORTD akan menyala bergeser dari arah ke kanan 2 kali lalu bergeser 2 kali
ke kiri dengan waktu 0,05 detik.
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
1.6. Kesimpulan
Jadi dari praktikum unit 3 ini dapat disimpulkan bahwa Pemrograman
BASCOM AVR dengan mikrokontroler ATmega 16 adalah Pemahaman mendalam
tentang cara memprogram dan mengendalikan mikrokontroler menggunakan
bahasa pemrograman BASCOM AVR. Praktikum ini juga memberikan bagaimana
cara melakukan agar nyala LED bergeser dari kanan ke kiri dengan waktu tunda 1
detik.
RIDHO FAUZI/221044015/SISKON/29/MARET/2024
DAFTAR PUSTAKA
Keterangan :
Nilai Paraf
RIDHO FAUZI/221044015/SISKON/29/MARET/2024