TK404 041035 685 2
TK404 041035 685 2
Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang
Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer
(atau Mikrokomputer), antara lain:
Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPU (Central
Processing Unit);
CPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari
ROM (Read Only Memory)1 atau RAM (Random Access Memory)2;
Sama-sama memiliki RAM yang digunakan untuk menyimpan data-data sementara atau
yang lebih dikenal dengan variabel-variabel;
Sama-sama memiliki beberapa luaran dan masukan (I/O) yang digunakan untuk melakukan
komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran),
perhatikan bagan yang ditunjukkan pada Gambar 1.1.
Masukanmasukan
Pemroses
sensor cahaya
sensor suhu
sensor
tekanan, dll
Luaran-luaran
uC AT89
uC AVR
uC PIC16F, dll
aktuator motor
relay
speaker, dll
Hal. 1
Hal. 2
1.2.
1.2.1. Pendahuluan
Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama
ini ada yang kuno kali??). Perhatikan Gambar 1.3, Atmel membuat 5 (lima) macam atau jenis
mikrokontroler AVR, yaitu:
TinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg)
Mikrokontroler (mungil, hanya 8 sampai 32 pin) serbaguna dengan Memori Flash untuk
menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM 512 Bytes.
MegaAVR (nah yang ini sudah mulai banyak yang nulis bukunya)
Mikrokontroler dengan unjuk-kerja tinggi, dilengkapi Pengali Perangkat keras (Hardware
Hal. 3
Hal. 4
1.3.
O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR
ATMega16 (kompatibel dengan ATMega16 dan ATMega8535) karena fitur-fitur yang dibutuhkan.
Tentu saja Anda bisa menggunakan tipe AVR lainnya, apakah yang 40 pin atau yang kurang dari itu,
bisa ATMega88, ATMega16, ATMega128, ATMega8535, ATMega168, dan lain sebagainya.
1.4.
Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau
Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari datasheet-nya, maaf
juga masih sebagian besar dalam Bahasa Inggris3...
3
Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga
fokus pada buku ini tidak melulu pada datasheet...
Hal. 5
Hal. 6
1.5.
Pada Gambar 1.4 dan 0.5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR
ATMega16 tipe PDIP dan TQFP/MLF atau dikenal sebagai SMD.
Hal. 7
Hal. 8
1.6.
Berikut saya jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR
ATMega16.
Vcc
GND
Port A (PA7..PA0)
Port B (PB7..PB0)
Port C (PC7..PC0)
Port D (PD7..PD0)
/RESET
XTAL1
XTAL2
AVCC
AREF
Pada Tabel 1.1, 1.2 dan 1.3 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port
D. Dalam buku saya ini sengaja penjelasan dari masing-masing fungsi tersebut (kecuali antarmuka
JTAG) akan dibahas pada saat digunakan, sehingga Anda bisa memahami langsung dengan mencoba,
istilah kerennya Learning by Doing...
Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan.
Hal. 9
1.7.
Untuk menjawab pertanyaan ini, kita awali saja dengan menjelaskan perancangan aplikasi berbasis
Mikrokontroler AVR ATMega16. Lantas bagaimana atau langkah-langkah apa saja yang perlu
dilakukan, perhatikan Gambar 1.7.
Hal. 10
Gambar 1.7. Diagram alir perancangan aplikasi berbasis mikrokontroler (apa saja)
Nach, berdasar diagram alir tersebut, semuanya berawal dari MASALAH, atau bisa juga Anda sebut
PROYEK, KASUS atau apa saja yang Anda suka selama artinya adalah sesuatu yang ingin dicari atau
dibuat solusinya. Lebih tepatnya, pada tahap awal yang perlu dilakukan adalah IDENTIFIKASI
MASALAH, persis atau detilnya bagaimana, misalnya
Bagaimana membuat aplikasi menghidupkan LED berdasar tombol yang ditekan?
Ini tentunya belum cukup, informasinya masih kurang, beberapa pertanyaan yang bisa diajukan
antara lain:
LED-nya berapa?
Tombol apa saja yang ditekan?
Bagaimana hubungan antara sebuah tombol dengan LED yang bersangkutan?
Apakah dimungkinkan menekan dua tombol atau lebih secara bersamaan?
Apakah menyala-nya LED menggunakan tundaan? Atau hanya sekedar sesuai dengan tombol
yang bersangkutan?
Dan lain sebagainya.
Hal ini sangat penting, dikarenakan dengan informasi yang detil, maka kita bisa membuat rangkaian
dan program yang benar-benar sesuai dengan apa yang diinginkan. Dan yang lebih penting lagi, jika
ini merupakan proyek atau pesanan, bisa dijadikan bahan dalam kontrak kerja atau berita acara.
Tidak peduli akan Anda selesaikan dengan mikrokontroler AVR maupun AT89 atau bahkan
Hal. 11
Hal. 12
Sampai paragraf ini, apakah pertanyaan BASCOM AVR apaan tuch? sudah terjawab? Mmmm, seharusnya
sudah!
Hal. 13
1.8.
Sebagaimana telah saya jelaskan sebelumnya, banyak cara dalam menuliskan program ke
mikrokontroler, salah satunya bahasa BASIC. Penggunaan bahasa ini mempunyai kemudahan dalam
memprogram dan adanya fasilitas simulator pada kompailer BASCOM AVR.
1.8.1. Tipe Data
Tipe data berkaitan dengan peubah atau variabel atau konstanta yang akan menunjukkan daya
tampung/jangkauan dari variabel/konstanta tersebut. Tipe data dalam BASCOM ditunjukkan pada
Tabel 1.4.
Tabel 1.4. Tipe Data dan Ukurannya
Tipe Data
Bit
Byte
Integer
Word
Long
Single
Double
String
Ukuran (Byte)
1/8
1
2
2
4
4
8
s/d 254
Jangkauan Data
0 atau 1
0 s/d 255
-32768 s/d 3.767
0 s/d 65535
-2147483648 s/d 2147483647
1,5 x 10-45 s/d 3,4 x 1038
5 x 10-324 s/d 1,7 x 10308
1.8.2. Variabel
Variabel atau peubah digunakan untuk menyimpan data sementara. Variabel diberi nama dan
dideklarasikan terlebih dahulu sebelum digunakan. Aturan pemberian nama variabel sebagai
berikut:
Harus dimulai dengan huruf (bukan angka).
Tidak ada nama variabel yang sama dalam sebuah program.
Maksimum 32 karakter
Tanpa menggunakan spasi, pemisahan bisa dilakukan dengan garis bawah.
Tidak menggunakan karakter-karakter khusus yang digunakan sebagai operator BASCOM
Variabel dapat dideklarasikan dengan beberapa cara :
Hal. 14
Hal. 15
1.8.5. Alias
Untuk mempermudah pemrograman, biasanya nama register dalam mikrokontroler dibuatkan nama
yang identik dengan hardware yang dibuat, contoh :
LED_1 alias PORTC.O nama lain dari PORTC.O adalah LED_1
SW_1 alias PINC.1
nama lain dari PINC.1 adalah SW_1
1.8.6. Array atau Larik
Array atau larik merupakan sekumpulan variabel dengan nama dan tipe yang sama, yang berbeda
indeks keanggotaannya.
Cara mendeklarasikan array sebagai berikut:
Dim nama array(jumlah anggota) as tipe_data
Contoh:
Dim daku(8) as byte
Keterangan
Operasi penjumlahan
Operasi pengurangan
Operasi perkalian
Operasi pembagian
Operasi sisa pembagian
Hal. 16
Contoh
A + B
A B
A * B
A / B
A % B
Keterangan
Sama dengan
Tidak sama dengan
Lebih besar dari
Lebih kecil dari
Lebih besar atau sama dengan
Lebih kecil atau sama dengan
Contoh
A = B
A <> B
A > B
A < B
A >= B
A <= B
Keterangan
Operasi AND
Operasi OR
Operasi NOT
Operasi XOR
Contoh
&B110 And &B101 = &B100
&B11001 Or &B10111 = &B11111
NOT &HFF = &HO
&B1001 Xor &B0111 = &B1110
B. IF - THEN ELSE
Versi lengkap dari sebuah atau serangkaian instruksi akan dikerjakan jika memenuhi syaratsyarat atau kondisi tertentu, jika tidak dipenuhi maka instruksi atau serangkaian instruksi
lainnya-lah yang akan dikerjakan. Cara penulisannya sebagai berikut:
If <kondisi> Then
<perintah 1>
...
Else
<perintah 2>
...
End If
C. IF - THEN - ELSEIF
Sama seperti IF-THEN-ELSE, hanya jika kondisi tidak dipenuhi masih dilakukan pengujian
apakah suatu kondisi memenuhi syarat lainnya. Cara atau sintaks (syntax) penulisannya
sebagai berikut:
If <kondisi 1> Then
<perintah 1>
...
Elseif <kondisi 2> Then
Hal. 17
Hal. 18
C. EXIT
Untuk keluar secara langsung dari perulangan DO-LOOP, FOR-NEXT, WHILE-WEND. Cara
penulisannya sebagai berikut :
EXIT
EXIT
EXIT
EXIT
EXIT
FOR
DO
WHILE
SUB
FUNCTION
(keluar
(keluar
(keluar
(keluar
(keluar
dari
dari
dari
dari
dari
For-Next)
Do-Loop)
While-Wend)
Sub-Endsub)
suatu fungsi)
- selesai Modul 1 -
Hal. 19