jump to navigation

Program LED jalan pakai Assembly September 11, 2007

Posted by eepu in 8051 arch.
trackback

Program berikut digunakan untuk menyalakan 32 lampu LED yang bergerak secara satu-persatu. Program ini belum melalui proses optimisasi, tapi semoga berguna.

2007-09-11_111318 

;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

Comments»

No comments yet — be the first.