Gambar Antarmuka Port 1 dengan LED
Prinsip kerja Hardware, yaitu saat kita memberikan logika 0 pada port 1 maka kita akan mendapatkan led menyala. Hal ini dikarenakan terjadi perbedaan tegangan pada kaki anoda dan katoda, saar kita memberikan logika 1, maka Led akan padam karena disana kita menggunakan conmmon anoda yang terhubung dengan VCC.
Contoh program
sederhana untuk menyalakan Led.
$MOD51
org
00h ; Alamat mulainya
program
mov
p1,#00H ; keluarkan data ke
port 1 dengan nilai 00
;
Hexa atau 00000000 ;Biner end ; done
Simpan pada direktori yang sama
dengan direktori ASM51, misal C:\Mikro\.
Lakukan Proses Assembly dengan
masuk ke dos, yaitu masuk direktori C:\Mikro\
Ketikkan perintah Asm51
Nama_file.asm
Pastikan tidak ada error
Ketikkan perintah OH
Nama_file.OBJ
Sekarang kita sudah punya file Hexa nya, yang diahasilkan dari
proses diatas Buka Program ISP-Flash Programmer Version 30.a Pilih Open File,
dan masukkan program yang akan kita isikan ke mikrokontroler Yang terakhir Klik
Write. Dan pastikan tidak ada error
Pasang Power
Suplay, hubungkan mikrokontroler dengan PC menggunakan DB25 Cable. Tampilan Led
yang dipasang pada modul adalah Led pada port 1
Program diatas
hanya menyalakan Led pada port 1, dengan cara memberikan data ke port 1 berupa
bilangan 00 Hexa, karena sifat dari hardware active low, maka led menyala.
Program untuk membuat led Flip Flop pada Port 1
$MOD51
; Lampu flip-flop pada Port 1
ORG 0H ; program ditempatkan pada lokasi
0000H
MULAI:
MOV P1,#00001111B ; LED P1.4 s/d P1.7 nyala (heksa=
#0FH)
ACALL DELAY ; lakukan penundaan sesaat (sub.
DELAY)
MOV P1,#11110000B ; LED P1.0 s/d P1.3 nyala (heksa=
#0F0H)
ACALL DELAY ; lakukan penundaan sesaat (sub. DELAY)
SJMP MULAI ; ulangi lagi dari awal
;-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 DELAY1:
MOV R1,#0FFH
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
Yang Pertama
dilakukan adalah memberikan data ke port 1 0FH, sehingga 4 led menyala dan 4
led padam, kemudian kita menunda waktu dengan menggunakan looping program.
Tunda waktu diperlukan agar efek kedipan led terlihat mata
Program Untuk membuat led ping pong ;
;----------------------------------------------------------------------
; Lampu menyala pingpong kiri ke kanan, kanan ke kiri di port 1
;----------------------------------------------------------------------
$MOD51
ORG 0H ; program ditempatkan pada lokasi 0000H
MOV A, #0FEH ; simpan data 11111110B ke akumulator
; (P1.0 menyala duluan)
MULAI:
MOV P1,A ; kirim data ke Port 1
ACALL DELAY ; tunda sebentar
RL A ; putar isi akumulator ke kiri 1 bit
CJNE A,#7FH,MULAI ; apakah A=01111111B ?
;Tidak, ulangi lagi!
MULAI1: ; Ya, lanjutkan ke proses berikut...
MOV P1,A ; kirim data ke Port 1
ACALL DELAY ; tunda sebentar
RR A ; putar isi akumulator ke kanan 1 bit
CJNE A,#0FEh,MULAI1 ; apakah A=11111110B ?
; Tidak, ulangi lagi!
SJMP MULAI ; Ya, ulangi lagi dari paling awal...
Delay:
Mov R0,#0 ; Isi Register R0 dengan 0 (256x ulang)
Delay1: Mov R1,#0 ; Isi Register R1 dengan 0 (256x ulang)
Djnz R1,$
Djnz R0,Delay1
Ret
End
Tidak ada komentar:
Posting Komentar