1. PROGRAMABLE PERIPERAL INTERFACE A. Deskripsi Umum - Materi 4 Interface Input Output

  

Interface Input Output

1.

PROGRAMABLE PERIPERAL INTERFACE

  A. Deskripsi Umum

  Programable Periperal Interface 8255 Adalah keluarga IC Intel yang digunakan untuk banyak aplikasi industri. IC ini dapat diprogram (programmable) untuk komunikasi antara mikroprosesor dengan perangkat luar (periperal). Sebelum menjelaskan fungsi kerja, Penulis akan menjelaskan contoh aplikasi yang dapat dibuat dengan PII 8255 antara lain :

  Ø Aplikasi peraga LED Ø Aplikasi pengendali lampu lalu lintas Ø Aplikasi motor stepper yang diprogram untuk menggerakkan lengan (rigid body) robot Ø Aplikasi detektor suhu (thermostat) dan cahaya (light).

  Ø Aplikasi intelligent home controller Dan masih banyak yang lain. Itu semua tergantung dari kreatifitas kita serta tujuan penggunanya.

  Gambar. 8255 diagram

  B. Data Bus Buffer

  8 bit data bus buffer (D0..D7) berhubungan dengan 3 state bi-directional 8 bit buffer (Port A, Port B dan Port C). Data yang diterima di data bus buffer akan disimpan di buffer (tempat penyimpanan sementara) sebelum di eksekusi oleh mikroprosesor. Control Word dan status informasi juga ditranfer melalui data bus buffer ini.

  Gambar group control

  C. Group Control

  Group Control dibagi menjadi 2 group. (Group A dan Group B). Group tsb menerima Read/Write control Group Control A digunakan:

  a) Mengatur Port A yang bisa diseting sebagai input/output latch/buffer

  b) Mengatur 4 upper bit (C4..C7) Port C sebagai input buffer atau output latch/buffer jika bekerja pada mode 0 c)

  Mengatur 4 upper bit (C4..C7) Port C sebagai Control Group A jika bekerja pada mode 1 atau 2. Group Control B digunakan:

  a) Mengatur Port B yang bisa diseting sebagai input/output latch/buffer

  b) Mengatur 4 lower bit (C0..C3) Port C sebagai input buffer atau output latch/buffer jika bekerja pada mode 0 c)

  Mengatur 4 upper bit (C0..C3) Port C sebagai Control Group B jika bekerja pada mode 1 atau 2.

  D. Mode / Protokol komunikasi :

  Transfer data pada PPI 8255 dibagi menjadi 3 protokol komunikasi : 1. Mode 0 (Simple protokol) / Basic Input - Output

  Transfer data yang tidak memerlukan sinyal khusus yang menandakan apakah telah terjadi transfer data atau belum.

