Friday, February 24, 2017

The Program of Running Led

org         0h
                jmp        mulai
mulai:

cek1:     jb            p1.0,cek2                             ; cek penekanan tombol 2
             call          kanan                                   ; call label kanan
cek2:     jb            p1.1,cek3                             ; cek penekanan tombol 1
              call          kiri
cek3:     jb            p1.2,cek1
             call          mati                                       ; call label kiri
             sjmp      mulai                                     ; kembali ke label mulai
;--------------------------------------------
kanan:               mov       a,#01111111b                    ; isi data accu dengan     01111111b
kanan1:             mov       p0,a                                   ; isi data accu di p0
                         call          delay                                ; call delay
                         jb            p1.1,terus                        ;cek penekanan tombol pada kanan1
                         sjmp      kembali                             ; kembali ke label kembali
terus:                jb            p1.2,terus1                         ; cek penekanan tombol pada terus1
                        sjmp      kembali                                ; kembali ke kembali

terus1: 
                        rr             a                                   ; putar data accu ke kanan
                      cjne       a,#11111110b,kanan1    ;bandingkan data 11111110b dengan data di accu lalu ke label                     kanan1
                       sjmp      kanan1                            ; kembali ke label kanan1
kembali:               ret
                                                                                ; kembali ke program awal
kiri:         mov       a,#11111110b                    ; isi data accu dengan 11111110b
kiri1:      mov       p0,a                                       ; isi data accu di p0
                call          delay
                                                                ; call delay
                jb            p1.2,next                             ; cek penekanan tombol pada next
                sjmp      back                                       ; kembali ke label back
next:     jb            p1.0,next1                          ; cek penekanan tombol paada next1
                sjmp      back                                       ; kembali ke label back
next1:   rl             a                                              ; putar data accu ke kiri
                cjne    a,#011111111b,kiri1            ; bandingkan data 01111111b dengan data di accu lalu ke kiri1
                sjmp      kiri1                                        ; kembali ke label kiri1
back:     ret                                                          ; kembali ke program awal

mati:      mov       a,#11111111b
mati1:   mov       p0,a
                call          delay
                jb            p1.0,lanjut
                sjmp      kanan
lanjut:   jb            p1.1,lanjut1
                sjmp      kiri
               

lanjut1: jmp        mulai
                ret
;===========================================
;subroutine delay time
delay:    mov       r2,#180                                 ; isi data register 2 dangan 180h
delay1: mov       r3,#250                                 ; isi data register 3 dengan 250h
delay2: djnz       r3,delay2                             ; kurangi register 3 jika belum 0 jangan lompat ke delay2
                djnz       r2,delay1                             ; kurangi register 2 jika belum 0 jangan lompat ke delay1
                ret                                                          ; kembali ke program awal
                end                                                        ; program berakhir

No comments:

Post a Comment