Tuesday 20 September 2016

contoh program mikrokontroler menggunakan AVR


Membuat code program untuk menggeser nyala LED ke kanan:

$regfile = "m16def.dat"

$crystal = 11059200

Config Portc = Output

Portc = &B1111_1110

Do

Rotate Portc , Right , 1

Waitms 500

Loop

End

Tekan F7 untuk men COMPILE.
Jika tidak ada ERROR tekan F4, lalu pilih ERASE and PROGRAM CHIP


Gambar di atas adalah tampilan program saat di running.
A. Pembahasan program:
$regfile = "m16def.dat"
Menentukan chip AVR yang kita gunakan, saya menggunakan ATMEGA16. Menggunakan chip AVR yang lain harus merubah baris ini dan juga konfigurasi compiler yang dibahas pada point 2.B.
Misal kita menggunakan ATMEGA8 maka kita tulis $regfile = "m8def.dat"
$crystal = 11059200
Nilai yang diisikan disini sesuai crystal/ xtal yang dipakai. Saya menggunakan crystal 11,0592MHz.
Config Portc = Output
PORTC di gunakan sebagai output. Saya menggunakan PORTC sebagai output karena LED-LED di board SMART AVR 16 SYSTEM terhubung ke PORTC
Portc = &B1111_1110
Nilai PORTC di set ke 1111 1110. Ini berarti PORTC.7—PORTC.1 nilainya = 1=high=5volt.
Sedangkan POTC.0 nilainya = 0 = low = 0 volt.
Berarti LED yang terhubung ke PORTC.0 akan menyala. Perlu diketahui LED-LED pada board Smart AVR System dirangkai active low artinya jika di beri Logic Low / teg. 0 volt maka LED akan active/menyala.

Do
Rotate Portc , Right , 1
Waitms 500
Loop
End

Baris-baris program yang berada di antara Do --- Loop merupakan baris –baris program utama/ main program yang akan di kerjakan terus menerus.
Rotate Portc , Right , 1
Menggeser nilai pada PORTC ke KANAN sebanyak 1kali. Di awal program nilai PORTC di set ke 1111_1110 jika digeser kekanan 1 kali maka nilainya menjai 0111_1111 berarti PORTC.7 =Low= 0 volt sehingga LED yang terhubung ke port ini akan menyala.
Waitms 500
Delay 500ms, selama waktu ini microcontroller tidak melakukan apa2.
Loop
Perintah untuk mengulang program ke baris DO, sehingga program untuk menggeser LED akan dijalankan terus.

Membuat code program untuk membaca tombol
Program ini bertujuan untuk membaca penekanan tombol untuk merubah nyala led.
Pada board Smart AVR System Tombol 1 terhubung ke PIND.2, Tombol 2 terhubung ke PIND.3
Jika tombol 1 ditekan maka nyala LED akan begeser ke kanan.
Jika tombol 2 ditekan maka nyala LED akan bergeser ke ke kiri

$regfile = "m16def.dat"

$crystal = 11059200

Config Portd.2 = Input

Config Portd.3 = Input

Portd.2 = 1

Portd.3 = 1

Config Portc = Output

Portc = &B1111_1110

Do

If Pind.2 = 0 Then Rotate Portc , Right , 1

If Pind.3 = 0 Then Rotate Portc , Left , 1

Waitms 500

Loop

End

Tekan F7 untuk men COMPILE.
Jika tidak ada ERROR tekan F4, lalu pilih ERASE and PROGRAM CHIP
A. Pembahasan program:
Config Portd.2 = Input
Config Portd.3 = Input
PORTD.2 dan PORTD.3 di setting sebagai input
Portd.2 = 1
Portd.3 = 1
Memberi nilai 1/ high pada PORTD.2 dan PORTD.3, karena sebelumnya port-port ini disetting sebagai input maka baris program ini akan mengaktifkan internal pull up. Jika internal pull up tidak diaktfikan maka kondisi port input akan mengambang menyebabkan nilai pembacaan kacau.
If Pind.2 = 0 Then Rotate Portc , Right , 1
Jika PIND.2 = 0 maka PORTC akan di geser ke kanan 1kali. PIND.2 akan bernilai 0 jika tombol 1 ditekan.
If Pind.3 = 0 Then Rotate Portc , Left , 1
Jika PIND.3 = 0 maka PORTC akan di geser ke kiri 1kali. PIND.3 akan bernilai 0 jika tombol 2 ditekan.



loading...