Interfacing Port Paralel Komputer

42
 Interfacing Port Paralel Komputer, Serial dan PPI 8255 (Kutipan dari Buku saya) Pengenalan Port Paralel Port paralel ialah port data di komputer untuk mentransmisi 8 bit data dalam seka li detak. Standar port paralel yang baru iala h IEEE 1284 dimana dikeluarkan tahun 1994. Standar ini mendefinisikan 5 mode operasi sebagai berikut : 1. Mode kompatibilitas 2. mode nibble 3. mode byte 4. mode EPP (enhanced parallel port) 5. mode ECP (Extended capability port) Tujuan dari standar yang baru tersebut ialah untuk mendesain driver dan peralatan yang baru yang kompatibel dengan peralatan lainnya serta standar paralel port sebelumnya (SPP) yangn diluncurkan tahun 1981. Mode Compatibilitas , nibble dan byte digunakan seba gai standar pera ngkat keras yan g tersedia di port paralel orisinal dimana EPP dan ECP membutuhkan tambahan hardware dimana dapat berjalan dengan kecepatan yang lebih tinggi. Mode kompatibilitas atau (“Mode Centronics” ) hanya dapat mengirimkan data pada arah maju pada kecepatan 50 kbytes per detik hi ngga 150 kbytes per detik. Untuk menerima data, anda harus mengubah mode menjad i mode nibble atau byte. Mode nibble dapat menerima 4 bit (nibble) pada arah yang mundur, misalnya dari alat ke computer. Mode byte menggu nakan fitur bi-directional parallel untuk menerima 1 byte (8 bit) data pada arah mundur. IRQ (Interrupt Request ) pada port paralel biasanya pada IRQ 5 atau IRQ7. Port paralel Extend dan Enhanced menggunakan hardware tambahan untuk membangkitkan dan mengatur handshaking. Untuk mengeluarkan 1 byte ke printer menggunaka n mode kompatibilitas, software harus : 1. menulis byte ke data port 2. cek un tuk melihat apakah printer sibuk, jika sibuk, ia tidak akan menerima data, sehingga data yang telah ditulis akan hilang. 3. buat strobe (pin 1) r endah. Ini memberitahukan printer bah wa da ta yang benar telah b erada di line data 4. buat strobe tinggi lagi setelah menunggu sekitar 5 mikrodetik setelah membuat strobe low. Hal ini membatasi kecepat an data. Sedangkan EPP dan ECP mengizinkan hardwa re mengecek jika printer sibuk dan mengeluarkan sinyal strobe atau handshaking lainnya. Ini berate hanya 1 instruksi I/O yang harus dilakukan yang akan meningkatkan kecepatan Port ECP juga mempunyai kelebihan

Transcript of Interfacing Port Paralel Komputer

Page 1: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 1/42

 

Interfacing Port Paralel Komputer, Serial dan PPI 8255

(Kutipan dari Buku saya)

Pengenalan Port Paralel

Port paralel ialah port data di komputer untuk mentransmisi 8 bit data dalam sekali detak. Standar

port paralel yang baru ialah IEEE 1284 dimana dikeluarkan tahun 1994. Standar ini mendefinisikan 5

mode operasi sebagai berikut :

1. Mode kompatibilitas

2. mode nibble

3. mode byte

4. mode EPP (enhanced parallel port)

5. mode ECP (Extended capability port)

Tujuan dari standar yang baru tersebut ialah untuk mendesain driver dan peralatan yang baru yang

kompatibel dengan peralatan lainnya serta standar paralel port sebelumnya (SPP) yangn diluncurkan

tahun 1981. Mode Compatibilitas, nibble dan byte digunakan sebagai standar perangkat keras yang

tersedia di port paralel orisinal dimana EPP dan ECP membutuhkan tambahan hardware dimana

dapat berjalan dengan kecepatan yang lebih tinggi. Mode kompatibilitas atau (“Mode Centronics” )

hanya dapat mengirimkan data pada arah maju pada kecepatan 50 kbytes per detik hingga 150kbytes per detik. Untuk menerima data, anda harus mengubah mode menjadi mode nibble atau

byte. Mode nibble dapat menerima 4 bit (nibble) pada arah yang mundur, misalnya dari alat ke

computer. Mode byte menggunakan fitur bi-directional parallel untuk menerima 1 byte (8 bit) data

pada arah mundur. IRQ (Interrupt Request ) pada port paralel biasanya pada IRQ5 atau IRQ7.

Port paralel Extend dan Enhanced menggunakan hardware tambahan untuk membangkitkan dan

mengatur handshaking. Untuk mengeluarkan 1 byte ke printer menggunakan mode kompatibilitas,

software harus :

1. menulis byte ke data port

2. cek untuk melihat apakah printer sibuk, jika sibuk, ia tidak akan menerima data, sehingga data

yang telah ditulis akan hilang.

3. buat strobe (pin 1) rendah. Ini memberitahukan printer bahwa data yang benar telah berada di

line data

4. buat strobe tinggi lagi setelah menunggu sekitar 5 mikrodetik setelah membuat strobe low.

