Top Banner
1 BAB I AVR ATMega 8535L 1.1 Sekilas Tentang AVR AVR : Alf and Vegard RISC atau AVR : Advanced Virtual RISC RISC: Reduced Instruction Set Computer Arsitektur mikrokontroler jenis AVR pertamakali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan. Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang termultipleksi. Mikrokontroler AVR menggunakan teknologi RISC dimana set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya. Pada awal era industri komputer, bahasa pemrograman masih menggunakan kode mesin dan bahasa assembly. Untuk mempermudah dalam pemrograman para desainer komputer kemudian mengembangkan bahasa pemrograman tingkat tinggi yang mudah dipahami manusia. Namun akibatnya, instruksi yang ada menjadi semakin komplek dan membutuhkan lebih banyak memori. Dan tentu saja siklus eksekusi instruksinya menjadi semakin lama. Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi berukuran 16 bit dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32 bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin membutuhkan 12 periode clock. Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATMega, AT86RFxx dan ATTiny.Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.
26

BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

Feb 09, 2018

Download

Documents

vuonghanh
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

1

BAB I

AVR ATMega 8535L

1.1 Sekilas Tentang AVR

AVR : Alf and Vegard RISC atau

AVR : Advanced Virtual RISC

RISC: Reduced Instruction Set Computer

Arsitektur mikrokontroler jenis AVR pertamakali dikembangkan pada tahun

1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil

Bogen dan Vegard Wollan.

Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri

pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan

konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan

data bus yang termultipleksi. Mikrokontroler AVR menggunakan teknologi

RISC dimana set instruksinya dikurangi dari segi ukurannya dan

kompleksitas mode pengalamatannya.

Pada awal era industri komputer, bahasa pemrograman masih

menggunakan kode mesin dan bahasa assembly. Untuk mempermudah dalam

pemrograman para desainer komputer kemudian mengembangkan bahasa

pemrograman tingkat tinggi yang mudah dipahami manusia. Namun akibatnya,

instruksi yang ada menjadi semakin komplek dan membutuhkan lebih banyak

memori. Dan tentu saja siklus eksekusi instruksinya menjadi semakin lama.

Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi berukuran 16 bit

dan sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan

mikrokontroler MCS-51 yang instruksinya bervariasi antara 8 bit sampai 32

bit dan dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin

membutuhkan 12 periode clock. Dalam perkembangannya, AVR dibagi

menjadi beberapa varian yaitu AT90Sxx, ATMega, AT86RFxx dan ATTiny.Pada

dasarnya yang membedakan masing-masing varian adalah kapasitas memori

dan beberapa fitur tambahan saja.

Page 2: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

2

1.2 Karakteristik mikrokontroler AVR seri ATMega8535

1.2.1 Fitur ATMega8535

Fitur yang tersedia pada ATMega 8535 adalah :

• Frekuensi clock maksimum 16 MHz

• Jalur I/O 32 buah, yang terbagi dalam PortA, PortB, PortC dan PortD

• Analog to Digital Converter 10 bit sebanyak 8 input

• Timer/Counter sebanyak 3 buah

• CPU 8 bit yang terdiri dari 32 register

• Watchdog Timer dengan osilator internal

• SRAM sebesar 512 byte

• Memori Flash sebesar 8 Kbyte dengan kemampuan read while write

• Interrupt internal maupun eksternal

• Port komunikasi SPI

• EEPROM sebesar 512 byte yang dapat diprogram saat operasi

• Analog Comparator

• Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps

Page 3: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

3

1.2.2 Konfigurasi Pin ATMega8535

Gambar 1.1 Konfigurasi Pin ATMega8535

1.2.3 Peta Memori ATMega8535

ATMega8535 memiliki dua jenis memori yaitu Data Memory dan Program

Memory ditambah satu fitur tambahan yaitu EEPROM Memory untuk

penyimpan data.

• Program Memory

ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory untuk

menyimpan program. Untuk alasan keamanan, program memory dibagi menjadi

dua bagian yaitu Boot Flash Section dan Application Flash Section. Boot

Flash Section digunakan untuk menyimpan program Boot Loader, yaitu program

yang harus dijalankan pada saat AVR reset atau pertamakali diaktifkan.

Application Flash Section digunakan untuk menyimpan program aplikasi yang

