Selasa, 10 September 2024

Tugas 3 - Mikroprosesor (Rangkaian Interface)

 

Gambar 17 Rangkaian interface menggunakan 2 buah IC 8255 dengan rangkaian decoder-nya

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


- IC 8255
                                                      


3. Dasar Teori[Kembali]

1. 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 '$'

2. 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.


4. Percobaan [Kembali]

a. Listing Program[Kembali]
      
; 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[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.

c. Video[Kembali]
Referensi

d. Download File[Kembali]
File Rangkaian klik disini
File Kodingan klik disini
Video referensi klik disini

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

LA MODUL 3 PERCOBAAN 2

  PERCOBAAN 2 [KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Jurnal 2. Alat dan Bahan 3. Rangkaian Simulasi 4. Prinsip Kerja Rangka...