Aplikasi rangkaian keypad

[menuju akhir]


1. Tujuan [kembali]

1.  Mampu memahami dan membuat bahasa assembler menggunakan software emu8086
2. Dapat membuat program untuk menulis dan membaca input menggunakan bahasa assembler

2. Alat dan Bahan [kembali]

- Software emu8086

- Mikroprosesor 8086

- Keypad

- Resistor

- IC Latch 74273

- IC Decoder 74154

- IC 8255A

3. Dasar Teori [kembali]

1. Mikrokontroler 8086
Mikroprosesor atau CPU adalah “otak” yang merupakan pengendali utama semua operasi dalam sistem komputer. Mikroprosesor mengambil instruksi biner dari memori, menerjemahkannya menjadi serangkaian aksi dan menjalankannya. Aksi tersebut bisa berupa transfer data dari dan ke memori, operasi aritmatika dan logika, atau pembangkitan sinyal kendali. Intel 8086 adalah mikroprosesor 16 bit, di mana dia dapat bekerja secara internal menggunakan operasi 16 bit dan secara eksternal dapat mentransfer data 16 bit melalui bus data.

Arsitektur Mikroprosesor
Prosesor 8086 dapat dihubungkan dengan bus alamat yang berukuran 20 bit, sehingga mampu mengalamati memori maksimal 220 = 1.048.576 byte (1 MB). Diagram blok arsitektur 8086 dapat dilihat pada Gambar. Mikroprosesor 8086 terbagi atas 2 unit, yaitu unit antarmuka bus (bus interface unit, BIU) dan unit pengeksekusi (execution unit, EU).
Unit Antarmuka Bus (BIU)
Unit ini merupakan bagian yang berhubungan langsung dengan “pihak luar”: bus alamat dan bus data. BIU mengirim alamat ke bus alamat, mengambil instruksi (fetch) dari memori, membaca data dari port dan memori, serta menulis data ke port dan memori (menangani transfer data antara bus dan unit eksekusi).
BIU tersusun atas:
a. Instruction Stream Byte Queue (ISBQ).
BIU memfetch instruksi dari memori sebanyak-banyaknya 6 buah instruksi ke depan. Hal ini dilakukan agar eksekusi progam menjadi lebih cepat. Instruksi yang sudah diambil ini ditaruh di ISBQ yang berupa 6 buah register first-in-first-out. BIU dapat melakukan fetching selagi EU menerjemahkan dan mengeksekusi instruksi yang tidak membutuhkan penggunaan bus (misalnya operasi matematis menggunakan register internal). Ketika EU selesai melaksanakan suatu instruksi, maka dia tinggal mengambil perintah berikutnya di ISBQ, tanpa harus mengirim alamat ke memori untuk mengambil instruksi berikutnya, sehingga eksekusi akan lebih cepat. Kegiatan fetching instruksi berikutnya selagi menjalankan suatu instruksi disebut sebagai: pipelining. Pada mikroprosesor yang lebih baru, ukuran ISBQ tidak hanya 6 byte tetapi mencapai 512 byte, ini efektif untuk program yang mempunyai banyak kalang (struktur program yang berulang).

b. Register segmen.
BIU berisi 4 buah register segmen 16 bit, yaitu: code segment (CS), data segment (DS), extra segment (ES), dan stack segment (SS). Sistem komputer 8086 mempunyai bus alamat 20 bit, tetapi ukuran register - termasuk register alamat (memory address register) – yang dimilikinya hanya 16 bit, lantas bagaimana cara mengatasinya. Cara pemberian alamat 20 bit dilakukan menggunakan 2 komponen alamat: segmen dan offset, yang masing-masing berukuran 16 bit. BIU akan menggeser ke kiri nilai segmen sebanyak 4 bit (mengalikan dengan 16), kemudian menambahkan offset untuk memperoleh alamat fisik memori yang dikirimkan melalui bus alamat. Untuk lebih jelasnya, diberi contoh untuk memberi alamat fisik $38AB4( ) 3 , segmen dapat diisi dengan angka $348A, dan offset diisi dengan angka $4214, lihat Gambar. Cara penulisan kombinasi segmen dan offset adalah:
segment:offset