dibuat user. AVR tidak dapat menjalankan program aplikasi ini sebelum

Page 4: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

4

menjalankan program Boot Loader. Besarnya memori Boot Flash Section dapat

diprogram dari 128 word sampai 1024 word tergantung setting pada konfigurasi

bit di register BOOTSZ. Jika Boot Loader diproteksi, maka program pada

Application Flash Section juga sudah aman.

Gambar 1.2 Peta Program Memory

• Data Memory

Gambar berikut menunjukkan peta memori SRAM pada ATMega8535. Terdapat

608 lokasi address data memori. 96 lokasi address digunakan untuk

Register File dan I/O Memory sementara 512 lokasi address lainnya

digunakan untuk internal data SRAM. Register File terdiri dari 32 general

purpose working register, I/O register terdiri dari 64 register.

Page 5: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

5

Gambar 1.3 Peta Data Memory

• EEPROM Data Memory

ATMega8535 memiliki EEPROM sebesar 512 byte untuk menyimpan data.

Lokasinya terpisah dengan system address register, data register dan control

register yang dibuat khusus untuk EEPROM.

1.3 Status Register (SREG)

Status Register adalah register yang memberikan informasi yang dihasilkan dari

eksekusi instuksi aritmatika. Informasi ini berguna untuk mencari alternatif alur

program sesuai dengan kondisi yang dihadapi.

BIT 7 6 5 4 3 2 1 0

I T H S V N Z

R/W R/W R/W R/W R/W R/W R/W R/W R/W

Initial

Value

0 0 0 0 0 0 0 0

Page 6: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

6

Bit 7 – I : Global Interrupt Enable

Jika bit Global Interrupt Enable diset, maka fasilitas interupsi dapat dijalankan. Bit

ini akan clear ketika ada interrupt

yang dipicu dari hardware, setelah program interrupt dieksekusi, maka bit ini

harus di set kembali dengan instruksi SEI.

Bit 6 – T : Bit Copy Storage

Instruksi bit copy BLD dan BST menggunakan bit T sebagai sumber atau tujuan

dalam operasi bit.

Bit 5 – H : Half Carry Flag

Bit 4 – S : Sign Bit

Bit S merupakan hasil exlusive or dari Negative Flag N dan Two’s Complement

Overflow Flag V.

Bit 3 – V : Two’s Complement Overflow Flag

Digunakan dalam operasi aritmatika

Bit 2 – N : Negative Flag

Jika operasi aritmatika menghasilkan bilangan negatif, maka bit ini akan set.

Bit 1 – Z : Zero Flag

Jika operasi aritmatika menghaslkan bilangan nol, maka bit ini akan set.

Bit 0 – Z : Zero Flag

Page 7: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

7

1.4 Bahasa Assembly AVR

Bahasa yang dipakai untuk memprogram mikrokontroler AVR adalah bahasa

assembly AVR atau bahasa C. Dalam buku ini semua program ditulis dalam

bahasa assembly AVR. Berikut adalah contoh sebuah program aplikasi untuk

mikrokontroler AVR :

.include “m8535def.inc”

.org 0x0000 rjmp main Inisialisasi program

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND)

out SPH,r16 ldi r16,0xff out ddra,r16 Program utama out PortA,r16 cbi PortA,0 cbi PortA,1

stop: rjmp stop Sebuah program harus terdiri dari dua bagian, yaitu inisialisasi program dan

program utama. Inisialisasi program harus disertakan agar program utama dapat

berjalan. Berikut adalah urutan langkah inisialisasi program :

1. Menentukan jenis mikrokontroler yang digunakan dengan cara memasukkan

file definisi device (m8535def.inc) ke dalam program utama.

.include “m8535def.inc” ;

2. Menuliskan original address program, yaitu 0x0000. Kemudian dilanjutkan

dengan instruksi rjmp / relative jump ke label main. Hal ini dimaksudkan agar

program memory tidak tumpang tindih dengan data memory.

.org 0x0000 rjmp main

Page 8: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

8

3. Menentukan isi Stack Pointer dengan address terakhir RAM (RAMEND).

Untuk ATMega8535 yaitu 0x025F. Ini dimaksudkan agar program utama mulai

ditulis setelah address terakhir RAM.

main: ldi r16,low(RAMEND) ; low byte address RAM = 5F out SPL,r16 ldi r16,high(RAMEND) ; high byte address RAM = 02 out SPH,r16

