Maswie BloG

Free Delphi, Visual Basic, Microcontrol, Mechatronic tutorial

Pemrograman AVR Microcontroller

Posted by maswie2000 on November 3, 2007

Mikrokontroler adalah sebuah sistem mikroprosesor lengkap yang terkandung di dalam sebuah chip. Mikrokontroler berbeda dari mikroprosesor serba guna yang digunakan dalam sebuah PC, karena sebuah mikrokontroler umumnya telah berisi komponen pendukung sistem minimal mikroprosesor, yakni memori dan antarmuka I/O.

Jenis – jenis Mikrokontrol:
Atmel
Atmel AT91 series (ARM THUMB architecture)
AT90, Tiny & Mega series – AVR (Atmel Norway design)
Atmel AT89 series (Intel 8051/MCS51 architecture)

Microchip
Low End, Mikrokontroler PIC 12-bit
Mid Range, Mikrokontroler PIC 14-bit
(PIC16F84, PIC16F877)
16-bit instruction PIC
High End, Mikrokontroler PIC 16-bit

Philips Semiconductors
LPC2000, LPC900, LPC700

Penggunaan microcontrol

Sistem mikrokontroler lebih banyak melakukan pekerjaan-pekerjaaan sederhana yang penting seperti mengendalikan motor, saklar/relay, resistor variabel, atau perangkat elektronis lain. Seringkali satu-satunya bentuk antarmuka yang ada pada sebuah sistem mikrokontroler hanyalah sebuah LED, bahkan ini pun bisa dihilangkan jika tuntutan konsumsi daya listrik mengharuskan demikian.

Alat – Alat pemrograman microcontrol

Untuk membuat suatu aplikasi AVR, perlu beberapa tool yang harus

disiapkan. Tool-tool tersebut diperlukan untuk menjalankan tahap-tahap pemrograman AVR. Pada dasarnya, terdapat tiga tahap utama yang perlu dikerjakan dalam pemrograman AVR, yaitu:

Penulisan / Editing

Asembling dan Debuging

Programming/Downloading/Burning

Alat yang dibutuhkan :

Kit Microcontroller / Trainer Microcontroller

Software Assembler

Programmer/downloader

Bahasa Pemrograman yang sering digunakan :

Assembler ( AVR Studio 4 )

Bahasa C (ext. WinAVR)

Setiap bahasa memiliki kelebihan dan kekurangannya masing-masing. Bahasa assembler dituliskan dengan detail setiap langkah yang dijalankan, sehingga penulisanya relatif lebih panjang. Pemrogram harus mengetahui benar proses yang terjadi dalam program tersebut. Namun demikian, program assembler sangat cocok dalam hal efisiensi penggunaan memori program. Di sisi lain, bahasa C memiliki kemudahan dalam penulisan program, namun terkadang kode yang dihasilkan akan memakan memori program yang besar.
Pemrograman Assembler

Program assembler berisi mnemonic instruksi, label, dan pengarah assembler (directive). Mnemonic instruksi, label, dan pengarah assembler (directive). Mnemonic instruksi dan pengarah sering kali membutuhkan operan dalam penulisannya. Baris kode dalam penulisan program assembler dibatasi hingga 120 karakter.

Software yang dibutuhkan :

AVR Studio 4

Digunakan untuk menulis kode program dan mengcompile kode yang selanjutnya siap untuk didownload ke chip micro.

Ponyprog 2000

Digunakan untuk downloader hasil compile dari AVR Studio kedalam chip micro.
Struktur dasar micro

Terdiri atas :

General purpose register ( R0 – R31) untuk operasi aritmetika

I/O Register ( Register Untuk Input Output )

Port I/O

Register adalah media penyimpanan dengan kapasitas 8 bit.

Register dapat diisidengan bilangan dari 0 sampai 255 atau dengan bilangan

Hexadecimal dari $00 sampai $FF
Cara memulai belajar pemrograman bisa dilihat disini.

Contoh kode :
Output sederhana .
Tuliskan pada editor AVR Studio.

;My Very First AVR Project

.include “2313def.inc” ;Memasukan file definisi 2313 kedalam program

.def Temp = R16 ; mendefinisikan R16 dengan nama Temp

rjmp RESET ;melompat ke label RESET

RESET: ;Reset Label

ldi Temp, $FF ; Mengisi Temp dengan bilangan $FF

out DDRB, Temp ;Mengeset PORTB sebagai Output

Loop: ;Loop Label

ldi Temp, $0F ; Mengisi Temp dengan bilangan $0F

out PORTB, Temp ; outputkan nilai Temp ke PORTB

rjmp Loop ;melompat ke label Loop

Contoh kode :
Input sederhana .
Tuliskan pada editor AVR Studio.

;My Very First AVR Project

.include “2313def.inc” ;Memasukan file definisi 2313 kedalam program

.def Temp = R16 ; mendefinisikan R16 dengan nama Temp

rjmp RESET ;melompat ke label RESET

RESET: ;Reset Label

ldi Temp, $00 ;Mengisi Temp dengan bilangan $00

out DDRD, Temp ;mengeset PORTD sebagai Input

ldi Temp, $FF ; Mengisi Temp dengan bilangan $FF

out DDRB, Temp ;Mengeset PORTB sebagai Output

LOOP:

sbis PIND,0 ;Lewati perintah selanjutnya jika PIND bit 0 Kondisi HIGH

rcall NYALA ;Memanggil Instruksi dalam label NYALA

sbis PIND,1 ;Lewati perintah selanjutnya jika PIND bit 1 Kondisi HIGH

rcall MATI ;Memanggil Instruksi dalam label MATI

rjmp LOOP ;Melompat ke label LOOP

NYALA:

sbi PORTB,0 ;Mengeset HIGH pada PORTB bit 0

ret ;Return / Kembali

MATI:

cbi PORTB,0 ;Mengeset LOW pada PORTB bit 0

Ret ;Return / Kembali

Contoh kode :
Delay.
Tuliskan pada editor AVR Studio.

.include “2313def.inc”

.def Temp = R16

rjmp RESET

RESET: ldi TEMP,low(RAMEND)

out SPL,TEMP

ldi Temp, $FF

out DDRB, Temp

LEDBLINK: ldi Temp,$0F

out PORTB,Temp

rcall DELAY

ldi Temp,$F0

out PORTB,Temp

rcall DELAY

rjmp LEDBLINK

DELAY: ldi R17, $48

WGLOOP0: ldi R18, $BC

WGLOOP1: ldi R19, $C4

WGLOOP2: dec R19

brne WGLOOP2

dec R18

brne WGLOOP1

dec R17

brne WGLOOP0

ldi R17, $02

WGLOOP3: dec R17

brne WGLOOP3

nop

nop

ret

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: