Setelah pada waktu yang lalu kita mencoba untuk mempersiapkan materi (hardware maupun software) untuk belajar mikrokontroler AVR, sekarang kita mencoba belajar AVR dengan menggunakan bahasa assembly. Pada dasarnya, sistem digital hanya mengerti satu jenis bahasa, yaitu bahasa mesin, yang berupa bilangan biner ( 0 dan 1). Karena bentuknya yang sederhana, bahasa mesin sulit untuk dimengerti oleh manusia. Oleh karena itu dibuatlah suatu jenis bahasa yang cukup mendekati bahasa mesin, namun bisa dimengerti oleh manusia, yaitu bahasa assembly. Dengan memuat singkatan (kebanyakan menggunakan bahasa Inggris dan dalam bentuk terstruktur), bisa dimungkinkan untuk mempelajari instruksi yang diperlukan untuk menyalakan sebuah LED misalnya.
Bahasa assembly yang telah disusun akan dikonversi kedalam bahasa mesin yang berupa hexadesimal melalui sebuah perangkat lunak yang disebut dengan kompiler. Perancang tidak perlu repot dalam proses konversi ini, karena dengan beberapa klik saja konversi dalam beberapa detik akan selesai. Salah satu perangkat lunak yang digunakan untuk membuat program, kompiler, dan simulasi untuk mikrokontroler AVR adalah AVR studio. Berikut gambar tampilan dari AVR Studio

Struktur dasar bahasa assembly adalah:
mnemonic operand
Mnemonic merupakan singkatan instruksi, sedangkan operand merupakan data yang diperlukan untuk instruksi yang bersangkutan. Operand dapat berupa dua register, satu register, label, konstanta, atau bahkan tidak diperlukan operand, tergantung jenis instruksinya. Sebagai contoh
Idi r16, $F0
Instruksi diatas menyatakan untuk melalukan pemuatan data langsung (ldi= load immediate) pada register r16 dengan konstanta F0 (hexadesimal, hexadesimal ditandai dengan dollar $) atau 240 (desimal), instruksi ini secara singkat bisa diartikan mengisi r16 dengan kostanta (angka) bernilai F0.
Jika diperhatikan lebar semua register adalah 8 bit, artinya register hanya dapat diisi dengan data maksimum 255 desimal. Instruksi seperti ldi r16, 300 dapat menyebabkan kesalahan tak terduga, meskipun sintaks yang dipakai benar. Selain dengan menggunakan perintah diatas (hexadesimal), penulisan bilangan juga dapat menggunakan sistem bilangan desimal dan biner
Idi r16, 240 ;sistem angka desimal
Idi r16, 0b11110000 ;sistem angka biner
Tabel lengkap seluruh instruksi mikrokontroler AVR dapat dilihah di Atmel. Tetapi tidak semua mikrokontroler AVR memiliki instruksi yang sama. Setiap mikrokontroler memiliki datasheet yang didalamnya terdapat Instruction Set Summary. Sebagai contoh mikrokontroler ATTiny 2313 tidak memiliki instruksi perkalian mul.
- Fitur Dasar Mikrokontroler
Prinip dasar dalam menggunakan fitur2 yang terdapat dalam mikrokontroler dilakukan dengan cara
- menentukan mode pada register kendali
- memasukkan data pada register data
- mengaktifkan fitur
Register kendali pada setiap fitur bisa berjumlah lebih dari satu register, misalnya register untuk pengaturan Timer/Counter 1, yang memiliki 9 register kendali, akan tetapi tidak semuanya dipakai, hanya dalam hal2 tertentu register2 tersebut dipakai..Beberapa fitur juga tidak mensyaratkan adanya data, karena mikrokontroler tersebut justru menerima data dari luar (misal register UDR pada komunikasi UART). Setiap mikrokontroler memiliki register kendali dan data yang berbeda, sesuai dengan fitur yang diberikan oleh vendor, namun ada mikrokontroler yang memiliki register data dan kendali sampai dengan 63 register. Register2 ini memiliki alamat masing2, namun dalam perancangan program kita bisa mengakses register ini dengan memanggil nama dari register tersebut. Register2 tersebut dinamakan register masukan/keluaran (register I/O). Untuk lebih jelas mengenai register masing2 mikrokontroler dapat dilihat pada datasheet masing2 mikrokontroler.
Dalam mikrokontroler juga terdapat register lain yang menandakan status dari fitur yang bersangkutan, yang sering disebut dengan register flag. Register ini digunakan untuk mengetahui status dari fitur yang sedang dijalankan, misalnya untuk memantau apakah terjadi interupsi. Hal ini sangat bermanfaat dalam instruksi2 percabangan. Yang termasuk dalam register ini antara lain:
- SREG (Status Register)
- GIFR (General Interrupt Flag Register)
- TIFR (Timer Interrupt Flog Register)
- MCUCSR (MCU Control and Status Register) – empat bit pertama

.org 0
rjmp mulai
mulai:
Idi r16, low(RAMEND)
out SPL, r16
ser r16 ; r16 = $FF
out DDRC, r16 ; PORTC sebagai keluaran
Idi r16, 0bl0101010 ; data PORTC = 0b10101010 (nyalakan LED)
out PORTC, r16
clr r17
out DDRD, r17,
out PORTD, r16 ; PORTD sebagai masukan
cek:
in r16, PIND
cpi r16, 0b11111110 ; saklar pada D.0 (aktif low) sudah ditekan?
Breq keypress
Rjmp cek
Keypress:
Out PORTC, r17 ; padamkan LED
Rjmp cek
2.
3.
4.
Mei 2, 2008 pukul 9:18 am |
bisa ga bw bikin musik 8bit?
Pada varian tertentu bisa membuat musik 8 bit (seperti ATmega128), namun akan menghabiskan banyak memori, baik memori yang akan digunakan untuk menyimpan data (musik), maupun memori program yang digunakan untuk mengolah dan memanipulasi musik tersebut, telebih, untuk memanipulasi musik, diperlukan bahasa pemrograman tingkat tinggi (C, Basic), yang notabene rakus memori.
Oktober 5, 2009 pukul 11:47 am |
tolong dong contoh/ jenis register yang dapat dilihat oleh pemakai dan register kendali…
terima kasih