Custom Search

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

0 comments:

Post a Comment

Informasi Pilihan Identitas:
Google/Blogger : Khusus yang punya Account Blogger.
Lainnya : Jika tidak punya account blogger namun punya alamat Blog atau Website.
Anonim : Jika tidak ingin mempublikasikan profile anda (tidak disarankan).

Artikel yang serupa