Kamis, 22 Desember 2011

Simulasi Traffic Light_AT 89c51

Transfer File HEX_AT89c51

* ) TRANSFER PROGRAM KE IC MIKRO_AT89c51

“ Downloader AT89c51 “

* ) Cara Transfer Program Ke IC Mikro_AT89c51 :

1. Masukan IC Mikro Ke Socket ZIF ( Socket Warna Hijau ) Dengan Posisi Pin 1 Pada Handle.

2. Setelah IC Di Masukan Baru Handle Di Tekan Supaya IC Terkunci Pada Socket ZIF.

3. Masukan Konektor DB_9 ( Serial Port ) Pada CPU.

4. Masukan Juga Kabel Power Pada Stop Kontak Untuk Menghidupkan DownloaderNya.

5. Buka Aplikasi / Software Easy Downloader Pada Komputer.

Easy Downloader

Tampilan Easy Downloader

Tampilan Easy Downloader Setelah IC Mikro Terdeteksi

6. Setelah IC Mikro Terdeteksi, Tinggal Klik “ SEND “ Pilih Program Yg Akan Di Transfer Ke IC Mikro Dg File Yg Ber-Extensi ” HEX ”

7. Setelah Di Transfer Ke IC Mikro, Sebelum IC Di Lepas Dari Socket ZIF Jangan Lupa Matikan Dulu Catu Daya Pada Rangkaian DownloaderNya.

8. Tinggal IC Mikro Di Aplikasikan Pada Rangkaian / HardwareNya.

Menghidupkan LED

( Menghidupkan LED Dari Tengah Ke Samping )
$mod51
org 00h
mulai: mov p1, #00011000b
acall delay
mov p1, #00111100b
acall delay
mov p1, #01111110b
acall delay
mov p1, #11111111b
acall delay
mov p1, #00000000b
acall delay
sjmp mulai
;
; subrutin delay
;
delay: mov r0, #1
delay1: mov r1, #0FFh
delay2: mov r2, #0
djnz r2, $
djnz r1, delay2
djnz r0, delay1
ret
end

Flip-Flop

( Menghidupkan 4 Buah LED Bergantian )
$mod51
org 00h
mulai: mov p1, #00001111b
acall delay
mov p1, #11110000b
acall delay
sjmp mulai
;
; subrutin delay
;
delay: mov r0, #5
delay1: mov r1, #0FFh
delay2: mov r2, #0
djnz r2, $
djnz r1, delay2
djnz r0, delay1
ret
end

Display 7 Segmen

( Menghidupkan Display Angka 2 Digit )
$mod51
org 00h
jmp mulai
org 0bh
jmp hitung

hitung: cjne r5, #00h, maju
mov r5, #250
cjne r4, #00, maju2
mov r4, #16
cjne r7, #100, maju3
mov r7, #00
jmp exit
maju3: inc r7
jmp exit
maju2: dec r4
jmp exit
maju: dec r5
jmp exit

exit: reti
mulai:
mov p0, #00
mov p1, #00
mov p2, #00
mov r7, #00
mov r5, #250
mov r4, #16
mov tmod, #82h
mov th0, #6
mov tcon, #00h
mov ie, #00h
setb ie.7
setb ie.1
setb tr0
ulang:
mov p1, r7
mov acc, r7
mov b, #10
div ab ; Hasil di a sisa di b
call tampil1
setb p2.1
call delay
clr p2.1
mov a, b
call tampil1
setb p2.0
call delay
clr p2.0
jmp ulang
tampil1:
cjne a, #0, satu
jmp nol
satu:
cjne a, #1, dua
jmp siji
dua:
cjne a, #2, tiga
jmp loro
tiga:
cjne a, #3, empat
jmp telu
empat:
cjne a, #4, lima
jmp papat
lima:
cjne a, #5, enam
jmp limo
enam:
cjne a, #6, tujuh
jmp enem
tujuh:
cjne a, #7, lapan
jmp pitu
lapan:
cjne a, #8, sanga
jmp wolu

nol: mov p0, #00111111b
ret
siji: mov p0, #00000110b
ret
loro: mov p0, #01011011b
ret
telu: mov p0, #01001111b
ret
papat: mov p0, #01100110b
ret
limo: mov p0, #01101101b
ret
enem: mov p0, #01111101b
ret
pitu: mov p0, #00000111b
ret
wolu: mov p0, #01111111b
ret
sanga: mov p0, #01101111b
ret

delay: ;mode pengurangan 5x255
mov r0, #10
loop1: mov r1, #255
loop: dec r1
cjne r1,#00, loop
dec r0
cjne r0, #00, loop1
ret
end

Motor Stepper

( Memutar Balik Motor Stepper )
$mod51
org 00h
jmp mulai

mulai:
mov r0, #55 ( Mengatur Banyaknya Putaran #80 = 1,5 Putaran )
ulang1:
mov p0, #00001000b ( Perintah Putar Pertama Ke Kiri )
call tunda
mov p0, #00000100b
call tunda
mov p0, #00000010b
call tunda
mov p0, #00000001b
call tunda
djnz r0, ulang1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov r0, #55
ulang2:
mov p0, #00000001b ( Perintah Putar Ke Dua Ke Kanan )
call tunda
mov p0, #00000010b
call tunda
mov p0, #00000100b
call tunda
mov p0, #00001000b
call tunda
djnz r0, ulang2

