Program LED jalan pakai Assembly September 11, 2007
Posted by eepu in 8051 arch.add a comment
Program berikut digunakan untuk menyalakan 32 lampu LED yang bergerak secara satu-persatu. Program ini belum melalui proses optimisasi, tapi semoga berguna.
;by Fandi Gunawan
mulai:
mov p0,#0 ; pindah “0″ -> register port 0
mov p1,#0
mov p2,#0
mov p3,#0
inisialisasi:
mov p0,#255
mov p1,#255
mov p2,#255
mov p3,#255
putar_lagi:
geser_led_0 :
mov a,#254 ; pindah “FE” hex -> akumulator
mov p0,a ; pindah isi reg akumulator -> register port 0
mov r0,#8 ; pindah “8″ -> register 0
putar0:
call delay ; panggil rutin delay
rl a ;geser kiri akumulator
mov p0,a ; pindahkan isi akumulator ke register port 0
djnz r0,putar0 ;kurangi isi r0 jika tidak 0 maka lompat ke putar 0
mov p0,#255
mov p1,#255
mov p2,#255
mov p3,#255
geser_led_1 :
mov a,#254 ; pindah “FE” hex -> akumulator
mov p1,a ; pindah isi reg akumulator -> register port 1
mov r0,#8 ; pindah “8″ -> register 0
putar1:
call delay ; panggil rutin delay
rl a ;geser kiri akumulator
mov p1,a ; pindahkan isi akumulator ke register port 1
djnz r0,putar1 ;kurangi isi r0 jika tidak 0 maka lompat ke putar1
mov p0,#255
mov p1,#255
mov p2,#255
mov p3,#255
geser_led_2 :
mov a,#254 ; pindah “FE” hex -> akumulator
mov p2,a ; pindah isi reg akumulator -> register port 2
mov r0,#8 ; pindah “8″ -> register 0
putar2:
call delay ; panggil rutin delay
rl a ;geser kiri akumulator
mov p2,a ; pindahkan isi akumulator ke register port 2
djnz r0,putar2 ;kurangi isi r0 jika tidak 0 maka lompat ke putar2
mov p0,#255
mov p1,#255
mov p2,#255
mov p3,#255
geser_led_3 :
mov a,#254 ; pindah “FE” hex -> akumulator
mov p3,a ; pindah isi reg akumulator -> register port 3
mov r0,#8 ; pindah “8″ -> register 0
putar3:
call delay ; panggil rutin delay
rl a ;geser kiri akumulator
mov p3,a ; pindahkan isi akumulator ke register port 3
djnz r0,putar3 ;kurangi isi r0, jika tidak 0 maka lompat ke putar3
mov p0,#255
mov p1,#255
mov p2,#255
mov p3,#255
sjmp putar_lagi
delay:
mov r1,#255
lompat2:mov b,#0ah
lompat1:djnz b,lompat1
djnz r1,lompat2
ret
end