VMLAB – Running LED


Beberapa waktu yang lalu saya menulis Proyek AVR Pertama Dengan VMLAB. Sangat sederhana. Hanya program untuk membuat LED yang terhubung ke pin PB0 pada ATmega8 berkedip-kedip. Hanya program, tanpa dilengkapi penjelasan.

Sedikit mengembangkan proyek pertama tersebut, maka kali ini kita akan membuat program Running LED.
runled1

Skematik Running LED – ATmega8

Delapan buah LED terhubung ke PB0-PB7 dengan konfigurasi Common-Anode. Semua LED akan menyala jika pin PB0-PB7 berlogika nol, dan semua LED akan mati jika pin PB0-PB7 berlogika satu.

Pertama-tama buatlah proyek baru menggunakan AVR ATmega8 dan beri nama LED1. Selanjutnya, salinlah file program assembler LED1.ASM dan file proyek LED1.PRJ di bawah ini.

File Program Assembler

; *************************************
; LED1.ASM
; Program Running LED Example
; Microcontroller: ATmega8
; Output: 8 Common-Anode LEDs on PORTB0..PORTB7
; *************************************

.include “C:\VMLAB\include\m8def.inc”

.def acc = r16
.def temp1 = r17

; interrupt vectors
reset:
rjmp start
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti
reti

; Awal program setelah RESET
start:

;set alamat awal STACK
ldi acc, low (ramend)
out spl, acc
ldi acc, high (ramend)
out sph, acc

;set PORTB0..PORTB7 sebagai output
ser acc
out ddrb, acc

;awal looping utama program
forever:

;putar komposisi bit acc ke kiri dengan Carry
;Carry <- acc.7 <- .. <- acc.0 <- Carry
rol acc

;apakah acc=255 ?
cpi acc, 255

;lompat ke go_on jika acc <> 255
brne go_on

;jika acc=255, putar bit ke kiri sekali lagi
rol acc

go_on:
;update tampilan LED
out portb, acc

;panggil subrutin delay
rcall delay

;looping selama-lamanya
rjmp forever

; subrutin delay
; Warning: non-practical delay
; Used for simulation purpose only
delay:
ldi temp1, 3

satu:
dec temp1
brne satu
ret

File Proyek

; ***************************************
; PROJECT: Running LED with ATmega8
; AUTHOR: Chandra MDE
; Components used: Resistor, LED, Scope
; ***************************************

; Micro + software running
; ————————————————————
.MICRO “ATmega8”
.PROGRAM “led1.asm”
.TARGET “led1.hex”

.TRACE              ; Activate micro trace

; Following lines are optional; if not included
; exactly these values are taken by default
; ————————————————————
.POWER VDD=5 VSS=0  ; Power nodes
.CLOCK 1meg         ; Micro clock
.STORE 250m         ; Trace (micro+signals) storage time

; Micro nodes: RESET, AREF, PB0-PB7, PC0-PC6, PD0-PD7, ACO, TIM1OVF, ADC6, ADC7
; Define here the hardware around the micro
; ————————————————————
; Definisi komponen RESISTOR dan LED
R1  PB0 node_1 470
D1 VDD node_1
R2  PB1 node_2 470
D2 VDD node_2
R3  PB2 node_3 470
D3 VDD node_3
R4  PB3 node_4 470
D4 VDD node_4
R5  PB4 node_5 470
D5 VDD node_5
R6  PB5 node_6 470
D6 VDD node_6
R7  PB6 node_7 470
D7 VDD node_7
R8  PB7 node_8 470
D8 VDD node_8

; Tampilkan grafik tegangan pada PB0-PB7
.plot v(PB0)
.plot v(PB1)
.plot v(PB2)
.plot v(PB3)
.plot v(PB4)
.plot v(PB5)
.plot v(PB6)
.plot v(PB7)

Setelah kedua file tersebut disalin dan disimpan, lakukan Build dan Run, simulator akan menjalankan program Running LED kita.

Untuk melihat hasilnya, maka tampilkan Window Scope dan Window Control Panel. Agar nyaman dalam mengamati hasilnya, jangan lupa mengaktifkan tombol Animate Code. Berikut adalah cuplikan hasilnya.

runledscope

Terlihat pada Window Scope bahwa bit berlogika nol bergeser dari PB0 ke PB7, dan kembali lagi ke PB0, berulang-ulang, sehingga menyebabkan efek yang biasa disebut Running LED.

runledpanel

Terlihat pula pada Window Control Panel bahwa LED menyala bergantian dari D1 ke D8 dan kembali lagi ke D1 secara berulang-ulang.

Catatan:

  • Jangan lupa untuk menyesuaikan path pada perintah .include “C:\VMLAB\include\m8def.inc”.
  • Subrutin delay hanyalah contoh untuk keperluan simulasi saja, tidak praktikal.
  • Baca juga Running LED Program – A Walk Through yang berisi penjelasan program Running LED di atas.

Selamat belajar!

5 comments

  1. hudzaifah · Juli 25, 2009

    coy kasih lagi dong sample pjojectnya soalnya gw pemula bgt di avr..,,, gw biasa pake 89sXX ga taunya bhsnya beda ma avr cara2 pemakaiannya juga beda tolong yang lainnya yee…., soalnya pengen bgt bisa nich gw..,,

  2. kurniawan · Desember 13, 2009

    assalamualaikum
    salam kenal
    mas saya kurniawan.saya mahasiswa universitas muhammadiyah surabaya. saya mau tanya bagaimana dengan dot matriks.saya mau mencoba membuat running led berbentuk arah panah.Bagaimana dengan arah sebaliknya sehingga bisa kekanan atau kekiri.
    Terimakasih mas atas penjelasannya.
    wassalamualaikum

  3. chandramde · Desember 14, 2009

    Wa’alaikumsalaam. Salam kenal juga, Mas Kurniawan.
    Tampilan pada dot-matrik LED tergantung pada seleksi lampu-lampu mana yang dihidupkan dan lampu-lampu mana yang dimatikan sehingga membentuk pola/image yang diinginkan.

    Gunakan rangkaian driver yang baik/handal, dan pada program: gunakan scanning time yang pas untuk menghasilkan tampilan yang terbaik (good readability, no-flickering, optimum brightness).

    Demikian, Mas Kurniawan. Untuk lebih rinci bisa kontak langsung melalui email di chandramde@telkom.net.

  4. @Yoko · Maret 2, 2010

    Wah.. seru nih..
    jadi pingin.. Mau banget nih klo di share trick n softwarenya..
    kebetulan saya ada modul AT89s52, klo bisa n suport buat Running Led jadi semangat lagi nih..

    Salam, good shared n good luck..

  5. zulkipli · Desember 8, 2011

    mas,,, mintaq tolong sakli lagi dong,,,
    gimana setting ADC eksternal melalui SPI untuk atmega,,, tolong di balas ya

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s