Kamis, 08 Januari 2015
PROGRAM LED SWITH AT89S51
org 0h
CekP20:
JB P2.7,CekP21 ; Menguji bit P2.0, apakah adalah logika '1'
call RLeft ; Jika P2.0=0, maka LED putar kiri
; sjmp CekP20 ; jump forever to CekP20
CekP21:
JB P2.6,CekP20 ; Menguji bit P2.1, apakah adalah logika '1'
call RRight ; Jika P2.1=0, maka LED putar kanan
sjmp CekP20 ; jump forever to CekP2.0
;======================================================
;Subrutin ini digunakan untuk menggerakkan LED Ke Kanan
;======================================================
RLeft:
mov A,#11111110b ;send data 11111110 to Acc FE
RLeft1: mov P0,A ;send data A to P0
call delay ;call delay time
JB P2.6,RLeft2 ;Menguji bit P2.1, apakah adalah logika '1'
sjmp EndRLeft ;Jika P2.1=0, maka lompat ke EndRLeft
RLeft2: RL A ;data A di putar ke kiri
sjmp RLeft1 ;lompat ke Rleft1
EndRLeft:
ret
;
;====================================================
;Subrutin ini digunakan untuk menggerakkan LED Ke Kiri
;====================================================
RRight:
mov A,#01111111b ;send data to Acc
RRight1:
mov P0,A ;send data to P0
call delay ;call delay time
JB P2.7,RRight2 ;Menguji bit P2.0, apakah adalah logika '1'
sjmp EndRRight ;Jika P2.0=0, maka lompat ke EndRRight
RRight2:
RR A ;data A putar ke kanan
sjmp RRight1 ;lompat ke Rright1
EndRRight:
ret
;=============================================
;subroutine delay time
;=============================================
delay: mov R1,#255 ; 255 dicopykan ke R1
del1: mov R2,#255 ; 255 dicopykan ke R2
del2: djnz R2,del2 ; kurangkan isi dari R2 dengan 1 dan lompat ke del2 jika tidak 0
djnz R1,del1 ; kurangkan isi dari R1 dengan 1 dan lompat ke del1 jika tidak 0
ret ; kembali, dan perintah call selesai
end
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar