Subscribe via email

Enter your email address:

Delivered by FeedBurner

Pengenalan BASCOM AVR

    Dalam contoh ini kita akan berlatih merubah kongifurasi BASCOM AVR sesuai dengan minsys AVR yang kita gunakan dan membuat program sederhana untuk menyalakan LED, menggeser nyala LED dan

    membaca penekanan tombol.

    1. Membuat Project Baru:
     Klik File—>New2.Menentukan konfigurasi sistem(chip, baudrate, I/O dll.):

    A. Options—> Compiler

    clip_image002

    B. Chip: menentukan chip AVR yang digunakan, karena saya memakai DI-Smart AVR 16 maka saya gunakan m16def.dat clip_image004

    C.Options—>Programmer: menentukan jenis programmer/downloader yang digunakan. Di sini saya menggunakan usb downloader dengan firmware AVR910.

    clip_image006

    3. Test setting programmer:

    untuk mengetahui settning programmer udah sesuai apa belum klik Program—>Send to Chip—> Manual Program

    clip_image008

    Pilih Chip—>Identify. Jika setting sudah benar maka akan tampil jenis chip yang kita gunakan dan propertiesnya

    clip_image010

    clip_image012

     

     

    4. 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

    clip_image014

    clip_image016

    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.

     

    5. 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.

Comments :

8 comments to “Pengenalan BASCOM AVR”

Gan klo lampunya direlay ke saklar bisa ga?
trus ngendali'in lampu-nya pke web/internet melalui TCP/IP strarter kit.

Anonim mengatakan...
on 

bisa, yang penting komunikasi TCP/IP nya udah oke :D

zigan mengatakan...
on 

met kenal mas bos!!!!
saya seorang pemula yang baru
mempelajari microkontroler.
kayaknya udah buthek nich otakku
ngotak ngatik bahasa yang gak jelas ini.
suatu kehormatan bagi saya kalau aku
di perkenankan belajar di sini.
kalau gak keberatan tolong dong saya di bantu
bagaimana menulis program tombol (in0) yang
terhubung di pinc.0 bila di tekan sekali
menghidupkan led pina.0 dan bila di tekan
sekali lagi dapat menghidupkan led di pina.1
begitu seterusnya.saya coba di awali dari sini.


$regfile = "m16def.dat"
$crystal = 11059200

Config Portc = Input
Config Porta = Output

Multi Solusi Teknik Pati mengatakan...
on 
Komentar ini telah dihapus oleh pengarang.
dark_stream mengatakan...
on 
Komentar ini telah dihapus oleh pengarang.
dark_stream mengatakan...
on 

'note : tombol terhubung dgn pinc.0 & gnd

pinc.0 = 1
in0 alias pinc.0
porta = 0
dim x as byte
x = 0

do
if in0 = 0 then
x = x * 2
x = x + 1
porta = x

wait 500ms 'tidak wajib , memberi waktu jeda proses agar mudah dipantau

end if

loop

end

dark_stream mengatakan...
on 

mas mohon bantuannya. kok eror knp ya

$regfile = "m16def.dat"
$crystal = 11059200
Config Portc = Input
Config Porta = Output
pinc.0 = 1
in0 alias pinc.0
porta = 0
dim x as byte
x = 0
do
if in0 = 0 then
x = x * 2
x = x + 1
porta = x
wait 500ms
end if
loop
end

sya juga mau belajar, bisa tolong buatin perintah nya dari awal. sya masih newbie. mohon bantuannya

Anonim mengatakan...
on 

code program untuk menggeser nyala LED ke kanan itu menghabiskan berapa memori, terus port2 mana saja yg dipakai. mohon bantuannya kak

indah nis mengatakan...
on