Sehingga untuk contoh ini, penulisannya adalah $348A:$4214. Perlu diingat bahwa kita bisa menggunakan kombinasi nilai segmen dan offset yang bervariasi untuk memberi alamat fisik yang sama, misalnya $38AB:$0004, $3800:$0AB4, dsb.

Secara umum, suatu program terdiri atas 4 bagian: segmen code yang berisi instruksi; segmen data, berisi data yang telah dialokasikan sebelumnya (statik); segmen ekstra, untuk variabel dinamik; serta segmen stack yang dipakai untuk menyimpan informasi pada saat pemanggilan subrutin. Informasi segmen disimpan dalam keempat register segmen sesuai dengan namanya.

c. Instruction Pointer (IP)
, adalah register berisi informasi offset yang bersama-sama CS menunjuk posisi dalam memori di mana instruksi berikutnya berada.

Unit Eksekusi (EU)
Unit ini memberitahu BIU di mana mengambil instruksi dan data, menerjemahkan kode instruksi, dan menjalankannya. EU tersusun atas:
1. Dekoder instruksi : yang mengambil urut-urutan instruksi dari ISBQ kemudian menerjemahkannya ke runtutan aksi yang harus dikerjakan oleh EU.
2. Sistem kontrol : merupakan rangkaian yang mengendalikan kerja mikroprosesor berdasarkan instruksi yang telah diterjemahkan oleh dekoder instruksi tadi.
3. Arithmetic Logic Unit (ALU) : yaitu bagian dari mikroprosesor yang dapat melakukan operasi matematis (misalnya operasi penjumlahan, pengurangan, perkalian, dan pembagian) dan logika (misalnya operasi AND, OR, XOR, geser, dan rotasi) 16 bit.
4. Register flag (bendera) : yaitu register flip-flop 16 bit yang menunjukkan kondisi yang dihasilkan oleh eksekusi suatu operasi oleh EU. Selain itu flag juga mengatur beberapa operasi tertentu. Terdapat 9 flag dalam register flag 8086, seperti terlihat pada Gambar

Sebanyak 6 buah flag merupakan flag kondisi yang menunjukkan keadaan setelah eksekusi suatu instruksi, yaitu: Carry Flag (CF), Parity Flag (PF), Auxiliary Carry Flag (AF), Zero Flag (ZF), Sign Flag (SF), dan Overflow Flag (OF). Sedangkan, 3 buah flag sisanya berupa flag kontrol yang mengendalikan operasi tertentu, yaitu: Single Step Trap Flag (TF), Interrupt Flag (IF), dan String Direction Flag (DF).

e. Register serbaguna
, merupakan register yang dapat digunakan untuk menyimpan data yang akan diolah atau hasil suatu operasi oleh ALU. Terdiri atas 8 buah register 8 bit, yaitu AH, AL, BH, BL, CH, CL, DH, dan DL. Register-register ini juga dapat digunakan secara berpasangan sehingga membentuk register 16 bit, yaitu; AX (gabungan dari AH dan AL), BX, CX, dan DX. AX biasanya digunakan untuk menyimpan hasil operasi, sehingga disebut akumulator. CX biasanya digunakan untuk pencacah untuk keperluan perulangan/kalang (loop), sehingga disebut counter. BX dan DX biasanya digunakan sebagai offset dari alamat data di memori (dengan segmen DS).

