Program LED dengan Bahasa Assembly pada ATmega8535


SISMIN

ATmega8535

 

Sudah lama tidak nge-post……. kali ini saya akan berbagi tentang Contoh Program LED dengan Bahasa Rakitan (Assembly) pada ATmega8535. Sebelumnya disarankan anda sudah punya datasheet ATmega8535 yang dapat di download di sini, karena itu dapat mempemudah anda pemahami tentang set instruksi dari ATmega8535 itu sendiri.

Contoh Program ini tentu saja hanya awal (dasar/pendahuluan) sebelum nantinya kita akan membahas tentang apa itu bahasa rakitan/assembly, semoga contoh ini dapat bermanfaat…..

berikut, listening programnya yang dibuat dengan Aplikasi AVR Studio Versi 4. Contoh program ini sudah berhasil disimulasikan di rangkaian yang saya buat dengan ISIS Proteus 8, dan hasilnya cukup memuaskan. Untuk gambar rangkaiannya belum bisa saya bagikan, yang jelas, rangkaiannya adalah SisMin ATmega8535 dengan 8 port A adalah output Led yang dihubungkan dengan GND (LED Aktif Low). rangkaian yang cukup sederhana, apabila ada sinyal 1 pada PORTA, maka LED akan Padam, dan jika sinyal 0 di PORTA, maka LED akan Nyala.

contoh program ini akan menyalakan LED tunggal bergeser ke kanan pada PORTA.

; program untuk menyalakan led tunggal yang bergeser ke kanan pada port A

.include “m8535def.inc”
.org 0x0000
rjmp main

main:
ldi r16, low(ramend)
out spl, r16
ldi r16, high(ramend)
out sph, r16

ldi r16, $ff
out ddra, r16       ; menjadikan porta sebagai output
out porta, r16     ; porta diberi high karena berlogika aktif low

clc           ; clear carry (carry digunakan sebagai bit yang led menyala nanti)

ser r19       ; r19 di kase high

ulang:
ror r19           ; rotasi ke kanan r19,
out porta, r19        ; hasil rotasi keluarkan di porta, salah satu led nyala
rcall tunda           ; panggil tunda, sampai dapat perintah return
rjmp ulang       ; setelah tunda, mengulagi rotasi selama-lamanya

tunda:                 ; proses tunda
ldi r18, $2             ; r18 = 2 , 2 pencacah 1
loop1:
ser r16                   ; r16 = 255, sebagai pencacah 2
loop2:
ser r17                 ; r17 = 255, sebagai pencacah 3
loop3:
dec r17                 ; r17 =r17 – 1
brne loop3           ; jikka hasil tidak nol, kembali ke loop3
dec r16                  ; r16 = r16 – 1
brne loop2             ; kalau hasl tidak nol, kembali ke loop2
dec r18                   ; r18 = r18 – 1
brne loop1            ; kalo hasil tidak nol, ke loop1
ret                       ; return

jika ada kesalahan, tolong kritikannya gan🙂

4 thoughts on “Program LED dengan Bahasa Assembly pada ATmega8535

    • mengatur alamat di program di RAM itu gan… coba baca2 ulang deh manajemen memori… soalnya postingan lama ini, tapi itu fungsinya untuk mengambil alamat akhir RAM, jadi program yang jalan mulai di tulis di RAM mulai alamat paling akhir…

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