Anda di halaman 1dari 4

Rangkuman Mikrokontroller

Raffel Ravionaldo

181344025

I. Teori
Pada Atmega 8535, kita dapat mencari nilai tertinggi/terendah pada suatu alamat memory
maupun pada common register , hal yang dibutuhkan adalah pointer, untuk common register dan
alamat memory kita dapat menggunakan semua jenis pointer, baik itu Pointer X, Y dan Z. berikut
contoh program untuk mencari nilai tertinggi pada common register :

Dan Berikut mencari nilai terendah pada alamat memori tertentu :


Dari kedua kodingan diatas, didapatkan fakta bahwa untuk menunjuk suatu alamat maka
suatu pointer harus dideklarasikan alamat awal memori yang diinginkan dan diakhiri dengan CPI
pointer dengan alamat akhir memori, untuk Common register beralamat awal 0 sampai 1F,
kemudian sintaks yang digunakan untuk mengambil data pada alamat memori adalah LD karena
load data tidak berasal dari suatu label.
Pada Atmega 8535 Terdapat Status Register(SREG) yang tersusun dari :

I T H S V N Z C
Bit ke : 7 6 5 4 3 2 1 0
Yang perlu diketahui adalah pada program baru di run maka semua nilai bit pada SREG
adalah 0.
1. Global Interrupt Register (I).
Jika Bit pada I adalah 1 , maka fasilitas interupsi dapat dijalankan, Bit akan
bernilai 0 ketika interupt dari hardware telah dilakukan. Pada SREG ini untuk
mengatur nilainya kita dapat menggunakan sintaks SEI (tanpa immediate/common
register) untuk membuat I = 1 dan sintaks CLI untuk membuat I=0.
2. Bit Copy Storage (T)
Nilai pada SREG ini dipengaruhi oleh 2 sintaks, yaitu :
A. BLD (Bit Load from The T bit to a Common Register)
Contoh sintaksnya adalah :
LDI R20 , 0xFF ; anggap saat ini T = 0
BLD R20 , 5
R20 yang nilai nya FF setelah melewati sintaks BLD menjadi :
1111 1111  1101 1111 = DF dan nilai T tidak berubah.
B. BST (Bit store from common register to T)
Contoh sintaksnya adalah :
LDI R20 , 0xAB ; anggap saat ini T = 0
BST R20 , 7
R20 yang nilai nya AB yang bilangan binernya : 1010 1011 dan bit ke 7
adalah 1 , maka nilai T yang awalnya adalah 0 menjadi 1
BST R20 , 2  T dari 1 menjadi 0.
Karena pada common register bernilai 8 bit , maka nilai minimum dari BST adalah
0 dan maksimal adalah 7 (pada sebelah kanan) , bila tidak dalam jangkauan itu
maka akan terjadi error.
3. Half Carry Flag (H)
Pada operasi pengurangan, akan bernilai 1 jika terjadi borrow pada bit ke 3, dan
pada operasi penjumlahan akan bernilai 1 jika terdapat carry pada bit ke 3, jika
kedua kondisi tidak tercapai maka H = 0.
4. Sign Bit (S)
Nilai bit pada SREG ini merupakan hasil XOR dari bit SREG N dan V , berikut
Tabel XOR dengan input 2 bit :
Input Output
N V S
0 0 0
0 1 1
1 0 1
1 1 0
5. Two Complement Overflow Flag (V)
SREG ini mendukung proses aritmatika komplemen dua, akan bernilai 0 jika
operasi logika digunakan. Dan bernilai 1 jika pada proses aritmatika jika
komplemen 2 menghasilkan overflow, seperti contoh pada sintaks ADD bila hasil
melebihi FF (ada Carry pada penjumlahan 8 bit) maka bernilai 1 dan pada sintaks
sub bila hasilnya dibawah -128(des)/80(heksa) maka V = 1 (Karena
-128(des)/80(heksa) dijadikan komplemen 2 menjadi FF)
6. Negative Flag (N)
Pada operasi logika, bila MSB = 1 maka N akan bernilai 1 dan pada aritmatika
bila hasilnya negatif maka N = 1. Selain itu maka bernilai 0.
7. Zero Flag (Z)
Bila pada operasi Aritmatika dan operasi logika menghasilkan nilai 0x00, maka
Zero flag akan bernilai 1, jika tidak menghasilkan 0x00 maka Zero flag akan
bernilai 0.
8. Carry Flag (C)
Pada operasi pengurangan, akan bernilai 1 jika bilangan pengurang lebih besar
dari bilangan dikurang dan pada operasi penjumlahan akan bernilai 1 jika terdapat
carry pada higher bit(MSB).
Berikut 32 Common Register berserta fungsinya pada CPU
Working Register berarti ada beberapa sintaks yang dikhususkan untuk register ini,
seperti sintaks LDI yang hanya bisa digunakan oleh R16-R31, Lalu X-Register , Y-Register
dan Z-Register dapat menunjuk ke alamat data area namun khusus untuk Z-Pointer dapat
digunakan juga untuk menunjuk ke alamat program area.
Stack digunakan untuk :
1. Menyimpan data sementara
2. Menyimpan variabel lokal
3. Menyimpan alamat pengirim setelah interupsi dan panggilan subrutin
Jika kita menggunakan sintaks PUSH , maka nilai Stack Pointer berkurang satu, dan
akan berkurang dua ketika alamat pengirim didorong ke Stack dengan panggilan subrutin
atau interupsi.
Jika kita menggunakan sintaks POP , maka nilai Stack Pointer bertambah satu, dan
akan bertambah dua ketika data dimunculkan dari stack dengan Kembali ke subroutine
menggunakan sintaks RET atau RETI.
AVR Stack Pointer diimplementasikan sebagai dua register 8-bit di ruang I / O, berikut
tabel dari SPL dan SPH :

Dari gambar diatas didapatkan data bahwa Stack Pointer bernilai 10 bit, dan SPL
merupakan 8 bit lower sehingga nilai nya berentang antara 0-FF dan SPH 2 bit higher
sehingga rentang nilainya antara 0 – 3.

II. Praktikum
Pada Atmega 8535 kita dapat menjumlahkan bilangan desimal, namun hal yang harus
kita kuasai terlebih dahulu adalah memahami konsep dari BCD adder, hal ini
dikarenakan pada Atmega 8535 tidak ada sintaks yang bisa merubah nilai dari heksa ke
desimal, oleh sebab itu kita perlu membuat subroutine DAA sendiri, berikut konsep dari
DAA yang dibutuhkan :
1. Ketika HF = 1 , maka angka satuan ditambah 6.
2. Ketika satuan/puluhan nilainya diatas 9 , maka ditambah 6.
3. Ketika CF = 1 , maka angka puluhan ditambah 6.

Anda mungkin juga menyukai