f. Register pointer dan indeks
, terdiri atas Stack Pointer (SP), Base Pointer (BP), Source Index (SI), dan Destination Index (DI). Stack (tumpukan) adalah bagian dari memori yang digunakan untuk menyimpan informasi alamat program yang ditinggalkan pada saat terjadi pemanggilan subrutin/subprogram. Demikian juga apabila subrutin tersebut berupa fungsi yang menggunakan parameter, maka data parameter akan disimpan pula di stack. Alamat tumpukan terluar dari stack ditunjuk oleh SS:SP. Sedangkan BP digunakan sebagai offset yang menunjuk ke parameter-parameter fungsi yang dipanggil. SI dan DI biasanya digunakan sebagai offset (masing-masing berpasangan dengan ES dan DS) yang menunjuk ke suatu variabel/data untuk operasi string (larik data).

Pin Diagram Mikroprosesor 8086

Mikroprosesor 8086 mempunyai 40 kaki (pin) yang masing-masing digunakan untuk melewatkan sinyal tertentu. Setiap pin sinyal diberi nama berupa mnemonic yang sesuai dengan fungsinya. Sistem komputer 8086 mempunyai bus data selebar 16 bit dan bus alamat selebar 20 bit, sehingga dapat mengalamati memori sampai dengan 220 atau 1 Mb. Untuk menghemat jumlah pin, maka antara pin untuk data dan pin untuk alamat digabungkan dengan diberi nama AD0-AD15 (dari kata address data), sedangkan 4 bit alamat sisanya diberi nama A16-A19 (pin-pin ini juga digunakan untuk sinyal status).
Terdapat juga pin-pin untuk catu daya yang disuplaikan, yaitu VCC dan GND, masing-masing untuk tegangan catu daya dan pentanahan. Untuk dapat bekerja, selain membutuhkan catu daya, mikroprosesor 8086 juga memerlukan sinyal detak (clock) secara eksternal dengan frekuensi sampai 10 MHz. Sinyal clock ini dilewatkan ke pin CLK yang ada pada kaki nomor 19.
Pin-pin lainnya digunakan untuk sinyal kendali. Mikroprosesor 8086 dapat digunakan dalam 2 mode, minimum dan maksimum, yang masing-masing menggunakan pin kendali secara berbeda. Mode ini ditentukan dengan memberi nilai pada pin MXMN/ ( ) 1 , nilai 1 (dihubungkan dengan Vcc) untuk mode minimum dan nilai 0 (ditanahkan) untuk mode maksimum. Kebanyakan aplikasi menggunakan mode minimum. Pada mode ini, nama pin yang dipakai pada kaki nomor 24 sampai dengan 31 adalah yang berada di dalam tanda kurung (sebelah kanan)
Sinyal RESET digunakan untuk memerintah mikroprosesor agar melakukan inisialisasi dengan cara memberi nilai 0 pada register DS, SS, ES, IP, dan flag; serta nilai $FFFF untuk CS( ) 2 . Pin INTR dan NMI digunakan untuk menginterupsi kerja mikroprosesor. Jika ada sinyal pada kedua pin itu, maka mikroprossor akan menghentikan eksekusi program yang sedang dijalankannya, kemudian menjalankan subrutin sesuai yang dikehendaki, dan setelah selesai kembali ke tempat semula di mana program diinterupsi. Sinyal INTR (interrupt) berupa permintaan untuk melakukan interupsi yang dapat dianulir /tidak dipenuhi jika flag IF direset, sedangkan sinyal NMI (non maskable interrupt) tidak dapat ditutup/ditolak, artinya interupsi harus dilakukan. Pin INTA (interrupt acknowledge) digunakan oleh mikroprosesor untuk menjawab bahwa permintaan interupsi dari sinyal INTR dapat diterima/dijalankan
Pin IO M/ (memory/IO), RD (read), dan WR (write) digunakan untuk mengendalikan memori dan port pada saat pemindahan data. Sinyal IO M/ digunakan untuk memilih apakah memori atau port yang akan diakses oleh mikroprosesor. Jika hendak menghubungi memori, maka mikroprosesor memberi nilai tinggi (1) pada sinyal ini dan jika port yang hendak diakses maka sinyal ini diberi nilai rendah (0). Sinyal RD akan diaktifkan (bernilai rendah) jika operasi yang dilakukan adalah membaca, yaitu transfer data dari memori/port ke mikroprosesor. Sementara sinyal WR digunakan untuk menulis, tranfer data dari mikroprosesor ke memori/port, jika aktif. Sinyal-sinyal lain adalah R DT/ (data transmit/receive), DEN (data enable), ALE (address latch enable), dan BHE (bus high enable) yang akan dibahas kemudian.

