Program I/O PPI 8255



Gambar 46. Program I/O PPI 8255 

1. Tujuan[kembali]

    a. Mengetahui dan memahami perintah dasar assembler
    b. Mengetahui dan memahami perintah dasar Interface
    c. Dapat mensimulasikan program PPI 8255


 2. Alat dan Bahan [kembali]

    a. Software EMU8086

        Untuk membantu dalam memahami atau penyesuaikan alur kerja program yang diinginkan maka dapat dilakukan dengan bantuan emulator emu86. Pada emulator ini ada menu emulate untuk 16 menjalankan program dengan dua pilihan yaitu single step untuk eksekusi per baris instruksi atau Run untuk eksekusi keseluruhan instruksi sampai akhir program.

           Dalam “emu8086” terdapat beberapa menu, antara lain:

            a. Emulate : untuk menjalankan emulator kode program yang kita buat

            b. Compile : untuk membuat (compile) “binary executable file” atau ekstensi “.com” atau “.exe”                 dari kode program.

            c. Run : menjalankan aplikasi dari emulator yang dihasilkan (execute).

            d. Single Step : Menjalankan aplikasi dengan cara tracing (diproses perbaris kode program).



 3. Dasar Teori [kembali]

    A. 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 mikroprosesor 8088 adalah 16 bit. Ada 5 kelompok Register, yaitu :

·  General Purpose Register

General purpose register dapat dibagi menjadi registerlow 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:

Ø  Register AX (AH + AL) atau Accumulator Register adalah register aritmatik untuk dipakai dalam operasi pertambahan, pengurangan, perkalian dan pembagian. Register AH dapat juga digunakan untuk tempat nilai service number untuk beberapa interrupt tertentu.

Ø  Register BX (BH + BL) atau Base register adalah salahsatu dari dua register base Addressing mode, yang dapat mengambil atau menulis langsung dari/ke memory.

Ø  Register CX (CH + CL) atau Counter Register adalah suatu counter untuk meletakkan jumlah lompatan pada loop yang dilakukan.

Ø  Register DX (DH + DL) atau Data Register mempunyai tiga tugas, yaitu:1. Membantu 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

·         Segment Register

Ø  CS (Code Segment) Register adalah berfungsi menunjukkan segment program berada dengan pasangan register ini adalah register IP.

Ø  DS (Data Segment) Register adalah berfungsi menunjukkan segment dari segment data. Pasangan dari DS adalah DX.

Ø  SS (Stack Segment) Register adalah berfungsi menunjukkan segment dari segment stack. Pasangan dari SS adalah SP.

Ø  ES (Extra Segment) Register adalah berfungsi untuk pemograman pada saat melakukan operasi ke segment lain.

·         Pointer Register 

Berfungsi menyimpan offset dari relative address.

Ø  IP (Instruction Pointer) Register adalah berfungsi untuk menunjukkan baris perintah program. Pda saat pertama program dijalankan register ini akan langsung menunjuk pada awal program.

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

Ø  BP (Base Pointer) Register adalah mempunyai fungsi samadengan register BX, tetapi BX menulis dan membaca dengan segment DS (Data Segment) sedang BP menulis dan membaca dengan segment SS (Stack Segment).

·         Index Register 

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

·         Flag Register 

adalah berfungsi mengecek apakah sesuatu berfungsi atau tidak. Contohnya:

Ø  Interrupt Flag mengecek apakah pada saat operasi Interrupt sedang aktif atau tidak, bila tidak aktif, Interrupt tidak akan dijalankan. 

Ø  Carry Flag mengecek apakah pada saat operasi terjadi kesalahan atau tidak.

Ø  Sign Flag menunjukkan apakah suatu bilangan bertanda atau tidak dan sebagainya

 

B. PERINTAH DASAR ASSEMBLER

·         MOV

Perintah untuk mengisi, memindahkan, memperbaharui isi suatu register, variabel ataupun suatu lokasi memori.

Tata penulisan: MOV [operand1],[operand2]

a. Operand1 berupa register, variabel, lokasi memory dan 

b. Operand2 berupa: register, variabel, lokasi memory ataupun bilangan.

Contoh :

MOV AH,AL ; mengkopi isi register AL ke register AH.

MOV AH, 02 ; mengisi register AH dengan 02

·         Int (Interrupt)

Subrotine yang akan dipanggil sudah tersedia pada memori komputer.

Ada dua jenis yaitu :

a. Bios Interrupt yaitu Int 0H hingga 1FH yang disediakan oleh BIOS (Basic Input Output System).

