You are on page 1of 11

PENGENALAN AVR STUDIO 4

DAN PROGRAM SEDERHANA


Laporan Praktikum Mikrokontroller

Disusun Oleh :

Muhammad Zaki Zulfiqar (161344019)


Kelas : 3NK – 2

PROGRAM STUDI DIPLOMA IV TEKNIK TELEKOMUNIKASI


JURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI BANDUNG


2018/2019
I. Judul
Pengenalan Avr studio 4 dan Program Sederhana

II. Tujuan Praktikum


 Mahasiswa mengenal AVR Studio 4.0
 Mahasiswa mengetahui dan menguasai set instruksi ATmega8535
 Mahasiswa mampu membuat program sederhana pada software AVR Studio 4.0
 Mahasiswa mengerti dan memahami cara kerja program yang dibuat
 Mahasiswa mampu membuat program pertambahan
 Mahasiswa mampu membuat program perkalian
III. Landasan Teori

Set Instruksi

Terdapat banyak set instruksi pada ATMega 8535. Namun ada beberapa instruksi yang
sering digunakan dalam pemograman, diantaranya :

• LDI (Load Immediate) : Memasukkan data 8 bit ke dalam r16 – r31


• LPM (Load Program Memory) : Me-load data dari memori program yang alamatnya ada
pada Z ke dalam r0
• ADD (Add Without Carry) : Menjumlahkan dua register tanpa Carry
• ADC (Add With Carry) : Menjumlahkan dua register dengan Cary
• RJMP (Relative Jump) : Melompat ke suatu label yang diberi nama
• MOV (Copy Register) : Menyalin isi dari suatu register ke register lain
• BRNE (Branch If Not Equal) : Melompat ke suatu label dengan melihat Zero Flag
• DEC (Decrement) : Mengurangkan dengan satu isi register
• MUL (Multiply Unsigned) : Mengalikan dua register dan hasil perkaliannya disimpan di
r0 : r1
• CPI (Compare With Immediate) : Membandingkan isi dari suatu register dengan konstanta.
Register yang dipakai hanya r16 – r31.
• ANDI (Logical AND With Immediate) : Melakukan operasi AND pada suatu register
dengan suatu konstanta. Register yang dipakai hanya r16 – r31
• BRCC (Barry If Cary Cleared) : Melompat ke suatu label jika Cr = 0
• BRCS (Barry If Carry Set) : Melompat ke suatu label jika Cr = 1
• RCall (Relative Call To Subroutine) : Memanggil subrutin
• RET : Mengakhiri program subrutin dan kembali melanjutkan program utama

IV. ALAT dan BAHAN


 komputer atau laptop
 Software AVR Studio 4.0
 Set Instruksi ATmega8535 (Atmel)

V. LANGKAH KERJA
a. Membuka software AVR Studio 4.0
b. Membuat project baru
c. Membuat program untuk menyelesaikan soal-soal berikut:
d. Selanjutnya memeriksa apakah terjadi error atau kesalahan dengan meng-assembler
program tersebut dengan menekan tombol [F7] atau menekan ikon assembler.
e. Apabila tidak terjadi error, maka tekan ikon assembler + run, untuk menjalankan
program.
f. Lalu mengisi data pada register atau data area sesuai perintah pada soal
g. Selanjutnya tekan [F11] untuk menjalankan program secara bertahap atau step by step.
h. Mengamati perubahan yang terjadi hingga hasil yang diinginkan keluar.
i. Membuat kesimpulan
VI. HASIL PRAKTIKUM
1.Buat Program untuk mengisi register register berikut?
R0 =7fh,R1=44h,R2 = 9ch ,R3=A2h ,R4=FFh ,R5 = 80h

.include"m8535def.inc" ;Assembler directive


.org 0x0000 ;inisiasi untuk lokasi memory asal alamat 0
rjmp main ;Label main

main: ;Header permulaan


ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16

ldi r20,0x7f ;Load data 0x7f ke reg r20


mov r0,r20 ;memindahkan data sementara dari reg r20 ke r0

ldi r21,0x4a ;Load data 0x4A KE reg r21


mov r1,r21 ;memindahkan data r21 ke r1

ldi r22,0x9c ;load data 0x9c ke reg r22


mov r2,r22 ;memindahkan data dari r22 ke r2

ldi r23,0xa2 ;load data 0xa2 ke register r23


mov r3,r23 ;memindahkan data dari r23 ke r3

ldi r24,0xff ;load data 0xff ke register r24


mov r4,r24 ;memindahkan data dari reg r24 ke r4

ldi r25,0x00 ;load data 0x000 ke r25


mov r5,r25 ;memindahkan data dari reg r25 ke r5

