Anda di halaman 1dari 19

LAPORAN SEMENTARA

INSTRUMENTASI KENDALI (PLC)


UNIT 3
TEKNIK DASAR PEMROGRAMAN BASCOM AVR DENGAN
MIKROKONTROLLER ATMEGA 16

Disusun oleh :
Nama : Ridho Fauzi
NIM : 221044015
Kel/Gol : A2
Asisten : Khalil, Rindo

LABORATORIUM INSTRUMENTASI & KENDALI (PLC)


FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS AKPRIND INDONESIA
2024
UNIT 3
TEKNIK DASAR PEMROGRAMAN BASCOM AVR DENGAN
MIKROKONTROLLER ATMEGA 16

3.1 Tujuan Praktikum


1. Memahami teknik dasar pemrograman BASCOM AVR
2. Mampu membuat program untuk menyalakan animasi LED dengan
BASCOM AVR.

3.2 Alat dan Bahan


1. 1 Unit Komputer
2. 1 Trainer Microkontroler ATMega16
3. Downloader USBasp
4. Power Supply

3.3 Teori Dasar


BASCOM AVR adalah salah satu tool untuk pengembangan / pembuatan
program untuk kemudian ditanamkan dan dijalankan pada mikrokontroler
terutama mikrokontroler keluarga AVR . BASCOM AVR juga bisa disebut sebagai
IDE (Integrated Development Environment) yaitu lingkungan kerja yang
terintegrasi, karena disamping tugas utamanya meng-compile kode program
menjadi file hex / bahasa mesin, BASCOM AVR juga memiliki kemampuan / fitur
lain yang berguna sekali seperti monitoring komunikasi serial dan untuk
menanamkan program yang sudah di compile ke mikrokontroler.
BASCOM AVR menyediakan pilihan yang dapat mensimulasikan program.
Program simulasi ini bertujuan untuk menguji suatu aplikasi yang di buat dengan
pergerakan LED yang ada pada layar simulasi dan dapat juga langsung dilihat
pada LCD, jika kita membuat aplikasi yang berhubungan dengan LCD. Instruksi
yang dapat di gunakan pada editor relative cukup banyak dan tergantung dari tipe
dan jenis AVR yang di gunakan. Berikut ini adalah beberapa perintah instruksi-
instruksi dasar yang di gunakan pada BASCOM AVR.

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

GOSUB Memanggil prosedur

IF…..THEN Percabangan

FOR…..NEXT Perulangan

WAIT Waktu Tunda (Second)

WAITMS Waktu Tunda (mili Second)

WAITUS Waktu Tunda (micro Second)

GOTO Loncat ke Alamat Memori

SELECT…..CASE Percabangan

3.3.1 Konstruksi bahasa BASIC pada BASCOM AVR


Setiap bahasa pemrograman mempunyai standar penulisan program.
Konstruksi dari program bahasa BASIC harus mengikuti aturan sebagai berikut:
$regfile = “header”

RIDHO FAUZI/221044015/SISKON/29/MARET/2024
‘Inisialisasi
‘Deklarasi variable
‘Deklarasi konstanta
Do
‘Pernyataan-pernyataan
Loop
End

3.3.1.1 Pengarah Preprosesor


$regfile = “m16def.dat” merupakan pengarah preprosesor bahasa BASIC
yang memerintahkan untuk menyisipkan file lain, dalam hal ini adalah file
m16def.dat yang berisi deklarasi register dari microkontroler ATMega 16,
pengarah preprosesor lainnya yang sering digunakan ialah sebagai berikut:
$cystal = 12000000 “menggunakan crystal clock 12 MHz”
$baud = 9600 “komunikasi serial dengan baud rate 9600”
$eprom “menggunakan fasilitas eprom”

3.3.1.2 Operasi Bersyarat


 IF . . .THEN