2. Teori Bahasa Assembler
Dalam bahasa tingkat rendah tidak dibutuhkan struktur program karena semuanya diserahkan kepada pemakai.

Register
Register adalah sebagian kecil memori komputer yang dipakai untuk tempat penampungan data. Sebagian besar register yang terdapat pada mikroprosessor 8088 adalah 16 bit. Terdapat 5 kelompok register, diantaranya:

1. General Purpose Register
General Purpose Register dapat dibagi menjadi register low dan high bits, yang masing-masing berkemampuan 8 bit. Seperti register AX, register low-nya adalah AL dan register high-nya adalah AH.

Ada empat macam General Purpose Register yaitu:
    a. Register AX (AX+AL) atau Accumulator Register adalah register aritmatik untuk dipakai dalam operasi pertambahan, pengurangan, perkalian, dan pembagian. Register AH dapat juga digunakan untuk tempat kembali nilai service number untuk beberapa interrupt tertentu.
   b. Register BX (BH+BL) atau Base Register adalah salah satu dari dua register base Addressing mode, yang dapat mengambil atau menulis langsung dari/ke memori.
   c. Register CX (CH+CL) atau Counter Register adalah suatu counter untuk meletakkan jumlah lompatan pada loop yang dilakukan.
General Purpose Register dapat dibagi menjadi register low dan high bits, yang masing-masing berkemampuan 8 bit. Seperti register AX, register low-nya adalah AL dan register high-nya adalah AH.
    d. Register DX (DH+DL) atau Data Register mempunyai tiga tugas, yaitu:
   1. Membantuk AX dalam proses perkalian dan pembagian, terutama perkalian dan pembagian 16 bit.
      2. DX merupakan register offset dari DS.
      3. DX bertugas menunjukkan nomor port pada operasi port

2. Segment Register
  a. CS (Code Segment) Register berfungsi untuk menunjukkan segment, program yuang berapa dengan pasangan register ini adalah register IP
   b. DS (Data Segment) Register berfungsi untuk menunjukkan segment dari segment data. Pasangan dari DS adalah DX
    c. SS (Stack Segment) Register berfungsi untuk menunjukkan segment dari segment stack. Pasangan dari SS adalah SP.
   d. ES (Extra Segment) Register berfungsi untuk pemograman pada saat melakukan operasi ke segment lain.

3. Pointer Register berfungsi untuk menyimpan offset dari relative address
  a. IP (Insturction Pointer) Register berfungsi untuk menunjukkan baris perintah program. Pada saat program pertama dijalankan register akan langsung menunjuk pada awal program.
  b. SP (Stack Pointer) Register adalah merupakan pasangan SS yang digunakan untuk operasi stack. Pada saat pertama program dijalankan register ini akan menunjuk pada byte terakhir stack.
  c. BP (Base Pointer) Register mempunyai fungsi yang sama dengan register BX tetapi BX untuk menulis dan membaca segment DS (Data Segment) sedangkan BP menulis dan membaca segment SS(Stack Segment).

4. Index Register yaitu SI (Source Index) dan DI
(Destination Index) berfungsi untuk melakukan operasi STRING. Namun demikian, kedua register ini sering digunakan untuk menulis dan membaca dari atau ke memori seperti halnya BX dan BP.

5. Flag Register berfungsi untuk mengecek apakah program berfungsi atau tidak.
  a. Interrupt Flag, untuk mengecek apakah pada saat operasi Interrupt sedang aktif atau tidak, jika tidak aktif maka Interrupt tidak akan dijalankan.
  b. Carry Flag, untuk mengecek apakah saat operasi terjadi kesalahan atau tidak.
  c. Sign Flag, untuk menunjukkan apakah suatu bilangan bertanda atau tidak dan sebaliknya.