Page 9: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

9

BAB II

Operasi Port Input Output

2.1 Register I/O

Setiap port ATMega8535 terdiri dari 3 register I/O yaitu DDRx, Portx dan PINx.

• DDRx (Data Direction Register)

Register DDRx digunakan untuk memilih arah pin. Jika DDRx = 1 maka

Pxn sebagai pin output Jika DDRx = 0

maka Pxn sebagai input.

• Portx (Port Data Register)

Register Portx digunakan untuk 2 keperluan yaitu untuk jalur output atau

untuk mengaktifkan resistor pullup.

1. Portx berfungsi sebagai output jika DDRx = 1 maka :

Portxn = 1 maka pin Pxn akan berlogika high.

Portxn = 0 maka pin Pxn akan berlogika low.

2. Portx berfungsi untuk mengaktifkan resistor pullup jika DDRx = 0 maka :

Portxn = 1 maka pin Pxn sebagai pin input dengan resistor pull up.

Portxn = 0 maka pin Pxn sebagai output tanpa resistor pull up.

Tabel 2.1 Konfigurasi Port

Catatan :

x menunjukkan nama port (A,B,C,D)

n menunjukkan nomor bit (0,1,2,3,4,5,6,7)

Nilai awal (initial value) seluruh register I/O adalah 00h.

Page 10: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

10

• PINx (Port Input Pin Address)

Digunakan sebagai register input.

2.2 Instruksi I/O

in : membaca data I/O port ke dalam register

contoh : in r16,PinA

out : menulis data register ke I/O port

contoh : out PortA,r16

ldi : (load immediate) : menulis konstanta ke register sebelum konstanta

tersebut dikeluarkan ke I/O port

contoh : ldi r16,0xff

sbi : (set bit in I/O) : membuat logika high pada sebuah bit I/O port

contoh : sbi PortB,7

cbi : (clear bit in I/O) : membuat logika low pada sebuah bit I/O port

contoh : cbi PortB,5

sbic : (skip if bit in I/O is clear) : lompati satu instruksi jika bit I/O port dalam

kondisi clear/low

contoh : sbic PortA,3

sbis : (skip if bit in I/O is set) : lompati satu instruksi jika bit I/O port dalam kondisi

set/high

contoh : sbis PortB,3

Page 11: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

11

Percobaan 1.1. Menghidupkan dan Mematikan LED dengan OUT

Pada percobaan berikut LED yang terhubunga pada Port C akan dihidupkan dan

dimatikan dengan menggunakan perintah OUT.

Gambar 2.1. Rangkaian LED

.include "8535def.inc" start: ldi R16,0b11111111 out DDRC,R16 ; ldi R16,0b11110000 out PortC,R16 stop: rjmp stop

Percobaan 2.2. Menghidupkan dan Mematikan LED dengan SBI dan CBI

Pada percobaan berikut sebut LED yang terhubung dengan Port C bit 0 ( PC.0 )

akan dihidupkan atau dimatikan satu bit dengan perintah SBI ( set bit IO ) dan

CBI ( Clear bit IO )

.include "8535def.inc" start: sbi DDRC,0 ;PortC, bit 0 as output cbi PORTC,0 ;send logic '0' to PortC bit 0 ; stop: rjmp stop

Page 12: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

12

Percobaan 2.3. Menghidupkan dua buah LED

Pada percobaan berikut akan dihidupkan LED yang terhubung dengan Port C bit

0 dan bit 7 ( PortC.0 dan PortC.7 ) dengan menggunakan perintah CBI ( clear bit

IO ).

.include "8535def.inc" start: sbi DDRC,0 ;PortC, bit 0 & 7 as output sbi DDRC,7 cbi PORTC,0 ;send logic '0' to PortC bit 0 & 7 cbi PORTC,7 ; stop: rjmp stop

Percobaan 2.4. Mengedipkan LED dengan Waktu Tunda

Pada percobaan birikut akan dihidupkan dan dimatikan 8 buah LED yang

terhubung ke PORTC, secara bersamaan, dengan menggunakan instruksi OUT

Sehingga 8 buah LED akan tampak berkedip. Untuk menghasilkan efek berkedip

maka diperlukan pembuatan subrutin waktu tunda yang dibuat secara software.

