Oke disini kita akan belajar dasar-dasar pemrograman mikro dengan menggunakan bahasa assembler tidak terlalu susah, pasti lama-lama nanti juga akan mengerti setelah diperaktekan.
sebelum kita masuk keprogram saya ingin memberikan gambaran bagaimana rangkaian dasar mikro jika dihubungkan dengan LED rangkaiannya seperti pada gambar dibawah ini silahkan dilihat
Pada gambar kita Lihat kaki Anoda pada LED terhubung ke VCC dan Kaki katoda pada LED terhubung ke kaki port mikro pada Port 1, mengapa ini terjadi karena LED nantinya akan dikendalikan oleh mikro, jadi bisa dikatakan hidup matinya LED berdasarkan program yang diisikan kedalam mikro, dan juga dari gambar ini bisa kita logika mikro akan aktif “LOW” atau mengeluarkan logika (0) untuk menyalakan LED, kenapa saya katakan (0) karena jika berlogika (1) maka akan mengeluarkan tegangan 5V dan jika berlogika (0) maka akan mengeluarkan tegangan 0V, karena kaki anoda LED sudah terhubung ke VCC maka untuk menghidupkan LED harus diberikan logika (0) supaya terjadi beda potensial sehingga LED akan menyala, oke seperti itu penjelasannya
nah pada program ini saya ingin menghidupkan LED secara Flip-flop yaitu menghidupkan LED yang terhubung di kaki port P1.0 s/d P1.3 dan kemudian menghidupkan LED yang terhubung di kaki port P1.4 s/d P1.7 sehingga akan menyala bergantian
REPORT THIS AD
ini dia programnya
$MOD51
;Program dibawah ini merupakan aplikasi untuk membuat kelompok 4 LED mati-hidup
;secara bergantian ( flip-flop )
;===============================================================================
ORG 0H
MULAI:
MOV P1,#00001111B ;LED P1.4 S/D P1.7 NYALA
ACALL DELAY ;PANGGIL SUBRUTIN DELAY
MOV P1,#11110000B ;LED P1.0 S/D P1.3 NYALA
ACALL DELAY ;PANGGIL SUBRUTIN DELAY
SJMP MULAI ;LOMPAT KE LABEL ALAMAT MULAI
;===================
;SUBRUTIN DELAY
;——————-
DELAY:
MOV R0,#5 ;ISI REGISTER R0 DENGAN 5
DELAY1:
MOV R1,#0FFH ;ISI REGISTER R1 DENGAN FF (HEX)
DELAY2:
MOV R2,#0
DJNZ R2,$
DJNZ R1,DELAY2 ;KURANGI R1 DENGAN 1,BILA HASILBELUM
;SAMA DENGAN 0 MAKA LOMPAT KE DELAY2
DJNZ R0,DELAY1 ;KURANGI R0 DENGAN 1,BILA HASIL
;BELUM SAMA DENGAN 0 MAKA LOMPAT KE
DELAY1
RET ;KEMBALI KEALAMAT SETELAH PERINTAH
;”ACALL DELAY”
END
MOV = merupakan instruksi untuk memindahkan data 1 byte ( yah istilah bodohnya untuk menjalankan perintah untuk melakukan apa jika MOV P1, #00001111B berati ya menghidupkan LED pada P1.0 s/d P1.3)
CALL = merupakan instruksi untuk memanggil atau lompat kesuatu sub rutin
DJNZ (Degree jump if not zero) = merupakan instruksi perintah untuk
Kurangi 1 isi suatu register dan lompat kesuatu alamat tertentu jika isi register 0
RET = merupakan instruksi yang akan kembalai ke bawah instruksi CALL
Tidak ada komentar:
Posting Komentar