jmp mulai

tunda: mov r4, #20 ( Mengatur Kecepatan Putar #50 = Lebih Lambat )
maning: mov r5, #255
kurang: dec r5
cjne r5, #00h, kurang
djnz r4, maning
ret
end

Running LED

( LED Berjalan / Running LED )
$mod51
org 00h
jmp mulai
mulai:
;inisialisasi
mov p0, #00
mov p1, #00
mov p2, #00
mov p3, #00
;kedip mulai disini
ulang: mov a, #1 ( Menghidupkan LED Dg Mengisi Acumulator Dg Nilai 1 )
kiri: rl a ( Merotasikan Isi Acumulator Ke Kiri )
mov p1,a ( Kirimkan Isi Acumulator Ke Port 1 )
call delay ( Penundan Sesaat )
call delay
cjne a, #128,kiri
kanan: rr a ( Merotasikan Isi Acumulator Ke Kanan )
mov p1,a ( Kirimkan Isi Acumulator Ke Port 1 )
call delay ( Penundan Sesaat )
call delay
cjne a, #1,kanan ( Menjalankan Isi Acumulator Ke Kana 1 Per 1 )
jmp ulang
delay: ;mode pengurangan 5x255
mov r0, #255 ( Nilai Di Perkecil, Berkedipnya Lebih Cepat )
loop1: mov r1, #255
loop: dec r1
cjne r1,#00, loop ( Sebelum Isi Register Sampai Pada Alamat 00h Maka Lanjut Ke Loop )
dec r0
cjne r0, #00, loop1
ret
end

Display 7 Segmen_External

( Menampilkan Display Angka 2 Digit Secara External )
$mod51
org 00h
jmp mulai
org 03h ;external0
jmp hitung

hitung:
cjne r7, #100, maju3
mov r7, #00
jmp exit
maju3: inc r7
jmp exit

exit: reti
mulai:
mov p0, #00
mov p1, #00
mov p2, #00
mov r7, #00
mov tcon, #00h
mov ie, #00h
setb ie.7
setb ie.0
setb it0
ulang:
mov p1, r7
mov acc, r7
mov b, #10
div ab ; Hasil di a sisa di b
call tampil1
setb p2.1
call delay
clr p2.1
mov a, b
call tampil1
setb p2.0
call delay
clr p2.0
jmp ulang
tampil1:
cjne a, #0, satu
jmp nol
satu:
cjne a, #1, dua
jmp siji
dua:
cjne a, #2, tiga
jmp loro
tiga:
cjne a, #3, empat
jmp telu
empat:
cjne a, #4, lima
jmp papat
lima:
cjne a, #5, enam
jmp limo
enam:
cjne a, #6, tujuh
jmp enem
tujuh:
cjne a, #7, lapan
jmp pitu
lapan:
cjne a, #8, sanga
jmp wolu

nol: mov p0, #00111111b
ret
siji: mov p0, #00000110b
ret
loro: mov p0, #01011011b
ret
telu: mov p0, #01001111b
ret
papat: mov p0, #01100110b
ret
limo: mov p0, #01101101b
ret
enem: mov p0, #01111101b
ret
pitu: mov p0, #00000111b
ret
wolu: mov p0, #01111111b
ret
sanga: mov p0, #01101111b
ret

delay: ;mode pengurangan 5x255
mov r0, #10
loop1: mov r1, #255
loop: dec r1
cjne r1,#00, loop
dec r0
cjne r0, #00, loop1
ret
end

Loud Speaker

( Membunyikan Loud Speaker / Palang Pintu Kereta Api )
$mod51
org 00h
jmp mulai
org 0bh
jmp hitung

hitung: cjne r5, #00h, maju
mov r5, #14
maju: dec r5
cjne r5, #00, exit
cjne r7, #50, maju2
mov r7, #00
maju2: inc r7
exit: reti

mulai: mov a, #00h
mov p0, #00h
mov p1, #00h
mov p3, #00h
mov r5, #20h
mov tmod, #81h
mov tcon, #00h
mov ie, #00h
setb ie.7
setb ie.1
setb tr0

loop: mov a, r7
jnb acc.0, nada1
acall beep2
nada1: acall beep
jmp loop

beep: mov r1, #150
ulang: dec r1 ;12 siklus
setb p0.0 ;12 siklus
cjne r1, #00h, ulang ;24 siklus
mov r2, #150
ulang2: dec r2
clr p0.0 ;12 siklus
cjne r2, #00h, ulang2
ret

beep2: mov r1, #200 ( Nilainya Semakin Kecil Frekuensinya Semakin Tinggi / Melengking )
ulang3: dec r1
setb p0.0
cjne r1, #00h, ulang3
mov r2, #200
ulang4: dec r2
clr p0.0
cjne r2, #00h, ulang4
ret
end