Jumat, 13 September 2019

Program untuk mematikan dan menghidupkan LED (flip-flop)

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