Pendahuluan in; membaca data IO Port atau internal peripheral register Timers, UART, out; menulis data sebuah register ke IO Port atau internal peripheral ldi load immediate; untuk menulis konstanta ke register sebelum sbi set bit in IO

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