Pengertian Mikrokontroler
Mikrokontroler merupakan sebuah sistem komputer yang seluruh atau sebagian besar elemennya
dikemas dalam satu chip IC, sehingga sering disebut
single chip microcomputer. Lebih lanjut, mikrokontroler merupakan sistem komputer yang
mempunyai satu atau beberapa tugas yang sangat spesifik, berbeda dangan PC (Personal
Computer) yang memiliki beragam fungsi. Perbedaan lainnya adalah perbandingan RAM dan
ROM yang sangat berbeda antara komputer dengan mikrokontroler.
Mikrokontroler adalah sebuah system microprocessor dimana didalamnya sudah terdapat CPU,
ROM, RAM, I/O, Clock dan peralatan internal lainnya yang sudah saling terhubung dan
terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip
yang siap pakai. Sehingga kita tinggal memprogram isi ROM sesuai aturan penggunaan oleh
pabrik yang membuatnya menurut Winoto (2008:3).
Teknologi yang digunakan pada mikrokontroler AVR berbeda dengan mikrokontroler seri MCS-
51. AVR berteknologi RISC (Reduced Instruction Set Computer), sedangkan seri MCS-51
berteknologi CISC (Complex Instruction Set Computer). Mikrokontroler AVR dapat
dikelompokkan menjadi empat kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga
ATMega, dan keluarga AT89RFxx. Pada dasarnya yang membedakan masing-masing kelas
adalah memori, kelengkapan periperal dan fungsi-fungsi tambahan yang dimiliki. Berikut ini
penjelasan lebih lengkap mengenai Mikrokontroler ATMega8535:
Mikrokontroler ATMega8535
A. Mikrokontroler ATMega8535
ATMega8535 adalah mikrokontroler CMOS 8 bit daya rendah berbasis arsitektur RISC.
Instruksi dikerjakan pada satu siklus clock, ATMega8535 mempunyai throughput mendekati 1
2
MIPS per MHz, hal ini membuat ATMega8535 dapat bekerja dengan kecepatan tinggi walaupun
dengan penggunaan daya rendah. Mikrokontroler ATmega8535 memiliki beberapa fitur atau
spesifikasi yang menjadikannya sebuah solusi pengendali yang efektif untuk berbagai keperluan.
Fitur-fitur tersebut antara lain:
Mikrokontroler AVR ATMega memiliki 40 pin dengan 32 pin diantaranya digunakan sebagai
port paralel. Satu port paralel terdiri dari 8 pin, sehingga jumlah port pada mikrokontroler
adalah 4 port, yaitu port A, port B, port C dan port D. Sebagai contoh adalah port A memiliki
pin antara port A.0 sampai dengan port A.7, demikian selanjutnya untuk port B, port C, port D.
Diagram pin mikrokontroler dapat dilihat pada gambar berikut:
Berikut ini adalah tabel penjelasan mengenai pin yang terdapat pada mikrokontroler
ATMega8535:
Berikut ini adalah penjelasan dari pin mikrokontroler ATMega8535 menurut port-nya masing-
masing:
1. Port A
Pin33 sampai dengan pin 40 merupakan pin dari port A. Merupakan 8 bit directional port I/O.
Setiap pin-nya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer
port A dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data
Direction Register port A (DDRA) harus di-setting terlebih dahulu sebelum port A digunakan.
Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang disesuaikan sebagai input,
atau diisi 1 jika sebagai output. Selain itu, pin-pin pada port A juga memiliki fungsi-fungsi
alternatif khusus seperti yang dapat dilihat dalam tabel:
Pin Keterangan
PA.7 ADC7 (ADC Input Channel 7)
PA.6 ADC6 (ADC Input Channel 6)
PA.5 ADC7 (ADC Input Channel 5)
PA.5 ADC4 (ADC Input Channel 4)
4
2. Port B
Pin 1 sampai dengan pin 8 merupakan pin dari port B. Merupakan 8 bit directional port I/O.
Setiap pin-nya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer
port B dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung. Data
Direction Register port B (DDRB) harus di-setting terlebih dahulu sebelum port B digunakan.
Bit-bit DDRB diisi 0 jika ingin memfungsikan pin-pin port B yang disesuaikan sebagai input,
atau diisi 1 jika sebagai output. Selain itu, pin-pin port B juga memiliki fungsi-fungsi alternatif
khusus seperti yang dapat dilihat dalam tabel:
Pin Keterangan
PB.7 SCK (SPI Bus Serial Clock)
PB.6 VISO (SPI Bus Master Input/Slave Output)
PB.5 VOSI (SPI Bus Master Output/Slave Input)
PB.4 SS (SPI Slave Select Input)
AIN1 (Analog Comparator Negative Input)OCC (Timer/Counter0 Output
PB.3
Compare Match Output)
PB.2 AIN0 (Analog Comparator Positive Input)INT2 (External Interrupt2 Input)
PB.1 T1 (Timer/Counter1 External Counter Input)
T0 (Timer/Counter0 External Counter Input)XCK (JSART External Clock
PB.0
Input/Output)
3. Port C
Pin 22 sampai dengan pin 29 merupakan pin dari port C. Port C sendiri merupakan port input
atau output. Setiap pin-nya dapat menyediakan internal pull-up resistor (dapat diatur per bit).
Output buffer port C dapat memberi arus 20 mA dan dapat mengendalikan display LED secara
langsung. Data Direction Register port C (DDRC) harus di-setting terlebih dahulu sebelum port
C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang disesuaikan
sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki fungsi-
fungsi alternatif khusus seperti yang dapat dilihat dalam tabel II.6:
Pin Keterangan
PC.7 TOSC2 (Timer Oscillator Pin 2)
PC.6 TOSC1 (Timer Oscillator Pin 1)
PC.1 SDA (Two-Wire Serial Bus Data Input/Output Line)
PC.0 SCL (Two-Wire Serial Bus Clock Line)
4. Port D
Pin 14 sampai dengan pin 20 merupakan pin dari port D. Merupakan 8 bit directional port I/O.
Setiap pin-nya dapat menyediakan internal pull-up resistor (dapat diatur per bit). Output buffer
port D dapat memberi arus 20 mA dan dapat mengendalikan display LED secara langsung.
Data Direction Register port D (DDRD) harus di-setting terlebih dahulu sebelum port D
digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang disesuaikan
sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki fungsi-
fungsi alternatif khusus seperti yang dapat dilihat dalam tabel:
Pin Keterangan
PD.0 RDX (UART input line)
PD.1 TDX (UART output line)
PD.2 INT0 (external interrupt 0 input)
PD.3 INT1 (external interrupt 1 input)
PD.4 OC1B (Timer/Counter1 output compareB match output)
PD.5 OC1A (Timer/Counter1 output compareA match output)
PD.6 ICP (Timer/Counter1 input capture pin)
PD.7 OC2 (Timer/Counter2 output compare match output)
Pada diagram blok ATMega8535 digambarkan 32 general purpose Working register yang
dihubungkan secara langsung dengan Arithmetic Logic Unit (ALU). Sehingga memungkinkan
dua register yang berbeda dapat diakses dalam satu siklus clock.
Bahasa pemprograman BASIC dikenal di seluruh dunia sebagai bahasa pemrograman handal,
cepat, mudah dan tergolong kedalam bahasa pemprograman tingkat tinggi. Bahasa BASIC
adalah salah satu bahasa pemprograman yang banyak digunakan untuk aplikasi mikrokontroler
karena kemudahan dan kompatibel terhadap mikrokontroler jenis AVR dan didikung oleh
compiler software berupa BASCOM-AVR.
6
Setiap bahasa pemprograman mempunyai standar penulisan program. Konstruksi dari program
bahasa BASIC harus mengikuti aturan sebagai berikut:
$regfile = header
inisialisasi
deklarasi variabel
deklarasi konstanta
Do
pernyataan-pernyataan
Loop
end
Pengarah preprosesor
Tipe Data
Tipe data merupakan bagian program yang paling penting karena sangat berpengaruh pada
program. Pemilihan tipe data yang tepat maka operasi data menjadi lebih efisien dan efektif.
No Tipe Jangkauan
12345 BitByteIntegerWordLong
0 atau 10 255-32,768
32,7670 65535-
6 Single
2147483648 2147483647
7
7 Double
1.5 x 10^45 3.4 x 10^38
8 String
5.0 x 10^324 to 1.7 x
10^308
>254 by
Konstanta
Konstanta merupakan suatu nilai dengan tipe data tertentu yang tidak dapat diubah-ubah selama
proses program berlangsung. Konstanta harus didefinisikan terlebih dahulu diawal program.
Variabel
Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu nilai tertentu di
dalam proses program yang dapat diubah-ubah sesuai dengan kebutuhan. Nama dari variable
terserah sesuai dengan yang diinginkan namun hal yang terpenting adalah setiap variabel
diharuskan :
1. Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf, max
32 karakter.
2. Tidak boleh mengandung spasi atau symbol-simbol khusus seperti : $, ?, %, #, !, &, *, (,
), -, +, = dan lain sebagainya kecuali underscore.
3. Deklarasi
Deklarasi sangat diperlukan bila akan menggunakan pengenal (identifier) dalam suatu program.
Deklarasi Variabel
Deklarasi Konstanta
Deklarasi Fungsi
8
Fungsi merupakan bagian yang terpisah dari program dan dapat dipanggil di manapun di dalam
program. Fungsi dalam Bahasa Basic ada yang sudah disediakan sebagai fungsi pustaka seperti
print, input data dan untuk menggunakannya tidak perlu dideklarasikan.
Deklarasi buatan
Fungsi yang perlu dideklarasikan terlebih dahulu adalah fungsi yang dibuat oleh programmer.
Bentuk umum deklarasi sebuah fungsi adalah :
Operator
Operator Penugasan
Operator Aritmatika
* : untuk perkalian
/ : untuk pembagian
+ : untuk pertambahan
: untuk pengurangan
Operator hubungan digunakan untuk membandingkan hubungan dua buah operand atau sebuah
nilai / variable, misalnya :
= Equality X = Y
Operator Logika
Operator logika digunakan untuk membandingkan logika hasil dari operator-operator hubungan.
Operator logika ada empat macam, yaitu :
AND Conjunction
OR Disjunction
XOR Exclusive or
Operator Bitwise
Operator bitwise digunakan untuk memanipulasi bit dari data yang ada di memori. Operator
bitwise dalam Bahasa Basic :
Pernyataan ini digunakan untuk melakukan pengambilan keputusan terhadap dua buah bahkan
lebih kemungkinan untuk melakukan suatu blok pernyataan atau tidak. Konstruksi penulisan
pernyatan IF-THEN-ELSE-END IF pada bahasa BASIC ialah sebagai berikut:
Setiap penggunaan pernyataan IF-THEN harus diakhiri dengan perintah END IF sebagai akhir
dari pernyatan kondisional.
10
Pernyataan ini digunakan untuk melakukan pengambilan keputusan terhadap banyak kondisi.
Konstruksi penulisan pernyatan SELECT-CASE-END SELECT pada bahasa BASIC ialah
sebagai berikut:
khusus, misalnya LCD untuk menampilkan karakter pada LCD, PRINT untuk
12
Blank (spasi)
'
Single quotation mark (apostrophe)
*
Asterisks (simbol perkalian)
+
Plus sign (simbol penjumlahan)
,
Comma
-
Minus sign (simbol pengurangan)
.
Period (decimal point)
/
Slash (simbol pembagian) ditangani seperti \
:
Colon
"
Double quotation mark
;
Semicolon
<
Kurang dari
=
Sama dengan
>
Lebih dari
\
Backslash (simbol pembagian integer)
seberapa besar memori yang diperlukan untuk menyimpan variabel tersebut. Tabel 2-2
menunjukkan tipe data pada Bascom beserta ukuran dan rentangnya.
String
maksimum 254 byte
2.3 Variabel
Variabel adalah simbol yang digunakan untuk mewakili suatu nilai. Variabel digunakan
sebagai tempat penyimpanan data atau penampung data sementara. Variabel numeric
11
hanya dapat diisi nilai numerik (bit, byte, integer, word, long, dan single). Isi dari suatu
variabel numerik dapat berupa :
Suatu nilai konstan
Dasar Pemrograman Bascom-8051
A=5
C = 1.1
Nilai variabel numerik lain
A=B
14
Temp = A + 5
Pada Bascom terdapat beberapa aturan mengenai penamaan suatu variabel, yaitu :
Nama suatu variabel maksimum terdiri atas 32 karakter dan dapat berupa huruf
ataupun angka.
Karakter pertama variabel haruslah berupa huruf.
Nama variabel tidak boleh menggunakan kata-kata yang dipergunakan Bascom
sebagai perintah, pernyataan, register dan operator (misal AND, OR, DIM, P1
TIMER0 dan lain sebagainya)
Sebelum digunakan suatu variabel haruslah dideklarasikan terlebih dahulu tipe data yang
dipergunakan dengan menggunakan pernyataan DIM
DIM A As Byte
DEFBYTE A
DEFWORD B;C;D
Suatu variabel dapat mempunyai nama lain atau alias. Umumnya alias digunakan untuk
mengganti variabel standar dengan nama yang lebih mudah diingat. Hal ini akan berguna
pada saat membuat program yang panjang dan kompleks, jika terdapat perubahan
penggunaan pin atau port, cukup diganti pada pernyataan Alias.
2.4 Konstanta
Konstanta adalah variabel yang mempunyai nilai konstan selama program dijalankan.
Untuk mendeklarasikan suatu konstanta dapat digunakan dua cara, yaitu menggunakan
Dim atau Const
Dim A As Const 5
15
2.5 Larik
Larik atau array adalah kumpulan variabel dengan nama dan tipe data yang sama.
Untuk membedakan satu variabel dengan variabel lainnya digunakan indeks. Indeks
haruslah berupa angka dengan tipe data byte, integer atau word, dengan nilai minimal 1
(bukan 0). Pendeklarasian larik mirip seperti variabel biasa, hanya ditambahkan jumlah
komponen lariknya.
2.7 Operator
Operator digunakan untuk melakukan operasi terhadap bilangan. Pada Bascom
operator dibedakan menjadi operator aritmetik, operator relasional, dan operator logika.
Operator aritmatik adalah operator yang digunakan dalam kalkulasi, yaitu +
(penjumlahan), - (pengurangan), * (perkalian, / (pembagian), \ (pembagian integer), MOD
(modulo = sisa dari pembagian). Operator relasional digunakan untuk membandingkan dua
nilai, yang memberikan hasil benar (1) atau salah (0) dan dapat digunakan untuk membuat
keputusan.
Sama dengan
X=Y
<>
Tidak sama dengan
X<>Y
<
Lebih kecil
X<Y
>
Lebih besar
X>Y
<=
Lebih kecil atau sama dengan
X<=Y
>= Lebih besar atau sama dengan
X>=Y
Operator logika digunakan untuk menguji suatu pola bit tertentu, manipulasi bit
atau operator Boolean. Misal operator AND dapat digunakan untuk mengabaikan semua
bit dalam suatu byte kecuali satu bit untuk memantau status bit tersebut
Syntaksis If Then
If <syarat> Then
<Pernyataan 1>
<Pernyataan 2>
Else
<Pernyataan 3>
<Pernyataan 4>
End If
<Pernyataan 3>
<Pernyataan 4>
Else
<Pernyataan 5>
<Pernyataan 6>
End If
Sintaksis Do Loop
Do
<Pernyataan 1>
<Pernyataan 2>
Loop