.include "m8535def.inc"

.org 0x0000 ; ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ; init: ldi R16, 0b11111111 ; Make pin PC output out DDRC, R16 ; main: ldi R16, 0b00000000 ; out PORTC,R16 rcall delay ldi R16, 0b11111111 ; out PORTC,R16 rcall delay getout: rjmp main ;repaet until power removed

Page 13: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

13

delay: ; provides some delay so that the LED is visible ; ============================= ; delay loop ; 499998 cycles: about 1/2 seconds ; ----------------------------- ; delaying 499995 cycles: ldi R29, $Ff WGLOOP0: ldi R30, $ff WGLOOP1: ldi R31, $10 WGLOOP2: dec R31 brne WGLOOP2 dec R30 brne WGLOOP1 dec R29 brne WGLOOP0 ret

Percobaan 2.5. Menghidupkan LED secara berurutan Pada percobaan ini LED yang terhubung pada PortC akan dihidupkan secara bergantian dengan mulai BIT 0 sampai BIT 7, sehingga semua LED akan hidup semua. Percobaan ini juga menyerupai percobaan 2.5. yang menggunakan subrutin waktu tunda, untuk melihat efek perubahan LED yang nyala. .include “m8535def.inc” .org 0x0000 ; ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ; ldi R16,0b11111111 out DDRC,R16 main: ldi R16,0b11111111 out PORTC,R16 rcall delay ; cbi PORTC,0 rcall delay cbi PORTC,1 rcall delay cbi PORTC,2 rcall delay cbi PORTC,3

Page 14: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

14

rcall delay cbi PORTC,4 rcall delay cbi PORTC,5 rcall delay cbi PORTC,6 rcall delay cbi PORTC,7 rcall delay ; rjmp main ; epeat untilpower removed ☺ ; provides some delay so that the LED is visible delay: ldi R29, $20 WGLOOP0: ldi R30, $ff WGLOOP1: ldi R31, $ff WGLOOP2: dec R31 brne WGLOOP2 dec R30 brne WGLOOP1 dec R29 brne WGLOOP0 ret

2.6. Menghidupkan Secara Bergantian

Pada percobaan ini LED yang terhubung ke PORT C akan digeser ke KIRI

secara berurutan mulai BIT 0 sampai BIT 7 dengan menggunakan perintah ROL,

percobaan ini juga menggunakan subrutin waktu tunda, untuk melihat efek

pergeseran LED.

.include "m8535def.inc"

.org 0x0000 ; ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ; ldi R16,0b11111111 out DDRC,R16 ldi R16,0b11111110 sec main:

Page 15: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

15

out PORTC,R16 rol R16 rcall delay ; rjmp main ; repaet until power removed :-) ; provides some delay so that the LED is visible delay: ldi R29, $20 WGLOOP0: ldi R30, $ff WGLOOP1: ldi R31, $ff WGLOOP2: dec R31 brne WGLOOP2 dec R30 brne WGLOOP1 dec R29 brne WGLOOP0 ret 2.7. Percobaan Pengambilan Data pada PortB Pada percobaan ini pengambilan logika 0 dan 1 dilakukan dengan menggunakan

Port B 8 buah melalui penekanan tombol push button SW1 sampai dengan SW8,

dengan harapan apabila sw ditekan maka port B akan mendapatkan logika 0,

data logika 0 akan diolah oleh mikrokontroller selanjutnya dengan menggunakan

port C maka dapat menghidupkan LED.

Gambar 2.2. Rangkaian SW

Page 16: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

16

.include "m8535def.inc"

.org 0x0000 main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ; start: ldi R16,0b11111111 out DDRC,R16 ldi R16,0b11111111 out PORTC,R16 ; ldi R16,0b00000000 out DDRB,R16 ldi R16,0b11111111 out PORTB,R16 ; get: in R16,PINB out PORTC,R16 rjmp get

Percobaan 2.8. Menghidupkan dan mematikan LED dengan menggunakan

SW tunggal.

Pada percobaan ini SW yang digunakan adalah yang terhubung dengan

menggunakan port B bit 0, dan menghubungkan LED pada port C bit 0.

.include "m8535def.inc" .org 0x0000 main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ; start: ldi R16,0b11111111 out DDRC,R16 ldi R16,0b11111111 out PORTC,R16 ; cbi DDRB,0 sbi PORTB,0

