1. Tujuan [kembali]
Memahami aplikasi rangkaian decoder interfacing keypad dan seven segment menggunakan PPI 8255 dan Mikroprocessor
2. Komponen [kembali]
a. Mikroprosesor 8086
b. Latch 74273
c. PPI 8255a
d. Decoder 74154
e. 7 Segment
f. Keypad
3. Gambar Rangkaian dan Flowchart [kembali]
5. Prinsip Kerja Rangkaian [kembali]
Prinsip kerja dari rangkaian di atas adalah, ketika tombol pada keypad ditekan maka nilai yang ditekan pada keypad akan ditampilkan pada 7-Segment. 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.
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 output keypad dan PORTB pada IC ini dihubungkan dengan input Keypad serta PORTC pada IC ini sebagai output yang dihubungkan dengan 7-Segment.
Listing Program
data segment ; Inisialisasi IC 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 ; isi ds dengan ax
mov es, ax ; isi es dengan ax
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,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FEH ; nilai agar PA0 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 1 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakah PORTB bernilai 0FEH atau tombol 1 Keypad ditekan?
JNE NEXT1 ; Jika tidak, pergi ke NEXT1
MOV AL,006H; ; Jika iya, berikan nilai PORC 006H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 1
JMP GO ; Pergi ke GO
NEXT1:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 4 Keypad ditekan?
JNE NEXT2 ; Jika tidak, pergi ke NEXT2
MOV AL,066H; ; Jika iya, berikan nilai PORC 066H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 4
JMP GO ; Pergi ke GO
NEXT2:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 7 Keypad ditekan?
JNE NEXT3 ; Jika tidak, pergi ke NEXT3
MOV AL,007H; ; Jika iya, berikan nilai PORC 007H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 7
JMP GO ; Pergi ke GO
NEXT3:
CMP AL,0F7H ; Apakah PORTB bernilai 0F7H atau tombol bintang Keypad ditekan?
JNE GO ; Jika tidak, pergi ke GO
MOV AL,07CH; ; Jika iya, berikan nilai PORC 07CH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan huruf b
GO:
LOOP EELOOP ; Looping ke EELOOP sebanyak CX
MOV CX,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FDH ; nilai agar PA1 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 2 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP2:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakan PORTB bernilai 0FEH atau tombol 2 Keypad ditekan?
JNE NEXT12 ; Jika tidak, pergi ke NEXT12
MOV AL,05BH; ; Jika iya, berikan nilai PORC 05BH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 2
JMP GO2 ; Pergi ke GO2
NEXT12:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 5 Keypad ditekan?
JNE NEXT22 ; Jika tidak, pergi ke NEXT22
MOV AL,06DH ; Jika iya, berikan nilai PORC 06DH atau 7-Segment pada PORTC
OUT PORTC,AL ; Menyalakan angka 5
JMP GO2
NEXT22:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 8 Keypad ditekan?
JNE NEXT32 ; Jika tidak, pergi ke NEXT32
MOV AL,07FH; ; Jika iya, berikan nilai PORC 07FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 8
JMP GO2 ; Pergi ke GO3
NEXT32:
CMP AL,0F7H ; Apakah PORTB bernilai 0F7H atau tombol 0 Keypad ditekan?
JNE GO2 ; Jika tidak, pergi ke GO2
MOV AL,03FH; ; Jika iya, berikan nilai PORC 03FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 0
GO2:
LOOP EELOOP2 ; Looping ke EELOOP2 sebanyak CX
MOV CX,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FBH ; nilai agar PA2 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 3 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP3:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakah PORTB bernilai 0FEH atau tombol 3 Keypad ditekan?
JNE NEXT13 ; Jika tidak, pergi ke NEXT13
MOV AL,04FH; ; Jika iya, berikan nilai PORC 04FH atau 7-Segment pada PORTC
OUT PORTC,AL ; Menyalakan angka 3
JMP GO3 ; Pergi ke GO3
NEXT13:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 6 Keypad ditekan?
JNE NEXT23 ; Jika tidak, pergi ke NEXT23
MOV AL,07DH; ; Jika iya, berikan nilai PORC 07DH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 6
JMP GO3 ; Pergi ke GO3
NEXT23:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 9 Keypad ditekan?
JNE NEXT33 ; Jika tidak, pergi ke NEXT33
MOV AL,06FH; ; Jika iya, berikan nilai PORC 06FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 9
JMP GO3 ; Pergi ke GO3
NEXT33: ; Apakah PORTB bernilai 0F7H atau tombol Pagar Keypad ditekan?
CMP AL,0F7H ; Jika tidak, pergi ke GO3
JNE GO3 ; Jika iya, berikan nilai PORC 00CH atau 7-Segment pada PORTC
MOV AL,00CH; ; Menyalakan huruf A
OUT PORTC,AL;
GO3:
LOOP EELOOP3 ; Looping ke EELOOP3 sebanyak CX
JMP BEGIN ; Kembali ulangi program
end start
6. Link Download [kembali]
data segment ; Inisialisasi IC 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 ; isi ds dengan ax
mov es, ax ; isi es dengan ax
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,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FEH ; nilai agar PA0 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 1 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakah PORTB bernilai 0FEH atau tombol 1 Keypad ditekan?
JNE NEXT1 ; Jika tidak, pergi ke NEXT1
MOV AL,006H; ; Jika iya, berikan nilai PORC 006H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 1
JMP GO ; Pergi ke GO
NEXT1:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 4 Keypad ditekan?
JNE NEXT2 ; Jika tidak, pergi ke NEXT2
MOV AL,066H; ; Jika iya, berikan nilai PORC 066H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 4
JMP GO ; Pergi ke GO
NEXT2:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 7 Keypad ditekan?
JNE NEXT3 ; Jika tidak, pergi ke NEXT3
MOV AL,007H; ; Jika iya, berikan nilai PORC 007H atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 7
JMP GO ; Pergi ke GO
NEXT3:
CMP AL,0F7H ; Apakah PORTB bernilai 0F7H atau tombol bintang Keypad ditekan?
JNE GO ; Jika tidak, pergi ke GO
MOV AL,07CH; ; Jika iya, berikan nilai PORC 07CH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan huruf b
GO:
LOOP EELOOP ; Looping ke EELOOP sebanyak CX
MOV CX,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FDH ; nilai agar PA1 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 2 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP2:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakan PORTB bernilai 0FEH atau tombol 2 Keypad ditekan?
JNE NEXT12 ; Jika tidak, pergi ke NEXT12
MOV AL,05BH; ; Jika iya, berikan nilai PORC 05BH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 2
JMP GO2 ; Pergi ke GO2
NEXT12:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 5 Keypad ditekan?
JNE NEXT22 ; Jika tidak, pergi ke NEXT22
MOV AL,06DH ; Jika iya, berikan nilai PORC 06DH atau 7-Segment pada PORTC
OUT PORTC,AL ; Menyalakan angka 5
JMP GO2
NEXT22:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 8 Keypad ditekan?
JNE NEXT32 ; Jika tidak, pergi ke NEXT32
MOV AL,07FH; ; Jika iya, berikan nilai PORC 07FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 8
JMP GO2 ; Pergi ke GO3
NEXT32:
CMP AL,0F7H ; Apakah PORTB bernilai 0F7H atau tombol 0 Keypad ditekan?
JNE GO2 ; Jika tidak, pergi ke GO2
MOV AL,03FH; ; Jika iya, berikan nilai PORC 03FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 0
GO2:
LOOP EELOOP2 ; Looping ke EELOOP2 sebanyak CX
MOV CX,00FFH ; isi nilai CX dengan 00ffH
MOV AL,0FBH ; nilai agar PA2 PORTA IC 8255 berlogika 0, selebihnya 1 atau kolom 3 keypad low
MOV DX,PORTA ; masukkan PORTA ke DX
OUT DX,AL ; Berikan nilai tadi ke PORTA
EELOOP3:
IN AL,PORTB ; Dapatkan nilai PORTB
CMP AL,0FEH ; Apakah PORTB bernilai 0FEH atau tombol 3 Keypad ditekan?
JNE NEXT13 ; Jika tidak, pergi ke NEXT13
MOV AL,04FH; ; Jika iya, berikan nilai PORC 04FH atau 7-Segment pada PORTC
OUT PORTC,AL ; Menyalakan angka 3
JMP GO3 ; Pergi ke GO3
NEXT13:
CMP AL,0FDH ; Apakah PORTB bernilai 0FDH atau tombol 6 Keypad ditekan?
JNE NEXT23 ; Jika tidak, pergi ke NEXT23
MOV AL,07DH; ; Jika iya, berikan nilai PORC 07DH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 6
JMP GO3 ; Pergi ke GO3
NEXT23:
CMP AL,0FBH ; Apakah PORTB bernilai 0FBH atau tombol 9 Keypad ditekan?
JNE NEXT33 ; Jika tidak, pergi ke NEXT33
MOV AL,06FH; ; Jika iya, berikan nilai PORC 06FH atau 7-Segment pada PORTC
OUT PORTC,AL; ; Menyalakan angka 9
JMP GO3 ; Pergi ke GO3
NEXT33: ; Apakah PORTB bernilai 0F7H atau tombol Pagar Keypad ditekan?
CMP AL,0F7H ; Jika tidak, pergi ke GO3
JNE GO3 ; Jika iya, berikan nilai PORC 00CH atau 7-Segment pada PORTC
MOV AL,00CH; ; Menyalakan huruf A
OUT PORTC,AL;
GO3:
LOOP EELOOP3 ; Looping ke EELOOP3 sebanyak CX
JMP BEGIN ; Kembali ulangi program
end start
6. Link Download [kembali]
Tidak ada komentar:
Posting Komentar