loop:
rjmp loop

Data yang tersimpan di register:


2.Buat program untuk melakukan operasi aritmatika berikut
R6=R0+R2 R7=R1+R4 R8=R3+R5
R9=R4-R2 R10=R2-R1 R24=R17+R18+R19-R29

.include"m8535def.inc" //assembler directive


.org 0x0000 //alamat asal memory untuk program
rjmp main //label utama

main: //header standar


ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
//konstanta register
ldi r20,0x7F //Load data 0x7F ke reg r20
mov r0,r20 //Memindahkan r20 ke r0
ldi r21,0x4A //Load data 0x4A ke reg r21
mov r1,r21 //Memindahkan r21 ke r1
ldi r22,0x9C //Load data 0x9C ke reg r22
mov r2,r22 //Memindahkan r2 ke r22
ldi r23,0xA2 //Load data 0xA2 ke reg r23
mov r3,r23 //Memindahkan r3 ke r23
ldi r24,0Xff //Load data 0Xff ke reg r24
mov r4,r24 //Memindahkan r4 ke r24
ldi r25,0x00 //Load data 0x00 ke reg r25
mov r5,r25
//opr aritmatik
ldi r16,0x00 //Load data 00 ke reg r16
//r6=r0+r2
mov r6,r2 //Memindahkan r 2 ke r6
add r6,r0 //menambahkan r6 dengan r0
adc r11,r16 //menambahkan carry hasil dari r6 ditambah r2 ,r16 bernila 000 pada awalnya
//r7=r1+r4
mov r7,r4 //Memindahkan r4 ke r7
add r7,r1 //menambahkan r7 dengan r1

adc r12,r16 //menambahkan carry hasil dari r7 ditambah r4 ,r16 bernila 000 pada awalnya
//r8=r3+r5
mov r8,r5 //Memindahkan r5 ke r8
add r8,r3 // menambahkan r8 dengan r3

adc r13,r16 //menambahkan carry hasil dari r8 ditambah r3 ,r16 bernila 000 pada awalnya
//r9=r4-r2
mov r9,r4 //Memindahkan r4 ke r9
sub r9,r2 /mengurangkan r2 dengan r9
//r10=r2-r1
mov r10,r2 //Memindahkan r2 ke r10
sub r10,r1 //mengurangkan r1 dengan r10

end:
rjmp end

3.Buatkah program untuk melakukan aritmatika


R29=(r17+r18)*(r19-r20),R17=87h,R18=30h,R19=a6h,R20=76h
//rx=(ra+rb)*(rc-rd)

.include"m8535def.inc"
.org 0x0000
rjmp main

main:
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16
//input konstanta reg
ldi r17,0x87
ldi r18,0x30
ldi r19,0xA6
ldi r20,0x76
ldi r16,0x00

mov r2,r17
add r2,r18

mov r4,r19
sub r4,r20

mul r2,r4

end:
rjmp end

4.a.membuat program perkalian dengan perkalian berulang r1*r0 .r0=77h


R1=44h
//Loop Adding Opr 77H*44H
.include"m8535def.inc"
.org 0x0000
rjmp main

main:
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16

ldi r16,0x77
mov r0,r16
ldi r17,0x44
mov r1,r17
ldi r18,0x00

loop: dec r17


add r9,r0
adc r8,r18
cpi r17,0
brne loop
nop
end:
rjmp end

4.b.Sama seperti nomor 4a hanya saja menggunakan instruksi mul


//MUL opr 77H*44H
.include"m8535def.inc"
.org 0x0000
rjmp main

main:
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16

ldi r16,0x77
ldi r17,0x44

mul r16,r17

mov r8,r1
mov r9,r0

mov r0,r16
mov r1,r17

end:
rjmp end

5.Mengalikan data biner 16 bit dengan 8 bit pada register (r18:r17)*(r19) hasil disimpan pada r4:r3:r2
.include "m8535def.inc"
.org 0x0000
rjmp main
main:
ldi r16,low(ramend)
out spl,r16
ldi r16,high(ramend)
out sph,r16

//program
ldi r18,0x4F
ldi r17,0x9C
ldi r19,0x88
ldi r20,0x00

mov r4,r20
mov r3,r20
mov r2,r20
mov r21,r19

//penjumlahan berulang
berulang:
add r2,r17
adc r3,r18
adc r4,r20
dec r21
brne berulang

//instruksi mul
ldi r26,0x00

mul r17,r19
mov r23,r1
mov r22,r0
mul r18,r19
mov r25,r1
mov r24,r0
add r23,r24
adc r26,r25

mov r7,r26
mov r6,r23
mov r5,r22

loop:
rjmp loop

You might also like