Anda di halaman 1dari 44

Mikrokontroler AVR

LECTURE 17

1
Sekilas Tentang AVR
AVR = Alf and Vegard RISC
AVR = Advanced Virtual RISC
RISC = Reduced Instruction Set Computer

Arsitektur mikrokontroler jenis AVR dikembangkan


 1996  2 orang mahasiswa Norwegian Institute of
Technology  Alf Egil Bogen & Vegard Wollan

2
Sekilas Tentang AVR
Mikrokontroler AVR  Atmel.
Seri pertama AVR mikrokontroler 8 bit AT90S8515.
Konfigurasi pin yang sama dengan mikrokontroler
8051, termasuk address dan data bus yang
termultipleksi.

3
Sekilas Tentang AVR
Mikrokontroler AVR  teknologi RISC
Set instruksinya dikurangi dari segi ukurannya
dan kompleksitas mode pengalamatannya.
Pada awal era industri komputer, bahasa
pemrograman  kode mesin & bahasa assembly.
Para desainer komputer  mengembangkan
bahasa pemrograman tingkat tinggi yang mudah
dipahami manusia.
Akibatnya, instruksi yang ada menjadi semakin
komplek dan butuh lebih banyak memori.
Siklus eksekusi instruksinya  semakin lama.

4
Sekilas Tentang AVR
Dalam AVR  arsitektur RISC 8 bit
Semua instruksi berukuran 16 bit
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.

5
Sekilas Tentang AVR
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.

6
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

7
Fitur ATMega8535
SRAM sebesar 512 byte
Memori Flash 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
8
MCU ARCHITECTURE

9
Konfigurasi Pin ATMega8535

10
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.
11
Peta Memori ATMega8535
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 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 12
Gambar Peta Memori
Memori Program yang terletak di
Flash PEROM tersusun dalam 2
byte  tiap instruksi memiliki
lebar 16bit atau 32bit.

Flash PEROM : 4Kbytex16bit


Addr: $000  $FFF
PC : 12bit

EEPROM 8 bit  512 byte


Addr: $000  $1FFF
13
14
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 7 : I (Global Interrupt Enable)


‘1’  interrupt enable  instuksi SEI (Set Enable
Interrupt)
‘0’  clear jika terjadi interupsi yang dipicu oleh
hardware atau dengan CLI, diset kembali dengan SEI

15
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 6 : T (Bit Copy Storage)


Instruksi BLD dan BST menggunakan bit T sebagai
sumber atau tujuan dalam operasi bit.
Suatu bit dalam sebuah GPR (General Purpose Register)
/ register file dpt dicopi ke bit T menggunakan BST,
sebaliknya dengan BLD
16
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 5 : H (Bit Copy Storage)


Menunjukkan adanya half carry dalam operasi
aritmatika dalam BCD operation

17
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 4 : S (Sign Bit)


exlusive or dari Negative Flag N dan Two’s Complement
Overflow Flag V

18
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 3 : V (Two’s Complement Overflow Flag)


Mendukung operasi aritmatika komplemen 2

19
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 2 : N (Negative Flag)


Apabila suatu operasi menghasilkan bilangan negatif
maka flag N akan diset.

20
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 1 : Z (Zero Flag)


Apabila suatu operasi menghasilkan nol maka flag Z
akan diset.

21
SREG (Status Register)
Status yang dihasilkan setiap operasi setelah suatu
instruksi dieksekusi  CPU core

Bit 0 : C (Carry Flag)


Apabila suatu operasi menghasilkan carry maka flag C
akan diset.

22
Pengarah Assembler
.cseg (code segment) penunjuk bahwa kode
dibawahnya terletak pada memori program.
.db (data byte) : meletakkan konstanta, serial number,
look-up table di memori program pada alamat
tertentu.
.dw (data word) : sama dengan db, ukuran word.
.org : mengeset PC pada awal vektor reset .org 0x0000
atau vektor interupsi misal .org 0x0002

23
Pengarah Assembler
.byte : inisialisasi besar byte yang digunakan pada
SRAM untuk label tertentu.
.dseg (data segmen) : penunjuk bahwa kode
dibawahnya berfungsi untuk melakukan setting
SRAM.
.def (define) : mendefinisikan suatu register misal .def
temp=r16
.equ : memberi nama konstanta yang tidak dapata
berubah misal .equ max = 9600

24
Pengarah Assembler
.set : sama dengan .equ tetapi konstantanya dapat
diubah, misal .set baud=2400
.set baud = 9600
.endm (end macro) : mengakhiri macro
.include : memisahkan kode dalam 2 atau lebih file
terpisah
Misal : .include “C:\m8535def.inc”

25
Pengarah Assembler
.device : penunjuk jenis AVR yang digunakan
.exit : penunjuk agar berhenti melakukan assembly
pada file
.list : membangkitkan file list
.listmac : agar penambahan macro ditampilkan pada
file list yang dibangkitkan
.nolist : agar suatu runtun instruksi tidak dimasukkan
dalam file list yang dibangkitkan

26
Bahasa Assembly AVR
Bahasa yang dipakai untuk memprogram
mikrokontroler AVR adalah bahasa assembly AVR atau
bahasa C (dalam praktikum 2 kali assembly dan
selanjutnya AVR GCC atau Code Vision).

27
Bahasa Assembly AVR

28
Bahasa Assembly AVR
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 :

29
Bahasa Assembly AVR
1. Menentukan jenis mikrokontroler yang digunakan
dengan cara memasukkan file definisi device
(m8535def.inc) ke dalam program utama.

.include “m8535def.inc”

30
Bahasa Assembly AVR
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

31
Bahasa Assembly AVR
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

32
Operasi Port Input Output
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.

33
Operasi Port Input Output
Register I/O
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.

34
Operasi Port Input Output

35
Operasi Port Input Output
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
36
Operasi Port Input Output
Instruksi I/O
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
37
38
39
40
Jawaban no 1.
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\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 ddrc,r16 ;port c sebagai input
ldi r16,0xff
out ddra,r16 ;port a sebagai output
ulang: in r16,PortC
out PortA,r16
rjmp ulang

41
Jawaban no 2.
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\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 ;port a sebagai output
ldi r16,0x00
out ddrb,r16 ;port b sebagai input
ulang: ldi r16,0x00
out PortA,r16
sbic PortB,1
rjmp ulang
ldi r16,0x20
out PortA,r16
rjmp ulang 42
43
End of slide……

Anda mungkin juga menyukai