37
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 150 kbytes 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 menggunakan saluran DMA dan buffer FIFO, jadi data dapat digeser tanpa menggunakan instruksi I/O.

Interfacing Port Paralel Komputer

Embed Size (px)

Citation preview

Page 1: Interfacing Port Paralel Komputer

Interfacing Port Paralel Komputer, Serial dan PPI 8255(Kutipan dari Buku saya) Pengenalan  Port ParalelPort 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 150 kbytes 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 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

Page 2: Interfacing Port Paralel Komputer

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 DB2

5

Pin Centronic

s

SPP Signal Arah  In/out Register

Hardware di invert

1 1 nStrobe In/Out Control Ya2 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 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 11 Busy In Status Ya12 12 Paper-Out /

Paper-EndIn Status  

13 13 Select In Status  14 14 nAuto-

LinefeedIn/Out Control Ya

15 32 nError / nFault

In 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>#include <stdio.h>#include <stdlib.h>int main(){outport(0x378,0);//lampu led matisleep(1); //tunda 1 detikoutport(0x378,1); //lampu led hidupsleep(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);

Page 3: Interfacing Port Paralel Komputer

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. 

Berikut contoh kodenya :

Private Declare Function Inp Lib "inpout32.dll" _Alias "Inp32" (ByVal PortAddress As Integer) As IntegerPrivate 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 = 888Out Port1, 1End Sub

Private Sub Command2_Click()Port1 = 888Out Port1, 0End 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

Page 4: Interfacing Port Paralel Komputer

Port[$378]:=I;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 .

Page 5: Interfacing Port Paralel Komputer

                       Tabel Alamat port paralel

 Alamat Penjelasan

3BCH - 3BFH Digunakan untuk paralel port di kartu video,  tidak mendukung alamat ECP

378H - 37FH Alamat untuk  LPT 1278H - 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

 Alamat Awal Fungsi

0000:0408 LPT1's Base Address0000:040A LPT2's Base Address0000:040C LPT3's Base Address0000: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 6: Interfacing Port Paralel Komputer

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 inputJika 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 ialah MSB 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 7: Interfacing Port Paralel Komputer

         

              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{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);

Page 8: Interfacing Port Paralel Komputer

               printf("%x",val);               break;case '3':               gotoxy(33,8);               val=(val&0x04)?(val&(~0x04)):val|0x04;               str=(val&0x04)?str1:str2;               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;               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;               }}} 

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 : 

Page 9: Interfacing Port Paralel Komputer

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);beginasmpush dxmov dx,$37A     //alamat ofset control parallelmov al,$32         //isi dengan 32 {0010 0000} enable Bi-Directionalout dx,alpop dxend;

beginasmpush dxmov dx,$37A     //alamat ofset control parallelmov al,$36         //isi dengan 36 {0010 0100} aktifkan pin no.3 ADC 804out dx,alpop dxend;

beginasmpush dx

Page 10: Interfacing Port Paralel Komputer

mov dx,$37A     //alamat ofset control parallelmov al,$37         //isi dengan 37 {0010 0101} strobe (enable ADC Output)out dx,alpop dxend;

beginasmpush dxmov dx,$378     //alamat dasar parallelin al,dx               // baca input Parallel portmov data,alpop dxend;

beginasmpush dxmov dx,$37A     //alamat ofset control parallelmov al,$36         //isi dengan 36 {0010 0100} disable ADC Outputout dx,alpop dxend;data1:=(5/255)*data;                             //konversi ke 0-5Voltlcdnumber1.Value:=floattostr(data1);     //tampilkan hasilend;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   

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

Page 11: Interfacing Port Paralel Komputer

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 padaElectronic Industry Association (EIA) :

1. “Space” (logika 0) ialah tegangan antara + 3 hingga +25 V.2. “Mark” (logika 1) ialah tegangan antara –3 hingga –25 V.3. Daerah antara + 3V hingga –3V tidak didefinisikan /tidak

terpakai4. Tegangan open circuit tidak boleh melebihi 25 V.5. Arus hubungan singkat tidak boleh melebihi 500mA.

 Berikut tampilan port serial DB9 yang umum digunakan

                                      

Page 12: Interfacing Port Paralel Komputer

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 serialNama Alamat IRQ

COM 1 3F8 4

COM 2 2F8 3

COM 3

3E8 4