Perintah Dasar Assembler

1. MOV
  Adalah perintah untuk mengisi, memindahkan atau memperbaharui isi suatu register, variabel atau suatu lokasi memori.

  Syntax : MOV[operand1],[operand2]

 a. operand1 berupa register, variabel, lokasi memori
 b. operand2 berupa register, variabel, lokasi memori ataupun bilangan

contoh :
MOV AH,AL    ;mengcopy isi register AL ke register AH
MOV AH,02    ;mengisi register AH dengan 02

2. Int (Interrupt)
subrotine yang akan dipanggil setelah tersedia pada memori komputer. terdapat dua jenis interrupt, yaitu:
   a. BIOS interrupt yaitu 0H hingga 1FH yang disediakan oleh BIOS (Basic Input Output System)
contoh : Int 16H service 1FH berfungsi untuk mengecek apakah ada tombol keyboard yang ditekan.
   b. DOS interrupt yaitu Int 1FH keatas yang disediakan oleh DOS (Disk Operating System).
Contoh : Int 20H berfungsi menghentkan kerja suatu program..

3. Int 21h service 0Ah
Int 21h adalah salah satu Int yang termasuk DOS Interrupt, karena INT 21h mempunyai banyak sekali tugas, maka tugasnya dibagi-bagi menjadi beberapa bagian. Untuk memanggil bagian-bagian itu perlu menyertakan nomor bagiannya yang disebut juga service number. Contoh 21h yang bertugas mencatak sebuah huruf ke layar yaitu fungsi kedua dari Int 21h.

Service 0AH digunakan untuk melakukan input dengan lebih dari 1 karakter, dengan syarat register harus berisikan service number dari 21H tersebut.

Service 09H digunakan untuk mencetak huruf ke layar, untuk penggunaannya diakhiri dengan tanda dolar '$'

3. IC Latch 74273
Untuk menghubungkan address ke memori atau I-O maka diperlukan pemisahan address rendah yang multiplek dengan data dengan memakai rangkaian latch. Rangkaian latch akan selalu aktif dengan terhubungnya ke ground kaki LE maka untuk bekerjanya IC latch ini diperlukan sinyal kontrol yang di-input-kan ke kaki –OE. Pin -OE mendapat input dari pin ALE yang merupakan sinyal kontrol yang artinya pin ini akan aktif setiap mikroprosesor meng-output-kan address.

3. IC Decoder 74154
IC 74154 merupakan salah satu keluarga TTL yang dimana fungsi dari IC ini adalah sebagai dekoder/demultiplexter 4-16 saluran. Tiap decoder 4-saluran-ke 16-saluran monolit ini menerapkan rangkaian TTL untuk mengubah 4 input biner menjadi 16 jalur keluar, bila kedua input E1 dan E2 adalah rendah. Setiap komponen I-O harus diberi address. Misalkan, ada tiga komponen I-O yang yaitu PPI 8255, PIT 8253 dan PIC 8259 seperti maka untuk membedakannya dapat dibuatkan rangkaian decoder dengan memakai IC decoder 74154 yang keluarannya ada 16.

