Programmable Peripheral Interface
           (PPI) 8255
PPI 8255
• PPI adalah modul IO paralel
  yang dapat digunakan untuk
  operasi IO dengan teknik
  Programmed IO dan Interrupt
  driven IO.
Blok diagram PPI 8255
PPI 8255
• Bagian sebelah kanan dari blok di atas adalah
  interface eksternal ke peripheral (saluran PA7-PA0,
  PB7-PB0, dan PC7-PC0), sedangkan bagian
  sebelah kiri adalah interface internal ke
  mikroprosesor.
• PPI memiliki 3 buah port, yaitu Port A, Port B, dan
  Port C. Selain itu PPI juga memiliki sebuah Control
  Register.
• Masing-masing port dan Control Register
  membutuhkan satu alamat, sehingga PPI
  membutuhkan 4 buah alamat.
• Saluran masukan A1 dan A0 (pada bagian kiri blok)
  digunakan untuk memilih salah satu alamat.
PPI 8255

• Port A dan Port B adalah port 8
  bit, artinya dapat digunakan untuk
  input output data 8 bit.
• Sedangkan Port C, selain dapat
  digunakan sebagai port 8 bit juga
  dapat digunakan sebagai 2 buah
  port 4 bit (Port C upper dan Port C
  lower).
Mode Operasi PPI 8255

  • Mode 0
  • Mode 1
  • Mode 2
Mode 0, ini ialah mode yang paling
 sederhana, dimana semua port dapat
 deprogram sebagai input/putput. Pada
 mode ini seluruh bit sebagai output atau
 input, tidak ada bit yang dapat dikontrol
 secara individual.

Mode 1, pada mode ini port A dan B dapat
 digunakan sebagai input atau output
 dengan kemampuan jabat tangan. Sinyal
 jabat tangan disediakan oleh bit-bit port C
Mode 2, port A dapat digunakan sebagai port
 bi-directional I/O dengan kemampuan jabat
 tangan dimana sinyalnya disediakan oleh
 port C. Port B dapat digunakan sebagai
 mode I/O sederhana atau mode 1 jabat
 tangan.

Mode BSR ( bit set/reset ). Pada mode ini,
 hanya bit individual port C yang dapat
 diprogram
Tabel Kebenaran PPI 8255
Insialisasi PPI
• Sebelum dapat digunakan sebagai port
  input atau port output PPI terlebih dahulu
  harus diinisialisasi. Berikut ini dijelaskan
  cara mengiinisialisasi PPI.
• Tentukan Control Word atau data
  pengontrolan berdasarkan sifat port-port
  yang telah ditentukan sebelumnya.
• Untuk menentukan nilai tiap bit pada Control
  Word, ikuti aturan pada tabel di halaman
  berikutnya.
• Setelah Control Word ditentukan, isikan
  Control Word tersebut ke Control Register.
Tabel untuk
penentuan
  Control
   Word
Contoh 1:
• Misalkan PPI akan diprogram agar
  berfungsi sebagai berikut:
   – Port B : sebagai port input pada mode 1.
   – Port A : sebagai port output pada mode 0.
   – Port C upper sebagai port input
   – Bit PC3 (Port C Lower) sebagai output.
   – Misalkan alamat dari Control Register
     adalah 303 H.
Control Wordnya:
Program inisialisasinya :

 MOV DX, 303 H
 MOV AL, 10001110 B
 OUT DX, AL
Contoh 2: Semua port diinisialisasi
sebagai port output pada mode 0
Control Wordnya adalah sebagai berikut:
Program inisialisasinya :
MOV DX, 303 H
MOV AL, 10000000 B
OUT DX, AL

Program output data (port A):
MOV DX, 300 H
MOV AL, 00001111 B
OUT DX, AL
Contoh 3:




 • Dengan menggunakan address decoder seperti pada
   gambar di atas, tentukanlah alamat Port A,B,C dan
   Control Register.
 • Tentukanlah Control Word, diasumsikan port A dan C diset
   sebagai port input.
 • Tuliskan program untuk menginisialisasi PPI.
 • Tuliskan program untuk menyalakan/mematikan LED-LED
   seperti pada gambar di atas.
Contoh 4:
•   Program ini membaca data dari saklar yang terhubung ke port 300 H.
•   Jika saklar off (0) maka lampu-lampu yang terhubung ke port 301 H
    akan padam. Jika saklar on (1) maka lampu-lampu yang terhubung
    ke port 301 H akan menyala. Kedua port tersebut adalah port 8-bit.
Mode Operasi PPI 8255
• Mode O
  – Operasi I/O dengan simple input output
    tanpa menggunakan sinyal handshaking.
  – Jika port A dan port B diinisialisasi pada
    mode 0, maka port C dapat digunakan
    sebagai port 8 bit atau sebagai 2 buah
    port 4 bit (C upper dan C lower) yang
    berdiri sendiri.
Mode Operasi PPI 8255
• Mode 1
  – Jika proses transfer data membutuhkan sinyal
    handshaking, maka PPI diinisialisasi pada mode 1.
  – Jika port B diinisialisasi pada mode 1, maka saluran
    PC0, PC1, PC2 akan berfungsi sebagai saluran
    handshake untuk port B.
  – Jika port A diinisialisasi pada mode 1 sebagai port
    input, maka saluran PC3, PC4, PC5 akan berfungsi
    sebagai sinyal handshake untuk port A. Sedangkan
    saluran PC6 dan PC7 dapat digunakan sebagai
    saluran input atau saluran output.
  – Jika port A diinisialisasi pada mode 1 sebagai port
    output, maka saluran PC3, PC6, PC7 akan berfungsi
    sebagai sinyal handshake untuk port A. Sedangkan
    port PC4 dan PC5 dapat digunakan sebagai saluran
    input atau output.
Mode Operasi PPI 8255

• Mode 2
  – Hanya port A yang dapat diiinisialisasi
    pada mode 2.
  – Pada mode 2, port A dapat digunakan
    untuk transfer data 2 arah (port A
    berfungsi sebagai port input sekaligus
    port output) dan menggunakan sinyal-
    sinyal handshaking.
  – Biasanya digunakan untuk
    memperpanjang bus system ke
    mikroprosesor slave.
Metode transfer data paralel
• Terdapat 4 metode transfer data
  paralel, yaitu:
  – Simple Input and Output
  – Simple Strobe I/O
  – Single handshake I/O
  – Double handshake I/O
Simple Input and Output

• Metode transfer ini digunakan untuk operasi
  input atau output pada peralatan yang
  selalu berada dalam keadaan siap (ready)
  seperti sensor dan LED.
Simple Strobe I/O
• Pada periperal tertentu, data hanya tersedia pada waktu
  tertentu saja. Untuk memperoleh data yang valid,
  pembacaan harus dilakukan pada saat tersebut.
• Contoh peralatan yang menggunakan metode ini adalah
  keyboard.
• Data dari keyboard ada hanya pada saat-saat tertentu,
  yaitu pada saat tombol ditekan dan pada saat tersebut
  data valid. Untuk memberitahu komponen lain bahwa
  ada data valid, keyboard menghasilkan sinyal strobe.
Single handshake I/O
• Metode transfer Simple Strobe I/O cocok digunakan
  untuk transfer data dengan kecepatan rendah. Jika
  komponen pengirim dapat mengirimkan data dengan
  kecepatan yang lebih tinggi dibanding yang dapat
  diterima oleh komponen penerima, maka metode
  tersebut tidak cocok digunakan.
• Untuk itu harus digunakan "handshaking" atau tanya
  jawab antar kedua komponen.
Double handshake I/O
• Jika koordinasi yang lebih baik diperlukan, maka digunakan
  2 buah "handshaking“.
• Pada double handshake tiap tepi sinyal memiliki arti.
• Sebelum mengirimkan data pengirim terlebih dahulu
  menanyakan kesiapan penerima dengan menurunkan
  sinyal Strobe.
• Jika siap, penerima akan memberitahu pengirim dengan
  cara menaikkan sinyal Acknowledge.
• Selanjutnya pengirim mengirimkan data, dan memberitahu
  penerima bahwa data telah dikirim dengan cara menaikkan
  sinyal Strobe.
• Dan apabila data tersebut telah diterima, penerima
  menurunkan sinyal Acknowledge dan ini sekaligus berarti
  meminta pengirim mengirim data berikutnya.
Double handshake I/O
Segmen Programnya:

        MOV DX, 300 H
        IN AL,DX
        AND AL,01 H     ; periksa saklar, apakah on
                        atau off
        JNZ On
 Off:   MOV DX,301 H
        MOV AL,00 H     ; u/ mematikan lampu
        OUT DX,AL
        ………
 On:    MOV DX,301 H
        MOV AL,FF H     ; u/ menyalakan lampu
        OUT DX,AL
        ……….
Contoh 5:
 • Program ini membaca data dari sebuah sensor
   suhu.
 • Jika suhu lebih atau sama dengan 27 derajat,
   heater akan dimatikan. Sebaliknya jika suhu
   kurang dari 27 derajat, maka heater akan
   dinyalakan.
 • Dimisalkan sensor suhu terhubung ke port
   dengan alamat FFFB H, sedangkan heater
   terhubung ke port dengan alamat FFFA H.
 • Untuk menghidupkan heater pada port FFFA H
   dikirimkan data 80 H, sedangkan untuk
   mematikan heater pada port FFFA H dikirimkan
   data 00 H.
CODE_HERE SEGMEN 'CODE'
ASSUME CS:CODE_HERE

TEMP_IN:     MOV DX,FFFB H ; baca data dari
                           sensor
             IN AL,DX
             CMP AL,27               ; uji dengan
                                     bilangan 27
             JB HEATER_ON ; jika di bawah 27
             JMP HEATER_OFF          ; jika di atas/sama dengan 27

HEATER_ON: MOV AL,80 H
                   MOV DX,FFFA H
                   OUT DX,AL     ; hidupkan heater
                   JMP TEMP_IN   ; baca lagi data dari
                          sensor
