General Purpose Register AVR Variabel

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