Page 17: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

17

; get: sbic PINB,0 rjmp ledOFF rjmp ledON ; ledOFF: sbi PORTC,0 rjmp get ledON: cbi PORTC,0 rjmp get

Latihan :

1. Jelaskan listing program berikut ini

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0x00 out ddra,r16 ; PortA as input ldi r16,0xff out ddrb,r16 ; PortB as output out ddrc,r16 ; PortC as output ulang: in r16,PortA out PortB,r16 ldi r16,0x0f out PortC,r16 cbi PortC,0 sbic PortA,5 cbi PortC,1 sbi PortC,6 sbis PortA,5 sbi PortC,7 ldi r16,0x00 out PortB,r16 out PortC,r16

rjmp ulang

2. Buatlah program agar dapat membaca data pada PortC dan mengeluarkan

data tersebut pada PortA.

Page 18: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

18

3. Buatlah program agar PortA mengeluarkan data 20h jika PortB,1 berlogika 0.

4. Buatlah program agar PortA mengeluarkan data 15h jika PortC,1 dan PortD,2

berlogika 1, selain kondisi tersebut PortA mengeluarkan data 00h.

Jawaban Latihan no 3:

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0xff out ddra,r16 ; PortA as output ldi r16,0x00 out ddrc,r16 ; PortC as output out ddrd,r16 ; PortD as output ldi r16,0x00 ldi r17,0x15

ulang: sbis PortC,1 rjmp ulang1 sbis PortD,2 rjmp ulang1 out PortA,r17 rjmp ulang

ulang1: out PortA,r16 rjmp ulang

Page 19: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

19

BAB III

Operasi Aritmatika

3.1 Operasi Aritmatika

Instruksi Aritmatika

add : Menambahkan isi dua register.

Contoh : add r15,r14 ; r15=r15+r14

adc : Menambahkan isi dua register dan isi carry flag

Contoh : adc r15,r14 ; r15=r15+r14+C

sub : Mengurangi isi dua register.

Contoh : sub r19,r14 ; r19=r19-r14

mul : Mengalikan dua register. Perkalian 8 bit dengan 8 bit menghasilkan

bilangan 16 bit yang disimpan di r0 untuk byte rendah dan di r1 untuk byte tinggi.

Untuk memindahkan bilangan 16 bit antar register digunakan instruksi movw

(copy register word)

Contoh : mul r21,r20 ; r1:r0=r21*r20

3.2 Contoh Program

• Penjumlahan

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0x80 ldi r17,0x80 add r16,r17 ldi r18,0x02 adc r16,r18

here: rjmp here

Page 20: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

20

• Pengurangan

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0x09 ldi r17,0x06 sub r16,r17 ldi r17,0x03 sub r16,r17 ldi r17,0x06 sub r16,r17

here: rjmp here

• Perkalian

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,5 ldi r17,100 mul r16,r17 movw r17:r16,r1:r0 ; Copy r1:r0 to r17:r16

here: rjmp here • Pembagian

.include "m8535def.inc"

.org 0x00

.def drem8u =r15 ;remainder/sisa

.def dres8u =r16 ;result/hasil

.def dd8u =r16 ;dividend/yang dibagi

.def dv8u =r17 ;divisor/pembagi

.def dcnt8u =r18 ;loop counter rjmp main

Page 21: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

21

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi dd8u,4 ldi dv8u,2 rcall div8u

here: rjmp here ; div8u: sub drem8u,drem8u ;clear remainder and carry

ldi dcnt8u,9 ;init loop counter d8u_1: rol dd8u ;shift left dividend dec dcnt8u ;decrement counter brne d8u_2 ;if done ret ;return d8u_2: rol drem8u ;shift dividend into remainder sub drem8u,dv8u remainder = remainder - divisor brcc d8u_3 ;if result negative add drem8u,dv8u ;restore remainder clc ;clear carry to be shifted into result rjmp d8u_1 ;else

d8u_3: sec ;set carry to be shifted into result rjmp d8u_1

Latihan :

Buatlah program untuk menyelesaikan persamaan matematika berikut ini :

1. r21=r22+5

2. r21=r22-5

3. r16:r17=r21*5

4. r16:r17=(r21+5)*(r22-5)

Page 22: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

22

BAB IV

