3.3. Running LED
Gambar 3.5. Rangkaian interface 8 x LED
;Percobaaan 3.3.1,Listing Program Interface 8 x LED
;pada listing berikut ini anda akan melihat empat buah LED yang menyala secara
;bergantian high byte terlebih dahulu kemudian akan disusul oleh low byte
;frekuensi pergantian ini dapat anda atur melalui subrutine delay
;LED Flip-Flop
Org 0h
Nop
Start: Mov P1,# 00001111b; mengeluarkan data 00001111b ke P0
Acall delay ; memanggil subrutine delay
Mov P1,#11110000b; mengeluarkan data 11110000b ke P0
Acall delay ; memanggil subrutine delay
Sjmp Start ; meloncat ke label start->Looping Forever
;==============
;Subrutin Delay
;==============
Delay: Mov R0,#0FFh ; isi register R0 dengan 5
Delay1:Mov R1,#0FFh ; isi register R1 dengan FFh
Delay2:Mov R2,#0FFh ; isi register R2 dengan FFh
DJNZ R2,$ ; kurangi R2 dengan 1 dan loncat ke baris ini
DJNZ R0,Delay1 ; kurangi R0 dengan 1 dan loncat ke delay1 bila R0
Ret ; tidak nol
end
;Percobaan 3.3.2, Interface 8 X LED
;Rencanakan program untuk RUNNING LED dari kiri ke kanan atau sebaliknya
;dengan mengeluarkan logika '0' secara bergantian pada port P0, mulai port P0.0
;sampai dengan P0.7 dan seterusnya
;Percobaan 3.3.3, Interface 8 X LED, RUNNING LED dengan mnemonic RL
;Listing program berikut merupakan contoh menghidupkan LED secara bergantian
;dari arah kiri
;Instruksi RL akan menggeser data pada akumulator ke kiri sebanyak 1 bit
Org 0h
Mov A, #11111110b
Start:
Mov P1,A
Acall delay ; memanggil subrutine delay
RL A
Sjmp Start ; meloncat ke label start->Looping Forever
;==============
;Subrutin Delay
;==============
Delay: Mov R0,#0FFh ; isi register R0 dengan 5
Delay1:Mov R1,#0FFh ; isi register R1 dengan FFh
Delay2:Mov R2,#0FFh ; isi register R2 dengan FFh
DJNZ R2,$ ; kurangi R2 dengan 1 dan loncat ke baris ini
DJNZ R0,Delay1 ; kurangi R0 dengan 1 dan loncat ke delay1 bila R0
Ret ; tidak nol
end
;Percobaan 3.3.4, Interface 8 X LED
;Rencanakan program untuk RUNNING LED dengan mnemonic RR
;untuk menjalankan LED bergantian dari arah kanan
;Percobaan 3.3.5, Interface 8 X LED
;Menghidupkan LED secara bergantian dari kiri ke kanan dan kembali ke kiri
;pada listing program berikut, LED akan bergeser ke kiri sampai pada bit 7
;setelah itu LED akan segera bergeser ke kanan sampai pada bit 0
;pada listing program ini, digunakan CJNE untuk mendeteksi apakah logika '0'
;sudah pada bit 7 atau bit 0 dan pergerakan LED ini diatur oleh delay
Org 0h
Nop
Mov A, #11111110b ; isi accumulator dengan data 11111110b
Start: Mov P1,A ; copy isi accumulator ke port P1
Acall delay ; memanggil subrutine delay
RL A ; putar isi accumulator ke kiri
CJNE A,#01111111b,Start ; bandingkan A dengan 01111111b bila tidak sama
; lompat ke label Start
Again: Mov P1,A ; copy isi accumulator ke Port P1
Acall delay ; memanggil subrutine delay
RR A ; putar isi accumulator ke kiri
CJNE A,#11111110b,Again ; bandingkan A dengan 11111110b bila tidak sama
SJMP Start ; meloncat ke label start->Looping Forever
;==============
;Subrutin Delay
;==============
Delay: Mov R0,#255 ; isi register R0 dengan 5
Delay1:Mov R1,#0FFh ; isi register R1 dengan FFh
Delay2:Mov R2,#0FFh ; isi register R2 dengan FFh
DJNZ R2,$ ; kurangi R2 dengan 1 dan loncat ke baris ini
DJNZ R0,Delay1 ; kurangi R0 dengan 1 dan loncat ke delay1 bila R0
Ret ; tidak nol
end
;Percobaan 3.3.6.
;Bar LED naik turun
;pada listing program berikut ini anda akan menyaksikan sebuah demo LED
;yang menyerupai lampu VU pada sistem audio, yang bergerak naik dan turun
Org 0h
Mulai: Mov A,#01111111B ; Masukkan data 11111111B ke Accumulator
MOV R4,#8
cek1: Mov P1,A ; keluarkan isi Accumulator ke Port 1
CLR C
RRC A ; panggil sub routine Delay
Acall Delay ; Rotate Accumulator left with carry
DJNZ R4,cek1
MOV R4,#8
cek2: SETB C
RLC A
Mov P1,A
Acall Delay
DJNZ R4,cek2
Sjmp mulai
;==============
;Subrutin Delay
;==============
Delay: Mov R0,#255 ; isi register R0 dengan 255
Delay1:Mov R1,#0FFh ; isi register R1 dengan FFh
Delay2:Mov R2,#0FFh ; isi register R2 dengan FFh
DJNZ R2,$ ; kurangi R2 dengan 1 dan loncat ke baris ini
DJNZ R0,Delay1 ; kurangi R0 dengan 1 dan loncat ke delay1 bila R0
Ret ; tidak nol
end
No comments:
Post a Comment