4. PPI (Programmable Pheriperal Interface)
Untuk hubungan input-output, mikroprosesor memerlukan suatu rangkaian interface. Interface menggunakan IC Programmable Peripheral Interface (PPI) 8255 yang mempunyai 3 port dengan masing-masing berkapasitas 8-bit. Jika dalam merancang sistem minimum 8088 ternyata memerlukan interface lebih dari 3 port maka dapat ditambahkan IC PPI 8255 sesuai kebutuhan dengan menambahkan rangkaian decoder-nya.

 
5. Keypad
Keypad adalah sekumpulan tombol atau sakelar yang disusun dalam kisi-kisi atau pola lainnya, biasanya ditemukan pada perangkat elektronik seperti telepon, kalkulator, dan sistem keamanan. Keypad memungkinkan pengguna untuk memasukkan data, perintah, atau informasi numerik ke dalam perangkat.
Spesifikasi Keypad:
Model keypad : keypad 4x3
Ukuran Pad : 69,2 x 76,9 x 0,8mm
Panjang Kabel: 3-1/3” atau 86mm (termasuk konektor)
Konektor: Dupont 7 pin, Pitch 0,1 “(2,54mm)
Rating maksimum : 35VDC, 100mA
Spesifikasi Isolasi : 100M Ohm, 100V
Daya Tahan Dielektrik : 250VRms (60Hz, 1 menit)
Pantulan Kontak : <= 5ms
Suhu Operasi : -20 hingga 40 ° C
6. 7-Segment
Seven segment merupakan bagian-bagian yang digunakan untuk menampilkan angka atau bilangan desimal. Seven segment terbagi menjadi 7 batang LED yang disusun membentuk angka 8. LED tersebut juga dapat digunakan untuk menampilkan huruf A-F yang disebut juga DOT Matriks. Setiap segment ini terdiri dari 1 atau 2 LED (Light Emitting Dioda). Seven segment bisa menunjukan angka-angka desimal serta beberapa bentuk tertentu.
Common Cathode merupakan bergabung menjadi satu Pin, sedangkan penujang Anoda bisa menjadi Input untuk masing-masing Segmen LED. Kaki Katoda yang terhubung menjadi 1 Pin ini merupakan Terminal Negatif (-) atau Ground sedangkan Signal Kendali (Control Signal) akan diberikan kepada masing-masing Kaki Anoda Segmen LED.LED Seven Segment Display Tipe Common Katoda.
Pada LED 7 Segmen jenis Common Cathode (Katoda), Kaki Katoda pada semua segmen LED adalah terhubung menjadi 1 Pin, sedangkan Kaki Anoda akan menjadi Input untuk masing-masing Segmen LED.  Kaki Katoda yang terhubung menjadi 1 Pin ini merupakan Terminal Negatif (-) atau Ground sedangkan Signal Kendali (Control Signal) akan diberikan kepada masing-masing Kaki Anoda Segmen LED.

4. Percobaan [kembali]

a. Listing Program
      
; Program: Kontrol Keypad dan 7-Segment menggunakan 8086
; Mikroprosesor: 8086
; IC Latch: 74273
; Decoder: 74154
; IC I/O: 8255A
; Keypad untuk input, dan Seven-segment untuk output.

CODE_SEG SEGMENT
ASSUME CS:CODE_SEG, DS:CODE_SEG, SS:CODE_SEG
ORG 100H

; Definisi alamat port
PORTA   EQU 00H        ; Port A pada 8255A (untuk seven-segment)
PORTB   EQU 01H        ; Port B pada 8255A (untuk keypad)
PORTC   EQU 02H        ; Port C pada 8255A
CTRL    EQU 03H        ; Control word register pada 8255A

; Definisi angka untuk 7-segment
ANGKA0  EQU 00111111B  ; Representasi angka 0 pada seven-segment
ANGKA1  EQU 00000110B  ; Representasi angka 1 pada seven-segment
ANGKA2  EQU 01011011B  ; Representasi angka 2 pada seven-segment
ANGKA3  EQU 01001111B  ; Representasi angka 3 pada seven-segment
ANGKA4  EQU 01100110B  ; Representasi angka 4 pada seven-segment
ANGKA5  EQU 01101101B  ; Representasi angka 5 pada seven-segment
ANGKA6  EQU 01111101B  ; Representasi angka 6 pada seven-segment
ANGKA7  EQU 00000111B  ; Representasi angka 7 pada seven-segment
ANGKA8  EQU 01111111B  ; Representasi angka 8 pada seven-segment
ANGKA9  EQU 01101111B  ; Representasi angka 9 pada seven-segment