Contoh: Int 16H service 01H berfungsi untuk mencek apakah ada tombol keyboard yang ditekan. 

b. DOS Interrupt yaitu Int 1FH keatas yang disediakan oleh DOS (Disk Operating System). 

Contoh: Int 20H berfungsi menghentikan kerja suatu program.

·         Int 20h dan Int 21h service 02h 

Ø  Int 20h

Bertugas memberhentikan proses komputer terhadap suatu program COM. Bila pada setiap program COM yang dibuat tidak terdapat Int 20h, maka akan terjadi hanging pada komputer. Hal ini terjadi karena komputer tidak menemukan perintah pemberhentian proses.

Ø  Int 21h Service 02

Seperti Int 20h, 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 dengan service number.

Contoh Int :

21h yang bertugas mencetak sebuah huruf ke layar yaitu fungsi kedua dari Int 21h.Untuk menjalankan fungsi Int 21h service 02 harus dipenuhi beberapa syarat yaitu :

a) Register AH, harus berisi service number dari Int 21h yang akan dijalankan (02h).

b) Register DL, harus berisi bilangan hexa dari karakter ASCII(American Standard Code forInformation Interchange) yang akan dicetak 

    C. INTERFANCE

            Program interface input dan output yang menggunakan Programmable PPI 8255 ditunjukkan pada gambar 46. 

            Adapun penjelasan listing program diatas adalah: 

a. Tiga baris pertama adalah program inisialisasi IC PPI 8255 yang dapat dipilih untuk digunakan Port A, Port B atau Port C sebagai input atau output. Dengan data Control Word sebesar 10001001B yang artinya Port A & Port B sebagai output dan Port C sebagai input. Lebih jelasnya akan dibahas nanti pada Sub bab 2.2.2 Programmable I/O. 

b. Lalu IC PPI 8255 dapat digunakan sebagai input pada port yang sudah terinisialisasi sebagai input, seperti Port C dan begitu juga untuk sebaliknya untuk Port A dan Port B dapat digunakan sebagai output karena sudah terinisialisasi sebagai output.


        D. PPI I/O 8255

                PPI 8255 adalah salah satu perangkat I/O (Input/Output) yang sering digunakan dalam sistem komputer berbasis mikroprosesor, terutama dalam sistem yang menggunakan mikroprosesor Intel. PPI adalah singkatan dari Programmable Peripheral Interface. Model 8255 adalah chip yang digunakan untuk menghubungkan perangkat eksternal dengan mikroprosesor, memungkinkan komunikasi antara perangkat tersebut dan CPU.

                Struktur PPI 8255

Chip 8255 terdiri dari beberapa bagian utama:

1. Port A, Port B, dan Port C: Tiga port utama yang digunakan untuk input dan output data.

   - Port A: Biasanya digunakan untuk input atau output data 8-bit.

   - Port B: Sama dengan Port A, bisa digunakan untuk input atau output 8-bit.

   - Port C: Biasanya digunakan sebagai port tambahan untuk kontrol atau pengalamatan data.

2. Control Register: Register ini digunakan untuk mengonfigurasi mode operasi dari port-port tersebut.

                Mode Operasi

8255 memiliki tiga mode operasi yang dapat dipilih:

1. Mode 0 (Basic Input/Output Mode): 

   - Port A dan Port B dapat dikonfigurasi secara independen sebagai input atau output.

   - Port C dapat digunakan sebagai tambahan untuk input atau output atau sebagai jalur kontrol.

2. Mode 1 (Strobe Input/Output Mode):

   - Port A dan Port B dapat dikonfigurasi sebagai input atau output dengan sinyal strobe.

   - Mode ini cocok untuk aplikasi di mana data perlu dikirim atau diterima dalam bentuk yang disinkronkan dengan sinyal strobe.

3. Mode 2 (Bidirectional Bus Mode):

   - Hanya berlaku untuk Port A. Port A dapat berfungsi sebagai bus data dua arah.

   - Port B dapat digunakan untuk input atau output.

   - Mode ini memungkinkan Port A untuk berfungsi sebagai jalur data dua arah dengan Port C mengatur arah data.

                Register dan Konfigurasi

1. Port Register: Terdiri dari tiga register yang masing-masing mengontrol Port A, Port B, dan Port C.

  - Port A Data Register: Menyimpan data yang dikirim ke atau diterima dari Port A.

  - Port B Data Register: Menyimpan data yang dikirim ke atau diterima dari Port B.

  - Port C Data Register: Menyimpan data untuk Port C, atau status dari Port C.