COM 4 2E8 3

 

Page 13: Interfacing Port Paralel Komputer

 

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 :

1. Pin TxD ke pin RxD computer lain2. Pin RXD dihubungkan ke pin TxD komputer lain3. RTS dan CTS dihubung singkat4. DSR dan DTR dihubung singkat5. 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            .dataMessage  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’,’$’            .codemain      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 dataagain:    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

Page 14: Interfacing Port Paralel Komputer

            Int 14h            ;cek com2 untuk melihat apakah ada karater, jika ada ambil dan tampilkannext:     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 keyboardExit:      mov ah, 4ch        ;keluar ke DOS            Int 21hMain      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 //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)

Page 15: Interfacing Port Paralel Komputer

 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)            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 portmoRS232.Open () ’Anda dapat menambahkan control dari jalur  DTR/RTS setelah port dibukamoRS232.Dtr = TruemoRS232.Rts = True ‘Mengirim datamoRS232.TxData = txtTx.TextmoRS232.Tx()‘Menerima DatamoRS232.Rx(10)                       'Ambil 10 byte dari buffer serialDim 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 KomputerBerbagai aplikasi elektronika dapat berkomunikasi dengan port

serial komputer. Program berikut akan menampilkan karakter ke LCD menggunakan port serial . IC MAX 232 ialah IC yang umum

Page 16: Interfacing Port Paralel Komputer

digunakan 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> #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 */

Page 17: Interfacing Port Paralel Komputer