Hal ini membatasi kecepatan data. Sedangkan EPP dan ECP mengizinkan hardware mengecek jika

printer sibuk dan mengeluarkan sinyal strobe atau handshaking lainnya. Ini berate hanya 1 instruksi

I/O yang harus dilakukan yang akan meningkatkan kecepatan Port ECP juga mempunyai kelebihan

Page 2: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 2/42

 

menggunakan saluran DMA dan buffer FIFO, jadi data dapat digeser tanpa menggunakan instruksi

I/O.

Protokol EPP mempunyai 4 macam siklus transfer dta yang berbeda yaitu :

1. Siklus baca data (Data read)

2. Siklus baca alamat (Address Read)

3. Siklus tulis data (data write)

4. siklus tulis alamat (address write)

Siklus data digunakan untuk mentrasfer data antara host dan peripheral. Siklus alamat digunakan

untuk mengirimkan alamat, saluran (channel) atau informasi perintah dan control.

Berikut ialah tabel nama pin dari konekter DB25 dan Centronics dengan jumlah konektor 34. DB25

ialah konektor yang umum digunakan di computer sebagai port paralel , sedangkan konektor

Centronics umum ditemukan di printer. IEEE 1284 ialah standar yang menentukan 3 konektor

berbeda yang dapat digunakan dengan port paralel, yaitu1284 tipe A ialah konektor DB25 yang

dapat ditemukan di hampir semua komputer, 1284 tipe B ialah konektor Centronics 36 pin yang

umum ditemukan di printer, IEEE 1284 type C ialah konektor 36 pin seperti Centronics, tetapi

ukurannya lebih kecil dan lebih memuaskan.

Tabel Nama pin dari konektor parallel port DB 25 dan Centronics

Pin DB25

Pin Centronics

SPP Signal

Arah In/out

Register

Hardware di invert

1

1

nStrobe

In/Out

Control

Ya

2

Page 3: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 3/42

 

2

Data 0

Out

Data

3

3

Data 1

Out

Data

4

4

Data 2

Out

Data

5

5

Data 3

Out

Data

6

6

Data 4

Out

Page 4: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 4/42

 

Data

7

7

Data 5

Out

Data

8

8

Data 6

Out

Data

9

9

Data 7

Out

Data

10

10

nAck

In

Status

11

Page 5: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 5/42

 

11

Busy

In

Status

Ya

12

12

Paper-Out / Paper-End

In

Status

13

13

Select

In

Status

14

14

nAuto-Linefeed

In/Out

Control

Ya

15

32

nError / nFault

In

Page 6: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 6/42

 

Status

16

31

nInitialize

In/Out

Control

17

36

nSelect-Printer / nSelect-In

In/Out

Control

Ya

18 - 25

19-30

Ground

Gnd

Untuk mengeluluarkan data di port parallel, anda gunakan fungsi outport (8 bit ) dan outportb(16

bit) sebagai berikut :

//Program menggunakan bahasa C untuk pengendali lampu led di port paralel

#include <conio.h>

Page 7: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 7/42

 

#include <stdio.h>

#include <stdlib.h>

int main()

{

outport(0x378,0);//lampu led mati

sleep(1); //tunda 1 detik

outport(0x378,1); //lampu led hidup

sleep(1);

return 0;

}

//Program menggunakan bahasa Visual C++ untuk pengendali lampu led di port paralel

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

int main()

{

 _outp(0x378,0); // model visual C++ untuk outport

 _sleep(1000);

 _outp(0x378,1);

 _sleep(1000);

return 0;

}

Jika anda ingin menggunakan Bahasa Visual Basic, maka Anda harus mengimport file inpout32.dll ke

direktori c:\windows, c:\windows\system dan default direktori program anda untuk memastikan file

ini dapat ditemukan , file .dll ini dapat Anda temukan di widodo.com/downloads/downloads.html.

Page 8: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 8/42

 

 

Berikut contoh kodenya :

Private Declare Function Inp Lib "inpout32.dll" _

Alias "Inp32" (ByVal PortAddress As Integer) As Integer

Private Declare Sub Out Lib "inpout32.dll" _

Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)Dim Port1 As Integer

Private Sub Command1_Click()

Port1 = 888

Out Port1, 1

End Sub

Private Sub Command2_Click()

Port1 = 888

Out Port1, 0

End Sub

Gambar berikut contoh penggunakan port paralel untuk mengendalikan 5 buah 7 segment

menggunakan IC 74LS244 dan 75492. Perlu diketahui bahwa port control di port paralel

menggunakan jenis open kolektor, dimana jika diukur dnegan voltmeter, maka output port control

akan selalu bernilai tinggi (5V). Yang dibutuhkan di sini ialah kecerdikan anda di dalam membuat

program , jika dilihat dari gambar, 7 segment membutuhkan 7 input yang berasal dari 74LS244.

Sedangkan untuk memilih 7 segment mana yang aktif Anda cukup memberikan pulsa ke pin IC

75492 yang sesuai.