Instruksi akan di kerjakan jika memenuhi syarat-syarat atau kondisi tertentu. Cara
penulisan nya:
If <kondisi> then <perintah>
End if
Atau
If <kondisi> then
<perintah1>
<perintah2>
End if

 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>

1.1.1. Tipe Data


Tipe data merupakan bagian program yang paling penting karena sangat
berpengaruh pada program. Pemilihan tipe data yang tepat membuat operasi data
menjadi lebih efisien dan efektif.
Tabel 3.2 Tipe Data pada BASCOM AVR
Tipe Data Ukuran (Byte) Jangkauan Data
Bit 1/8 0 atau 1
Byte 1 0 s/d 255
Integer 2 -32768 s/d 3.767
Word 2 0 s/d 65535
Long 4 -2147483648 s/d 2147483647
Single 4 1,5 x 10 -45 s/d 3,4 x 1038
Double 8 5 x 10 -324 s/d 1,7 x 10308
String s/d 254

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

1.1.3. Rangkaian Animasi Led dengan ATMega 16


Rangkaian minimum untuk counter melalui port B.0 ditunjukan pada
Gambar 3.1. rangkaian tersebut menggunakan penampil LED. Konfigurasi
rangkaian LED bisa di coba dengan menghubungkan port bus LED dengan VCC

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

Ridho Fauzi 22104401

Gambar 3.1 Rangkaian Animasi LED dengan ATMega16

1.2. Langkah percobaan


a. Penulisan Program
1. Membuka software BASCOM AVR
Ridho Fauzi
221044015

Gambar 3.2 Logo BASCOM AVR


2. Setelah itu akan muncul lembar Blank document, kemudian klik new.
Dan tuliskan program yang tertera pada bagian Listing Program di
sub-bab 3.5.
3. Setelah selesai, Kemudian save program dengan ekstensi *.bas.
4. Setelah itu compile program dengan menekan F7 atau klik compile

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

Gambar 3.3 Logo Khazama


2. Click Command = > Read chip signature untuk memeriksa jika IC
telah terhubung dengan perangkat computer
3. Jika tidak terjadi error atau peringatan dari software, lanjutkan dengan
cara membuka File *.hex yang telah tersimpan tadi dengan cara klik
File-Load Flash lalu Pilih File.
4. Memilih AVR sesuai dengan IC yang di pakai (ATMEGA 16)
5. Setelah itu flash kan program ke dalam IC dengan cara click Auto
program atau dengan cara click Write Flash Buffer to Chip pada
Menu. Tunggu beberapa saat dan akan muncul peringatan flash write
OK.
6. Lalu Click OK LED pada trainer yang akan memunculkan hasil dari
program yang telah di buat.

1.3. Listing Program


 Menghidupkan LED
$regfile = “m16def.dat”
$Crystal = 12000000
Config PORTD = Output
PORTD = &B10101010
END
 Animasi LED Blink
$regfile = “m16def.dat”
$crystal = 12000000
Config PORTD = Output

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

1.4. Analisis Data Dan Pembahasaan


I Percobaan 1 menghidupkan LED
Analisa Hasil Percobaan

$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.

II Percobaan 2 Animasi LED Blink


Analisa Hasil Percobaan

$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.

III Percobaan 3 Animasi Running LED


Analisa Hasil Percobaan

$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.

IV Percobaan 4 Menggeser nyala LED ke Kanan


Analisa Hasil Percobaan

Config PORTD = Output


LED alias PORTD
Dim DataLed As Byte
DataLed = &B01111111
Do
Led = DataLed
Rotate DataLed , Right, 1
Waitms 50
Loop
End

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

https://licho-rp.blogspot.com/2013/09/pengertian-bascom-avr.html diakses pada


Selasa, 24 Semptember 2013
https://id.scribd.com/document/242676445/Pengertian-Bascom-Avr diakses pada
Oktober 2014

Keterangan :

Nilai Paraf

RIDHO FAUZI/221044015/SISKON/29/MARET/2024

Anda mungkin juga menyukai