2. Mode 1 (Single handshaking protokol) / Strobed Input - Output

  Metode pentransferan data paralel dimana data tidak siap setiap saat. Untuk memberik tanda dari/ke mikroprosesor, maka PPI akan memberi sinyal "strobe" yang menyatakan data telah siap dikirim/diterima. Transfer data semacam ini bisa kita lihat pada printer. Cara kerjanya sebagai berikut :

  Mikroprosesor mengeluarkan sinyal strobe ke printer seolah-olah memberitahukan "ini ada data untukmu, terimalah". Jika printer telah menerima data maka printer memberikan sinyal acknowledge ke microprosesor, seolah-olah memberitahukan "data sudah saya terima,".

  3. Mode 2 (Double handshaking protokol) / Bi-directional Bus metode pentransferan data paralel yang menggunakan metode "handshaking", dimana mikrokontroller dan PPI akan saling berkomunikasi dengan memberi sinyal yang menyatakan bahwa data telah siap dikirim dan data telah diterima. Transfer data semacam ini menggunakan aturan sebagai berikut :

  Mikroprosesor sebagai pengirim mengeluarkan sinyal strobe low seolah- olah mengatakan ke printer "Anda siap dikirimi data ?" Jika printer siap maka printer sebagai penerima data mengeluarkan sinyal acknowledge high seolah-olah mengatakan ke mikroprosesor "Ya saya siap !" Setelah ada persetujuan, mikroprosesor mengeluarkan sinyal strobe high diikuti dengan pengiriman data seolah-olah mengatakan " Ini data untukmu !" Jika data telah di transfer Printer mengeluarkan sinyal acknowledge low seolah-olah mengatakan "data sudah saya terima".

  Terdapat 2 format control word register, yaitu format definisi mode (mode definition format) dan format set/reset bit (bit set/reset format). Perbedaan kedua format adalah pada MSB control word register (D7). Format definisi mode apabila D7 bernilai 1, dan format set/reset bit apabila D7 bernilai 0. Format definisi mode digunakan untuk mendefinisikan mode pengoperasian port PPI. Format set/reset bit digunakan untuk memberikan nilai low atau high pada bit-bit pada port C.

  Gambar diagram control word

  E. Port pada Programable Periperal Interface 8255

  Programable Periperal Interface 8255 terdiri dari 4 port yaitu Port A, Port B, Port C, Control Word Port. Pada mode 0, Port A, B, C adalah port yang digunakan sebagai I/O data Pada mode 1, Port A, C adalah port yang digunakan sebagai I/O data sedangkan port C bisa digunakan sebagai sinyal control (Strobe dan Acknowledge) atau sebagai I/O data. Pada mode 2, Port A, C adalah port yang digunakan sebagai I/O data sedangkan pada Port B, 5 bit pada MSB digunakan sebagai sinyal control dan 3 bit pada LSB digunakan sebagai I/O data. Control Word Port digunakan untuk inisialisasi awal yang menentukan PPI 8255 bekerja pada mode 0, 1 atau 2 dan menentukan port-port mana saja yang digunakan sebagai input dan output serta sebagai sinyal control.

  F. Set / Reset Bit

  Pada PPI 8255 terdapat port untuk set dan reset sebuah bit, dimana jika terjadi Set atau Reset hanya salah satu port pada Port C. Contoh :

  1. H (1111 1111), jika kita akan me-reset Port C 5 Jika Port C saat ini datanya adalah FF

  (PC 5 ) maka Port C hasilnya adalah BF H (1011 1111).

  2. H (0001 1111), jika kita akan me-set Port C 7 Jika Port C saat ini datanya adalah 1F

  (PC7) maka Port C hasilnya adalah 9F (1001 1111).

  

H Format Data Set / Reset

D7 D6 D5 D4 D3 D2 D1 D0

  1 = Set

  X X

  X Bit Selector 0 = Reset

  Penjelasan : Bit Selector adalah bit yang di inginkan untuk di set/reset. Contoh jika Set PC

  3 , maka Datanya adalah 0xxx 0111 (angka yang tebal artinya adalah set).

  G. Pengalamatan

  Telah dijelaskan sebelumnya bahwa PPI 8255 memiliki tiga buah port paralel yang masing masing diberi nama port A, port b dan port C. Disamping itu PPI 8255 memiliki satu register kontrol (control word register). Ketiga port dan register tsb dapat diakses dengan alamat sebagai berikut

  Alamat port A, B, dan C berturut-turut adalah 00h, 01h, dan 02h. Sedangkan alamat register kontrol adalah 03h. Hal ini berhubungan dengan pemberian sinyal pada kaki A0 dan A1. Dalam suatu program, alamat port A adalah 00h ditambah dengan alamat aktif. Alamat port B adalah 01h ditambah alamat aktif. Demikian pula untuk port C dan register kontrol. Misalnya, jika PPI 8255 dirancang untuk aktif pada alamat 200h, alamat ketiga port berturut-turut adalah 200h, 201h, dan 202h. Dan alamat register kontrol adalah 203h.

  H. Penulisan Bahasa pemrograman assembler pada mikroprocecor intel.

  Ø (Output data) Menulis atau Mengeluarkan data ke device

  Mov DX, 300h Mov AL, FFh Out DX, AL

  Penjelasan : Register DX mikroprosesor menunjuk alamat 300h Register AL mikroprosesor diisi data FCh atau dalam bentuk bit (1111 1100) Mikroprosesor mengeluarkan data FCh ke alamat 300h

  Ø (Input data) Membaca data dari device / Memasukkan data ke mikroprosesor

  Mov DX, 301h In AL, DX

  Penjelasan : Register DX mikroprosesor menunjuk alamat 301h Mikroprosesor memasukkan data dari alamat 301h