2. Control Register: Digunakan untuk mengatur mode operasi dan konfigurasi dari port-port tersebut.

  - Bit 0-2: Mengatur mode dari Port A dan Port B.

  - Bit 3: Mengatur apakah Port C akan digunakan sebagai input/output atau sebagai jalur kontrol.

  - Bit 4-7: Mengatur mode dari Port A (Mode 0, Mode 1, atau Mode 2).

                    Operasi

1. Pengaturan Mode:

   - Untuk mengatur mode, CPU akan menulis ke Control Register, menentukan konfigurasi dari Port A, Port B, dan Port C.

2. Operasi Input/Output:

   - Untuk operasi input, data dibaca dari port yang bersangkutan.

   - Untuk operasi output, data ditulis ke port yang bersangkutan.

                    Contoh Penggunaan

Misalnya, dalam sistem mikroprosesor yang menggunakan 8255, jika Anda ingin menggunakan Port A sebagai port output untuk mengendalikan LED, Anda akan mengatur Port A sebagai output di Control Register, kemudian menulis data yang sesuai ke Port A Data Register.

- Inisialisasi: Mengatur 8255 ke Mode 0 dan menetapkan Port A sebagai output.

- Output Data: Menulis nilai ke Port A Data Register untuk mengontrol LED.


 4. Percobaan [kembali]

        A. Prosedur Percobaan

                1. Masukkan program I/O PPI 8255 ke dalam aplikasi emu8086.


                2. Emulate program.

                3. Run hasil program tersebut.


         B. Penjelasan Program

1. Inisialisasi 8255

  • MOV AL,10001001B : Instruksi ini memuat nilai biner 10001001 ke dalam register AL. Nilai ini adalah konfigurasi untuk 8255 PPI.
  • Nilai 10001001B adalah 89 Hexa, atau 137desimal
    




  • MOV DX,303H : Instruksi ini memuat alamat port kontrol 8255 PPI (303H) ke dalam register DX.




  • OUT DX,AL : Instruksi ini mengirimkan konfigurasi (nilai AL) ke port kontrol 8255 PPI untuk mengatur mode dan arah dari masing-masing port (Port A, Port B, dan Port C).
2. Pembacaan Data dari Port C




  • MOV DX,302H : Instruksi ini memuat alamat port C (302H) ke dalam register DX.


  • IN AL,DX : Instruksi ini membaca data 8-bit dari port C ke dalam register AL. Data ini sekarang tersedia dalam register AL untuk digunakan lebih lanjut.

3. Penulisan Data ke Port B



  • MOV DX,301H : Instruksi ini memuat alamat port B (301H) ke dalam register DX.


  • OUT DX,AL : Instruksi ini menulis data dari register AL ke port B. Data ini sebelumnya dibaca dari port C.
4. Keluar dari Program



  • INT 20H : Instruksi ini digunakan untuk mengakhiri program dan mengembalikan kontrol ke sistem operasi. Ini adalah cara konvensional untuk keluar dari program di DOS.
Secara khusus, fungsi program ini adalah:
a. Mengonfigurasi 8255 PPI:
        Program ini mengatur 8255 PPI untuk mengatur Port A sebagai port output, dan Port B         sebagai port Input serta Port C sebagai kontrol. Ini dilakukan dengan mengirimkan konfigurasi ke port kontrol 8255.
b. Menulis Data Ke Port C:
        Setelah konfigurasi, program Menulis data ke Port C, yang dikonfigurasi sebagai output. Data ini         dikirim dari register AL untuk pemrosesan lebih lanjut.
c. Mengambil Data Dari Port B:
        Port B dikonfigurasi sebagai input, sehingga data yang diterima dari Port B akan dimasukkan ke register AL.
b. Menulis Data Ke Port A:
       Port B dikonfigurasi sebagai output, Data yang diterima sebelumnya dari Port B yang sudah dimasukkan ke register AL akan dikirimkan melalui Port A dengan fungsi output.
e. Mengakhiri Program:
        Program kemudian menggunakan instruksi INT 20H untuk keluar dan mengembalikan kontrol ke         sistem operasi.


 5. Video [kembali]



 6. Download File [kembali]

    a. Program gambar 46. Program I/O PPI 8255 [klik disini]

    b. Video penjelasan [klik disini]

    c. Datasheet Intel PPI 8255 [klik disini]

    d. Datasheet Intel 8086 [klik disini]

    e. Program Emu8086 [klik disini]

    f. Kode HTML [klik disini]