BAB 2
LANDASAN TEORI
2.1 Pendahuluan
Robot yang dapat berpindah tempat tanpa campur tangan manusia Autonomous Mobile Robot - AMR membutuhkan 3 komponen utama dalam sistemnya.
Komponen tersebut adalah pengolah data, sensor dan penggerak. Ketiga komponen tersebut saling berkaitan dan membentuk suatu sistem kendali yang diatur oleh pusat
kendali pada robot.
2.2 Pengolah Data Mikrokontroler ATMega8535
Mikrokontroler AVR Alf and Vegard’s Risc Processor memiliki arsitektur RISC 8- bit, dimana semua instruksi dikemas dalam kode 16-bit 16-bits words dan sebagian
besar instruksi dieksekusi dalam 1 satu siklus clock, berbeda dengan instruksi MCS-51 yang membutuhkan 12 siklus clock. Ini terjadi karena AVR berteknologi
RISC Reduced Instruction Set Computing atau memiliki set instruksi yang lebih sederhana, sedangkan seri MCS-51 berteknologi CISC Complex Instruction Set
Computing atau set instruksi yang kompleks.
ATMega8535 adalah mikrokontroler AVR dengan arsitektur RISC Reduced Instruction Set Computing
. Mikrokontroler ini memiliki fasilitas yang sangat
Universitas Sumatera Utara
lengkap jika dibandingkan dari keluarga MCS-51 dan memiliki kesamaan arsitektur dengan mikrokontroler PICmicro dari produsen Microchip yang juga memiliki
arsitektur RISC 8-bit.
Pemrograman AVR tergolong mudah karena pemrograman AVR menggunakan teknik ISP In-System Programming, yaitu kode hasil kompilasi
berupa file HEX dapat langsung didownload pada mikrokontroler di dalam rangkaian aplikasi.
2.2.1 Arsitektur ATMega8535
Gambar 2.1 Blok Diagram Fungsional ATMega8535
Universitas Sumatera Utara
Dari gambar tersebut dapat dilihat bahwa ATMega8535 memiliki bagian sebagai berikut:
1. Saluran IO sebanyak 32 saluran, yaitu Port A, Port B, Port C, dan PortD. 2. ADC 10 bit sebanyak 8 saluran.
3. Tiga buah TimerCounter dengan kemampuan pembandingan. 4. CPU yang terdiri atas 32 buah register.
5. Watchdog Timer dengan osilator internal. 6. SRAM sebesar 512 byte.
7. Memori Flash sebesar 8 kb dengan kemampuan Read While Write. 8. Unit interupsi internal dan eksternal.
9. Port antarmuka SPI. 10. EEPROM sebesar 512 byte yang dapat diprogram saat operasi.
11. Antarmuka komparator analog. 12. Port USART Universal Serial Asynchronous serial Receiver and
Transmitter untuk komunikasi serial.
Adapun kemampuan umum dari ATMega8535 adalah sebagai berikut: 1. Sistem mikroprosesor 8 bit berbasis RISC dengan kecepatan maksimal
16 MHz. 2. Kapabilitas memori flash 8 KB, SRAM sebesar 512 byte, dan EEPROM
Electrically Erasable Programable Read Only Memory sebesar 512 byte.
3. ADC internal dengan fidelitas 10 bit sebanyak 8 channel.
Universitas Sumatera Utara
4. Portal komunikasi serial USART dengan kecepatan maksimal 2,5 Mbps.
5. Enam pilihan mode sleep menghemat penggunaan daya listrik.
Gambar 2.2 Pin ATMega8535
Konfigurasi pin ATMega8535 bisa dilihat pada Gambar 2.2. Dari gambar tersebut dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai
berikut: 1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.
2. GND merupakan pin ground. 3. Port A PA0..PA7 merupakan pin I0 dua arah dan pin masukan ADC.
4. Port B PB0..PB7 merupakan pin IO dua arah dan pin fungsi khusus, yaitu TimerCounter, komparator analog, dan SPI.
5. Port C PC0..PC7 merupakan pin IO dua arah dan pin fungsi khusus, yaitu TWI, komparator analog, dan Timer Oscilator.
Universitas Sumatera Utara
6. Port D PD0..PD7 merupakan pin IO dua arch dan pin fungsi khusus, yaitu komparator analog, interupsi eksternal, dan komunikasi serial.
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler. 8. XTAL 1 dan XTAL2 merupakan pin masukan clock eksternal.
9. AVCC merupakan pin masukan tegangan untuk ADC. 10. AREF merupakan pin masukan tegangan referensi ADC.
Mikrokontroler AVR memiliki model arsitektur Harvard, di mana memori dan bus untuk program dan data dipisahkan. Dalam arsitektur AVR, seluruh 32
register umum yang ada terhubung langsung ke ALU prosesor. Hal inilah yang membuat AVR begitu cepat dalam mengeksekusi instruksi. Dalam satu siklus
clock, terdapat dua register independen yang dapat diakses oleh satu instruksi. Teknik yang digunakan adalah fetch during execution atau memegang sambil
mengerjakan. Hal ini berarti, dua operan dibaca dari dua register sekaligus, pertama dilakukan eksekusi operasi, dan hasilnya disimpan kembali dalam salah satu
register, semuanya dilakukan hanya dalam satu siklus clock. Arsitektur AVR ATMega535 ditunjukkan dalam Gambar 2.3.
Universitas Sumatera Utara
Gambar 2.3 Arsitektur ATMega8535
2.2.2 Peta Memori ATMega8535
AVR ATMega8535 memiliki ruang pengalamatan memori data dan memori program yang terpisah. Memori data terbagi menjadi 3 bagian, yaitu 32 buah register
umum, 64 buah register IO, dan 512 byte SRAM Internal. Register keperluan umum menempati space data pada alamat terbawah, yaitu 00 sampai 1F. Sementara itu,
register khusus untuk menangani IO dan kontrol terhadap mikrokontroler menempati 64 alamat berikutnya, yaitu mulai dari 20 hingga 5F. Register tersebut
merupakan register yang khusus digunakan untuk mengatur fungsi terhadap berbagai peripheral mikrokontroler, seperti kontrol register, timercounter, fungsi-fungsi IO,
dan sebagainya. Alamat memori berikutnya digunakan untuk SRAM 512 byte, yaitu
Universitas Sumatera Utara
pada lokasi 60 sampai dengan 25F. Konfigurasi memori data ditunjukkan pada Gambar 2.4.
Register Umum Alamat
R0 0000
R1 0001
…. ….
R30 001E
R31 001F
Register IO 00
0020 01
0021 ….
…. 3E
005E 3F
005F SRAM Internal
0060 0061
…. 025E
025F RAMEND
Gambar 2.4 Konfigurasi Memori Data AVR ATMega8535
Memori program yang terletak dalam Flash PEROM tersusun dalam word atau 2 byte karena setiap instruksi memiliki lebar 16-bit atau 32-bit. AVR
ATMega8535 memiliki 4Kbytex16-bit Flash PEROM dengan alamat mulai dari 000 sampai FFF sehingga mikrokontroler AVR tersebut memiliki 12-bit Program
Counter PC sehingga mampu mengalamati isi Flash. Selain itu, AVR ATMega8535 juga memiliki memori data berupa EEPROM 8-bit sebanyak 512 byte.
Universitas Sumatera Utara
2.2.3 Status Register SREG
Status Register adalah register berisi status yang dihasilkan pada setup operasi yang dilakukan ketika suatu instruksi dieksekusi. SREG merupakan bagian dari inti CPU
mikrokontroler ATMega8535.
BIT
7 6
5 4
3 2
1 I
T H
S V
N Z
C SREG
Re a d Write
R W R W
R W R W
R W R W
R W R W
Initia l Va lue
Gambar 2.5 Status Register ATMega8535
a. Bit 7 - I: Global Interrupt Enable Bit harus diset untuk meng-enable interupsi. Setelah itu, Anda dapat
mengaktifkan interupsi mana yang akan Anda gunakan dengan cara meng- enable bit kontrol register yang bersangkutan secara individu. Bit akan di-
clear apabila terjadi suatu interupsi yang dipicu oleh hardware, dan bit tidak akan mengizinkan terjadinya interupsi, serta akan diset kembali oleh
instruksi RETI. b. Bit 6 - T: Bit Copy Storage
Instruksi BLD dan BST menggunakan bit-T sebagai sumber atau tujuan dalam operasi bit. Suatu bit dalam satu register GPR dapat disalin ke bit T
menggunakan instruksi BST, dan sebaliknya bit-T dapat disalin kembali ke suatu bit dalam register GPR menggunakan instruksi BLD.
Universitas Sumatera Utara
c. Bit 5 - H: Half Carry Flag d. Bit 4 - S: Sign Bit
Bit-S menimpakan hasil operasi EOR antara flag-N negatif dan flag V komplemen dua overflow.
e. Bit 3 - V: Twos Complement Overflow Flag Bit berguna untuk mendukung operasi aritmatika.
f. Bit 2 - N: Negative Flag Apabila suatu operasi menghasilkan bilangan negatif, maka flag-N akan
diset. g. Bit 1- Z: Zero Flag
Bit akan diset bila hasil operasi yang diperoleh adalah nol. h. Bit 0 - C: Carry Flag
Apabila suatu operasi menghasilkan carry, maka bit akan diset.
2.2.4 General Purpose Register GPR
Seluruh instruksi operasi register dalam AVR memiliki akses langsung ke semua register. Kecuali untuk lima instruksi aritmatika-logika yang mengoperasikan
register dengan konstanta SBCI, SUBI, CPI, ANDI, dan ORI dan LDI yang mengoperasikan pemuatan data konstan langsung immediate. Instruksi-instruksi
tersebut dioperasikan hanya pada separo lokasi register terakhir GPR R16 sampai R31. Instruksi untuk operasi umum seperti SBC, SUB, CP, AND, OR, dan operasi
Universitas Sumatera Utara
lainnya yang mengoperasikan dua register atau satu register dapat melakukan akses terhadap seluruh register.
Alamat R0
0000 R1
0001
R15 000F
R16 001F
R26 1A register x byte bawah
R27 1B register x byte atas
R28 R29
R30 R31
1F register Z byte atas
Gambar 2.6 General Purpose Register ATMega8535
2.2.5 Pengarah Assembler
Pengarah Assembler berguna untuk mengubah penunjuk kode assembly. Sebagai contoh, kita dapat mengubah lokasi kode asm kits pada memori program, memberi
label pada SRAM, atau mendefinisikan suatu konstanta menggunakan sintaksis pengarah assembler. Berikut beberapa sintaksis pengarah assembler yang terdapat
pada AVR ATMega8535.
Universitas Sumatera Utara
a. .cseg code segment; pengarah ini berguna sebagai penunjuk bahwa kode atau ekspresi di bawahnya diletakkan pada memori program. Pengarah ini
biasanya digunakan setelah pengarah.dseg b. .db data byte; pengarah ini memungkinkan kita dapat meletakkan
konstanta, seperti serial number dan look-up table di memori program pada alamat tertentu.
c. .dw data word; pengarah ini sama seperti data byte, tetapi dalam ukuran word
d. org; digunakan untuk mengeset program counter pada alamat tertentu. Digunakan pada awal program org 0x0000 atau pengarah pada vektor
interupsi, misalnya vektor interupsi untuk interupsi eksternal 1, maka alamat vektor interupsinya org 0x0002.
e. .byte; digunakan untuk inisilisasi besar byte yang digunakan pada SRAM untuk label tertentu.
f. .dseg data segmen; pengarah ini berguna sebagai penunjuk bahwa kode di bawahnya berfungsi untuk melakukan setting SRAM.
g. .def define; pengarah ini memungkinkan suatu register dapat didefinisikan. Contoh:.def temp = r16
h. .equ; berguna untuk memberi nama suatu konstanta yang tidak dapat berubah. Contoh:.equ max = 19200
i. .set; sama seperti equ, tetapi konstantanya dapat diubah. Contoh: set baud = 2400
Universitas Sumatera Utara
2.2.6 Port IO ATMega8535
Port IO pada mikrokontroler ATmega8535 dapat difungsikan sebagai input ataupun output dengan keluaran high atau low. Untuk mengatur fungsi port IO
sebagai input ataupun output, perlu dilakukan setting pada DDR dan Port. Berikut tabel pengaturan port IO:
Tabel 2.1 Konfigurasi setting untuk Port IO
DDR bit = 1 DDR bit = 0
Port bit = 1
Output High Input Pull-Up
Port bit = 0
Output Low Input Floating
Dari tabel di atas, menyetting inputoutput adalah:
a. Sebagai Input; DDR bit 0 Low dan Port bit 1 High b. Untuk Output High; DDR bit 1 High dan Port bit 1 Low
c. Untuk Output Low; DDR bit 1 High dan Port bit 0 Low
Contohnya dalam kode program untuk mengeset setiap Port IO:
ldi R16, 0xff ;Isi register dengan nilai High semua
ldi R17, 0x00 ;Isi register dengan nilai Low semua
out DDRA, R17 ;input
;Input ADC out PORTA, R17
;floating ;Tanpa pull-up
out DDRB, R16 ;output
;Output sensor out PORTB, R17
;low ;Aktif High
out DDRC, R16 ;output
;Output ke Motor dan Pompa out PORTC, R17
;low ;Aktif High
out DDRD, R17 ;input
;Input sensor out PORTD, R16
;pullup ;Dengan pull-ip
Universitas Sumatera Utara
Logika port IO dapat diubah-ubah dalam program secara byte atau hanya bit tertentu. Mengubah sebuah keluaran bit IO dapat dilakukan menggunakan perintah
cbi clear bit IO untuk menghasilkan output low atau perintah sbi set bit IO untuk menghasilkan output high. Perubahan secara byte dilakukan dengan perintah in atau
out yang menggunakan register bantu.
Port IO sebagai output hanya memberikan arus sourcing sebesar 20mA sehingga untuk menggerakkan motor atau kendali alat elektronis yang lain, perlu
diberikan penguat tambahan atau dapat juga dengan konfigurasi port sebagai sinking current
, seperti pada port yang digunakan untuk menyalakan LED, yang akan menyala saat port diberikan logika low dan mati saat port logika high.
2.2.7 Instruksi Transfer Data
Instruksi transfer data digunakan untuk memindahkan data antar register, antara port dan register, juga antara GPR General Purpose Register dengan internal pheripheral
register register inti AVR. Beberapa contoh instruksi transfer data.
a. in; membaca data IO Port atau internal peripheral register Timers, UART,
dsb ke dalam register.
contoh: in r16, PinA
b. out; menulis data sebuah register ke IO Port atau internal peripheral
register
c. ldi load immediate; untuk menulis konstanta ke register sebelum
konstanta itu dituliskan ke IO Port
Universitas Sumatera Utara
contohl: ldi r16, 0b11111111
; bentuk biner out PortD, r 16
; portd high semua
contoh2:
ldi r17, 0xff ; bentuk heksadesimal 0xff = 255
out PortD, r17 ; portd juga high semua
contoh3:
Idi r18, 255 ; bentuk desimal
out PortD, r18 ; portd juga high semua
d. sbi set bit in IO ; untuk membuat logika high satu bit IO register contoh:
sbi PortB,7 ; set bit ke-7 dari PortB
e. cbi clear bit in IO ; untuk membuat logika low satu bit IO register contoh:
cbi PortC,5 ; clear bit ke-5 dari PortC
f.
sbic skip if bit in 110 is cleared;
untuk mengecek apakah bit IO register clear. Jika ya, skip satu perintah di bawahnya.
contoh:
sbic PortA,3 ; skip perintah jika bit ke3 PortA clear
g. sbis skip if bit in IO is set; untuk mengecek apakah bit IO register set.
Jika ya, skip satu perintah di bawahnya.
contoh:
sbis PortA,0 ; skip perintah jika bit ke-0 PortA set
2.2.8 Instruksi Aritmatika dan Logika
Data yang dipakai dalam mikrokontroler ATmega8535 direpresentasikan dalam sistem bilangan biner basis 2, desimal basis 10, dan bilangan heksadesimal basis
16. Data yang terdapat di mikrokontroler dapat diolah dengan berbagai operasi aritmatik penjumlahan, pengurangan, dan perkalian maupun operasi logika {AND,
OR, dan EOR Ekslusif OR}.
Universitas Sumatera Utara
a. add; menambahkan isi dua register contoh:
add r15,r14 ; r15 =r15+r14
b. sub; mengurangi isi dua register contoh:
sub r19,r14 ; r19 = r19-r14
c. mul; mengalikan dua register. Perkalian 8 bit dengan 8 bit akan