Jumat, 30 September 2011

Rezanantha Arya


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


Blok diagram 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

Tidak ada komentar:

Posting Komentar