Running LED (Mikroprosesor 8086)
[Kembali]
[Home]
1. Rangkaian [Kembali]
Prinsip kerja dari rangkaian di atas adalah, ketika diaktifkan,
mikroproseor akan membuat LED bergrak dari kiri ke kanan, kemudian kanan
ke kiri, begitu seterusnya. Prinsipnya, pertama mikrokontroler
mengirimkan alamat untuk mengakses I/O IC 8255 melewati A0-A15, kemudian
masuk ke IC 74273 D0-D7. Alamat tersebut akan dilewatkan dari D0-D7 ke
Q0-Q7 apabila sinyal kontrol alih dikeluarkan oleh pin ALE mikroprosesor
dan diinverterkan sebelum diumpankan ke CLK IC 74273. Apabila telah
aktif sinyal CLK, maka alamat akan ditahan di Q0-Q7 IC 74273. kemudian
jika Q1-Q5 IC 74273 yang membawa alamat dari AD9-AD11 dihubungkan dengan
decoder 74154. maka ketika nilai AD9-AD11 ini berlogika 0 semua dan E1
E1 IC ini juga berlogika 0, maka pin 0 IC 75154 akan berlogika nol yang
kemudian pin ini dihubingkan dengan CS pada IC 8255. sehingga alamat
yang dikirimkan adalah untuk akses IC 8255.<br>
Kemudian untuk mengirim data dari Mikroprosesor 8086 ke IC I/O 8255,
pin AD0-AD7 mikroprosesor dihubungkan dengan pin D0-D7 IC 8255. PORTA
IC 8255 menjadi output bagi mikroprosesor untuk kemudian dihubungkan
dengan 4 buah LED yang akan digerakkan dari kiri ke kanan dan kembali
lagi ke kiri dengan settingan program di bawah ini.
2. Program [Kembali]
data segment ; inisialisasi data dari I/O 8255
PORTA EQU 00H
PORTB EQU 02H
PORTC EQU 04H
PCW EQU 06H
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
;
mov ax, data ; masukkan data ke AX
mov ds, ax ; masukkan ax ke cs
mov es, ax ; masukkan ax ke es
MOV DX,PCW ; masukkan PWC ke DX
MOV AL,10000010B ; IC I/O Mode 2 PORTA dan C output, PORTB input
OUT DX,AL ; berikan mode ini ke IC I/O
BEGIN:
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00000001B ; Bit untuk LED 1 menyala
KIRI: ; LED Bergerak ke kanan
MOV DX,PORTA ;
OUT DX,AL ; masukkan PORTA ke DX
SHL AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KIRI ; Go to KIRI 3 kali karena cx 3
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00001000B ; Bit untuk LED 4 menyala
KANAN: ; LED Bergerak ke kiri
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Hidupkan LED
SHR AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KANAN ; Go to KANAN 3 kali karena cx 3
JMP BEGIN ; Ulangi proses dari led bergerak ke kanan
delay proc near ; Procedure delay
push cx ; simpan cx
mov cx,2fffh ; isi cx dengan lama delay
loop $ ; looping sampai cx=0
pop cx ; keluarkan kembali cx
ret ; kembali ke program utama
delay endp ; akhir procedure delay
end start
PORTA EQU 00H
PORTB EQU 02H
PORTC EQU 04H
PCW EQU 06H
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
;
mov ax, data ; masukkan data ke AX
mov ds, ax ; masukkan ax ke cs
mov es, ax ; masukkan ax ke es
MOV DX,PCW ; masukkan PWC ke DX
MOV AL,10000010B ; IC I/O Mode 2 PORTA dan C output, PORTB input
OUT DX,AL ; berikan mode ini ke IC I/O
BEGIN:
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00000001B ; Bit untuk LED 1 menyala
KIRI: ; LED Bergerak ke kanan
MOV DX,PORTA ;
OUT DX,AL ; masukkan PORTA ke DX
SHL AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KIRI ; Go to KIRI 3 kali karena cx 3
MOV CX,3 ; Membuat perulangan menjadi 3x
MOV AL,00001000B ; Bit untuk LED 4 menyala
KANAN: ; LED Bergerak ke kiri
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Hidupkan LED
SHR AX,1 ; Geser bit Hidup LED ke kanan
CALL DELAY ; Delay
LOOP KANAN ; Go to KANAN 3 kali karena cx 3
JMP BEGIN ; Ulangi proses dari led bergerak ke kanan
delay proc near ; Procedure delay
push cx ; simpan cx
mov cx,2fffh ; isi cx dengan lama delay
loop $ ; looping sampai cx=0
pop cx ; keluarkan kembali cx
ret ; kembali ke program utama
delay endp ; akhir procedure delay
end start
Tidak ada komentar:
Posting Komentar