PROGRAMMABLE INTERVAL TIMER 2.

  Gambar dibawah ini merupakan sebuah IC yang berfungsi sebagai down counter yang dapat diprogram. Terdapat sinyal perantara mikroprosesor, sinyal ini memungkinkan mikroprosesor mengatur konfigurasi mode operasi timer, seperti :

  Ø Mengisi nilai counter Ø Membaca nilai counter Ø Memprogram mode yang diinginkan

  Fungsi PIT 8254 Beberapa fungsi dari counter/timer pada mikrokomputer yang dapat di implemetasikan oleh 8254 sebagai berikut :

  Ø Real time clock Ø Even counter Ø Digital one-shot Ø Programmable rate generator Ø Square wave generator Ø Binary rate multiplier Ø Complex waveform generator Ø Complex motor controller

  Diagram Blok

  DATA BUS BUFFER: ü 3-state, bi-directional, 8-bit buffer.

  ü Interfaces the 8254 to the system bus. READ/WRITE LOGIC BLOCK: v Read/Write Logic Block menerima masukan dari sistem bus dan pembangkit sinyal kontrol pada beberapa fungsi blok dari 8254. v A1 dan A0 pemilih salah satu dari tiga counter atau control word register baik pada saat membaca atau penulisan. v Pin RD=0 memberitahukan 8254 bahwa CPU melakukan proses pembacaan sebuah counter. v Pin WR=0 memberitahukan 8254 bahwa CPU melakukan proses penulisan salah satu dari Control Word ata Insialisasi counter v Kedua RD dan WR sebagai syarat dari CS. CONTROL WORD REGISTER: 1.

  Register ini merupakan pemilihan pada Read/Write Logic ketika A1,A0=11.

  2. Jika CPU melakukan operasi penulisan pada 8254, data yang terdapat pada control word register dan menafsirkan pada penggunaan control word yang didefinisikan sebagai operasi dari counter 3. Register Control Word hanya dapat melakukan penulisan. Informasi status yang tersedia saat Read-Back command.

  COUNTERS: 1.

  Terdapat 3 buah Counter. Secara penuh bebas dari yang lain. Setiap counter dapat beroperasi mode yang berbeda.

  2. Setiap counter mempunyai 16 bit down counter sinkronus.

  3. Setelah power aktif, nilai counter dan keluaran pada semua counter tidak didefinisikan.

  4. Setiap counter dapat diprogram sebelum digunakan.

  5. Counter yang tidak dipakai tidak dapat diprogram.

  6. Counter yang terprogram saat penulisan control word dan inisialisasi counter.

  7. GATE=1 mengaktifkan counter, GATE=0 non-aktifkan counter.

  SYSTEM INTERFACE Komponen IC 82C54 merupakan suatu software sistem yang terdapat beberapa device I/O port; diantaranya 3 counter dan sebuah register kontrol untuk program mode.

  Umumnya, masukan pilihan A0, A1 terhubung pada A0, A1 sinyal bus address dari CPU. Pin CS dapat masukan langsung dari bus address yang menggunakan metode pilihan linear. Atau dapat dihubungkan pada keluaran dari decoder.

  PROGRAMMING THE 8254: 1.

  Merupakan program counter dari penulisan control word dan kemudian inisialisasi counter.

  2. Control Words untuk menulisa pada register control word, dimana ketika A0, A1 = 1.

  Control word tersebut merupakan spesifikasi sebuat counter yang di program.

  3. Inisialisasi counter pada penulisan di counter, tidak pada Control word. Masukan Ao, A1 sebagai pemilih counter yang akan ditulis.

  4. Format dari inisialisasi counter yang ditentukan dari penggunaan control word.

  WRITE OPERATIONS: 1.

  Setiap Counter, Control Word harus ditulisan sebelum inisialisasi counter di tulis.

  2. Pada inisialisasi counter harus mengikuti format pada Control (lsb only, msb only, or lsb then msb).

  Inisialisasi counter baru dapat ditulis ke counter pada kapan saja tanpa mempengaruhi counter yang sedang berlangsung. Bagaimanapun, proses counter akan berpengaruh pada beberapa mode yang didefinisikan. READ OPERATIONS:

