2.5 General Purpose Register AVR
Gambar 2.13 General Purpose Register AVR
Gambar diatas menunjukan struktur 32 general purpose register yang terdapat dalam CPU, masing – masing register ditentukan juga dalam alamat memori data,
dipetakan kedalam 32 lokasi pertama data user . Walaupun tidak secara fisik diimplementasikan sebagai lokasi SRAM, namun pengaturan ini memberikan
fleksibilitas dalam mengakses register, seperti register pointer X, Y dan Z dapat diset menuju index dari register file manapun.
2.6 RISC Reduce Instruction Set Computing
RISC Reduce Instruction Set Computing yang jika diterjemahkan berarti “komputasi kumpulan instruksi yang disederhanakan” merupakan sebuah
arsitektur komputer dengan instruksi – instruksi dan jenis eksekusi yang paling sederhana. Arsitektur ini digunakan pada komputer dengan kinerja tinggi seperti
komputer vektor. Selain pada komputer vektor, desain ini juga diimplementasikan
Universitas Sumatera Utara
pada prosessor komputer lain seperti pada beberapa mikroprosesor Intel 960, Itanium IA64 dari IntelCorporation, Alpha AXP dari DEC, R4x00 dari MIPS
Corporation, PowerPC dan Arsitektur POWER dari International Business Machine. Selain itu, RISC juga umum dipakai pada Advanced RISC
MachineARM dan StrongARM termasuk di antaranya adalah Intel XScale, SPARC dan UltraSPARC dari Sun Microsystems, serta PA-RISC dariHewlett-
Packard. Desain RISC pertama kali digagas oleh John Cocke, peneliti dariIBM di
Yorktown, New York pada tahun 1974 saat ia membuktikanbahwa sekitar 20 instruksi pada sebuah prosesor ternyata menangani sekitar 80 dari keseluruhan
kerjanya. Komputer pertama yangmenggunakan konsep RISC ini adalah IBM PCXT pada era 1980-an.Istilah RISC sendiri pertama kali dipopulerkan oleh
David Patterson,pengajar pada University of California di Berkely.
2.6.1 Arsitektur Mikrokontroler AVR RISC
Gambar 2.14 Arsitektur Mikrokontroler AVR RISC
Universitas Sumatera Utara
Dari gambar diatas, AVR menggunakan arsitektur Harvard dengan memisahkan antara memori dan bus untuk program dan data
untuk memaksimalkan kemampuan dan kecepatan. Instruksi dalam memori program dieksekusi dengan pipelining single level. Dimana ketika satu instruksi
dieksekusi, instruksi berikutnya diambil dari memori program.Konsep ini mengakibatkan instruksi dieksekusi setiap clock cycle. CPUterdiri dari 32x8 bit
general purpose register yang dapat diakses dengancepat dalam satu clock cycle, yang mengakibatkan operasi Arithmetic Logic Unit ALU dapat dilakukan dalam
satucycle. Pada operasi ALU dua operand berasal dari register , kemudian operasi dieksekusi danhasilnya disimpan kembali pada register dalam satu clock cycle.
Operasi aritmatik dan logic pada ALU akan mengubah bit – bit yang terdapat pada Status Register SREG. Proses pengambilan instruksi dan pengeksekusian
instruksi berjalan secara parallel, dapat dilihat pada gambar dibawah ini :
Gambar 2.15 Pengambilan instruksi dan pengeksekusian secara parallel
2.7 Variabel
Variabel adalah tempat untuk menyimpan dan mengakses datayang mewakili memori dalam mikrokontroler. Variabel harusdideklarasikan dengan
tipe data beserta nama variabel yang akandigunakan. Tiap tipe data mempunyai
Universitas Sumatera Utara
jangkauan bilangan yang dapat disimpan, hal ini akibat dari byte memori yang dipesan dan bentuk bilangan bertanda atau tidak. Misalnya unsigned char oleh
kompilerdisediakan 1 byte memori RAM sehingga hanya bisa menampung bilangan dari 0 sampai dengan 255 sedangkan jika bertanda dari -128sampai
dengan 127. Tipe Data Sebetulnya tidak ada bilangan negatif pada mikrokontroler
namunhanya kesepakatan saja, perbedaan bilangan negatif dengan positif dan mikrokontroler terletak pada bit msb atau bit paling kanan tipe data
yangdigunakan dimana msb=0 jika bilangan itu positif dan sebaliknya msb=1 jika bilangan itu adalah negatif.Pada variabel dikenal sebuah variabel yang bernama
variabel global, variabel global adalah variabel yang dapat diakses oleh seluruhblok fungsi dalam program. Pendeklarasian variabel gobal ini
biasanyadiletakan diatas semua program, nilai variabel global berubah tiap kalivariabel itu diakses dan variabelnya tidak hilang menetap. Nilai yang sedang
terjadi adalah nilai terakhir ketika variabel itu diakses baik oleh fungsi main maupun fungsi – fungsi yang lain.Selain variabel global, ada juga variabel lokal.
Variabel lokal adalah variabel yang hanya dapat diakses oleh blok fungsi yangbersangkutan atau terbatas didalam tanda {} deklarasi fungsi itu berada.
Pendeklarasian variabel lokal ini berada pada bagian atas didalam blok fungsi yang menggunakan variabel tersebut. Variabel lokal akandihilangkan jika
eksekusi program keluar dari fungsi yang bersangkutandan nilainya pun hilang. Jika menghendaki nilai variabel lokal tidak hilangmaka dalam deklarasi variabel
harus ditambahkan static diikuti tipe datadan nama variabelnya.
Universitas Sumatera Utara
2.8 CodeVisionAVR