START:
    ; Inisialisasi 8255A - Port A dan C = output, Port B = input
    MOV AL, 82H
    MOV DX, CTRL
    OUT DX, AL

    ; Bersihkan Seven-segment
    CALL CLEAR_DISPLAY

READ_KEYPAD:
    ; Baca input dari Keypad melalui Port B
    MOV DX, PORTB
    IN AL, DX

    ; Masking untuk mendapatkan 4 bit dari input keypad
    AND AL, 0FH
    CALL CONVERT_KEYPAD_TO_BIN

    ; Tampilkan hasil di Seven-segment
    CALL DISPLAY_SEGMENT
    JMP READ_KEYPAD

DISPLAY_SEGMENT PROC NEAR
    MOV DX, PORTA
    OUT DX, AL            ; Kirim nilai binari ke Port A (7-segment)
    CALL PULSE_LATCH      ; Latch data menggunakan IC 74273
    RET
DISPLAY_SEGMENT ENDP

CONVERT_KEYPAD_TO_BIN PROC NEAR
    CMP AL, 0
    JE DISPLAY_0
    CMP AL, 1
    JE DISPLAY_1
    CMP AL, 2
    JE DISPLAY_2
    CMP AL, 3
    JE DISPLAY_3
    CMP AL, 4
    JE DISPLAY_4
    CMP AL, 5
    JE DISPLAY_5
    CMP AL, 6
    JE DISPLAY_6
    CMP AL, 7
    JE DISPLAY_7
    CMP AL, 8
    JE DISPLAY_8
    CMP AL, 9
    JE DISPLAY_9
    RET

DISPLAY_0:
    MOV AL, ANGKA0
    RET
DISPLAY_1:
    MOV AL, ANGKA1
    RET
DISPLAY_2:
    MOV AL, ANGKA2
    RET
DISPLAY_3:
    MOV AL, ANGKA3
    RET
DISPLAY_4:
    MOV AL, ANGKA4
    RET
DISPLAY_5:
    MOV AL, ANGKA5
    RET
DISPLAY_6:
    MOV AL, ANGKA6
    RET
DISPLAY_7:
    MOV AL, ANGKA7
    RET
DISPLAY_8:
    MOV AL, ANGKA8
    RET
DISPLAY_9:
    MOV AL, ANGKA9
    RET

CLEAR_DISPLAY PROC NEAR
    MOV CX, 8
CLEAR_LOOP:
    MOV AL, 01111111B    ; Matikan semua segmen
    MOV DX, PORTA
    OUT DX, AL
    CALL PULSE_LATCH
    LOOP CLEAR_LOOP
    RET
CLEAR_DISPLAY ENDP

PULSE_LATCH PROC NEAR
    ; Proses latch menggunakan IC 74273
    OR AL, 80H           ; Setel bit untuk memicu latch
    MOV DX, PORTA
    OUT DX, AL
    RET
PULSE_LATCH ENDP

DELAY PROC NEAR
    PUSH CX
    MOV CX, 0FFFFH       ; Loop delay
DELAY_LOOP:
    LOOP DELAY_LOOP
    POP CX
    RET
DELAY ENDP

CODE_SEG ENDS
END START

b.Rangkaian

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-A7. tanda bahwa alamat akan dikirim ke ic decoder 74154 adalah saat chip select pada ic 8255 berlogika low atau logika 0. maka selanjutnya data akan dikirimkan ke pin IO0 pada ic 74154. kemudian data tadi akan diteruskan ke mikroprosesor 8086 melalui pin M/IO  yang aktif rendah. setelah mikroprosesor 8086 mnerima inputan tadi maka kemudian alamat tadi 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.

5. Video [kembali]


6. Link Download [kembali]


File Rangkaian klik disini
File Kodingan klik disini
Datasheet Mikroprosesor 8086 klik disini
Datasheet IC 74273 klik disini
Video referensi klik disini





Tidak ada komentar:

Posting Komentar