Interface PPI8255
Definisi
PPI (Programmable
Peripheral Interface) 8255 adalah chip antarmuka 24 bit (3 port) yang dapat diprogram sesuai
keinginan kita. PPI 8255 merupakan chip yang paling banyak digunakan
untuk interfacing komputer yang dihubungkan ke port ISA
komputer.IC ini dirancang khusus untuk keperluan antarmuka (interface)
pada system komputer. Rangkaian interface berfungsi sebagai antarmuka
untuk keperluan kendali elektronik yang menghubungkan komputer dengan rangkaian
luar (peripheral) seperti dengan keyboard, mouse, layar monitor, printer
dan lain-lainnya. PPI 8255 merupakan satu contoh antarmuka yang dapat diprogram
untuk keperluan tertentu.
Konsep PPI 8255
Berikut penjelasan masing-masing pin :
PA0-PA07
Ini ialah port A yang terdiri dari 8 bit , dapat diprogram sebagai input atau output
dengan mode bi-directional input/output.
PB0-PB7
Port B ini dapat diprogram sebagai input
/output, tetapi tidak dapat digunakan sebagai port bi-directional.
PC0-PC7
Port C ini dapat diprogram sebagaiinput/output. Bahkan dapat
dipecah menjadi 2 yaitu CU( bit PC4-PC7) dan CL (bit PC0-PC3) yang dapat
diprogram sebagai input/output .
RD dan WR
Sinyal control aktif rendah ini dihubungkan ke 8255. Jika
8255 menggunakan desain peripheral I/O, IOR adan IOW dari system bus
dihubungkan ke kedua pin ini.
RESET
Pin aktif tinggi ini digunakan untuk membersihkan
control register. Ketika RESET
diaktifkan, seluruh port diinisialisasi sebagai port input.
Fungsi
Interface PPI8255
PPI 8255 memiliki fungsi pin sebagai
input/output
dan sistem kontrol, fungsi dari pin-pinnya
dapat
dijelaskan sebagai berikut
1.
Data Bus Buffer
D0-D7 (Bidirectional), data
bus buffer 8 bit digunakan untuk menghubungkan IC 8255 dengan
sistem bus komputer.
2.
Read, Write dan
Control Logic, fungsi blok ini adalah untuk mengatur
transfer data internal
maupun ekternal serta status control
word. Menerima data dari CPU address dan control bus.
3.
Chip Select (CS), sebagai
masukan yang akan mengaktifkan (enable) IC 8255 sehingga proses read-write
antara PPI 8255 dengan CPU dapat berlangsung bila pin ini aktif (aktif
low).
4.
Read (RD), pin ini aktif low,
artinya PPI mengirim data/ informasi status ke data bus, memerintahkan CPU
untuk membaca data dari input IC 8255.
5.
Write (WR), Pin ini aktif low,
berarti CPU menuliskan/mengirimkan data ke PPI 8255.
6.
A0 dan A1, berfungsi untuk menentukan tujuan register/bus
data komputer dengan salah satu
port dari PPI 8255.
7.
Reset, untuk clear register
kontrol dan seluruh Port diset kedalam mode input.
8.
Port A (PA0-PA7),i
port input/output yang dapat dihubungkan dengan perangkat luar.
9.
Port B (PB0-PB7), port input/output yang
dapat dihubungkan dengan perangkat luar.
10. Port C (PC0-PC7), port
input/output yang dapat dihubungkan dengan perangkat
luar. Hanya saja port ini dapat dibagi dua masing-masing 4 bit, yang
digunakan untuk mengontrol Port A0-A7 serta Port B0-B7 dalam mode
operasi tertentu
Pada
saat CS memilih chip, A0 dan A1 yang memilih port tertentu. 3 pin ini digunakan
untuk mengakses port A, B atau C, atau control register sesuai Tabel
Konfigurasi
dari 24 jalur I/O ini bias digunakan untuk masukan, keluaran, ataupun bidirectional(
duaarah ). Pada I/O yang dikontrol secara software akan lebih mudah bila dibandingkan
dengan pengontrolan secara hardware. Untuk memilih port 8255 digunakan dua buah
address pin, yaitu A1 dan A0, dengan kombinasi sebagai berikut :
A1
|
A2
|
Register
|
0
|
0
|
Port A
|
0
|
1
|
Port B
|
1
|
0
|
Port C
|
1
|
1
|
Control Word
|
Sedangkan untuk operasinya:
A1
|
A0
|
RD
|
WR
|
CS
|
Keterangan
|
0
|
0
|
0
|
1
|
0
|
Data masukke bus data Port A
|
0
|
1
|
0
|
1
|
0
|
Data masukke bus data Port B
|
1
|
0
|
0
|
1
|
0
|
Data masukke bus data Port C
|
0
|
0
|
1
|
0
|
0
|
Data keluarke bus data Port A
|
0
|
1
|
1
|
0
|
0
|
Data keluarke bus data Port B
|
1
|
0
|
1
|
0
|
0
|
Data keluarke bus data Port B
|
1
|
1
|
1
|
0
|
0
|
Memilih Control Word
|
X
|
X
|
1
|
8255 tidakdipilih
|
CS
harus dibuat rendah pada saat pembacaan atau penulisan pada PPI ini.Sinyal
reset bila aktifkan membersihkan seluruh register internal PPI dan membuat PPI
berfungsi dalam mode masukan
Pada saat CS memilih chip, A0 dan A1 yang memilih port
tertentu. 3 pin ini digunakan untuk mengakses port A, B atau C, atau control
register sesuai Tabel
Tabel Pemilihan port 8255
CS*
|
A1
|
A0
|
Yang dipilih
|
0
|
0
|
0
|
Port A
|
0
|
0
|
1
|
Port B
|
0
|
1
|
0
|
Port C
|
0
|
1
|
1
|
Control
register
|
1
|
x
|
X
|
8255 tidak
dipilih
|
Mode Pengiriman dari 8255
Pada saat port A, B dan C digunakan sebagai I/O), perlu diset
juga mode operasi dari port tersebut. Ada 4 mode operasi yang dimiliki 8255 yaitu :
1. 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.
2. 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
3. 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.
4. Mode BSR ( bit set/reset
). Pada mode ini, hanya bit individual
port C yang dapat deprogram
Contoh Penggunaan Interface
Misalkan jika kita inginmemprogram 8255 dengan ketentuan
sebagai berikut:
Port A à input
Port B à output
Port C (upper) à output
Port C (lower) à input
Grup B mode 0
Grup A mode 0
Makacaranyaadalah:
A1 A2 à 1
D0 à 1
D1 à 0
D2 à 0
D3 à 0
D4 à 1
D5 D6 à 0
D7 à 1
Pemakai
dapat menentukan mode PPI sekaligus fungsi dari tiap port, apakah sebagai input
atau output.
Contoh
program untuk inisialisasi IC 8255
Connector
PPI :
•Port
A 300h
•Port
B 301h
•Port
C 302h
•Port CW 303h
berfungsi
sebagai mode 0, dengan port A dan Port C sebagai input serta Port B sebagai
output. Disini dipakai connector PPI.
Control
Word yang harus dikirim supaya IC 8255 dapat berfungsi
•Port
A 300h
•Port B 301h
•Port
C 302h
•Port
CW 303h
Sehingga
program untuk melakukan inisialisasi :
•MOV
AL, 10011001b
•MOV
DX, 303h
•OUT
DX, AL
Kemudian
program dapat dilanjutkan dengan melakukan pembacaan pada port A, misalnya.
Atau bisa juga memberikan output ke port B. Berikut ini contoh untuk melakukan
pembacaan input dari port A.
•MOV DX,
301h
•IN
AL, DX
Didalam
program tersebut terlihat instruksi-instruksi IN dan OUT yang memegang peranan
penting dalam pengiriman data ke dalam dan ke luar sistem komputer. Instruksi
OUT DX,AL berarti mengirimkan data yang berada di AL ke alamat port yang
tersimpan di DX. Sedangkan IN AL,DX berarti membaca data dari port yang
alamatnya tersimpan di DX kemudian menyimpan data tersebut di AL.
Contoh Program
uses crt, dos;
label
comeback;
var
I:
integer;
data:
byte;
tanya:
Char;
Begin
comeback:
port[$303]:=$80;
port[$301]:=0;
port[$302]:=0;
port[$300]:=0;
data:=1;
for
i:=1 to 8 do
begin
port[$300]:=data;
data:=data
shl 1;
delay
(1000);
end;
port[$300]:=0;
data:=1;
for i:=1 to 8 do
begin
port[$301]:=data;
data:=data shl 1;
delay
(1000);
end;
port[$301]:=0;
data:=1;
for i:=1 to 8 do
begin
port[$302]:=data;
data:=data
shl 1;
delay
(1000);
end; port[$302]:=0;
Writeln (‘you comeback
again (Y/N)?); Readln (tanya);
If upcase (tanya)=‘Y’
then goto
comeback;
Readln;
End.
Contoh
Program dengan ahasa assembly
untuk membuat PPI 8255 dengan port A sebagai input
dan Port B dan Port C sebagai output.
PORTA EQU 50H
PORTB EQU 51H
PORTC EQU
52H
CNTLREG EQU
53H
…
MOV AL, 90H
MOV CNTLREG,AL
IN AL, PORTA
OUT PORTB, AL
OUT PORTC, AL
Contoh berikut merupakan koneksi 8255 dengan sebuah printer . Program di
bawah ini akan menampilkan pesan “Selamat mencoba 8255,Menggunakan buku Saya
“$”. Tanda $ menandakan akhir dari pesan
8255 Printer
Gambar 14.2 Rangkaian 8255 dengan Printer
Listing Program Program menampilkan string ke printer (PrinterPPI.asm)
DATA_SAYA DB “Selamat mencoba 8255”, CR, LF
DB “Menggunakan buku Saya”, CR,LF, “$”
PA EQU 300H
PB EQU 301H
PC EQU 302H
CWP EQU 303H
LF EQU 0AH
CR EQU 0DH
Dari segmen kode :
MOV AL,
10100000B ; control PA= out mode 1
MOV DX,CWP ;DX=303 CW port
OUT DX, AL ; mengirim control word
MOV AL,
00001101B ;PC6=1 untuk INT a
OUT DX, AL ; menggunakan mode BSR
MOV SI, OFFSET
DATA_SAYA ;S1= data address
LAGI: MOV
AH, [SI] ; ambil
sebuah karakter
CMP AH, ‘S’ ;apakah
selesai?
JZ OVER ;
jika ya, keluar
MOV DX, PC ;DX
=302,alamat port C
BACK: IN AL, DX ;ambil status byte dari port C
AND, AL, 08 ;apakah INTRa tinggi
JZ BACK ;jika tidak, tetpa mengecek
MOV DX, PA ; jika ya, buat DX=300,
port data
MOV AL, AH ; dan
OUT
DX, AL ;kirim karakter ke
printer
INC SI ;
naikkan data pinter
JMP AGAIN ;
tetap lakukan
OVER: … ; ke DOS
Gambar di bawah ini memperlihatkan koneksi port
paralel dengan PPI 8255.
Gambar Rangkaian Port
Paralel dengan 8255
Pemrograman
C untuk PPI 8255
C sangat mendukung pemrograman hardware
komputer. Untuk memprogram Bus ISA yang
akan berfungsi mengendalikan Kartu PPI (PPI
Card) menggunakan bahasa C/C++,, kita menggunakan fungsi outport untuk 8 bit data dan outportb
untuk 16 bit data. Berikut
tampilan Bus ISA
Contoh
– contoh instruksi I/O
1.Assembler
Output
:
•mov dx, 300h
•mov
al, 45h
•out
dx, al
Input
:
•mov
dx,301h
•in
al,dx
2.Pascal
Output
:
•Port[$301]:=$50;
{kirim data 50h ke port B}
Input
:
•C:=Port[$302];
{baca data dari port C}
3.
C
Output
: Outportb(0x0300,0x025); {kirim data 25h ke port A}
Input
: D:=inportb(0x0302); {baca data dari port C}
4.
Basic
Output
: Out 0x0378,D; {kirim data di variabel D ke port paralel (DP) Input :
B:=inp(0x0379); {baca data dari port paralel (PS)
Gambar Bus ISA komputer
Berikut contoh
program C untuk mengeluarkan data 0-255 di port B dan C, sedangkan port A sebagai input.
Listing Program 2. Program
Mengeluarkan data di PPI (PPI.C)
//Menyertakan header file
#include <stdio.h>
#include <conio.h>
//mendefinisikan konstanta
//symbol 0x menandakan
address komputer
#define PA 0x300
//port A di alamat 300H
#define PB 0x301
//port B di alamat 301H
#define PC 0x302 //port C di alamat 302H
#define CW 0x303 //Control Word di
alamat 303H
void main()
{
int data=0;
int nilai;
clrscr();
printf (“Program PPI 8255\n”)
outportb (CW, 0x90);//port A input, port B dan C output
//membuat looping data dari 0-255
for (data=0;data<=255;data++)
{
nilai=inportb (PA);
printf (“Data yang masuk di port A %d \n“, nilai);
outportb (PB, data);//mengeluarkan data di port B
printf (“Mengeluarkan data:
%d \n, di port B”,data);
delay(500); //delay 0.5 detik
outportb (PC, data);//mengeluarkan data di port C
printf (“Mengeluarkan data:
%d \n, di port C”,data);
delay(500); //delay 0.5 detik
}
getch();
}
Koneksi DAC di PPI 8255
Untuk koneksi ke DAC, anda dapat menggunakan IC DAC 8 bit misalnya MC1408
secara langsung .
Gambar Rangkaian DAC 8 bit
Contoh
Program dalam Borland
uses
Windows, Messages, SysUtils, Classes,
Graphics,Controls,Forms,Dialogs,StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
Button2: TButton;
aa: TLabel;
procedure kirim
(alamat:word;data:byte);
procedure terima (alamat:word);
procedure Button1Click(Sender:
TObject);
procedure Button2Click(Sender:
TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a,c : integer;
implementation
{$R *.DFM}
procedure
TForm1.kirim(alamat:word;data:byte);
begin
asm
mov dx,alamat
mov al,data
out dx,al
end;
end;
procedure TForm1.terima(alamat:word);
begin
asm
mov dx,alamat
in al,dx
mov c,al
end;
end;
procedure TForm1.Button1Click(Sender:
TObject);
begin
kirim($303,$89);
kirim($300,$00);
kirim($301,$00);
terima($302);
c := a;
aa.caption := inttostr(c);
If c = $00 then
kirim ($301,$03);
end;
procedure TForm1.Button2Click(Sender:
TObject);
begin
Close;
end;
end.
Timing
diagram
Sumber
1.
http://www.egohermansyah.hostei.com/sistem-mikroprosesor/programmable-peripheral-interface-ppi-8255/
5. http://blog.ub.ac.id/prastise/2011/03/20/fungsi-dan-operasional-ppi-8255-dengan-mikrokontroler-8051/
Tidak ada komentar:
Posting Komentar