1. A simple READ operation: v Pilih Counter pada masukan A1, A0.

  v Mencegah CLK dari pilihan counter oleh penggunaan lain pada masukan Gate atau logika eksternal. v Dapat menghentikan CLK pada saat melakukan counter.

  2. Counter Latch Command (does not disturb the count in progress): v Menuliskan ke register control word mana digunakan, tapi 2 bit (D5 & D4) yang akan membedakan perintah tersebut dari control word. v Memilih counter sebagai Counter's OL latches saat Counter Latch Command diterima. v Counter akan tetap pada latch selama pembacaan dari CPU. v Counter akan unlatched dengan sendirinya dan OL kembali ke "following" pada CE.

  3. Read-Back Command: v Perintah ini memperbolehkan kita untuk mengecheck nilai counter, mode program, dan bagian arus dari pin OUT dan Null Count flag dari counter yang terpilih. v Perintah ini serupa pada beberapa Counter Latch Commands, dari 1 untuk setiap counter latched.

  MODE DEFINITIONS: Clk Pulse: naik, kemudian turun, pada saat perintah dari sebuah counter masukan CLK.

  Trigger: naik dari counter masukan GATE. Counter loading: Perubahan counter dari CR ke CE.

  MODE 0: INTERRUPT ON TERMINAL COUNT

  ⇒ Proses terjadinya counter. ⇒ Setelah Control Word di tulis, Out akan 0 dan akan selalu 0. ⇒

  Ketika counter mencapai 0. Out akan 1 dan akan selalu 1 selama counter baru/control word mode 0 baru menulis counter tersebut. MODE 1: HARDWARE RETRIGGERABLE ONE-SHOT

  ⇒ Out akan 1. Out akan 0 pada pulsa CLK mengikuti trigger yang di tandai dengan one- shot pulse, dan akan selalu 0 selama counter mencapai 0. ⇒ Out akan 1 dan selalu 1 selama CLK setelah trigger berikutnya. MODE 2: RATE GENERATOR

  ⇒

  Berfungsi divide-by-N counter dan mengunakan pembangkit Real Time Clock Interrupt.

  ⇒ Out didefinisikan 1. ⇒ Ketika inisialisasi counter diturunkan satu, Out akan 0 selama 1 pulsa CLK. ⇒

  Out akan 1 kembali, jika akan mengcounter kembali pada inisialisasi counter dan proses di ulang kembali.

  

⇒ MODE 2 merupakan periode. Urutannya akan sama saat diulang sampai tak hingga.

  MODE 3: SQUARE WAVE MODE ⇒ Identik digunakan untuk baud rate generation.

  ⇒ Out akan didefinisikan 1. ⇒ Ketika separuh inisialisasi count berakhir, Out akan 0 beberapa saat pada counter. ⇒ MODE 3 merupakan periode. Urutannya akan sama saat diulang sampai tak hingga.

  MODE 4: SOFTWARE TRIGGERED STROBE

  ⇒ Out akan didefinisikan 1. ⇒ Ketika inisialisasi counter berakhir, Out akan 0 untuk 1 Pulsa CLK dan kembali 1. ⇒ Urutan Counter merupakan "triggered" pada penulisan inisialisasi counter. ⇒

  Counter akan membaca CLK berikutnya diikuti penulisan Control Word dan inisialisasi Counter. MODE 5: HARDWARE TRIGGERED STROBE (RETRIGGERABLE)

  ⇒ Out akan didefinisikan 1. ⇒ Counter merupakan pemicu oleh tepi naik pada Gate. ⇒ Ketika inisialisasi berakhir, Out akan 0 untuk 1 pulsa CLK dan kembali 1 lagi. ⇒

  Perbedaan antara Mode 4 dan Mode 5 adalah Mode 5 tidak dapat membaca kembali selama pulsa CLK setelah di picu.

  OPERATION COMMON TO ALL MODES: 1.

  Ketika Control Word menulis ke counter, semua Logika Kontrol akan segera di reset dan Out akan ke bagian inisialisasi. Saat itu tidak dapat mengambil CLK yang di kirimkan.

  2. Masukan Gate selalu mengalami rising edge dari CLK 3.

  Pada salah satu Mode masukan Gate berada pada level sensitive dan juga pada salah satu rising edge. Pada salah satu Mode masukan gate dari kedua edge dan level sensitive.

  4. Counter baru akan membaca dan mengcounter secara menurun pada edge turun pada CLK.

  5. Bagian yang mungkin inisialisasi counter adalah 0, dan sama dengan 2^16 binar dan 10^4 BCD.

  6. Counter tidak dapat dihentikan ketika mencapai 0. Pada Mode 0, 1, 4, dan 5 counter di mulai dari counter tertinggi (FFFF atau 9999 ). Pada Mode 2 dan 3 counter akan di

  

H BCD

ulang dengan sendirinya dan akan melanjutkan counter kembali.

3. PROGRAMMABLE INTERRUPT CONTROLLER Keunggulan:

  A0 Address input line, used to select control register CS-bar Active low chip select

  Block diagram

  INTA-bar Interrupt ack, received active low from microprocessor IR0-7 Asynchronous IRQ input lines, generated by peripherals.

  INT Interrupt line, connected to INTR of microprocessor

  Slave program / enable. In non-buffered mode, it is SP- bar input, used to distinguish master/slave PIC. In buffered mode, it is output line used to enable buffers

  SP-bar / EN-bar

  CAS0-2 Bi-directional, 3 bit cascade lines. In master mode, PIC places slave ID no. on these lines. In slave mode, the PIC reads slave ID no. from master on these lines. It may be regarded as slave-select.

  ⊕

  Interupsi terdapat 8 tingkatan

  D0-D7 Bi-directional, tristated, buffered data lines. Connected to data bus directly or through buffers

  Pinout

  ⊕ Mode Polling dan vektor. ⊕ Alamat awal dari ISR atau nomor vektor program. ⊕ Tidak membutuhkan clock.

  Pada mode 8085, memberikan 3 byte panggilan Intruksi. Pada Mode 8086, memberikan 8 byte nomor vektor.

  ⊕

  Persetujuan IRQ, menetukan prioritas, mengecek apakah masukan prioritas > level arus, menghasilkan sinyal interupsi.

  ⊕ Dapat di cascaded pada konfigurasi master-slave dengan 64 level interupsi. ⊕ Terdapat prioritas internal. ⊕ Mode perbaikan prioritas dan rotasi. ⊕ Mempunyai masing-masing intrupsi maskable. ⊕ Mode dan Mask dapat dirubah-rubah. ⊕

  RD-bar Active low read control WR-bar Active low write control

  ICW1 (Initialisation Command Word One) pada Port 20h & A0h

A0 D7 D6 D5 D4 D3 D2 D1 D0

A7 A6 A5

  1 LTIM ADI SNGL

  IC4

  D0 : IC4: 0=no ICW4, 1=ICW4 required D1 : SNGL: 1=Single PIC, 0=Cascaded PIC D2 : ADI: Address Interval. Used only in 8085, not 8086. 1=ISR's are 4 bytes apart

  (0200, 0204, etc) 0=ISR's are 8 byte apart (0200, 0208, etc) D3 : LTIM: level triggered interrupt mode: 1=All IR lines level triggered. 0=edge triggered D4-D7 : A5-A7: 8085 only. ISR address lower byte segment. The lower byte is

  A7 A6 A5 A4 A3 A2 A1 A0 of which A7, A6, A5 are provided by D7-D5 of ICW1 (if ADI=1), or A7, A6 are provided if ADI=0. A4-A0 (or A5-A0) are set by 8259 itself:

  ADI=1 (spacing 4 bytes) ADI=0 (spacing 8 bytes)

  IRQ A7 A6 A5 A4 A3 A2 A1 A0

  IRQ A7 A6 A5 A4 A3 A2 A1 A0

  IR0 A7 A6 A5 0

  IR0 A7 A6 0

  IR1 A7 A6 A5 0

  1 IR1 A7 A6 0

  1 IR2 A7 A6 A5 0

  1 IR2 A7 A6 0

  1 IR3 A7 A6 A5 0

  1

  1 IR3 A7 A6 0

  1

  1 IR4 A7 A6 A5 1

  IR4 A7 A6 1

  IR5 A7 A6 A5 1

  1 IR5 A7 A6 1

  1 IR6 A7 A6 A5 1

  1

  1 IR6 A7 A6 1

  1 IR7 A7 A6 A5 1

  1

  1 IR7 A7 A6 1

  1

  1 ICW2 (Initialisation Command Word Two) pada Port 21h & A1h A0=1 Higher byte of ISR address (8085), or 8 bit vector address (8086).

  D7 D6 D5 D4 D3 D2 D1 D0 A15 A14 A13 A12 A11 A10 A9 A8

  ICW3 (Initialisation Command Word Three) pada Port 21h & A1h

  A0=1 . D7 D6 D5 D4 D3 D2 D1 D0

  Master S7 S6 S5 S4 S3 S2 S1 S0 Slave

  ID3

  ID2

  ID1 Master mode: 1 indicates slave is present on that interrupt, 0 indicates direct interrupt Slave mode: ID3-ID2-ID1 is the slave ID number. Slave 4 on IR4 has ICW3=04h (0000 0100)

  ICW4 (Initialisation Command Word Four) pada Port 21h & A1h

  A0=1 D7 D6 D5 D4 D3 D2 D1 D0

  SFNM BUF M/S AEOI Mode SFNM : 1=Special Fully Nested Mode, 0=FNM M/S : 1=Master, 0=Slave AEOI : 1=Auto End of Interrupt, 0=Normal Mode : 0=8085, 1=8086

  

OCW1 (Operational Command Word One/Interrupt Mask Reg.) pada Ports 21h & A1h

  A0=1 D7 D6 D5 D4 D3 D2 D1 D0 M7 M6 M5 M4 M3 M2 M1 M0

  IRn is masked by setting Mn to 1; mask cleared by setting Mn to 0 (n=0..7)

  

OCW2 (Operational Command Word Two/Interrupt Command Reg.) pada Ports 20h

& A0h

  A0=0 D7 D6 D5 D4 D3 D2 D1 D0 R SL EOI L3 L2 L1

  R SL EOI Action

  1 Non specific EOI (L3L2L1=000) EOI

  Specific EOI command (Interrupt to clear given by

  1

  1 L3L2L1)

  1

  1 Rotate priorities on non-specific EOI Auto rotation of priorities

  1 Rotate priorities in auto EOI mode set (L3L2L1=000)

  Rotate priorities in auto EOI mode clear Rotate priority on specific EOI command (resets

  1

  1

  1 Specific rotation of current ISR bit) priorities (Lowest

  1

  1 Set priority (does not reset current ISR bit) priority ISR=L3L2L1)

  1 No operation

  OCW3 (Operational Command Word Three) pada Ports 20h & A0h

  A0=0 D7 D6 D5 D4 D3 D2 D1 D0 D7 ESMM SMM

  1 MODE RIR RIS ESMM SMM Effect

  X No effect

  1 Reset special mask

  1

  1 Set special mask

  Interrupt sequence (single PIC) 1.

  Satu atau beberapa IR akan high (IR=1).

  2. Membandingan bit IRR yang di set.

  3.

  8259 Menilai permintaan dan mengirim INT ke CPU.

  4. CPU mengirimkan INTA.

  5. Prioritas ISR High yang di set. IRR di reset.

  6.

  8259 mengeluarkan printah CALL pada bus data.

  7. CALL menyebabkan CPU menginisialisasi beberapa INTA.

  8.

  8259 mengeluarkan alamat sub rutin, pertama low bit, kemudia hight bit.

  9. Bit ISR di reset pada mode.