Seri belajar microcontroller AVR terus berlanjut.. artikel kali ini adalah lanjutan dari artikel sebelumnya pada Latihan Microcontroller AVR – LED001

Dalam program latihan ini kita akan belajar bagaimana merubah logika output port dan menampilkannya pada LED. Program akan membuat LED berjalan secara urut dari LSB (Least Significant Bit) atau bit terbawah ke MSB (Most Significant Bit) atau bit teratas. Keduanya dalam koridor 8bit (1Byte). Setelah LED sampai pada bit teratas 0×80/128/0b10000000, maka LED akan menyala berbalik arah. Delay nyala LED diatur dengan pemanggilan fungsi dari delay.h yaitu delay_ms(xx) dimana xx adalah nilai unsigned int dari nilai n delay dikali 1ms. Program ini juga memanfaatkan modulus operator “%” atau sering juga disebut dengan remainder dalam perhitungan integer. Ada juga contoh penggunaan bitwise operator seperti:
“~” one’s complement (unary), “<

Latihan AVR LED002

Program ini juga dilengkapi dengan simulasi proteus.. silahkan dibuka dengan proteus 7.4sp3 atau yang lebih baru. Dalam gambar diatas bisa dilihat screen shot dari tampilan saat LED ada pada posisi 1. LED kemudian akan bergeser kekiri sampai index maksimal. Bila index maksimal, nyala LED akan berbalik ke kanan.

if(LEDdir){ //jika LEDdir = 1
        PORTC = ~(0x01&lt;&gt;LEDIndex);

Perintah baris pertama membandingkan flag arah nyala led, jika bernilai satu, geser bit kekiri mulai dari 1 dan jika LEDdir = 0 geser bit kekanan mulai dari 0×80/128/0b10000000. semua di(not)-kan dengan bitwise ~ misal tadinya 0b10000000 jadi 0b01111111

if(LEDIndex == 7){
        LEDdir = !LEDdir;
        }
    LEDIndex = (LEDIndex+1)%8;
    delay_ms(100);

Baris pertama pada program diatas berfungsi untuk membandingkan isi LEDindex. Jika LEDIndex sudah max (7) ubah arah geser. Disini juga dicontohkan cara penggunaan modulus, misal LEDIndex = 4 jadi: (4+1)%8 = 5/8 = 0 sisa 5 yg diambil sisanya. (%) modulus. dimaksudkan biar loop otomatis. index maksimal (7+1)%8 jadi 8/8 = 1 sisa 0 LEDindex kembali lagi ke 0 dst.. :D sebenernya banyak cara laen.. cuman bwt contoh aja, salah satu kegunaan modulus untuk aritmatika integer..

Nah sekarang kita coba modifikasi programnya. Coba dilihat syntax bitwise “~” pada :

PORTC = ~(0x01&lt;&gt;LEDIndex);

Fungsi bitwise “~” untuk membalik logika seperti yang sudah diterangkan diatas. Karena LED yang terpasang pada simulasi adalah common anoda, jadi sebelum di inverse dengan “~” sudah inverse duluan :D. Jadi -*- = + hehe.. coba dilihat tampilan gambar satu. Nah sekarang hilangin bitwise “~” dan recompile program. Jreeeng.. maka tampilan LED pun akan berubah seperti gambar berikut:

Latihan AVR microcontroller LED002

Nah.. sekarang tinggal dicoba, sedikit demi sedikit. Belajar mikro yang penting enjoy. Jangan dibikin pusing ^^ OK!. Khusus buat yang baru mulai belajar dan bingung mau mulai darimana, bisa coba latihan ini dan latihan LED seri satu: Latihan Microcontroller AVR – LED001

Project CodeVisionAVR dan simulasi proteus bisa di download disini

Tagged with:  

2 Responses to Latihan Microcontroller AVR – LED002

  1. andiero says:

    ada tutorial untuk atmega 128. saya ingin mengakses 5 buah motor dc untuk diatur kecepatannya.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

[+] kaskus emoticons