Alamat port paralel umumnya 378H, Jika anda menggunakan bahasa Pascal untuk mengeluarkan

data ke port paralel berikut contoh kodenya :

Prosedure lampu_hidup_naik;

Begin

I:=1;

repeat

Port[$378]:=I;

Page 9: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 9/42

 

I:=I*2;

until I>255;

End;

Jika anda ingin menggunakan bahasa C, akan lebih baik alamat port anda definisikan sebagai berikut

#define PORT 0x378

Centronics

Centronics ialah standar transfer data dari komputer ke printer .Berikut diagram dari protokol

‘Centronics’ yang telah disederhanakan.

Data dikirim ke pin 2 hingga 7. Komputer akan mengecek apakah printer sibuk. Jika printer sibuk ,

maka line busy haruslah berlogika 0. Program lalu mengeluarka nsinyal strobe, menunggu sekitar

1uS, dan menonaktifkan sinyal strobe . Data dibaca oleh printer/peripheral pada saat ujung strobe.

Pada model port Extended , Anda akan memperoleh Mode Centronics yang cepat Fast Centronics

Mode, dimana mengizinkan hardware melakukan seluruh handshaking. Yang harus dilakukan oleh

program ialah menulsi data ke port I/O. Hardware akan mengecek apakah printer sibuk, akan

mengeluarkan sinyal strobe. Mode ini umumnya tidak mengecek sinyal nAck .

Alamat Port

Port Paralel mempunyai 3 alamat seperti pada tabel 6.2 . 3BCH ialah alamat dasar yang

diperkenalkan sejak munculnya port Paralel pada kartu video yang kemudian tidak digunakan lagi .

LPT1 ialah line printer dengan alamat 378h, lalu LPT2 dengan alamat 278H meskipun alamat ini

dapat dirubah. Saat ini, alamat 378H dan 278H umumnya digunakan sebagai alamat port Paralel .

Tabel Alamat port paralel

Alamat

Penjelasan

3BCH - 3BFH

Digunakan untuk paralel port di kartu video, tidak mendukung alamat ECP

378H - 37FH

Page 10: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 10/42

 

Alamat untuk LPT 1

278H - 27FH

Alamat untuk LPT 2

Ketika komputer dihidupkan, BIOS (Basic Input/Output System) akan menentukan jumlah port yang

anda miliki dan mengeset nama LPT1, LPT2 & LPT3 ke masing-masing port tersebut. BIOS pertama

kali mencari alamat 3BCH. Jika parallel port ditemukan di sana,BIOS akan mengeset dengan nama

LPT1, lalu mencari alamat lainnya yaitu 378H.

Berikut contoh program menerima data dari port paralel , dimana base alamatnya ialah 379H.:

#include <stdio.h>

#include <dos.h>

#include <conio.h>

/*****************************************/

/*membaca input data dari port paralel */

/*****************************************/

int Read_Input()

{int Byte;

Byte=inportb(0x379);

return Byte;}

void main (void)

{int PP_Input;

clrscr();

PP_Input = Read_Input;

printf("%d",var);

getch();}

Ketika BIOS mengeset alamat ke peralatan printer Anda, ia menyimpan alamat pada lokasi tertentu

di memory, seperti pada Tabel. Alamat 0000:040E pada BIOS Data Area mungkin digunakan sebagai

Extended Bios Data Area di PS/2 dan BIOS yang lebih baru .

Tabel Alamat LPT di BIOS Data Area

Page 11: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 11/42

 

 

Alamat Awal

Fungsi

0000:0408

LPT1's Base Address

0000:040A

LPT2's Base Address

0000:040C

LPT3's Base Address

0000:040E

LPT4's Base Address (Note 1)

Tabel diatas menampilkan alamat dimana kita dapat mencari alamat port printer pada BIOS Data

Area. Tiap alamat membutuhkan 2 byte. Kode berikut ialah contoh program pencarian alamat port

printer di komputer Anda.

#include <stdio.h>

#include <dos.h>

void main(void)