HEATER_OFF: MOV AL,00 H
                   MOV DX,FFFA H
                   OUT DX,AL
                   JMP TEMP_IN   ; baca lagi data dari
                          sensor
CODE_HERE ENDS
Men-set/reset bit-bit port C

 • Selain digunakan untuk menentukan konfigurasi
   port-port, control word juga digunakan untuk men-
   set/reset bit-bit port C (PC0 .. PC7).
 • Apabila sebelumnya pada saat control word
   digunakan untuk menentukan konfigurasi port, bit
   D7 diisi dengan 1, pada saat control word
   digunakan untuk men-set/reset nilai bit-bit port C,
   nilai D7 haruslah diisi dengan 0.
Contoh:
 • Nilai bit PC3 akan diset.
 • Untuk itu ditentukan control wordnya sebagai
   berikut:
Contoh:

 • Nilai bit PC5 akan direset.
 • Untuk itu ditentukan control wordnya sebagai
   berikut:
• Sama seperti control word untuk mengkonfigurasi
  port, control word ini juga harus dikirimkan ke
  control register. Jika alamat control register
  adalah 303 H, maka program inisialisasinya
  adalah:
      MOV DX, 303 H
      MOV AL, 00000111 B
      OUT DX, AL
PPI 8255 pada mode 1 digunakan sebagai port
input




 • Ada 2 sinyal handshaking yang digunakan, yaitu : strobe
   dan IBF (input buffer full). Sinyal strobe dihasilkan oleh
   peripheral pengirim, sedangkan IBF dihasilkan oleh PPI.
PPI 8255 pada mode 1 digunakan sebagai
port output




• Ada 2 sinyal handshaking yang digunakan, yaitu:
  OBF (output buffer full) dan Acknowledge. Sinyal
  OBF dihasilkan oleh PPI, sedangkan sinyal
  acknowledge dihasilkan oleh peripheral penerima.
Contoh Aplikasi PPI: Pengontrolan mesin
bubut oleh mikrokomputer
 • Pada sistem ini operasi sebuah mesin bubut akan dikontrol
   oleh mikrokomputer.
 • Mesin bubut digunakan untuk membuat berbagai jenis baut
   dari batang stainless steel.
 • Data-data pemotongan untuk tiap baut tersimpan pada sebuah
   metal tape..
 • Tape reader berfungsi membaca data-data yang tersimpan
   pada metal tape.
 • Mikrokomputer akan membaca data tersebut dari tape reader.
 • Mikrokomputer juga akan selalu memantau kondisi mesin
   bubut untuk memastikan bahwa mesin bubut tidak kehabisan
   bahan, minyak pelumasnya tidak habis, dan juga memastikan
   mesin bubut tidak macet oleh berbagai sebab yang lain.
Pada aplikasi ini PPI terlebih dahulu
diinisialisasi dengan konfigurasi berikut:

 • Port A harus diinisialisasi sebagai port input pada mode
   1 karena pembacaan data dari tape reader
   membutuhkan sinkronisasi (menggunakan sinyal-sinyal
   handshaking).
 • Port B digunakan untuk mengoutputkan data
   pengontrolan berupa sinyal on/off ke mesin bubut dan
   operasi tersebut tidak membutuhkan sinyal-sinyal
   handshaking. Untuk itu Port B diinisialisasi sebagai port
   output pada mode 0.
 • Bit PC0, PC1, PC2 digunakan untuk menginputkan data
   sensor dari mesin bubut dan operasi ini pun tidak
   membutuhkan sinyal handshaking sehingga port C lower
   diinisialisasi pada mode 0 sebagai port input.
• Bit PC3, PC4, PC5 berfungsi sebagai sinyal-
  sinyal handshaking yang digunakan pada proses
  transfer data dari tape reader ke port A.
• Bit PC6 digunakan untuk menghasilkan sinyal
  GO/STOP untuk menghidupkan/mematikan tape
  reader. Untuk itu port C upper diinisialisasi
  sebagai port output.
• Bit PC7 tidak digunakan.
Untuk konfigurasi tersebut control
word-nya adalah sebagai berikut :
Cara Kerja Sistem :
 • PPI diinisialisasi
 • Sistem akan membaca port C bit PC0, PC1, PC2
   untuk mengecek apakah mesin bubut siap untuk
   beroperasi. Pembacaan port C dilakukan dengan
   melakukan input dari alamat port C.
 • Jika mesin bubut siap, maka mikrokomputer akan
   mengeluarkan perintah START (GO) berupa
   sinyal "low" melalui bit PC6.
 • Hal ini dilakukan dengan menggunakan perintah
   set/reset command. Karena sinyal ini berupa
   sinyal low, berarti bit PC6 harus direset. Control
   word yang digunakan untuk mereset PC6:
   00001100 .
Cara Kerja Sistem :

 • Setelah tape reader menerima perintah START
   (GO), tape reader akan mulai membaca data
   dan mengirimkan datanya dalam bentuk data 8-
   bit melalui saluran R0 sampai R7 ke port A.
 • Proses transfer data ini menggunakan sinyal-
   sinyal handshaking untuk sinkronisasi sehingga
   tape reader hanya akan mengirimkan data
   berikutnya jika ada konfirmasi dari penerima
   bahwa data telah berhasil diterima.