Operasi Logika

4.1 Operasi Logika

Instruksi Logika

and : Untuk meng-and-kan dua register

Contoh : and r23,r27 ; r23=r23 and r27

andi : Untuk meng-and-kan register dengan konstanta immediate

Contoh : andi r25,0b11110000

or : Untuk meng-or-kan dua register

Contoh : or r18,r17 ; r18=r18 or r17

ori : Untuk meng-or-kan register dengan konstanta immediate

Contoh : ori r15,0xfe

inc : Untuk menaikkan satu isi sebuah register

Contoh : inc r14

dec : Untuk menurunkan satu isi sebuah register

Contoh : dec r15

clr : Untuk mengosongkan (membuat jadi nol) isi register

Contoh : clr r15 ; r15=0x00

ser : Set all bit in register. Membuat jadi satu isi register

Contoh : ser r16 ; r16=0xff

4.2 Contoh Program

• Operasi Logika

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 ldi r16,0b01110111

Page 23: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

23

ldi r17,0b00001111 and r16,r17 ori r16,0b00001000 clr r16 inc r16 ser r16 dec r16

here: rjmp here

Latihan :

1. Buatlah program untuk memecahkan persoalan berikut :

2. Buatlah program dengan ketentuan sbb :

Jawaban no 2: .include "m8535def.inc" .org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 mulai: sbic PortA,1 ; skip if PortA,1 = 0 rjmp cek10_11 rjmp cek00_01

cek10_11: ; PortA,1=1 sbic PortA,0 ; PortA,1=1, PortA,0=0 (10) rjmp setAll ; ulang: ldi r21,10 dec r21 dec r21

Page 24: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

24

dec r21 dec r21 dec r21 dec r21 dec r21 dec r21 dec r21 dec r21 rjmp ulang

setAll: ser r20 ser r21 rjmp mulai ;

cek00_01: ; PortA,1=0 sbis PortA,0 ; skip if PortA,0=1 rjmp clearAll ulang2: ldi r20,0 inc r20 inc r20 inc r20 inc r20 inc r20 inc r20 inc r20 inc r20 inc r20 inc r20 rjmp ulang2

clearAll: clr r20 clr r21 rjmp mulai

Page 25: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

25

BAB V

Percabangan

5.1 Operasi Percabangan

Instruksi Percabangan

sbic (skip if bit in I/O is cleared) : Skip jika bit I/O yang diuji clear

sbis (skip if bit in I/O is set) : Skip jika bit I/O yang diuji set

sbrc (skip if bit in register is clear) : Skip jika bit dalam register yang diuji clear

cp (compare) : Membandingkan isi dua register

mov (move) : Meng-copy isi dua register

cpi (compare with immediate) :Membandingakan isi register dengan

konstanta tertentu.

breq (branch if equal) : Lompat ke label tertentu jika suatu hasil

perbandingan adalah sama.

brne (branch if not equal) : Lompat ke label tertentu jika suatu hasil

perbandingan adalah tidak sama.

rjmp (relative jump) : Lompat ke label tertentu.

rcall (relative call) : Memanggil subrutin.

ret (return) : Keluar dari sub rutin.

5.2 Contoh Program

• Operasi Percabangan

.include "m8535def.inc"

.org 0x00 rjmp main

main: ldi r16,low(RAMEND) out SPL,r16 ldi r16,high(RAMEND) out SPH,r16 clr r16 ; r16=0x00

naik: inc r16 ; increment r16 cpi r16,5 ; r16=5 ? breq lagi ; branch to lagi if r16 = 5 rjmp naik ; jump to naik if r16 ≠ 5

Page 26: BAB I AVR ATMega 8535L - 123seminarsonly.com … · Fitur yang tersedia pada ATMega 8535 adalah : ... yang harus dijalankan pada saat AVR reset atau pertamakali ... Menentukan isi

26

lagi: ldi r18,5 ; r18 = 5 dec r16 ; decrement r16 cp r16,r18 ; compare r16 & r18 brne lompat ; branch to lompat if r16=r18 rjmp lagi ; jump to lagi if r16≠r18 lompat: rcall rutin1 rcall rutin2 henti: rjmp henti rutin1: mov r17,r16 ret rutin2: mov r19,r18 ret

Latihan :

Buatlah program delay dari flowchart berikut ini :