{

unsigned int far *ptraddr; /* Pointer ke lokasi alamat port */

unsigned int address; /* alamart Port */

int a;

ptraddr=(unsigned int far *)0x00000408;

for (a = 0; a < 3; a++)

{

address = *ptraddr;

Page 12: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 12/42

 

if (address == 0)

printf(" port tidak ditemukan di LPT%d \n",a+1);

else

printf("Alamat yang diset di LPT%d ialah %Xh\n",a+1,address);

*ptraddr++;

}

Port Bi-direksional

Diagram di bawah ini menampilkan register data port paralel menggunakan keluarga IC 74LS,

meskipun sekarang sudah ada IC ASIC (Application Specific Integrated Circuits).

Gambar Rangkaian Port Bi-direksional

Port non bi-direksional dibuat menggunakan 74LS374. port bi-direksional menggunakan bit control 5

yang dihubungkan ke 74LS374 sehingga keluarannya dapat dimatikan. Pada saat port paralel ini kita

set seperti ini, maka data yang kita tulis ke register data paralel port tidak akan sampai ke DB25

karena ‘374 dalam keadaan tidak menghantar. 

Menggunakan Port Paralel untuk 8 bit input

Jika paralel port anda tidak mendukung mode bi-direksional, Anda dapat memasukkan maksimum 9

bit pada 1 waktu. Untuk melakukan ini anda dapat menggunakan 5 input line dari port Status dan 4

input (open collector) dari port control. Dengan skema seperti gambar 6.3, 4 bit register status

difungsikan sebagai 4 bit MSB pertama . Register control menjadi 4 bit LSB terakhir. Pin Busy ialahMSB dari semuanya dan LSB 4 bit pertama ialah Select. Untuk mode nibble, akan diabca 8 bit dengan

menngunakan parallel port tanpa mengubahnya ke dalam modus balik, artinya tanpa memerlukan

pengesetan bit ke 5 dari register control . Mode ini diperkenalkan oleh Hewlett Packard sebelum

IBM memperkenalkan port paralel yang bidireksional.

Page 13: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 13/42

 

Gambar Rangkaian input 8 bit di port paralel

Berikut contoh program C untuk mengontrol 8 buah alat melalui penekanan tombol keyboard :

/* Program untuk mengontrol peralatan menggunakan port paralel . Alat dikontrol dengan menekan

tombol 1-8 di keyboard.

*/

#include<dos.h>

#include<stdio.h>

#include<conio.h>

#define PORT 0x378 /* alamat port paralel */

main()

{

char val=0,key=0;

char str1[]="ON ";

char str2[]="OFF";

char *str;

clrscr();

printf("Tekan key yang sesuai untuk menghidupkan /mematikan alat \n\n");

printf("Dimana alat ke 1 terhubung ke D0 dari port paralel , begitu seterusnya \n\n");

printf("Tekan \"x\" untuk keluar\n\n");

gotoxy(1,8);

printf("Device1:OFF Device2:OFF Device3:OFF Device4:OFF\n");

printf("Device5:OFF Device6:OFF Device7:OFF Device8:OFF");

while(key!='x' && key!='X') //Jika yang ditekan bukan X

Page 14: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 14/42

 

{

gotoxy(1,12);

printf("Nilai dalam format hex telah dikirim ke port:");

key=getch();

switch(key){

case '1': //jika kita menekan 1 di keyboard

gotoxy(9,8);

val=(val&0x01)?(val&(~0x01)):val|0x01;

str=(val&0x01)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '2':

gotoxy(21,8);

val=(val&0x02)?(val&(~0x02)):val|0x02;

str=(val&0x02)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '3':

gotoxy(33,8);

val=(val&0x04)?(val&(~0x04)):val|0x04;

str=(val&0x04)?str1:str2;

Page 15: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 15/42

 

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '4':

gotoxy(45,8);

val=(val&0x08)?(val&(~0x08)):val|0x08;

str=(val&0x08)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '5':

gotoxy(9,9);

val=(val&0x10)?(val&(~0x10)):val|0x10;

str=(val&0x10)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '6':

gotoxy(21,9);

val=(val&0x20)?(val&(~0x20)):val|0x20;

str=(val&0x20)?str1:str2;

Page 16: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 16/42

 

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '7':

gotoxy(33,9);

val=(val&0x40)?(val&(~0x40)):val|0x40;

str=(val&0x40)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

case '8':

gotoxy(45,9);

val=(val&0x80)?(val&(~0x80)):val|0x80;

str=(val&0x80)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",(unsigned char)val);

break;

}

}

}

Page 17: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 17/42

 

Program diatas segera akan mengeluarkan data ke port paralel ketika user menekan tombol

keyboard menggunakan fungsi case, dan menggunakan fungsi outportb untuk mengendalikan port .

Fungsi gotoxy untuk menempatkan string pada posisi x dan y yang telah ditentukan, serta fungsi

break untuk berhenti, berikut potongoan kodenya :

case '1': //jika kita menekan 1 di keyboard

gotoxy(9,8);

val=(val&0x01)?(val&(~0x01)):val|0x01;

str=(val&0x01)?str1:str2;

printf("%s",str);

outportb(PORT,val);

gotoxy(1,13);

printf("%x",val);

break;

Untuk mendeteksi alamat port printer apa saja yang telah diset pada port parallel, gunakan perintah

debug sebagai berikut :

Gambar Menggunakan perintah debug untuk melihat alamat LPT1

Dari gambar diatas terlihat LPT1 diset dialamat 378H dan ada alamat lainnya yang telah diset juga.

sampel program (saya menggunakan Delphi versi 7) untuk ADC 0804 di port parallel(sumber :Amran)

procedure TForm1.Timer1Timer(Sender: TObject);

begin

asm

push dx

Page 18: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 18/42

 

mov dx,$37A //alamat ofset control parallel

mov al,$32 //isi dengan 32 {0010 0000} enable Bi-Directional

out dx,al

pop dx

end;

begin

asm

push dx

mov dx,$37A //alamat ofset control parallel

mov al,$36 //isi dengan 36 {0010 0100} aktifkan pin no.3 ADC 804

out dx,al

pop dx

end;

begin

asm

push dx

mov dx,$37A //alamat ofset control parallel

mov al,$37 //isi dengan 37 {0010 0101} strobe (enable ADC Output)

out dx,al

pop dx

end;

begin

asm

push dx

mov dx,$378 //alamat dasar parallel

in al,dx // baca input Parallel port

mov data,al

Page 19: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 19/42

 

pop dx

end;

begin

asm

push dx

mov dx,$37A //alamat ofset control parallel

mov al,$36 //isi dengan 36 {0010 0100} disable ADC Output

out dx,al

pop dx

end;

data1:=(5/255)*data; //konversi ke 0-5Volt

lcdnumber1.Value:=floattostr(data1); //tampilkan hasil

end;

end;

end;

end;

end;

Menggunakan INT 17H

INT 17H digunakan untuk mencetakan karakter ke printer, berikut contoh assembly untuk mencetak

karakter ‘A ‘ di printer 

MOV AH,0 ;cetak pilihan karakter

MOV DX,0 ;pilih LPT1

MOV AL, 41H ;kode ASCII untuk ‘A’ 

INT 17H ; panggil BIOS

Page 20: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 20/42

 

 

Konsep Komunikasi serial pada Komputer

Komunikasi serial ialah pengiriman data secara serial (data dikirim satu persatu secara berurutan),

sehingga komunikasi serial jauh lebih lambat daripada komunikasi paralel.. Serial port lebih sulit

ditangani karena peralatan yang dihubungkan ke serial port harus berkomunikasi dengan

menggunakan transmisi serial, sedang data di computer diolah secara paralel. Oleh karena itu data

dari dan ke serial port harus dikonversikan ke dan dari bentuk paralel untuk bisa digunakan.

Menggunakan hardware, hal ini bisa dilakukan oleh Universal Asyncronous Receiver Transmimeter

(UART), kelemahannya kita butuh software yang menangani register UART yang cukup rumit

dibanding pada parallel port.Kelebihan dari komunikasi serial ialah panjang kabel jauh dibanding

paralel, karena serial port mengirimkan logika “1” dengan kisaran tegangan –3 V hingga –25 V dan

logika 0 sebagai +3 Volt hingga +25 V sehingga kehilangan daya karena panjangnya kabel bukan

masalah utama. Bandingkan dengan port paralel yang menggunakan level TTL berkisar dari 0 V untuk

logika 0 dan +5 Volt untuk logika 1. Berikut contoh bentuk sinyal komunikasi serial . Umumnya sinyal

serial diawali dengan start bit, data bit dan sebagai pengecekan data menggunakan parity bit serta

ditutup dengan 2 stop bit. Level tengangan -3 V hingga +3 V dianggap sebagai undetermined region.

Gambar Bentuk sinyal serial

Komunikasi melalui serial port adalah asinkron, yakni sinyal detak tidak dikirim bersama dengan

data. Setiap word disinkronkan dengan start bit, dan sebuah clock internal di kedua sisi menjaga

bagian data saat pewaktuan (timing).

Peralatan Komunikasi Serial

Hardware pada komunikasi serial port dibagi menjadi 2 (dua ) kelompok yaitu Data

Communication Equipment (DCE) dan Data Terminal Equipment (DTE). Contoh dari DCE ialah

modem, plotter, scanner dan lain lain sedangkan contoh dari DTE ialah terminal di komputer.

Spesifikasi elektronik dari serial port merujuk pada Electronic Industry Association (EIA) :

“Space” (logika 0) ialah tegangan antara + 3 hingga +25 V.  

Page 21: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 21/42

 

“Mark” (logika 1) ialah tegangan antara –3 hingga –25 V.

Daerah antara + 3V hingga –3V tidak didefinisikan /tidak terpakai

Tegangan open circuit tidak boleh melebihi 25 V.

Arus hubungan singkat tidak boleh melebihi 500mA.

Berikut tampilan port serial DB9 yang umum digunakan

Gambar 12.2 Port DB9 jantan

Gambar 12.3 Port DB9 betina

Konektor port serial terdiri dari 2 jenis, yaitu konektor 25 pin (DB25 dan 9 pin (DB9) yang

berpasangan (jantan dan betina).Bentuk dari konektor DB-25 sama persis dengan port paralel.

Tabel Jenis Sinyal RS232 yang umum digunakan

Alamat Port dan IRQ 

Alamat standar serial port adalah sebagaimana tampak dalam Tabel 12.2. Hal ini masih dengan

catatan bahwa mungkin ada komputer yang memiliki alamat port dan IRQ yang berbeda dengan

alarnat di bawah ini, misalnya pada komputer PS/2 yang menggunakan Micro Channel Bus.

Tabel Alamat dan IRQ port serial

Nama

Page 22: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 22/42

 

Alamat

IRQ 

COM 1

3F8

4

COM 2

2F8

3

COM 3

3E8

4

COM 4

2E8

3

Konverter Logika RS-232

Jika peralatan yang kita gunakan menggunakan logika TTL maka sinyal serial port harus kita

konversikan dahulu ke pulsa TTL sebelum kita gunakan, dan sebaliknya sinyal dari peralatan kita

harus dikonversikan ke logika RS-232 sebelum di-inputkan ke serial port. Konverter yang paling

mudah digunakan adalah MAX-232. Di dalam IC ini terdapat Charge Pump yang akan

membangkitkan +10 Volt dan -10 Volt dari sumber +5 Volt tunggal. Dalam IC DIP (Dual In-line

Package) 16 pin (8 pin x 2 baris) ini terdapat 2 buah transmiter dan 2 receiver.

Pemrograman Port Serial Komputer

Port serial sering digunakan untuk interfacing komputer dan mikrokontroler, karena kemampuan

 jarak pengiriman data dibandingkan port paralel. Berikut contoh program assembly untuk

komunikasi serial antara 2 PC. Untuk komunikasi ini, anda cukup menghubungkan :

Pin TxD ke pin RxD computer lain

Pin RXD dihubungkan ke pin TxD komputer lain

Page 23: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 23/42

 

RTS dan CTS dihubung singkat

DSR dan DTR dihubung singkat

GND dihubungkan ke GND komputer lain

Listing Program 1. Komunikasi Serial antara 2 PC (SerialPC.asm)

TITLE Komunikasi data serial antara 2 PC

.model small

.stack

.data

Message db ‘Komunikasi serial melalui Com2,4800,tanpa parity, 1 stop, 8 bit

data.’,0ah,0dh 

db ‘key apa saja ditekan akan dikirim ke komputer lain ‘,0ah,0dh 

db ‘Tekan ESC untuk keluar’,’$’ 

.code

main proc

mov ax,@data

mov,ds,ax

mov ah,09

mov dx, offset message

int 21h

;inisialisasi com2

mov ah,0 ;inisialisasi port com

mov dx,1 ;com2

mov al,0c3h ;4800,tanpa parity,1 stop, 8 bit data

int 14h

;mengcek key yang ditekan dan dikirim ke com2 untuk transfer data

Page 24: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 24/42

 

again: mov ah,01 ;cek key yang ditekan menggunakan int 16h, ah=01

int 16h ;jika ZF=1, tidak ada key yang ditekan

  jz next ;jika tidak ada key cek port port

mov ah,0 ;ya, ada key yang ditekan, ambil !

int 16h ;kita harus menggunakan int 16h 2 kali, untuk keuda kalinya

;dengan ah=0 untuk mengambil karakter. al=ascii karakter yang ditekan

cmp al,1bh ;apakah key ESC?

Je exit ;ya exit

Mov ah,1 ;tidak, kirim karakter ke com2

Mov dx,01

Int 14h

;cek com2 untuk melihat apakah ada karater, jika ada ambil dan tampilkan

next: mov ah,03 ;ambil status com2

mov dx,01

int 14h

and ah,01 ;ah mempunyai status com, mask seluruh bit kecuali D0

cmp ah,01 ;cek D0 untuk melihat jika ada sebuah karakter

  jne again ;tidak ada data, untuk memonitor keyboard

mov ah,02 ;ya, com2 mempunyai data, ambil!

Mov dx,01

Int 14h ;ambil

Mov dl,al ;dan tampilkan menggunakan int 21h

Mov ah,02 ;dl mempunyai karakter yang akan ditampilkan

Int 21h

Jmp again ;terus memonitor keyboard

Exit: mov ah, 4ch ;keluar ke DOS

Int 21h

Page 25: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 25/42

 

Main endp

End

Anda juga dapat memprogram komunikasi serial antara 2 PC menggunakan C dengan lebih mudah .

Berikut program komunikasi data serial menggunakan fungsi BIOSCOM.

Listing Program 2. Komunikasi serial menggunakan C (SerialPC.c)

//Program komunikasi serial menggunakan fungsi bioscom

//Dibuat oleh Widodo Budiharto

//nilai port 0 untuk COM1, 1 untuk COM2 dan seterusnya.

//8 bit teratas dari return value ialah untuk status

//8 bit terendeah tergantung pada perintah yang telah ditentukan

//perintah dapat berisi :

// 0 | Set parameter komunikasi ke nilai dalam abyte

// 1 | Mengirim karakter dalam abyte

// 2 | Menerima sebuah karakter dari jalur komunikasi

// 3 | Kembalikan status saat ini dari port komunikasi

// abyte ialah kombinasi dari bit berikut

// 0x02 | 7 data bits 0x00 110 baud

// 0x03 | 8 data bits 0x20 150 baud

// 0x40 300 baud

// 0x00 | 1 stop bit 0x60 600 baud

// 0x04 | 2 stop bits 0x80 1200 baud

// 0x00 | No parity 0xA0 2400 baud

// 0x08 | Odd parity 0xC0 4800 baud

// 0x18 | Even parity 0xE0 9600 baud

Page 26: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 26/42

 

 

//Sebagai contoh, 0xEB

//(0xE0|0x08|0x00|0x03) untuk abyte akan menset

//port komunikasi ke 9600 baud, odd parity,1 stop bit, dan 8 bit data

//bioscom menggunakan BIOS 0x14 interrupt.

//Menyertakan header file yang dibutuhkan

#include <bios.h>

#include <conio.h>

//definisi port

#define COM1 0

#define DATA_READY 0x100

#define TRUE 1

#define FALSE 0

//definisi settings

#define SETTINGS ( 0x80 | 0x02 | 0x00 | 0x00)

int main(void)

{

int in, out, status, DONE = FALSE;

bioscom(0, SETTINGS, COM1);//3 parameter dari bioscom

cprintf("Komunikasi serial menggunakan BIOSCOM, tekan [ESC] untuk keluar \n");

while (!DONE)

{

status = bioscom(3, 0, COM1);

if (status & DATA_READY)

if ((out = bioscom(2, 0, COM1) & 0x7F) != 0)

Page 27: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 27/42

 

putch(out);

if (kbhit())

{

if ((in = getch()) == '\x1B')

DONE = TRUE;

bioscom(1, in, COM1);

}

}

return 0;

}

Jika Anda ingin membuat aplikasi menggunakan bahasa Visual Basic .NET, berikut contohnya :

‘ Program Inisialisasi dan membuka port komunikasi

‘ Membuat instance

Dim moRS232 as New Rs232()

With moRs232

.Port = 1 'Menggunakan COM1

.BaudRate = 2400 ' baud rate sebesar 2400

.DataBit = 8 ‘ 8 data bit

.StopBit = Rs232.DataStopBit.StopBit_1 ' 1 Stop bit

.Parity = Rs232.DataParity.Parity_None ' No Parity

.Timeout = 500 ' 500 ms timeout

End With

'inisialisasi dan membuka port

moRS232.Open ()

’Anda dapat menambahkan control dari jalur DTR/RTS setelah port dibuka 

Page 28: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 28/42

 

moRS232.Dtr = True

moRS232.Rts = True

‘Mengirim data 

moRS232.TxData = txtTx.Text

moRS232.Tx()

‘Menerima Data 

moRS232.Rx(10) 'Ambil 10 byte dari buffer serial

Dim sRead as String=moRs232.RxData

Untuk informasi lebih lanjut mengenai kode diatas anda dapat mengunjungi

http://www.codeworks.it/net/VBNetRs232.htm

Penerapan Port Serial Komputer

Berbagai aplikasi elektronika dapat berkomunikasi dengan port serial komputer. Program berikut

akan menampilkan karakter ke LCD menggunakan port serial . IC MAX 232 ialah IC yang umumdigunakan sebagai RS232 Converter, meskipun dapat anda gantikan dengan rangkaian transistor.

Gambar Interfacing LCD menggunakan Serial port

Listing Program Interfacing LCD dengan port Serial Komputer (LCDSerial.c)

#include <dos.h>

#include <stdio.h>

#include <conio.h>

Page 29: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 29/42

 

 

#define PORT1 0x3F8 /* alamat port*/

/* Definisi alamat base port serial */

/* COM1 0x3F8 */

/* COM2 0x2F8 */

/* COM3 0x3E8 */

/* COM4 0x2E8 */

void main(void)

{

int c;

int count;

char init[] = { 0x0F, 0x01, 0x38 };

/* 0x0F - Init Display */

/* 0x01 - Clear Display */

/* 0x38 - Dual Line / 8 Bits */

outportb(PORT1 + 1 , 0x0); /* mematikan interupt - Port1 */

outportb(PORT1 + 3 , 0x80); /* SET DLAB ON */

outportb(PORT1 + 0 , 0x0C); /* Set Baud rate */

/* 0x06 = 19,200 BPS */

/* 0x0C = 9,600 BPS */

/* 0x18 = 4,800 BPS */

/* 0x30 = 2,400 BPS */

/* Set Baud rate - Divisor Latch High Byte */

outportb(PORT1 + 1 , 0x00);

outportb(PORT1 + 3 , 0x03); /* 8 Bits, No Parity, 1 Stop Bit */

outportb(PORT1 + 2 , 0xC7); /* FIFO Control Register */

outportb(PORT1 + 4 , 0x0B); /* Turn on DTR, RTS, and OUT2 */

Page 30: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 30/42

 

/* Register Select (DTR) */

outportb(PORT1 + 4 , (inportb(PORT1 + 4) | 0x01));

/* 0 = Instruction Register */

for (count = 0; count < 3; count++)

{

outportb(PORT1, init[count]); /* kirim Init Data Bytes */

delay(20); /* delay untuk INIT */

}

/* Register Select (DTR) */

/* 1 = Data Register */

outportb(PORT1 + 4 , (inportb(PORT1 + 4) & 0xFE));

printf("\nContoh program LCD Serial. Tekan ESC untuk keluar \n");

do {

if (kbhit()){

c = getch();

outportb(PORT1, c);

printf("%c",c);

}

} while (c !=27);

}

Latihan:

1. Buat program yang dapat mengontrol stepper motor seperti gambar berikut :

Page 31: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 31/42

 

 

Gambar Pengendali motor stepper dengan 89C2051 dan port serial

2. Buat program untuk komunikasi serial antara 2 komputer menggunakan bahasa C, namun

mengkombinasikan dengan bahasa assembly sebagai berikut :

//Program komunikasi serial antara 2 PC

//00H bios function (AL register)

//Register Dx 0->com1, 1->com2, 2->com3, 3->com4

//Konfigurasi: 9600 bd,no parity,2 stop bits dan 8 data bit

//AL register value is 1 1 1 0 0 1 1 1 -> 0xE7

#include <stdio.h>

#include <process.h>

#include <conio.h>

#include <dos.h>

#include <bios.h>

#define TRUE 1

#define PARAM 0xA7

#define COM1 0

#define COM2 1

void init_port(void);

char state_port(void);

void send_byte(unsigned char);

unsigned char read_byte(void);

void keyb(void);

int tecla = 1;

Page 32: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 32/42

 

void main ( void )

{

unsigned char read_com;

unsigned char read_kb;

clrscr();

init_port();

while(read_kb != 'c')

{

read_kb=getch();

send_byte(read_kb);

read_com=read_byte();

if(read_com!=0){printf("%c",read_com);}

}

}

void init_port()

{

union REGS regs;

regs.h.ah = 0x00;

regs.x.dx = COM2;

regs.h.al = PARAM;

int86( 0x14, &regs, &regs);

}

//mengembalikan keadaan port

char state_port()

{

union REGS regs;

regs.h.ah = 0x03;

Page 33: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 33/42

 

regs.x.dx = COM2;

int86( 0x14, &regs, &regs);

if(regs.h.ah & 0x80) printf("\t EXCEED TIME\n");

if(regs.h.ah & 0x40) printf("\t TSR EMPTY\n");

if(regs.h.ah & 0x20) printf("\t THR EMPTY\n");

if(regs.h.ah & 0x10) printf("\t INTERRUPTION\n");

if(regs.h.ah & 0x08) printf("\t THREAT ERROR\n");

if(regs.h.ah & 0x04) printf("\t PARITY ERROR\n");

if(regs.h.ah & 0x02) printf("\t OVERLOAD ERROR\n");

return (regs.h.ah);

}

//penanganan keyboard

void keyb()

{

union u_type{int a;char b[3];}keystroke;char inkey=0;

if(bioskey(1)==0) return;

keystroke.a=bioskey(0);

inkey=keystroke.b[1];

switch (inkey)

{

case 1: keyb=0;

return; /*ESC*/

default: keyb=15;

return;

}

}

//kirim karakter ke port serial

Page 34: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 34/42

 

void send_byte(unsigned char byte)

{

union REGS regs;

regs.h.ah = 0x01;

regs.x.dx = COM2;

regs.h.al = byte;

int86( 0x14, &regs, &regs);

if( regs.h.ah & 0x80)

{

printf("\t SENDING ERROR ");

exit(1);

}

}

//membaca sebuah karakter dari port serial

unsigned char read_byte()

{

int x,a;

union REGS regs;

if((estate_port() & 0x01))

{

regs.h.ah = 0x02;

regs.x.dx = COM2;

int86(0x14,&regs,&regs);

if(regs.h.ah & 0x80)

{

printf("\t Penerimaan data error");

exit(1);

Page 35: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 35/42

 

}

return(regs.h.al);}

else

{

return(0);}}

Pengenalan PPI 8255

Programmable peripheral Interface (PP() 8255 ialah chip antarmuka 24 bit (3 port) yang dapat

diprogram sesuai keinginan kita. PPI 8255 merupakan chip yang paling banyak digunakan untukinterfacing komputer yang dihubungkan ke port ISA komputer. Anda juga dapat memesan card PPI

8255 ini melalui Innovative Electronics dengan harga yang sangat terjangkau, karena umumnya

hanya dibutuhkan 1 IC tambahan sebagai address decoder yaitu 74LS688 beserta jumper.

Gambar 14.1 ialah pin IC 8255, dimana perlu diingat bahwa pin gnd berada di pin 7 dan Vcc berada

di pin ke 26.

Gambar 1Pin IC 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 deprogram 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 .

Page 36: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 36/42

 

· 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.

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

Page 37: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 37/42

 

1

Control register

1

x

X

8255 tidak dipilih

Mode Pemilihan dari 8255

Pada saat port A, B dan C digunakan sebagai I/), 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 diprogram

Berikut contoh bahasa 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

Page 38: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 38/42

 

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 $ menandakanakhir 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

Page 39: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 39/42

 

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 

Page 40: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 40/42

 

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

Gambar Bus ISA komputer

Berikut contoh program C untuk mengeluarkan data 0-255 di port B dan C, sedangkan port Asebagai 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()

Page 41: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 41/42

 

{

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 .

Page 42: Interfacing Port Paralel Komputer

5/14/2018 Interfacing Port Paralel Komputer - slidepdf.com

http://slidepdf.com/reader/full/interfacing-port-paralel-komputer-55a92d03bb7e2 42/42

 

Gambar Rangkaian DAC 8 bit