Proses transfer datanya adalah
sebagai berikut:
 • Tape reader mengirim data melalui bit R0 sampai
   R7.
 • Tape reader kemudian menurunkan level sinyal
   strobe pada PC4 ke "low" sebagai tanda bahwa
   data telah dikirim.
 • Sebagai balasannya PPI akan menaikkan sinyal
   IBF (input buffer full) pada PC5 ke "high" sebagai
   tanda bahwa PPI siap menerima data.
 • Pada saat mendeteksi perubahan level IBF ke
   "high", tape reader akan kembali menaikkan level
   sinyal strobe ke "high".
• Perubahan level sinyal strobe dari "low" ke "high" memberikan
  2 efek pada PPI. Yang pertama, PPI akan mengambil data
  dari saluran (PA0..PA7) dan menyimpannya pada buffer di
  port A.
• Yang kedua, perubahan tersebut akan menyebabkan PPI
  mengirimkan sinyal interupsi ke mikrokomputer melalui
  saluran PC3.
• Pada saat menerima sinyal interupsi, prosesor akan
  mengerjakan suatu rutin interupsi yang akan membaca data
  dari port A.
• Pada saat membaca data, mikrokomputer akan mengirimkan
  sinyal RD. Pada saat sinyal ini berubah ke "low" , PPI akan
  menghentikan pengiriman sinyal interupsi.
• Pada saat sinyal RD berubah menjadi "high", PPI akan
  menurunkan level sinyal IBF ke "low".
• Sinyal IBF berubah ke "low" merupakan tanda bagi tape
  reader bahwa proses transfer data telah selesai dan bahwa
  tape reader boleh mengirimkan data berikutnya.
Diagram waktu proses transfer data
• Data yang dibaca dari tape reader dieksekusi di
  prosesor. Dan sebagai hasilnya mikrokomputer
  akan mengoutputkan data-data pengontrolan
  melalui port B ke mesin bubut.
Catatan:
 • Instruksi AND
   – Penulisan: AND destination, source
   – Fungsi : Membentuk perkalian logika




   – Instruksi AND digunakan untuk mengclear bit
     bilangan biner, seperti contoh berikut. Nilai bit yang
     di-AND-kan dengan 1 tidak berubah, sedangkan nilai
     bit yang di-AND-kan dengan 0 berubah menjadi 0.
Contoh:

 MOV AL, 9D H       (1001 1101 B)
  AND AL, 3C H         (0011 1100 B)

 Hasilnya, isi AL = 1C H   (0001 1100 B
Instruksi TEST
 • Penulisan : TEST destination, source
 • Fungsi instruksi ini ialah membentuk operasi yang
   hampir sama dengan AND. Perbedaannya,
   instruksi AND mengubah operand tujuan,
   sedangkan instruksi TEST tidak. Instruksi TEST
   hanya mempengaruhi isi register flag.
 • Instruksi TEST memiliki fungsi yang sama
   dengan instruksi CMP. Perbedaannya adalah
   bahwa instruksi TEST biasanya mengetes bit
   tungggal (atau bit ganda), sedangkan instruksi
   CMP mengetes seluruh data byte atau word.
 • Biasanya instruksi TEST diikuti oleh instruksi
   JZ(Jump if Zero) atau JNZ (Jump if Not Zero).
Contoh program:
 • Berikut adalah sekumpulan instruksi untuk
   mengetes bit paling kiri dan paling kanan dari
   register AL. Di sini , 1 (1 H) dipilih untuk
   mengetes bit paling kanan dan 128 (80 H) untuk
   mengetes bit paling kiri.

  TEST AL,1 H      ; tes bit paling kanan
  JNZ RIGHT        ; jika bit paling kanan (bit 0) =1,
  jump ke label RIGHT
  …………..
  TEST AL, 80 H ; test bit paling kiri
  JNZ LEFT         ; jika bit paling kiri (bit 7) =1,
  jump ke label LEFT
Instruksi IN
 • Penulisan : IN akumulator,port
 • Fungsi       : Menginputkan data dari port ke akumulator
   (register AL atau register AX).
 • Port adalah sebuah komponen tempat peralatan input
   output terhubung.
 • Contoh port adalah port serial COM1, COM2 yang biasa
   dihubungkan dengan mouse atau keyboard; port printer
   LPT1, atau port PPI yang biasa digunakan untuk
   eksperimen.
Instruksi OUT
 • Penulisan : OUT port,akumulator
 • Fungsi    : Menyalin (mengoutputkan) data dari
   akumulator (Register AL atau Register AX) ke
   port.
Instruksi CMP
• Penulisan      : CMP destination,source
• Fungsi         : Membandingkan data pada destination
  dengan data pada source.
• Instruksi perbandingan (CMP) adalah bentuk pengurangan
  yang hanya mengubah bit-bit flag, sedangkan operand
  destination tidak berubah.
Jump




• Istilah lebih besar (greater) dan lebih kecil (less)
  mengacu ke bilangan bertanda, sedangkan di
  atas (above) dan di bawah (below) mengacu ke
  bilangan tak bertanda.

3 tak-ppi

  • 3.
  • 4.
    PPI 8255 • PPIadalah modul IO paralel yang dapat digunakan untuk operasi IO dengan teknik Programmed IO dan Interrupt driven IO.
  • 6.
  • 7.
    PPI 8255 • Bagiansebelah kanan dari blok di atas adalah interface eksternal ke peripheral (saluran PA7-PA0, PB7-PB0, dan PC7-PC0), sedangkan bagian sebelah kiri adalah interface internal ke mikroprosesor. • PPI memiliki 3 buah port, yaitu Port A, Port B, dan Port C. Selain itu PPI juga memiliki sebuah Control Register. • Masing-masing port dan Control Register membutuhkan satu alamat, sehingga PPI membutuhkan 4 buah alamat. • Saluran masukan A1 dan A0 (pada bagian kiri blok) digunakan untuk memilih salah satu alamat.
  • 8.
    PPI 8255 • PortA dan Port B adalah port 8 bit, artinya dapat digunakan untuk input output data 8 bit. • Sedangkan Port C, selain dapat digunakan sebagai port 8 bit juga dapat digunakan sebagai 2 buah port 4 bit (Port C upper dan Port C lower).
  • 9.
    Mode Operasi PPI8255 • Mode 0 • Mode 1 • Mode 2
  • 10.
    Mode 0, iniialah mode yang paling sederhana, dimana semua port dapat deprogram sebagai input/putput. Pada mode ini seluruh bit sebagai output atau input, tidak ada bit yang dapat dikontrol secara individual. Mode 1, pada mode ini port A dan B dapat digunakan sebagai input atau output dengan kemampuan jabat tangan. Sinyal jabat tangan disediakan oleh bit-bit port C
  • 11.
    Mode 2, portA dapat digunakan sebagai port bi-directional I/O dengan kemampuan jabat tangan dimana sinyalnya disediakan oleh port C. Port B dapat digunakan sebagai mode I/O sederhana atau mode 1 jabat tangan. Mode BSR ( bit set/reset ). Pada mode ini, hanya bit individual port C yang dapat diprogram
  • 12.
  • 13.
    Insialisasi PPI • Sebelumdapat digunakan sebagai port input atau port output PPI terlebih dahulu harus diinisialisasi. Berikut ini dijelaskan cara mengiinisialisasi PPI. • Tentukan Control Word atau data pengontrolan berdasarkan sifat port-port yang telah ditentukan sebelumnya. • Untuk menentukan nilai tiap bit pada Control Word, ikuti aturan pada tabel di halaman berikutnya. • Setelah Control Word ditentukan, isikan Control Word tersebut ke Control Register.
  • 14.
  • 15.
    Contoh 1: • MisalkanPPI akan diprogram agar berfungsi sebagai berikut: – Port B : sebagai port input pada mode 1. – Port A : sebagai port output pada mode 0. – Port C upper sebagai port input – Bit PC3 (Port C Lower) sebagai output. – Misalkan alamat dari Control Register adalah 303 H.
  • 16.
  • 17.
    Program inisialisasinya : MOV DX, 303 H MOV AL, 10001110 B OUT DX, AL
  • 18.
    Contoh 2: Semuaport diinisialisasi sebagai port output pada mode 0 Control Wordnya adalah sebagai berikut:
  • 19.
    Program inisialisasinya : MOVDX, 303 H MOV AL, 10000000 B OUT DX, AL Program output data (port A): MOV DX, 300 H MOV AL, 00001111 B OUT DX, AL
  • 20.
    Contoh 3: •Dengan menggunakan address decoder seperti pada gambar di atas, tentukanlah alamat Port A,B,C dan Control Register. • Tentukanlah Control Word, diasumsikan port A dan C diset sebagai port input. • Tuliskan program untuk menginisialisasi PPI. • Tuliskan program untuk menyalakan/mematikan LED-LED seperti pada gambar di atas.
  • 21.
    Contoh 4: • Program ini membaca data dari saklar yang terhubung ke port 300 H. • Jika saklar off (0) maka lampu-lampu yang terhubung ke port 301 H akan padam. Jika saklar on (1) maka lampu-lampu yang terhubung ke port 301 H akan menyala. Kedua port tersebut adalah port 8-bit.
  • 22.
    Mode Operasi PPI8255 • Mode O – Operasi I/O dengan simple input output tanpa menggunakan sinyal handshaking. – Jika port A dan port B diinisialisasi pada mode 0, maka port C dapat digunakan sebagai port 8 bit atau sebagai 2 buah port 4 bit (C upper dan C lower) yang berdiri sendiri.
  • 23.
    Mode Operasi PPI8255 • Mode 1 – Jika proses transfer data membutuhkan sinyal handshaking, maka PPI diinisialisasi pada mode 1. – Jika port B diinisialisasi pada mode 1, maka saluran PC0, PC1, PC2 akan berfungsi sebagai saluran handshake untuk port B. – Jika port A diinisialisasi pada mode 1 sebagai port input, maka saluran PC3, PC4, PC5 akan berfungsi sebagai sinyal handshake untuk port A. Sedangkan saluran PC6 dan PC7 dapat digunakan sebagai saluran input atau saluran output. – Jika port A diinisialisasi pada mode 1 sebagai port output, maka saluran PC3, PC6, PC7 akan berfungsi sebagai sinyal handshake untuk port A. Sedangkan port PC4 dan PC5 dapat digunakan sebagai saluran input atau output.
  • 24.
    Mode Operasi PPI8255 • Mode 2 – Hanya port A yang dapat diiinisialisasi pada mode 2. – Pada mode 2, port A dapat digunakan untuk transfer data 2 arah (port A berfungsi sebagai port input sekaligus port output) dan menggunakan sinyal- sinyal handshaking. – Biasanya digunakan untuk memperpanjang bus system ke mikroprosesor slave.
  • 25.
    Metode transfer dataparalel • Terdapat 4 metode transfer data paralel, yaitu: – Simple Input and Output – Simple Strobe I/O – Single handshake I/O – Double handshake I/O
  • 26.
    Simple Input andOutput • Metode transfer ini digunakan untuk operasi input atau output pada peralatan yang selalu berada dalam keadaan siap (ready) seperti sensor dan LED.
  • 27.
    Simple Strobe I/O •Pada periperal tertentu, data hanya tersedia pada waktu tertentu saja. Untuk memperoleh data yang valid, pembacaan harus dilakukan pada saat tersebut. • Contoh peralatan yang menggunakan metode ini adalah keyboard. • Data dari keyboard ada hanya pada saat-saat tertentu, yaitu pada saat tombol ditekan dan pada saat tersebut data valid. Untuk memberitahu komponen lain bahwa ada data valid, keyboard menghasilkan sinyal strobe.
  • 28.
    Single handshake I/O •Metode transfer Simple Strobe I/O cocok digunakan untuk transfer data dengan kecepatan rendah. Jika komponen pengirim dapat mengirimkan data dengan kecepatan yang lebih tinggi dibanding yang dapat diterima oleh komponen penerima, maka metode tersebut tidak cocok digunakan. • Untuk itu harus digunakan "handshaking" atau tanya jawab antar kedua komponen.
  • 29.
    Double handshake I/O •Jika koordinasi yang lebih baik diperlukan, maka digunakan 2 buah "handshaking“. • Pada double handshake tiap tepi sinyal memiliki arti. • Sebelum mengirimkan data pengirim terlebih dahulu menanyakan kesiapan penerima dengan menurunkan sinyal Strobe. • Jika siap, penerima akan memberitahu pengirim dengan cara menaikkan sinyal Acknowledge. • Selanjutnya pengirim mengirimkan data, dan memberitahu penerima bahwa data telah dikirim dengan cara menaikkan sinyal Strobe. • Dan apabila data tersebut telah diterima, penerima menurunkan sinyal Acknowledge dan ini sekaligus berarti meminta pengirim mengirim data berikutnya.
  • 30.
  • 31.
    Segmen Programnya: MOV DX, 300 H IN AL,DX AND AL,01 H ; periksa saklar, apakah on atau off JNZ On Off: MOV DX,301 H MOV AL,00 H ; u/ mematikan lampu OUT DX,AL ……… On: MOV DX,301 H MOV AL,FF H ; u/ menyalakan lampu OUT DX,AL ……….
  • 32.
    Contoh 5: •Program ini membaca data dari sebuah sensor suhu. • Jika suhu lebih atau sama dengan 27 derajat, heater akan dimatikan. Sebaliknya jika suhu kurang dari 27 derajat, maka heater akan dinyalakan. • Dimisalkan sensor suhu terhubung ke port dengan alamat FFFB H, sedangkan heater terhubung ke port dengan alamat FFFA H. • Untuk menghidupkan heater pada port FFFA H dikirimkan data 80 H, sedangkan untuk mematikan heater pada port FFFA H dikirimkan data 00 H.
  • 33.
    CODE_HERE SEGMEN 'CODE' ASSUMECS:CODE_HERE TEMP_IN: MOV DX,FFFB H ; baca data dari sensor IN AL,DX CMP AL,27 ; uji dengan bilangan 27 JB HEATER_ON ; jika di bawah 27 JMP HEATER_OFF ; jika di atas/sama dengan 27 HEATER_ON: MOV AL,80 H MOV DX,FFFA H OUT DX,AL ; hidupkan heater JMP TEMP_IN ; baca lagi data dari sensor HEATER_OFF: MOV AL,00 H MOV DX,FFFA H OUT DX,AL JMP TEMP_IN ; baca lagi data dari sensor CODE_HERE ENDS
  • 34.
    Men-set/reset bit-bit portC • Selain digunakan untuk menentukan konfigurasi port-port, control word juga digunakan untuk men- set/reset bit-bit port C (PC0 .. PC7). • Apabila sebelumnya pada saat control word digunakan untuk menentukan konfigurasi port, bit D7 diisi dengan 1, pada saat control word digunakan untuk men-set/reset nilai bit-bit port C, nilai D7 haruslah diisi dengan 0.
  • 35.
    Contoh: • Nilaibit PC3 akan diset. • Untuk itu ditentukan control wordnya sebagai berikut:
  • 36.
    Contoh: • Nilaibit PC5 akan direset. • Untuk itu ditentukan control wordnya sebagai berikut:
  • 37.
    • Sama seperticontrol word untuk mengkonfigurasi port, control word ini juga harus dikirimkan ke control register. Jika alamat control register adalah 303 H, maka program inisialisasinya adalah: MOV DX, 303 H MOV AL, 00000111 B OUT DX, AL
  • 38.
    PPI 8255 padamode 1 digunakan sebagai port input • Ada 2 sinyal handshaking yang digunakan, yaitu : strobe dan IBF (input buffer full). Sinyal strobe dihasilkan oleh peripheral pengirim, sedangkan IBF dihasilkan oleh PPI.
  • 39.
    PPI 8255 padamode 1 digunakan sebagai port output • Ada 2 sinyal handshaking yang digunakan, yaitu: OBF (output buffer full) dan Acknowledge. Sinyal OBF dihasilkan oleh PPI, sedangkan sinyal acknowledge dihasilkan oleh peripheral penerima.
  • 40.
    Contoh Aplikasi PPI:Pengontrolan mesin bubut oleh mikrokomputer • Pada sistem ini operasi sebuah mesin bubut akan dikontrol oleh mikrokomputer. • Mesin bubut digunakan untuk membuat berbagai jenis baut dari batang stainless steel. • Data-data pemotongan untuk tiap baut tersimpan pada sebuah metal tape.. • Tape reader berfungsi membaca data-data yang tersimpan pada metal tape. • Mikrokomputer akan membaca data tersebut dari tape reader. • Mikrokomputer juga akan selalu memantau kondisi mesin bubut untuk memastikan bahwa mesin bubut tidak kehabisan bahan, minyak pelumasnya tidak habis, dan juga memastikan mesin bubut tidak macet oleh berbagai sebab yang lain.
  • 42.
    Pada aplikasi iniPPI terlebih dahulu diinisialisasi dengan konfigurasi berikut: • Port A harus diinisialisasi sebagai port input pada mode 1 karena pembacaan data dari tape reader membutuhkan sinkronisasi (menggunakan sinyal-sinyal handshaking). • Port B digunakan untuk mengoutputkan data pengontrolan berupa sinyal on/off ke mesin bubut dan operasi tersebut tidak membutuhkan sinyal-sinyal handshaking. Untuk itu Port B diinisialisasi sebagai port output pada mode 0. • Bit PC0, PC1, PC2 digunakan untuk menginputkan data sensor dari mesin bubut dan operasi ini pun tidak membutuhkan sinyal handshaking sehingga port C lower diinisialisasi pada mode 0 sebagai port input.
  • 43.
    • Bit PC3,PC4, PC5 berfungsi sebagai sinyal- sinyal handshaking yang digunakan pada proses transfer data dari tape reader ke port A. • Bit PC6 digunakan untuk menghasilkan sinyal GO/STOP untuk menghidupkan/mematikan tape reader. Untuk itu port C upper diinisialisasi sebagai port output. • Bit PC7 tidak digunakan.
  • 44.
    Untuk konfigurasi tersebutcontrol word-nya adalah sebagai berikut :
  • 45.
    Cara Kerja Sistem: • PPI diinisialisasi • Sistem akan membaca port C bit PC0, PC1, PC2 untuk mengecek apakah mesin bubut siap untuk beroperasi. Pembacaan port C dilakukan dengan melakukan input dari alamat port C. • Jika mesin bubut siap, maka mikrokomputer akan mengeluarkan perintah START (GO) berupa sinyal "low" melalui bit PC6. • Hal ini dilakukan dengan menggunakan perintah set/reset command. Karena sinyal ini berupa sinyal low, berarti bit PC6 harus direset. Control word yang digunakan untuk mereset PC6: 00001100 .
  • 46.
    Cara Kerja Sistem: • Setelah tape reader menerima perintah START (GO), tape reader akan mulai membaca data dan mengirimkan datanya dalam bentuk data 8- bit melalui saluran R0 sampai R7 ke port A. • Proses transfer data ini menggunakan sinyal- sinyal handshaking untuk sinkronisasi sehingga tape reader hanya akan mengirimkan data berikutnya jika ada konfirmasi dari penerima bahwa data telah berhasil diterima.
  • 47.
    Proses transfer datanyaadalah sebagai berikut: • Tape reader mengirim data melalui bit R0 sampai R7. • Tape reader kemudian menurunkan level sinyal strobe pada PC4 ke "low" sebagai tanda bahwa data telah dikirim. • Sebagai balasannya PPI akan menaikkan sinyal IBF (input buffer full) pada PC5 ke "high" sebagai tanda bahwa PPI siap menerima data. • Pada saat mendeteksi perubahan level IBF ke "high", tape reader akan kembali menaikkan level sinyal strobe ke "high".
  • 48.
    • Perubahan levelsinyal strobe dari "low" ke "high" memberikan 2 efek pada PPI. Yang pertama, PPI akan mengambil data dari saluran (PA0..PA7) dan menyimpannya pada buffer di port A. • Yang kedua, perubahan tersebut akan menyebabkan PPI mengirimkan sinyal interupsi ke mikrokomputer melalui saluran PC3. • Pada saat menerima sinyal interupsi, prosesor akan mengerjakan suatu rutin interupsi yang akan membaca data dari port A. • Pada saat membaca data, mikrokomputer akan mengirimkan sinyal RD. Pada saat sinyal ini berubah ke "low" , PPI akan menghentikan pengiriman sinyal interupsi. • Pada saat sinyal RD berubah menjadi "high", PPI akan menurunkan level sinyal IBF ke "low". • Sinyal IBF berubah ke "low" merupakan tanda bagi tape reader bahwa proses transfer data telah selesai dan bahwa tape reader boleh mengirimkan data berikutnya.
  • 49.
    Diagram waktu prosestransfer data
  • 50.
    • Data yangdibaca dari tape reader dieksekusi di prosesor. Dan sebagai hasilnya mikrokomputer akan mengoutputkan data-data pengontrolan melalui port B ke mesin bubut.
  • 51.
    Catatan: • InstruksiAND – Penulisan: AND destination, source – Fungsi : Membentuk perkalian logika – Instruksi AND digunakan untuk mengclear bit bilangan biner, seperti contoh berikut. Nilai bit yang di-AND-kan dengan 1 tidak berubah, sedangkan nilai bit yang di-AND-kan dengan 0 berubah menjadi 0.
  • 52.
    Contoh: MOV AL,9D H (1001 1101 B) AND AL, 3C H (0011 1100 B) Hasilnya, isi AL = 1C H (0001 1100 B
  • 53.
    Instruksi TEST •Penulisan : TEST destination, source • Fungsi instruksi ini ialah membentuk operasi yang hampir sama dengan AND. Perbedaannya, instruksi AND mengubah operand tujuan, sedangkan instruksi TEST tidak. Instruksi TEST hanya mempengaruhi isi register flag. • Instruksi TEST memiliki fungsi yang sama dengan instruksi CMP. Perbedaannya adalah bahwa instruksi TEST biasanya mengetes bit tungggal (atau bit ganda), sedangkan instruksi CMP mengetes seluruh data byte atau word. • Biasanya instruksi TEST diikuti oleh instruksi JZ(Jump if Zero) atau JNZ (Jump if Not Zero).
  • 54.
    Contoh program: •Berikut adalah sekumpulan instruksi untuk mengetes bit paling kiri dan paling kanan dari register AL. Di sini , 1 (1 H) dipilih untuk mengetes bit paling kanan dan 128 (80 H) untuk mengetes bit paling kiri. TEST AL,1 H ; tes bit paling kanan JNZ RIGHT ; jika bit paling kanan (bit 0) =1, jump ke label RIGHT ………….. TEST AL, 80 H ; test bit paling kiri JNZ LEFT ; jika bit paling kiri (bit 7) =1, jump ke label LEFT
  • 55.
    Instruksi IN •Penulisan : IN akumulator,port • Fungsi : Menginputkan data dari port ke akumulator (register AL atau register AX). • Port adalah sebuah komponen tempat peralatan input output terhubung. • Contoh port adalah port serial COM1, COM2 yang biasa dihubungkan dengan mouse atau keyboard; port printer LPT1, atau port PPI yang biasa digunakan untuk eksperimen.
  • 56.
    Instruksi OUT •Penulisan : OUT port,akumulator • Fungsi : Menyalin (mengoutputkan) data dari akumulator (Register AL atau Register AX) ke port.
  • 57.
    Instruksi CMP • Penulisan : CMP destination,source • Fungsi : Membandingkan data pada destination dengan data pada source. • Instruksi perbandingan (CMP) adalah bentuk pengurangan yang hanya mengubah bit-bit flag, sedangkan operand destination tidak berubah.
  • 58.
    Jump • Istilah lebihbesar (greater) dan lebih kecil (less) mengacu ke bilangan bertanda, sedangkan di atas (above) dan di bawah (below) mengacu ke bilangan tak bertanda.

Editor's Notes

  • #10 Mode 0 ialah mode yang paling sederhana, dimana semua port dapat deprogram sebagai input/putput. Pada mode ini seluruh bit sebagai output atau input, tidak ada bit yang dapat dikontrol secara individual. Mode 1, pada mode ini port A dan B dapat digunakan sebagai input atau output dengan kemampuan jabat tangan. Sinyal jabat tangan disediakan oleh bit-bit port C Mode 2, port A dapat digunakan sebagai port bi-directional I/O  dengan kemampuan jabat tangan dimana sinyalnya disediakan oleh port C. Port B dapat digunakan sebagai mode I/O sederhana atau mode 1 jabat tangan.