Minggu, 03 Mei 2009



Membuat Led dengan nyala naik turun seperti grafik BAR/grafik batang
berikut contoh program dengan bahasa Assembly:

; ---------------------------------------------------
; Demo BAR LED pada Port 1
; BAR naik/turun File name LED4
; ---------------------------------------------------
$include(REG51.inc)

Org 0h
Mulai:
Mov A,#01111111B ; A=01111111B
MOV R4,#8 ; R4=8 sejumlah LED pd P1
cek1: Mov P1,A ; P1 = A
CLR C ; Carry = 0
RRC A ; Geser A kekanan, paling kiri diisi Carry
call Delay ; panggil delay
djnz R4,cek1 ; ulangi mulai label cek 1 sebanyak R4 (8 kali)
;
MOV R4,#8 ; R4=8 sejumlah LED pd P1
cek2: setb C ; Carry = 1
RLC A ; Geser A kekiri, paling kanan diisi Carry
mov P1,A ; P1 = A
call Delay ; panggil delay
call delay
djnz R4,cek2 ; ulangi mulai label cek2 sebanyak R4 (8 kali)
call delay ; panggil delay
call delay
call delay
jmp mulai ; ulangi lagi mulai dari awal ke label “Mulai”
;-------------------
; sub routine delay
;-------------------
Delay: DJNZ R3,delay
Djnz R1,Delay
Ret
End


Sedangkan penulisan dalam bahasa C sbb:

#include // file name LED4C

void Delay ()
{
int lama = 10000; // lama diberi nilai awal = 10000
while (lama-- > 0); // lama=lama-1, ulangi terus sampai lama = 0
}

void main ()
{
int batas; // definisi variable batas
while (batas < p1 =" 0x7F;" 1 =" 11111110" batas =" 0;" batas =" 0" p1 =" (P1">>1); // P1 = P1 di rotate kekanan
delay(); // panggil rutin delay
batas++; // batas = batas + 1 (increment)
}
batas = 0; // batas = 0
while (batas <= 7) // bila batas <= 7 kerjakan dibawah ini { P1 = (P1<<1|1); p1 =" P1" batas =" batas"
Selamat mencoba!!

Tidak ada komentar: