materi 10 & 11 ppi 8255 - jurusan teknik elektro

Download Report

Transcript materi 10 & 11 ppi 8255 - jurusan teknik elektro

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).
Tabel Kebenaran PPI 8255
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
Mode Operasi PPI 8255
• Mode 0
• Mode 1
• Mode 2
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 sinyalsinyal handshaking.
– Biasanya digunakan untuk
memperpanjang bus system ke
mikroprosesor slave.
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.
Segmen Programnya:
MOV DX, 300 H
IN AL,DX
AND AL,01 H
Off:
On:
JNZ On
MOV DX,301 H
MOV AL,00 H
OUT DX,AL
………
MOV DX,301 H
MOV AL,FF H
OUT DX,AL
……….
; periksa saklar, apakah on
atau off
; u/ mematikan lampu
; u/ menyalakan lampu
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 menset/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 sinyalsinyal 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 8bit melalui saluran R0 sampai R7 ke port A.
• Proses transfer data ini menggunakan sinyalsinyal 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
AND AL, 3C H
(1001 1101 B)
(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.