outportb(PORT1 + 2 , 0xC7);  /* FIFO Control Register */ outportb(PORT1 + 4 , 0x0B);  /* Turn on DTR, RTS, and OUT2 *//* 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 : 

                Gambar Pengendali motor stepper dengan 89C2051 dan port serial 

Page 18: Interfacing Port Paralel Komputer

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;

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 portchar state_port(){union REGS regs;regs.h.ah = 0x03;regs.x.dx = COM2;int86( 0x14, &regs, &regs);

Page 19: Interfacing Port Paralel Komputer

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 keyboardvoid 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 serialvoid 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);}return(regs.h.al);}else{return(0);}} 

 

Page 20: Interfacing Port Paralel Komputer

Pengenalan PPI 8255Programmable 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 untuk interfacing komputer yang dihubungkan ke port ISA komputer. Anda juga dapat memesan card PPI 8255 ini melalui Innovative Electronics dengan harga yang sangat terjangkau, karenaumumnya  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-PA07Ini ialah port A yang terdiri dari  8 bit , dapat diprogram sebagai input atau output dengan mode  bi-directional input/output.

          PB0-PB7Port 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 .

          RD dan WRSinyal 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

dipilih0 0 0 Port A0 0 1 Port B0 1 0 Port C

Page 21: Interfacing Port Paralel Komputer

0 1 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 50HPORTB                    EQU  51HPORTC     EQU 52HCNTLREG 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

Page 22: Interfacing Port Paralel Komputer

                                              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

Page 23: Interfacing Port Paralel Komputer

 

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 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 303Hvoid 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-255for (data=0;data<=255;data++){nilai=inportb (PA);

Page 24: Interfacing Port Paralel Komputer

printf (“Data yang masuk di port A   %d \n“, nilai);outportb (PB, data);//mengeluarkan data di port Bprintf (“Mengeluarkan data:   %d  \n, di port B”,data);delay(500); //delay 0.5 detikoutportb (PC, data);//mengeluarkan data di port Cprintf (“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

  

Port Paralel DB25Mode Kompatibilitas, Nibble, dan Byte digunakan sebagai standard perangkat keras yang tersedia

di port parallel original. Sedangkan untuk EPP dan ECP membutuhkan tambahan  hardware

sehingga mampu bekerja dengan kecepatan tinggi. Mode Kompatibilitas atau  sering disebut

“Centronics” hanya dapat mengirimkan data pada arah maju (dari Host ke  device external)

dengan kecepatan 50 Kbyte sampai 150 Kbyte perdetik. Untuk  menerima data harus diubah

modenya menjadi mode Nibble atau Byte. Mode Nibble  dapat menerima data 4 bit (Nibble)

sedangkan mode Byte dapat menerima data 8 bit (1  byte). Gambar dibawah ini menunjukkan

konfigurasi dari pin port parallel db25. 

Page 25: Interfacing Port Paralel Komputer

Parallel Port mempunyai tiga register yaitu:

1)dataregister

2)Statusregister

3) Control register

Data register dihubungkan ke jalur Data, Status register dihubungkan ke jalur status, control

register dihubungkan ke jalur control. Bila kita memberi logika “1” ke data register, maka Data0

akan mengeluarkan tegangan +5V(Logika “1”). Kita bisa memrogram On dan Off pada Jalur

Data dan Jalur Control (data lines and Control lines).

Alamat register – register Port Parallel untuk PC standard IBM adalah sebagai Berikut:

Register LPT1 LPT2

data registar(baseaddress + 0) 0x378 0x278

status register (baseaddress + 1) 0x379 0x279

control register (baseaddress + 2) 0x37a 0x27a

PPI 8255 adalah suatu komponen parralel input/output port dalam satu chip yang dapat di program inpu/oututnya. PPI 8255 memiliki 24 pin I/O yang dibagi menjadi tiga port masing-masing 8 bit. Port - port tersebut adalah port A (PA0-PA7), port B (PB0-PB7) dan port C (PC0-PC7). Sebagai jalur untuk transfer data dari dan ke PPI 8255 disediakan saluran 8 bit bus data (D0-D7). Bus data dari PPI ini dapat dihubungkan langsung dengan bus data dari mikrokomputer.

Page 26: Interfacing Port Paralel Komputer

 Gambar PPI 8255

Keterangan:

1.Bus Alamat 

PA-PA0 & PB7 - PB0 & PC7 - PC0 adalah Terminal I/O port.

2.Bus Data 

D7 - D0 adalah Data Bus

3.Bus Kontrol: /CS, /WR, /RD dan RESET

CS (Chip Select) adalah  Jika CS di set "0" maka PPI akan bekerja.

RD(Read) adalah Jika RD di set "0" maka CPU Komputer sedang membaca data dari PPI 8255.

WR(Write) adalah jika diset "0" maka CPU Komputer sedang menulis data ke PPI 8255.

4.A0 - A1 adalah Kombinasi mereka digunakan untuk memilih Port yang mana yang akan di gunakan.

5. Vcc dan GND adalah Terminal Tegangan Suplai.

Operasi Dasar PPI 8255 dapat di jelaskan dari gambar dibawah ini:

Page 27: Interfacing Port Paralel Komputer

Penjelasan:

A1=0; A0=0; ==> memilih port A 

A1=0; A0=1; ==> memilih port B 

A1=1; A0=0; ==> memilih port C 

A1=1; A0=1; ==> memilih Control Word ( CW )

  Kontrol group A mengontrol mode transfer data (dari atau ke) 8 bit port A dan 4 bit dari port C upper. Sedangkan kontrol group B mengontrol mode transfer data (dari atau ke) 8 bit port B dan 4 bit dari port C lower. Kontrol data yang dituliskan dari kontrol register akan menentukan karakteristik pengoperasian PPI. Pada gambar tersebut terlihat D5-D7 digunakan untuk mengontrol grup B. D7 menentukan port C lower (PC0-PC3), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. D6 menentukan port B (PB0-PB7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. D5 digunakan untuk memilih mode port B yang diinginkan, yakni mode 0 atau mode 1. D1 sampai D4 digunakan untuk mengontrol

Page 28: Interfacing Port Paralel Komputer

grup A. D4 menentukan port C upper (PC4-PC7), logic 1 diprogram sebagai masukan dan logic 0 dipogram sebagai keluaran. D3 menentukan port A (PA0-PA7), logic1 diprogram untuk masukan sedangkan logic 0 diprogram sebagai keluaran. Sedangkan D1 dan D2 akan menentukan mode untuk group A; bila 00 berarti modus 0, bila 01 berarti modus 1, dan bila 1X berarti modus 2. Modus 0 dinamakan simple input/output. Bila diprogram sebagai keluaran, data yang ada di port keluaran akan ditahan, sedangkan bila diprogram sebagai port masukan, masukan ini tidak ditahan. Sedangkan D0 adalah modus set flag. D0 ini harus selalu berlogic 1 agar PPI dapat beroperasi.

 Ada tiga mode operasi yang dapat dipilih oleh sistem perangkat lunak untuk mengoperasikan PPI 8255 yaitu: Mode 0 - Basic Input/Output Pada mode ini port A,Port B, dan Port C dapat di set sebagai input atau output. Mode ini paling sering digunakan dalam aplikasi kontrol.Mode 1 - Strobe Input/Output.

Mode ini digunakan untuk membuat port input atau output parallel menggunakan sinyal handshaking dan sinyal interupsi. Port yang bisa digunakan adalah Port A dan PortB. sedangkan PortC sebagai sinyal handshaking.

Mode 2 - Bidirectional Bus

Mode ini digunakan untuk komunikasi dua arah dan port yang bisa dugunaka adalah PortA.

Mode - mode ini dapat dipilih dengan memberikan control word pada saat inisialisasi. Control word yang diberikan cukup sekali pada awal PPI ini diaktifkan. Selain itu selama Program sedang berjalan, PPI 8255 sewaktu - waktu dapat diubah mode operasinya dengan memberikan sebuah control word lagi. tersedianya fasilitas ini memungkinkan PPI 8255 dapat dimanfaatkan untuk melayani berbagai keperluan interfacing dengan program subroutin yag berada dalam sebuah sistem rangkaian.

ADC 0804

ADC0804 adalah sebuah konverter A/D 8 bit yang mudah diinterfacekan dengan sistem mikrokontroller. A/D ini menggunakan metode approksimasi berturut-turut untuk mengkonversikan masukan analog (0-5V) menjadi data digital 8 bit yang ekivalen. ADC0804 mempunyai pembangkit clock internal dan memerlukan catu daya +5V dan mempunyai waktu konversi optimum sekitar 100us.

Page 29: Interfacing Port Paralel Komputer

Skematik ADC 0804

Diagram konfigurasi pin ADC0804 ditunjukkan pada gambar, Pin 11 sampai 18 (keluaran digital) adalah keluaran tiga keadaan, yang dapat dihubungkan langsung dengan bus data bilamana diperlukan. Apabila CS (pin 1) atau RD (pin2) dalam keadaan high (“1”), pin 11 sampai 18 akan mengambang (high impedanze), apabila CS dan RD rendah keduanya, keluaran digital akan muncul pada saluran keluaran. Sinyal mulai konversi pada WR (pin 3). Untuk memulai suatu konversi, CS harus rendah. Bilamana WR menjadi rendah, konverter akan mengalami reset, dan ketika WR kembali kepada keadaan high, konversi segera dimulai.

Konversi detak konverter harus terletak dalam daereh frekuensi 100 sampai 800kHz. CLK IN ( pin 4) dapat diturunkan dari detak mikrokontroller, sebagai kemungkinan lain, kita dapat mempergunakan pembangkit clock internal dengan memasang rangkaian RC antara CLN IN ( pin 4) dan CLK R ( pin 19). Pin 5 adalah saluran yang digunakan untuk INTR, sinyal selesai konversi. INTR akan menjadi tinggi pada saat memulai konversi, dan akan aktif rendah bila konversi telah selesai. Tepi turun sinyal INTR dapat dipergunakan untuk menginterupsi sistem mikrokontroller, supaya mikrokontroller melakukan pencabangan ke subrutine pelayanan yang memproses keluaran konverter. Pin 6 dan 7 adalah masukan diferensial bagi sinyal analog. A/D ini mempunyai dua ground, A GND (pin 8) dan D GND ( pin10). Kedua pin ini harus dihubungkan dengan ground. Pin 20 harus dihubungkan dengan catu daya +5V. Pada A/D 0804 merupakan tegangan referensi yang digunakan untuk offset suatu keluaran digital maksimum. Dengan persamaan sebagai berikut:

Vin (volt) Data Digital (biner) Data Digital (desimal)

0,000 0000 0000 0

0,0196 0000 0001 1

0,0392 0000 0010 2

… … …

Page 30: Interfacing Port Paralel Komputer

5 1111 1111 255

A/D ini dapat dirangkai untuk menghasilkan konversi secara kontinu. Untuk melaksanakannya, kita harus menghubungkan CS, dan RD ke ground dan menyambungkan WR dengan INTR. Maka dengan ini keluaran digital yang kontinu akan muncul, karena sinyal INTR menggerakkan masukan WR. Pada akhir konversi INTR berubah menjadi low, sehingga keadaan ini akan mereset konverter dan mulai konversi.

Page 31: Interfacing Port Paralel Komputer