; Lampu bergerak dari tengah ke pinggir kemudian kembali lagi...
;--------------------------------------------------------------------- #include <sfr51.inc> Org 0h ; Mulai: Mov P1,#11100111B ; Dua lampu tengah menyala, P13 dan P1.4 (=0E7h) Acall Delay ; lakukan penundaan sesaat... Mov P1,#11011011B ; Dua lampu berikutnya menyala, P1.2 dan P1.5 (=0DBh) Acall Delay ; lakukan penundaan sesaat... Mov P1,#10111101B ; Dua lampu berikutnya menyala, P1.1 dan P1.6 (=0BDh) Acall Delay Mov P1,#01111110B ; Dua lampu berikutnya menyala, P1.0 dan P1.7 (=7Eh) Acall Delay Mov P1,#10111101B ; dua lampu berikutnya menyala, P1.1 dan P1.6 (=0BDh) Acall Delay Mov P1,#11011011B ; Dua lampu berikutnya menyala, P1.2 dan P1.5 (=0DBh) Acall Delay Sjmp Mulai ; Lompat ke alamat dg label Mulai ; ;-subrutin DELAY----------------------------------------------------------- ; ; subrutin ini hanya sekedar melakukan penundaan sesaat dengan cara ; mengulangi proses (pengurangan isi register) hingga dicapai suatu ; kondisi tertentu ; ;-------------------------------------------------------------------------- DELAY: MOV R0,#5H ; Isi Register R0 dengan 5 (5x ulang) DELAY1: MOV R1,#0FFH ; Isi Register R1 dengan 255 (255x ulang DELAY2: MOV R2,#0 ; Isi register R2 dengan 0 (256x ulang) DJNZ R2,$ ; R2=R2-1, jika R2 belum 0 ulangi lagi DJNZ R1,DELAY2 ; R1=R1-1, jika R1 belum 0 ulangi DELAY2 DJNZ R0,DELAY1 ; R0=R0-1, jika R0 belum 0 ulangi DELAY1 RET ; Kembali ke pemanggil subrutin DELAY END