comlab.ilkom.unsri.ac.idcomlab.ilkom.unsri.ac.id/.../2015/03/modul-antarmuka-dan-perife…  · web...

80
MODUL PRAKTIKUM ANTARMUKA DAN PERIPHERAL JURUSAN TEKNIK KOMPUTER DISUSUN OLEH: RICY FIRNANDO, S.KOM. JURUSAN SISTEM KOMPUTER 1 Modul Praktikum Interfacing

Upload: doandat

Post on 28-Mar-2019

224 views

Category:

Documents


0 download

TRANSCRIPT

MODUL PRAKTIKUM

ANTARMUKA DAN PERIPHERAL

JURUSAN TEKNIK KOMPUTER

DISUSUN OLEH:

RICY FIRNANDO, S.KOM.

JURUSAN SISTEM KOMPUTER

FAKULTAS ILMU KOMPUTER

UNIVERSITAS SRIWIJAYA

MODUL I

PEMOGRAMAN PORT PARALEL

A. Pendahuluan port paralel

Port Paralel adalah sarana port yang sederhana dan murah untuk membuat projek-projek atau alat-alat yang dikendalikan menggunakan komputer. Sederhana karena, sebagaimana akan dilihat nanti, hanya melibatkan 3 macam register saja, murah karena hampir semua komputer, desktop maupun portable, selalu dilengkapi dengan Port Paralel atau yang dikenal juga dengan Port Printer.

Kesederhanaan dan kemudahan pemrograman menggunakan Port Paralel membuat Port ini semakin populer di kalangan para hobis. Port Paralel ini sering digunakan untuk, misalnya, robot yang dikendalikan komputer, pemrogram mikrokontroler Atmel atau PIC, otomasi rumah, akuisisi data praktis dan lain sebagainya.

Standar IEEE 1284 yang dipublikasikan pada tahun 1994 mendefinisikan 5 (lima) macam mode transfer data Port Paralel:

1. Mode Kompatbel;

2. Mode Nibel;

3. Mode Byte;

4. EPP, dan

5. ECP

Port Paralel ini terhubungkan dengan dunia luar melalui konektor DB25, yang terbagi atas tiga kelompok register, yaitu:

1. Register Data / Port Data(DP)

2. Register Control / Port Control (PC)

3. Register Status / Port Status (PS)

Gambar 1. Konfigurasi port Paralel

Seperti namanya, masing-masing register tersebut digunakan untuk mentransfer data, melakukan pengontrolan periferal serta memeriksa atau mendapatkan status periferal eksternal. Masing-masing register terhubungkan ke konektor DB25 tetapi tidak semua bit yang terhubungkan ke masing-masing pin.

Ada beberapa pin (selain pin-pin pada register data) yang bersifat sungsang atau inverse, jika pin tersebut sebagai masukan, maka jika terbaca 0 artinya mendapatkan logika 1 (demikian juga sebaliknya). Jika pin tersebut adalah keluaran, jika dikirimkan logika 1, maka yang terkirim sesungguhnya adalah logika 0 (demikian juga sebaliknya). Selain itu sifatnya normal.

Table 1.

Nomor Pin

(DB25)

Nama Sinyal

Arah

Register

Inverse

1

Strobe

In/Out

Control Bit 0

Ya

2

Data 0

Out

Data bit 0

3

Data 1

Out

Data bit 1

4

Data 2

Out

Data bit 2

5

Data 3

Out

Data bit 3

6

Data 4

Out

Data bit 4

7

Data 5

Out

Data bit 5

8

Data 6

Out

Data bit 6

9

Data 7

Out

Data bit 7

10

Ack

In

Status bit 6

Ya

11

Busy

In

Status bit 7

12

Paper-Out/Paper-End

In

Status bit 5

13

Select

In

Status bit 4

14

Auto-Linefeed

In / Out

Control bit 1

Ya

15

Error/Fault

In

Status bit 3

16

Initialize

In / Out

Control bit 2

17

Select-Printer/ Select-in

In / Out

Control bit 3

Ya

18 25

Ground

Gnd

Untuk dapat menggunakan port paralel, harus diketahui dahulu alamat registernya, Base address LPT1 biasanya adalah 888 (378h) dan LPT2 biasanya 632 (278h). Alamat tersebut adalah alamat yang umumnya digunakan, tergantung dari jenis komputer. Tepatnya kita bias melihat pada peta memori tempat menyimpan alamat tersebut, yaitu memori 0000.0408h untuk base address LPT1 dan memori 0000.040A untuk base address LPT2.

Alamat DP adalah base address dari alamat port paralel tersebut, alamat PS adalah base address + 1, dan alamat PC adalah base address + 2 tabel 2 adalah table alamat masing-masing port yang umumnya digunakan.

Tabel 2

Nama port

Alamat Register

LPT1 DP

378h / 888

LPT1 PS

379h / 889

LPT1 PC

37Ah / 890

B. Pemograman port paralel menggunakan visual basic

Dibutuhkan suatu cara agar VB bisa melakukan akses perangkat keras. Salah satunya dengan lib io.dll, yang bisa didownload dari http://www.geekhideout.com/iodll.shtml secara gratis, yang harus disimpan atau ditempatkan pada folder C:/windows/system32 pada komputer.

Cara penggunaannya sangat mudah, pertama definisikan terlebih dahulu fungsi dan prosedur untuk akses masukan maupun keluaran perangkat keras pada bagian modul khusus VB sebagai berikut:

Public Declare Sub PortOut Lib "io.dll" _

(ByVal Port As Integer, ByVal Data As Byte)

Public Declare Sub PortWordOut Lib "io.dll" _

(ByVal Port As Integer, ByVal Data As Integer)

Public Declare Sub PortDWordOut Lib "io.dll" _

(ByVal Port As Integer, ByVal Data As Long)

Public Declare Function PortIn Lib "io.dll" _

(ByVal Port As Integer) As Byte

Public Declare Function PortWordIn Lib "io.dll" _

(ByVal Port As Integer) As Integer

Public Declare Function PortDWordIn Lib "io.dll" _

(ByVal Port As Integer) As Long

Public Declare Sub SetPortBit Lib "io.dll" _

(ByVal Port As Integer, ByVal Bit As Byte)

Public Declare Sub ClrPortBit Lib "io.dll" _

(ByVal Port As Integer, ByVal Bit As Byte)

Public Declare Sub NotPortBit Lib "io.dll" _

(ByVal Port As Integer, ByVal Bit As Byte)

Public Declare Function GetPortBit Lib "io.dll" _

(ByVal Port As Integer, ByVal Bit As Byte) As Boolean

Public Declare Function RightPortShift Lib "io.dll" _

(ByVal Port As Integer, ByVal Val As Boolean) As Boolean

Public Declare Function LeftPortShift Lib "io.dll" _

(ByVal Port As Integer, ByVal Val As Boolean) As Boolean

Public Declare Function IsDriverInstalled Lib "io.dll" () As Boolean

Kedua tinggal penggunaan fungsi dan prosedur tersebut secara biasa, fungsi PortIn membutuhkan dua parameter yaitu alamat perangkat keras dan variabel hasil pembacaan data dari perangkat keras dengan tipe data byte. Sedangkan prosedur PortOut membutuhkan dua parameter juga yaitu alamat perangkat keras dan nilai atau variabel yang menyimpan nilai yang akan dikirimkan ke perangkat keras yang bersangkutan.

PortOut

: Mengirim data dalam format byte (8-bit) ke port tertentu.

PortWordOut: Mengirim data dalam format word (16-bit) ke port tertentu.

PortDWordOut: Mengirim data dalam format double word (32-bit) ke port tertentu.

PortIn

: Membaca data falam format byte (8-bit) dari port tertentu.

PortWordIn

: Membaca data falam format word (16-bit) dari port tertentu.

PortDWordIn: Membaca data falam format double word (32-bit) dari port tertentu.

GetPortBit

: Membaca status dari bit tertentu.

SetPortBit

: Set bit (=1) pada port tertentu.

ClrPortBit

: Reset bit (=0) pada port tertentu.

NotPortBit

: Lakukan inversi (NOT) bit pada port tertentu

RightPortShift: Geser bit dari port tertentu ke kanan, LSB(MSB.

LeftPortShift

: Geser bit dari port tertentu ke kiri, MSB (LSB.

IsDriverInstalled: Akan memberikan nilai bukan-NOL jika io.dll sudah terinstal

dan berfungsi. Tujuan utama dari fungsi ini adalah untuk

memastikan bahwa penggerak mode kernel pada NT/2000/XP

telah diinstal dan dapat diakses.

MODUL II

LED DRIVER

Pemograman LED Driver adalah sebuah program yang digunakan untuk melakukan pengontrolan nyala LED melalui port parallel. Program ini memerlukan rangkaian LED driver yang dipasangkan pada port paralel dan program LED driver untuk menjalankannya.

A. Rangkaian LED Driver

Rangkaian berikut digunakan untuk interfacing LED dengan port Paralel :

Gambar 2.1 Rangkaian LED Driver

B. PEMOGRAMAN LED DRIVER

1. Menghidupkan dan mematikan LED

program ini digunakan untuk mematikan dan menghidupkan LED-LED yang terpasang pada pin-pin data secara bersama-sama. Menggunakan bantuan komponen CheckBox, Anda bisa mengganti dengan komponen lainnya selama bisa digunakan untuk proses Toggle (ON-OFF secara bergantian). Status dari LED langsung ditunjukkan pada komponen tersebut.

Gambar 2.2 Tampilan Program menghidupkan dan mematikan LED

Komponen Visual Basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Led Driver1

Private Sub Form_Load()

CheckBox

Name : Check1

Caption : ON/OFF

Private Sub Check1_Click()

CommandButton

Name : Command1

Caption : Keluar

Private Sub Command1_Click()

Listing Program :

2. Menghidupkan dan mematikan LED per bit

Program yang ini lebih spesifik, karena menghidupkan LED di pin-pin data dilakukan satu persatu.

Gambar 2.2 Tampilan Program menghidupkan dan mematikan LED per bit

Komponen Visual Basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Led Driver1

Private Sub Form_Load()

Label

Name : LED0

Caption : LED0

-

Label

Name : LED1

Caption : LED1

-

Label

Name : LED2

Caption : LED2

-

Label

Name : LED3

Caption : LED3

-

Label

Name : LED4

Caption : LED4

-

Label

Name : LED5

Caption : LED5

-

Label

Name : LED6

Caption : LED6

-

Label

Name : LED7

Caption : LED7

-

CommandButton

Name : L0ON

Caption : ON

Private Sub L0ON_Click()

CommandButton

Name : L1ON

Caption : ON

Private Sub L1ON_Click()

CommandButton

Name : L2ON

Caption : ON

Private Sub L2ON_Click()

CommandButton

Name : L3ON

Caption : ON

Private Sub L30ON_Click()

CommandButton

Name : L4ON

Caption : ON

Private Sub L4ON_Click()

CommandButton

Name : L5ON

Caption : ON

Private Sub L5ON_Click()

CommandButton

Name : L6ON

Caption : ON

Private Sub L6ON_Click()

CommandButton

Name : L7ON

Caption : ON

Private Sub L7ON_Click()

CommandButton

Name : L0OFF

Caption : OFF

Private Sub L0OFF_Click()

CommandButton

Name : L1OFF

Caption : OFF

Private Sub L1OFF_Click()

CommandButton

Name : L2OFF

Caption : OFF

Private Sub L2OFF_Click()

CommandButton

Name : L3OFF

Caption : OFF

Private Sub L3OFF_Click()

CommandButton

Name : L4OFF

Caption : OFF

Private Sub L4OFF_Click()

CommandButton

Name : L5OFF

Caption : OFF

Private Sub L5OFF_Click()

CommandButton

Name : L6OFF

Caption : OFF

Private Sub L6OFF_Click()

CommandButton

Name : L7OFF

Caption : OFF

Private Sub L7OFF_Click()

CommandButton

Name : Keluar

Caption : Keluar

Private Sub Command1_Click()

Listing Program :

3. Geser Kiri dan Geser Kanan

Program ini merupakan program untuk menyalakan dan mematikan led dengan cara menggeser kekanan atau kekiri

Gambar 2.3 Tampilan Program Geser kanan dan Geser kiri

Komponen Visual basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Led Driver1

Private Sub Form_Load()

CommandButton

Name : Command1

Caption : SHIFT LEFT ON

Private Sub Command1_Click()

CommandButton

Name : Command2

Caption : SHIFT LEFT OFF

Private Sub Command2_Click()

CommandButton

Name : Command3

Caption : SHIFT RIGHT ON

Private Sub Command3_Click()

CommandButton

Name : Command4

Caption : SHIFT RIGHT OFF

Private Sub Command4_Click()

CommandButton

Name : Keluar

Caption : Exit

Private Sub keluar_Click()

Listing Program :

MODUL III

MEMBACA INPUT DARI PORT PARALEL

Ada dua buah port dari port paralel yang bisa dijadikan input yaitu port Status dan Port Control.

A. Pembacaan data dari Port Status

Port status memiliki 8 Bit data register, akan tetapi yang menjadi input dari port paralel hanya 5 bit data yaitu mulai bit ke-3 sampai dengan bit ke 7

Tabel 3.1

Register

S7

S6

S5

S4

S3

S2

S1

S0

Pin

11

10

12

13

15

Tidak terhubung ke Pin di port paralel

Inverse

ya

tidak

tidak

tidak

tidak

Praktikum:

1. Buat Rangkaian seperti gambar 3.1

Gambar 3.1 Input Port Status

2. Buat program seperti gambar 3.2 :

Gambar 3.2 Tampilan Program

Komponen Visual basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Input Status

-

Label

Name : Label1

Caption : Data Input

-

Label

Name : Label2

Caption : -

-

timer

Name : timer1

Interval : 100

Timer1_timer()

Listing Program :

3. Lengkapi Tabel 3.2

Tabel 3.2

SW3

SW4

SW5

SW6

Data Desimal

Data Status Register

S7

S6

S5

S4

S3

S2

S1

S0

1

1

1

1

1

1

1

0

1

1

0

1

1

0

1

1

0

1

1

1

0

0

0

0

0

1

1

0

1

0

0

1

0

1

0

1

1

0

1

0

B. Pembacaan Bit dari Port Status

1. Buat Rangkaian seperti gambar 3.1

2. Buat Program seperti gambar 3.3

Gambar 3.3 Tampilan program

Komponen Visual basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Pembacaan Bit

-

Label

(4 Buah)

Name : Label1, Label2,

Label3,Label4

Caption : Bit 3, Bit 4, Bit 5, Bit 6

-

Shape

(4 buah)

Name : Shape1, Shape2,

Shape3, Shape4,

Backstyle : Opaque

-

timer

Name : timer1

Interval : 100

Timer1_timer()

Listing program :

C. Pembacaan data dari Port Control

Port Control memiliki 8 Bit data register, akan tetapi yang menjadi input dari port paralel hanya 4 bit data yaitu mulai bit ke-0 sampai dengan bit ke 3

Tabel 3.3

Register

C7

C6

C5

C4

C3

C2

C1

C0

Pin

Tidak terhubung ke Pin di port paralel

17

16

14

1

Inverse

ya

tidak

ya

ya

Praktikum:

4. Buat Rangkaian seperti gambar 3.4

Gambar 3.4 Input Port Control

5. Buat program seperti gambar 3.5

Gambar 3.5 Tampilan program

Komponen Visual basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Input Control

-

Label

Name : Label1

Caption : Data Input

-

Label

Name : Label2

Caption : -

-

timer

Name : timer1

Interval : 100

Timer1_timer()

Listing Program :

6. Lengkapi Tabel 3.4

Tabel 3.4

SW1

SW2

SW3

SW4

Data Desimal

Data Control Register

C7

C6

C5

C4

C3

C2

C1

C0

1

1

1

1

1

1

1

0

1

1

0

1

1

0

1

1

0

1

1

1

0

0

0

0

0

1

1

0

1

0

0

1

0

1

0

1

1

0

1

0

D. Pembacaan Bit dari Port Control

3. Buat Rangkaian seperti gambar 3.4

4. Buat Program seperti gambar 3.6

Gambar 3.6 Tampilan program

Komponen Visual basic :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Pembacaan Bit

-

Label

(4 Buah)

Name : Label1, Label2,

Label3,Label4

Caption : Bit 3, Bit 4, Bit 5, Bit 6

-

Shape

(4 buah)

Name : Shape1, Shape2,

Shape3, Shape4,

Caption : -

Backstyle : Opaque

-

timer

Name : timer1

Interval : 100

Timer1_timer()

Listing program :

Latihan :

Buatlah Rangkaian dan Program dengan ketentuan sebagai berikut :

1. Rangkaian terdiri dari 4 buah switch dan 4 buah led

2. Switch 1 dan 2 terhubung ke port status bit 3 dan 4

3. Switch 3 dan 4 terhubung ke port control bit 0 dan 1

4. led 1 sampai 4 terhubung ke port data bit 0 sampai 4

5. buatlah program di VB untuk menjalankan rangkaian tersebut, jika switch 1 ditekan led 1 menyala, jika switch 2 ditekan led 2 dan seterusnya.

MODUL IV

PEMOGRAMAN PORT SERIAL

A. Pendahuluan Komunikasi Data Serial

Dalam Komunikasi Serial dikenal dua cara komunikasi data secara serial, yaitu

a. komunikasi data serial secara sinkron

Pada komunikasi data serial sinkron, clock dikirimkan bersama-sama dengan data serial

b. komunikasi data serial secara asinkron.

komunikasi data serial asinkron, clock tidak dikirimkan bersama data serial, tetapi dibangkitkan secara sendiri-sendiri balk pada sisi pengirim (transmitter) maupun pada sisi penerima (receiver).

Pada IBM PC kompatibel port serialnya termasuk jenis asinkron. Komunikasi data serial ini dikerjakan oleh UART (Universal Asynchronous Receiver/Transmitter). IC UART dibuat khusus untuk mengubah data paralel menjadi data serial dan menerima data serial yang kemudian diubah kembali menjadi data paralel.

Pada UART, kecepatan pengiriman data (baud rate) dan fase clock pada sisi transmitter dan pada sisi receiver harus sinkron. Untuk itu diperlukan sinkronisasi antara transmitter dan receiver. Hal ini dilakukan oleh bit 'Start' dan bit 'Stop'. Ketika saluran transmisi dalam keadaan idle, output UART adalah dalam keadaan logika '1'. Ketika transmitter ingin mengirimkan data, output UART akan diset lebih dulu ke logika 0 untuk waktu satu bit. Sinyal ini pada receiver akan dikenali sebagai sinyal 'Start' yang digunakan untuk mensinkronkan fase clocknya sehingga sinkron dengan fase clock transmitter. selanjutnya, data akan dikirim secara serial dari bit paling rendah (bit 0) sampai bit tertinggi. Selanjutnya, akan dikirim sinyal 'Stop' sebagai akhir dari pengiriman data serial. Cara pemberian kode data yang disalurkan tidak ditetapkan secara pasti.

1

1

0

0

0

1

0

1

1

0

0

1

1

Idle

Start

Bit

8 Data Bit

Stop

Bit

Gambar 4.1 Pengirirnan data serial tanpa bit paritas

Kecepatan transmisi (baud rate) dapat dipilih bebas dalam rentang tertentu. Baud rate yang umum dipakai adalah 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 (bit/detik). Dalam komunikasi data serial, baud rate dari kedua alai yang berhubungan harus diatur pada kecepatan yang sama. Selanjutnya, harus ditentukan panjang data (6,7 atau 8 bit), paritas (genap ganjil atau tanpa paritas), dan jumlah bit 'Stop' (1, 1, atau 2 bit)

Dalam komunikasi serial ada beberap konfigurasi yang harus di tentukan, yaitu :

1. Kecepatan Transmisi (Baud rate)

Baud rate yang umum dipakai adalah adalah 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 (bit/detik). Baudrate pada kedua sistem harus sama

2. Pajang Data

Panjang data memiliki 3 pilihan, yaitu 6 bit, 7 bit dan 8 bit

3. Paritas

Ganjil, genap dan tanpa paritas

4. Jumlah Stop bit

Jumlah stop bit ada 3 pilihan yaitu 1, 1, dan 2 bit

5. Flow Control

Xon/Xoff , Hardware atau None

B. Konfigurasi Port Serial

Pada komputer IBM PC kornpatibel blasanya kita dapat menemukan dua konektor port serial DB-9 yang biasa dinamai COM I dan COM2. Gambar 4.2 adalah gambar konektor port serial DB-9 pada PC.

Gambar 4.2 Konektor serial DB-9 pada PC

Tabel 4.1 Konfigurasi pin dan nama sinyal konektor serial DB-9

Nomor

Pin

Nama

Sinyal

Direction

Keterangan

1

DCD

In

Data Carrier Detect /

Received Line Signal Detect

2

RxD

In

Receive Data

3

TxD

Out

Transmit Data

4

DTR

Out

DataTerminal Ready

5

GND

Ground

6

DSR

In

Data Set Ready

7

RST

Out

Request to Send

8

CTS

In

Clear to Send

9

RI

In

Ring Indicator

Keterangan mengenai fungsi saluran RS232 pada konektor DB-9 adalah sebagai berikut:

Received Line Signal Detect, dengan saluran ini DCE memberitahukan ke DTE bahwa pada terminal masukan ada data masuk.

Receive Data, digunakan DTE menerima data dari DCE.

Transmit Data, digunakan DTE mengirimkan data ke DCE.

Data Terminal Ready, pada saluran ini DTE memberitahukan kesiapan terminalnya.

Signal Ground, saluran ground.

Ring Indicator, pada saluran ini DCE memberitahu ke DTE bahwa sebuah stasiun menghendaki hubungan dengannya.

Clear To Send, dengan saluran ini DCE memberitahukan bahwa DTE boleh mulai mengirim data.

Reques To Send, dengan saluran ini DCE diminta mengirim data oleh DTE.

DCE Ready, sinyal aktif pada saluran ini menunjukkan bahwa DCE sudah siap.

C. Pengaksesan Port Serial Pada Visual Basic

Untuk pengaksesan port serial kita dapat mengaksesnya secara langsung melalui register UART atau meggunakan kontrol MSComm yang telah disediakan Visual Basic.

1. Pengaksesan Secara Langsung Melalui Register UART

Saluran yang digunakan UART untuk komunikasi baik untuk pengiriman maupun penerimaan data adalah saluran RxD dan saluran TxD serta saluran-saluran untuk kontrol, yaitu saluran DCD, DSR, RTS, CTS, DTR, dan RI. Saluran-saluran ini ada yang sebagai output dan ada yang sebagai input. Kecuali saluran RxD, saluran-saluran ini dapat diakses secara langsung melalui register UART. Berikut adalah tabel alamat dan lokasi bit saluran tersebut pada register UART.

Tabel 8.10 Alamat dan lokasi bit pada register UART

Namapin

Nomor pin pada

BD-9

COM1

COM2

Bit

arah

TxD

3

3FBh

2FBh

6

Output

DTR

4

3FCh

2FCh

0

Output

RTS

7

3FCh

2FCh

1

Output

CTS

8

3FEh

2FEh

4

Input

DSR

6

3FEh

2FEh

5

Input

RI

9

3FEh

2FEh

6

Input

DCD

1

3FEh

2FEh

7

Input

Untuk dapat mengaksesnya, kita dapat menggunakan fungsi PortOut dan fungsi PortIn yang terdapat pada IO.DLL dan untuk menset atau mengclearkan bit-bit tertentu kita dapat menggunakan prosedur Set_Bit atau prosedur ClearBit yang telah dibahas pada modul Port Paralel.

Berikut adalah contoh untuk menset bit DTR, yaitu membuat saluran DTR berlogika low yang dalam port serial IBM PC kompatibel bertegangan +12 V. Alamat register pengontrol DTR adalah 3FCh untuk COMI pada bit 0. Perintahnya adalah sebagai berikut.

Set_Bit (&H3FC, 0)

Untuk mengclearkannya, yaitu membuat saluran DTR berlogika high yang dalam port serial IBM PC kompatibcl bertegangan -12 V, kita menggunakan perintah:

Clear_Bit (&H3FC, 0)

2. Pengaksesan dengan menggunakan kontrol MSComm

Kontrol MSComm menyediakan fasilitas komunikasi antara program aplikasi yang dibuat dengan port serial untuk mengirim atau menerima data melalui port serial. Setup MSComm hanya menangani satu port serial sehingga jika ingin menggunakan lebih dari satu port serial, maka harus menggunakan MSComm sebanyak port serial yang kita pakai.

Properti MSComm

Jumlah properti pada MSComm sangat banyak sehingga kita tidak akan membahas seluruhnya. Kita hanya akan membahas bcberapa properti yang perlu kita ketahui sebelum kita dapat menggunakan MSComm. Properti-properti yang sering dipakai adalah sebagai berikut:

CommPort: Digunakan untuk menentukan nomor port serial yang akan

dipakai.

Setting

: Digunakan untuk untuk menset nilai baud rate, pariti, jumlah

bit data, dan jumlah bit stop.

PortOpen

: Digunakan untuk membuka ataupun menutup port serial yang

dihubungkan dengan MSComm ini. InputDigunakan untuk mengambil data string yang ada pada buffer penerima.

Output

: Digunakan untuk menulis data string pada buffer kirim.

Berikut adalah contoh penggunaan properti tersebut untuk komunikasi menggunakan modem:

Private Sub Form Load()

MSComml.CommPort = 1

MSComml.Settings = "9600,N,8,1"

MSComml.InputLen = 0 MSComml

PortOpen = True MSComml.Output = "ATV1Q0" & Chr$(13)

Do

DoEvents

Buffer$ = Buffer$ & MSComml.Input

Loop Until InStr(Buffer$, "OK" & vbCRLF)

MSComml.PortOpen = False End Sub

Kode-kode program pada prosedur di alas akan melakukan aksi sebagai berikut:

Port serial yang digunakan adalah COM I

Setting MSComm adalah baud rate 9600, tanpa paritas, jumlah data 8 bit, danjumlah bit stop adalah 1 bit.

Memerintahkan kontrol MSComm membaca seluruh isi buffer ketika menggunakan perintah Input (MSComml.InputLen = 0)

Membuka port serial

Mengirim perintah "ATV I QO" diikuti ASCII 13 (enter) ke modem

Menunggu modem mengirimkan jawaban "OK" ke komputer

Menutup port serial

MODUL V

PEMOGRAMAN MIKROKONTROLER AT89S52

A. MIKROKONTROLER AT89S52

Mikrokontroler adalah mikroprosessor yang dirancang khusus untuk aplikasi kontrol, dan dilengkapi dengan ROM, RAM dan fasilitas I/O pada satu chip. AT89S52 adalah salah satu anggota dari keluarga MCS-51/52 yang dilengkapi dengan internal 8 Kbyte Flash PEROM (Programmable and Erasable Read Only Memory), yang memungkinkan memori program untuk dapat deprogram kembali. AT89S52 dirancang oleh Atmel sesuai dengan instruksi standar dan susunan pin 80C5.

Mikrokontroler AT89S52 memiliki :

Sebuah CPU ( Central Processing Unit ) 8 Bit.

256 byte RAM ( Random Acces Memory ) internal.

Empat buah port I/O, yang masing masing terdiri dari 8 bit

Osilator internal dan rangkaian pewaktu.

Dua buah timer/counter 16 bit

Lima buah jalur interupsi ( 2 buah interupsi eksternal dan 3 interupsi internal).

Sebuah port serial dengan full duplex UART (Universal Asynchronous Receiver Transmitter).

Mampu melaksanakan proses perkalian, pembagian, dan Boolean.

EPROM yang besarnya 8 KByte untuk memori program.

Kecepatan maksimum pelaksanaan instruksi per siklus adalah 0,5 s pada frekuensi clock 24 MHz. Apabila frekuensi clock mikrokontroler yang digunakan adalah 12 MHz, maka kecepatan pelaksanaan instruksi adalah 1 s

1. Konfigurasi Pin

Mikrokontroler AT89S52 mempunyai 40 pin dengan catu daya tunggal 5 Volt. Ke-40 pin tersebut digambarkan seperti pada gambar 5.1

Gambar 5.1 konfigurasi pin AT89S51 PDIP

Fungsi dari masing-masing pin AT89S52 adalah :

Pin 1 sampai 8 (Port 1) merupakan port pararel 8 bit dua arah (bidirectional) yang dapat digunakan untuk berbagai keperluan (general purpose).

Pin 9 merupakan pin reset, reset aktif jika mendapat catuan tinggi.

Pin 10 sampai 17 (Port 3) adalah port pararel 8 bit dua arah yang memiliki fungsi pengganti sebagai berikut :

P3.0 (10) : RXD (port serial penerima data)

P3.1 (11) : TXD (port serial pengirim data)

P3.2 (12) : INT0 (input interupsi eksternal 0, aktif low)

P3.3 (13) : INT1 (input interupsi ekstrernal 1, aktif low)

P3.4 (14) : T0 (eksternal input timer / counter 0)

P3.5 (15) : T1 (eksternal input timer / counter 1)

P3.6 (16) : WR (Write, aktif low) Sinyal kontrol penulisan data dari port 0 ke memori data dan input-output eksternal.

P3.7 (17) : RD (Read, aktif low) Sinyal kontrol pembacaan memori data input-output eksternal ke port 0.

Pin 18 sebagai XTAL 2, keluaran osilator yang terhubung pada kristal.

Pin 19 sebagai XTAL 1, masukan ke osilator berpenguatan tinggi, terhubung pada kristal.

Pin 20 sebagai Vss, terhubung ke 0 atau ground pada rangkaian.

Pin 21 sampai 28 (Port 2) adalah port pararel 8 bit dua arah. Port ini mengirim byte alamat bila pengaksesan dilakukan pada memori eksternal.

Pin 29 sebagai PSEN (Program Store Enable) adalah sinyal yang digunakan untuk membaca, memindahkan program memori eksternal (ROM / EPROM) ke mikrokontroler (aktif low).

Pin 30 sebagai ALE (Address Latch Enable) untuk menahan alamat bawah selama mengakses memori eksternal. Pin ini juga berfungsi sebagai PROG (aktif low) yang diaktifkan saat memprogram internal flash memori pada mikrokontroler (on chip).

Pin 31 sebagai EA (External Accesss) untuk memilih memori yang akan digunakan, memori program internal (EA = Vcc) atau memori program eksternal (EA = Vss), juga berfungsi sebagai Vpp (programming supply voltage) pada saat memprogram internal flash memori pada mikrokontroler.

Pin 32 sampai 39 (Port 0) merupakan port pararel 8 bit dua arah. Berfungsi sebagai alamat bawah yang dimultipleks dengan data untuk mengakses program dan data memori eksternal.

Pin 40 sebagai Vcc, terhubung ke +5 V sebagai catuan untuk mikrokontroler.

B. MODUL AT89S25

Untuk praktikum interfacing ini modul sistem miimum yang dipakai telah di lengkapi dengan modul ISP programmer untuk IC AT89S51 serta telah dilengkapi RS 232 buffer untuk komunikasi serial dengan komputer. Gambar 5.2 merupakan diagram blok modul AT89S52.

Gambar 5.2 Diagram Blok modul AT89S52

Gambar 5.3 Modul AT89S52

Fungsi dan Konfigurasi JP1 dan JP2

JP1 dan JP2 digunakan untuk konfigurasi dalam proses memprogram IC AT89S52 dan komunikasi antara IC S89S52 dengan komputer. Konfigurasi JP1 dan JP2 seperti tercantum dalam tabel 5.1

Tabel 5.1 Konfigurasi JP1 dan JP2

Proses

JP1

JP2

Memprogram IC AT89S52

Melakukan Komunikasi Antara AT89S52 dengan PC

Menyambungkan Pin Reset ke Push Button

Dalam proses memprogram mikrokontroler, diperlukan sebuah software pada PC, software yang digunakan adalah ISP_PROG v1.4. tampilan program dapat dilihat pada gambar 5.4

Gambar 5.4 ISP_PROG v1.4

C. PEMOGRAMAN AT89S52

Pemograman Mikrokontroler ini bisa menggunakan berbagai bahasa, diantaranya adalah bahasa pemograman C, Basic dan Assembler, dalam modul ini, kita akan memprogram mikrokontroler dengan menggunakan bahasa pemograman Assembler menggunakan compiler pinnacle.

1. Mengeluarkan data ke Port

1.1. Mengeluarkan 8 bit data ke port

Buatlah rangkaian seperti gambar 5.5

Gambar 5.5 Rangkaian Led

Tuliskan sintax program dibawah pada Pinnacle :

Org 100h

AWAL:

MOV P1,#0FH

ACALL DELAY

MOV P1,#0F0H

ACALL DELAY

SJMP AWAL

END

DELAY:

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0AFH

SETB TR0

JNB TF0,$

CLR TR0

CLR TFO

RET

Simpan dan compile program tersebut

Programkan file *.hex hasil compile kedalam mikrokontroler AT89S52

1.2 Pemograman bit pada Port

Org 100h

AWAL:

SETB P1.0

SETB P1.1

SETB P1.2

SETB P1.3

CLR P1.4

CLR P1.5CLR P1.6

CLR P1.7

ACALL DELAY

CLR P1.0

CLR P1.5CLR P1.2

CLR P1.3

SETB P1.4

SETB P1.5

SETB P1.6

SETB P1.7

ACALL DELAY

SJMP AWAL

END

DELAY:

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0AFH

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

RET

2. Membaca masukan dari port

2.1. membaca masukan 8 bit data dari port

Buatlah rangkaian seperti gambar 5.6

Gambar 5.6 Rangkaian Led dan switch

Tuliskan sintax program dibawah pada Pinnacle :

Org 100h

AWAL:

MOV A,P2

MO P1,A

SJMP AWAL

END

Simpan dan compile program tersebut

Programkan file *.hex hasil compile kedalam mikrokontroler AT89S52

2.2. Membaca masukan bit dari Port

Org 100h

AWAL:

JB P2.0,NEXT

MOV P1,#0FH

SJMP AWAL

NEXT:

JB P2.1, NEXT2

MOV P1,#0F0H

NEXT2:

SJMP AWAL

END

Latihan:

hubungkan port 1 mikrokontroler dengan rangkaian LED

hubungkan Port 3 mikrokontroler dengan Port Data DB 25 pada PC

buatlah program di VB untuk menyalakan led-led yang terhubung ke mikrokontroler

MODUL VI

KOMUNIKASI MIKROKONTROLER AT89S52 DENGAN PC

MENGGUNAKAN PORT SERIAL

A. PENDAHULUAN

Sebelum melakukan komunikasi serial, perlu di perhatikan beberapa hal, yaitu:

a. Kecepatan Transmisi (Baud rate)

Baud rate yang umum dipakai adalah adalah 110, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 (bit/detik). Baudrate pada kedua sistem harus sama

b. Pajang Data

Panjang data memiliki 3 pilihan, yaitu 6 bit, 7 bit dan 8 bit

c. Paritas

Ganjil, genap dan tanpa paritas

d. Jumlah Stop bit

Jumlah stop bit ada 3 pilihan yaitu 1, 1, dan 2 bit

e. Flow Control

Xon/Xoff , Hardware atau None

B. PEMOGRAMAN AT89S52 UNTUK KOMUNIKASI SERIAL

Dalam melakukan komunikasi serial, Ada beberapa register yang terlibat untuk melakukan komunikasi serial ini, diantaranya :

1. Power Control (PCON)

Register Power Control ber-alamat di 87H berguna untuk mengatur kebutuhan daya mikrokontroler. Dengan adanya register pengatur daya ini memungkinkan mikrokontroler ke mode "idle" atau "sleep" yang mana akan lebih menghemat pemakaian daya. Selain itu ada bit-bit pada register PCON ini untuk mengatur Baud Rate pada serial port. Bit-bit pada PCON adalah sebagai berikut:

MSB

LSB

SMOD(7)

(6)

(5)

(4)

GF1(3)

GFO(2)

PD(1)

IDL(0)

Keterangan :

Bit(7) SMOD= digunakan untuk membuat dobel (2 kali) baud rate pada

Timer 1

Bit(4-6) -

= tidak digunakan, untuk pengembangan selanjutnya

Bit(3) GF1

= Bit Flag serbaguna

Bit(2) GFO

= Bit Flag serbaguna

Bit(1) PD

= Bit power down. Bila berlogika. 1 mode power down aktif Bit(0) IDL

= Bit idle mode. Aktif jika berlogika 1.

2. Serial Port Control (SCON)

Isi dari SCON adalah sebagai berikut :

MSB

LSB

SM0(7)

SM1(6)

SM2(5)

REN(4)

TB8(3)

RB8(2)

TI(1)

RI(0)

Keterangan :

Bit(0) RI= Receive Interupt Flag. Di-set oleh hardware untuk menunjukkan

suatu byte telah komplit diterima.

Bit(1) TI= Transmit Interupt Flag. Di-set oleh hardware untuk menunjukkan

suatu byte telah komplit dikirimkan.

Bit(2) RB8= Receive bit 8. Bit ini digunakan sesuai mode pengoperasian. Pada

mode 2 dan 3 dimana 9 bit diterima, bit terakhir akan dicopy ke RB8. Pada mode 1 dimana 8 bit data dikirimkan, dimana bit SM2 dibuat rendah, maka stop bit akan dicopy ke RB8.

Bit(3) TB8 = Transmit bit 8. Adalah data ke 9 yang akan dikirimkan pada mode

2 dan 3. Diset atau dihapus dengan software sesuai kebutuhan.

Bit(4) REN = Receive Enable. Bit ini harus diset untuk menerima data. Jika

tidak data akan diblok.

Bit (5) SM2 = Serial Mode (bit 2) Digunakan pada mode 2 dan 3 untuk

mendukung komunikasi multiprosesor.

Bit(6) SM1= Serial Mode bit 1

Bit(7) SMO = Serial Mode bit 0

Tabel 6.1 menunjukkan hubungan bit SM0 dan SM1 dalam membentuk mode serial port

Tabel 6.1 Mode Komunikasi Data Serial

SM0

SM1

Serial Mode

Keterangan

Baudrate

0

0

0

8 bit Shift register

Osilator/12

0

1

1

8 bit UART

Set oleh timer 1

1

0

2

9 bit UART

Osilator/32

1

1

3

9 bit UART

Set oleh timer 1

3. Serial Data Buffer

Register SBUF ini berada pada alamat memory 99H, fungsi dari register ini untuk menyimpan data sementara yang akan dikirimkan dan diterima, setelah serial port di konfigurasi, maka penulisan ke SBUF akan memulai pengiriman secara serial.

4. Timer dan Counter

Pada mikrokontroler MCS-51 terdapat dua buah Timer/Counter. Adanya timer/counter menambah fungsionalitas dari mikrokontroler ini. Dengan adanya timer/counter maka dapat digunakan misalnya untuk menghitung kejadian (event), untuk menghasilkan baud rate, atau untuk menghitung waktu.

Sebagaimana peralatan lain pada mikrokontroler ini, timer/ counterjuga diatur oleh special function register yaitu Timer/Counter Control (TCON alamat 88H), dan Timer/Couter Mode Control (TMOD alamat 89H). Selain itu nilai byte bawah dan byte atas dari Timer/ Counter disimpan dalam register TL dan TH.

Jika difungsikan sebagai Timer, maka akan menggunakan sistem clock sebagai sumber masukan pulsanya. Jika difungsikan sebagai Counter (penghitung) maka akan menggunakan pulsa dari luar (eksternal) sebagai masukan pulsanya. Anda pasti ingat bahwa pada Port 3 pada fungsi khususnya terdapat TO (masukan luar untuk Timer / Counter 0) dan T1 (masukan luar untuk Timer / Counter 1). TO berpadanan dengan Port 3 pin 4 (P3.4) dan T1 berpadanan dengan Port 3 pin 5 (P3.5).

Pemilihan mode pada Timer / Counter dikontrol oleh register TMOD. Bit-bit pada register TMOD adalah sebagai berikut:

.

MSB

LSB

Timer/Counter 1

Timer/Counter 0

GATE(7)

C/T(6)

M0(5)

M1(4)

GATE(3)

C/T(2)

M1(1)

M0(0)

Keterangan :

Bit GATE

= jika bit ini diset timer akan berjalan hanya jika INT1

(P3.3) sedang tinggi.Jika bit ini diclear timer akan berjalan tanpa mempertimbangkan kondisi INT1.

Bit C/T

= Saat bit ini diset timer akan menghitung kejadian

pada T1 (P3.5) sebagai fungsi counter. Jika bit ini diclear maka timer akan menghitung tiap siklus mesin (sebagai fungsi timer).

BitMO dan M1= bit mode Timer / Counter.

Tabel 6.2 Pemilihan Mode Timer

MO

Timer Mode

Keterangan

0

0

13 bit Timer

1

1

16 bit Timer

0

2

8 bit autoreload

1

3

split mode

Selain Timer Mode, ada lagi register yang digunakan untuk mengontrol timer yaitu register TCON. Pada register TCON ini bitbitnya ada yang digunakan untuk mengatur timer dan adapula bit-bit untuk mengatur interupsi. Bit-bit pada register ini adalah sebagai berikut.

MSB

LSB

TF1(7)

TR1(6)

TF0(5)

TR0(4)

IE (3)

IT (2)

IE0(1)

IT0(0)

Keterangan :

Bit (7) TF1

= Timer 1 Overflow, diset oleh mikrokontroler jika hitungan

Timer 1 melimpah (overflow).

Bit (6) TR1= Timer 1 Run, jika bit ini diset maka timer 1 on, Jika bit ini

diclear maka Timer 1 off (berhenti).

Bit (5) TF0

= Timer 0 Overflow, Bit ini diset oleh mikrokontroler

saat timer 0 melimpah.

Bit (4) TR0= Timer 0 Run, jika bit ini diset maka timer 0 on, jika diclear

maka timer 0 off.

Bit (3) IE1

= Interupt 1 Edge Flag. Diset oleh hardware jika sisi

suatu interrupt luar terdeteksi. Di-clear jika instruksi RETI dijalankan.

Bit (2) IT1

= Interupt 1 type. Berhubungan dengan I interript luar 1.

Fungsinya sama dengan IT0.

Bit (1) IE0= Interupt 0 Edge Flag. Diset oleh hardware jika sisi

suatu interrupt luar terdeteksi. Diclear jika instruksi RETI dijalankan.

Bit (0) IT0

= Interupt 0 type. Interrupt luar 0 diterima melalui bit 2

Pada port 3. Jika bit ini diset, maka INTO (Interrupt luar 0) dikenali pada sisi turun sinyai. Jika bit ini diclear maka suatu seta akan dikenali pada saat suatu sinyal berlogika rendah.

Konfigurasi Baudrate untuk pemograman komunikasi serial dapat di buat dari sistem clock atau dengan menggunakan timer1, jika timer 1 dioperasikan pada mode 2 (8 bit auto reload), maka baud rate diberikan melalui persamaan berikut:

Maka untuk mencari nilai TH1 adalah :

Jika bit SMOD berlogika 0

Jika bit SMOD berlogika 1

Sebagai contoh kita menggunakan frekuensi kristal 11,059 MHz dan mengharapkan baud rate 9800 bps, maka nilai TH1 adalah sebagai berikut.

TH1 = 256 (11059000 / 384) / 9800)

= 256 28799,4791 / 9800)

= 256 (2,93)

=256-3

= 253 = OFDH

Contoh lain dimana kita menggunakan Kristal dengan frekuensi 11,059 MHz dan mengharapakan baud rate 19200 bps, maka :

TH1 = 256 ((Frek.Kristal / 384) / Baud)

= 256 ((11059000 / 384) / 19200)

= 256 ((28799.4791) / 19200)

= 256 1,5

=254,5

Jadi jika ingin mengharapkan baud rate 19200 bps, TH1 harus diset ke 254,5. Jika kita set TH1 ke 254 akan didapatkan baud rate 11400 bps, namun jika diset ke 255 akan didapatkan baud rate 28800 bps. Oleh karena itu kita harus menggunakan persamaan yang kedua dimana bit SMOD harus diset (logika 1).

TH1 = 256 ((Frek.Kristal / 192) / Baud

= 256 (11059000 / 192) / 19200)

= 256 57598,95 / 19200)

= 256 (2,999)

=256-3

= 253 = OFDH

Jadi nilai TH1 yang harus diisikan adalah OFDH. Berdasarkan hal diatas jika diberikan kristal dengan frekuensi 11,059 MHz maka untuk mengkonfigurasi serial port (UART) memiliki baud rate 19200 bps harus dilakukan hal-hal berikut.

a. Konfigurasikan serial port pada mode 1 atau 3

b. Konfigurasikan Timer 1 pada mode 2 (8 bit auto reload)

c. Set TH1 pada niai 253 = OFDH untuk menghasilkan 19200 bps

d. Set bit SMOD (PCON.7)

5. Interupt

Interrupt merupakan fitur penting pada suatu mikrokontroler. Dengan adanya interrupt, maka mikrokontroler dapat menghentikan proses yang sedang dijalankan dan melaksanakan rutin interrupt. Contoh interrupt adalah jika suatu perhitungan pada Timer telah melimpah (overflow) maka akan terjadi interrupt TF0 dan TF1. Interrupt ini akan memberitahukan pada mikrokontroler bahwa hitungan timer/ counter telah melimpah. Atau jika serial port menerima data, maka akan terjadi interrupt serial port sehingga mikrokontroler akan mengetahui bahwa ada data yang datang dari serial port.

Setelah interrupt diketahui, maka bergantung pada program yang telah diberikan kepada mikrokontroler hal apakah yang harus dikerjakan. Untuk lebih memahami tentang interrupt perhatikan gambar 6.1

Program Utama

Interrupt

Gambar 6.1 Interrupt

Ada dua buah special function register yang digunakan untuk mengontrol interrupt, yaitu IE (Interupt Enable) alamat A8H dan IP (Interupt Priority Control) alamat B8H. IE digunakan untuk mengontrol interrupt mana saja yang akan diaktifkan, sedangkan IP akan menentukan interrupt mana yang memiliki prioritas tinggi dan interrupt mana pula yang memiliki prioritas rendah.

Bit-bit pada register IE adalah sebagai berikut.

MSB

LSB

EA(7)

(6)

(5)

ES(4)

ET1(3)

EX1(2)

ET0(1)

EX0(0)

Keterangan :

Bit (7) EA

= Bit pengaktif interrupt global

Bit (4) ES

= Bit pengaktif interrupt serial port

Bit (3) ET1

= Bit pengaktif interrupt Timer 1

Bit (2) EX1

= Bit pengaktif interrupt luar 1

Bit (1) ET0

= Bit pengaktif interrupt Timer 0

Bit (0) EX0

= Bit pengktif interrupt luar 0

Pada mikrokontroler MCS-51 ada 5 buah sumber interrupt. Masingmasing sumber interrupt memiliki vector alamat masing-masing. Sebagai contoh Interrupt luar 0 (IEO) memiliki vector interrupt 03H, hal ini maksudnya adalah jika interrupt tersebut sudah diaktifkan (enable) kemudian interrupt tersebut terjadi maka aliran program akan menuju alamat vector interrupt yaitu 03H. Berikut daftar interrupt pada mikrokontroler MCS-51 dan alamat vector interruptnya.

Tabel 4 Tabel Interrupt dan alamat vektornya

Nama Interrupt

Flag

Alamat Vektor Interrupt

Prioritas

Interrupt Luar 0

lEO

3H

1 (tertinggi)

Timer 0

TFO

BH

2

Interrupt Luar 1

IE1

13H

3

Timer 1

TH

1BH

4

Serial

TI atau RI

23H

5 (terendah)

Jika register IE (Interupt Enable) digunakan untuk mengatur interrupt mana saja yang aktif, maka register IP (Interupt Priority Control) digunakan untuk mengatur prioritas dari interrupt. Bit-bit pada register IP didefinisikan sebagai berikut.

MSB

LSB

(7)

(6)

(5)

PS(4)

PT1(3)

PX1(2)

PT0(1)

PX0(0)

Keterangan :

Bit (7)-

bit tidak didefinisikan

Bit (6)-

bit tidak didefinisikan

Bit (5)-

bit tidak didefinisikan

Bit (4)PS=Serial Interupt Priority

Bit (3)PT1=Timer 1 Interupt Priority

Bit (2)PX1=External 1 Interupt Priority

Bit (1)PT0=Timer 0 Interupt Priority

Bit (0)PX0=External 0 Interupt Priority

Contoh Pemograman Mikrokontroler AT89S52 untuk menangani Interrupt Serial:

ORG 00H

SJMP start

;lompat ke start

;--------------------------------------------------------

;VEKTOR INTERUPSI SERIAL

org 0023h

;lokasi vektor interupsi port serial

sjmp seri_int ;jika terjadi interupsi lompat ke seri_int

;--------------------------------------------------------

start:

mov tmod,#20h ;timer mode 2 ( 8 bit isi ulang)

mov th1,#0fdh ;baudrate = 9600 it per second

mov scon,#50h ;mode serial 8 bit UART

;( 1 bit start, 8 bit data, no

; parity, 1 bit stop )

setb tr1

;timer 1 dijalankan

setb es

;Enable Interupsi Serial

setb ea

;Interupsi dijalankan

;---------------------Main_Program----------------------

Here: sjmp here

End

;--------------------------------------------------------

;penanganan interupsi serial

seri_int:

jb RI,get_data ; apakah ada inerupsi serial?

; jika ya lompat ke "ya"

clr TI ; jika interupsi pengiriman,hapus TI

reti

; kembali

get_data:

mov a,SBUF ; baca karakter yang diterima

clr RI ; hapus RI agar bisa menerima lagi

mov R1,a ; simpan isi acc di register r1

CLR TI

MOV SBUF,a

JNB TI,$

; cek sampai karakter selesai dikirim

reti

C. KONFIGURASI HYPER TERMINAL PADA PC UNTUK KOMUNIKASI SERIAL

Untuk melakukan pengujian apakah antara mikro dan PC sudah dapat berkomunikasi melalui data serial, maka akan dilakukan pengujian melalui Hyiper terminal. Langkah-langkah komfigurasi hyiper terminal sebagai berikut:

1. Klik Start ( All Programs Accessories ( communication ( Hyper Terminal

2. Jika tampil Jendela Location Information, isikan kolom-kolom yang kosong.

3. Jika tampil jendela Phone and Modem Option, langsung klik tombol OK

4. Akan Tampil Jendela Connection Description, Ketikkan Nama Koneksi dan pilih icon untuk Koneksi, Misal Test1

5. Pada Jendela Connect To, pilih COM yang akan digunakan untuk komunikasi serial pada kolom Connect Using.

6. Pada Jendela COM Properties, isikan kolom-kolom sesuai dengan setting pada mikrokontroler.

7. Terakhir akan terbuka jendela Hyper Terminal yang akan digunakan untuk pengujian pengiriman dan penerimaan data serial.

LATIHAN :

Buatlah Program untuk menyalakan LED pada port 1 di mikrokontroler dengan ketentuan :

1. Jika ditekan huruf Q semua LED akan menyala

2. Jika ditekan huruf W 4 led low byte akan menyala dan 4 led high byte akan mati

3. Jika ditekan huruf E 4 led low byte akan mati dan 4 led high nyte akan menyala.

4. Jika ditekan huruf R nyala led bergeser dari lowbyte menuju highbyte

5. Jika ditekan huruf T nyala led bergeser dari highbyte menuju lowbyte

6. Pada setiap langkah 1 s.d 5 diatas, jika data diterima mikrokontroler dan program di mikrokontroler dijalankan, akan tampil tulisan OK pada jendela Hyper Terminal.

MODUL VII

PEMOGRAMAN DATA SERIAL DENGAN VISUAL BASIC 6

A. PENDAHULUAN

Sebagai media komunikasi dengan dunia luar, VB 6 telah menyediakan MS Comm Control 6.0 (tambahkan melalui : Project > Components).

Gambar 7.1 componen MS Comm Control

Component ini berfungsi untuk :

Mengadakan hubungan dengan serial port PC

Berhubungan dengan alat komunikasi lain (contoh : modem)

Melakukan pertukaran data

Memonitor dan merespon event dan error yang terjadi pada hubungan serial

Untuk mengadakan suatu komunikasi serial antara 2 peralatan, kita harus melakukan langkah langkah berikut :

1. Membuka serial port

2. Mengatur serial device

3. Setting Receive and Transmit Buffer Properties

4. Managing Receive and Transmit Buffer

1. Membuka Serial Port

Pada komunikasi serial, bit bit data yang masuk dari dunia luar ke dalam komputer melalui serial port akan ditampung dulu di receive buffer sebelum akan dieksekusi oleh main controller. Demikian pula sebelum dikirim ke luar, data akan ditampung dulu di transmit buffer. Skema lengkapnya dapat di lihat pada gambar di bawah

Sebelum membuka serial port, dilakukan pengaturan protokol komunikasi serial dengan property MSComm berikut :

CommPort : menentukan nomor port komunikasi

Setting : menentukan baud rate, parity, data bits, stop bits dalam string

Untuk membuka serial port cukup dengan property :

PortOpen : membuka dan menutup port

Sehingga kode program akan tertulis sebagai berikut :

MSComm1.ComPort = 2

MSComm1.Settings = 9600,N,8,1

MSComm1.PortOpen = True

2. Mengatur Serial Device

Pada tahap ini kita perlu memastikan bahwa pengaturan protokol komunikasi serial yang digunakan pada peralatan lain yang kita akses (misal : PLC, modem, mikrokontroler) sesuai dengan pengaturan pada komputer yang kita pakai.

3. Setting Receive and Transmit Buffer Properties

Ada beberapa property dari receive buffer dan transmit buffer (property dari MS Comm) yang perlu kita atur.

InBufferSize : mengatur ukuran receive buffer

OutBufferSize : mengatur ukuran transmit buffer

Rthreshold : menentukan jumlah karakter yang diterima oleh receive buffer sebelum OnComm event dipicu

Sthreshold : menentukan jumlah karakter yang diterima oleh transmit buffer sebelum OnComm event dipicu

Jika bernilai 0 berarti tidak pernah dipicu

Jika bernilai 1 berarti dipicu setiap satu karakter

InputLen : menentukan jumlah karakter yang dibaca CPU dari receive buffer

Jika bernilai 0 , maka seluruh isi receive buffer akan dibaca CPU

InputMode : menentukan tipe data input yang akan dibaca CPU

comInputModeText : untuk data string/teks

comInputModeBinary : untuk data biner

4. Managing Receive and Transmit Buffer

Untuk menampilkan data dari peralatan lain ke dalam aplikasi VB, digunakan properti : Input. Sehingga kode akan berbentuk :

TxtDisplay.Text = MSComm1.Input

Untuk mengirim data dari aplikasi VB ke peralatan lain digunakn properti : Output. Sehingga kode akan berbentuk :

MSComm1.Output = Ini nilai string

Untuk mengawasi jumlah bit yang ada di transmit buffer dan receive buffer, property berikut dapat ditampilkan.

InBufferCount

OutBufferCount

MSComm hanya memiliki 1 event, yaitu OnComm. Event ini akan terjadi jika properti dari CommEvent berubah, yaitu saat terjadi :

Event komunikasi

Error

Contoh dari event komunikasi OnComm :

comEvSend : mengirim sejumlah karakter ke transmit buffer

comEvReceive : menerima sejumlah karater di receive buffer

etc

Sedang contoh dari error pada OnComm :

comEventBreak : sinyal break diterima

comEventFrame : ada kesalahan framing

comEventRxOver : receive buffer mengalami overflow

comEventTXFull : transmit buffer penuh

etc

B. MENGIRIMKAN KARAKTER KE MIKROKONTROLER

Program ini akan mengirimkan 1 karakter dari VB ke mikrokontroler, kemudian karakter tersebut akan diterima oleh mikrokontroler dan menyalakan led yang ada di mikrokontroler.

1. Hubungkan rangkaian Led ke P2.0 mikrokontroler

2. Buat program di pinacle untuk program mikrokantroler:

ORG 00H

SJMP start

org 0023h

sjmp seri_int

start:

mov tmod,#20h

mov th1,#0fdh

mov scon,#50h

setb tr1

setb es

setb ea

kalang:

CJNE A,#41h,next

clr p2.0

next:

CJNE A,#42h,kalang

setb p2.0

sjmp kalang

seri_int:

jb RI,get_data

clr TI

reti

get_data:

mov a,SBUF

clr RI

reti

end

3. Simpan, compile dan masukkan program tersebut ke mikrokontroller.

4. Buat program di VB dengan tampilan sebagai berikut:

Komponen VB :

Komponen

Properti

Subroutin

Form

Name : Form1

Caption : Led Driver1

Private Sub Form_Load()

MS Comm

Name : MS Comm1

Caption :

-

CommandButton

Name : Command2

Caption : SHIFT LEFT OFF

Private Sub Command2_Click()

Label

Name : Label1

Caption : Karakter Dikirim

TextBox

Name : Text1.text

Caption : Karakter Dikirim

Listing Program :

Private Sub Form_Load()

MSComm1.Settings = "9600,N,8,1"

MSComm1.CommPort = 1

MSComm1.InputLen = 1

MSComm1.RThreshold = 1

End Sub

Private Sub Command1_Click()

MSComm1.PortOpen = True

MSComm1.Output = Text1.Text

MSComm1.PortOpen = False

End Sub

TUGAS :

Buatlah Program untuk menyalakan dan mematikan 8 buah Led dengan menggunakan komunikasi serial Tampilan program seperti gamabar di bawah ini :

C. MENERIMA KARAKTER DARI MIKROKONTROLER

Contoh :

Program pada mikrokontroler :

ORG 00H

SJMP start

;lompat ke start

;--------------------------------------------------------

;VEKTOR INTERUPSI SERIAL

org 0023h

;lokasi vektor interupsi port serial

sjmp seri_int ;jika terjadi interupsi lompat ke seri_int

;--------------------------------------------------------

start:

mov tmod,#20h ;timer mode 2 ( 8 bit isi ulang)

mov th1,#0fdh ;baudrate = 9600 it per second

mov scon,#50h ;mode serial 8 bit UART

;( 1 bit start, 8 bit data, no

; parity, 1 bit stop )

setb tr1

;timer 1 dijalankan

setb es

;Enable Interupsi Serial

setb ea

;Interupsi dijalankan

;---------------------Main_Program----------------------

HERE:

jb P1.7, NEXT1

MOV A,#41H

acall SENDDATA

NEXT1:

jb P1.6, NEXT2

MOV A,#43H

acall SENDDATA

NEXT2:

jb P1.5, HERE

MOV A,#42H

acall SENDDATA

sjmp HERE

;--------------------------------------------------------

SENDDATA:

CLR TI

MOV SBUF,A

JNB TI,$

RET

Program Visual Basic

Private Sub Form_Load()

MSComm1.Settings = "9600,N,8,1"

MSComm1.CommPort = 1

MSComm1.InputLen = 1

MSComm1.RThreshold = 1

End Sub

Private Sub MSComm1_OnComm()

MSComm1.PortOpen = True

Dim buffer As Variant

buffer = MSComm1.Input

Text1.Text = MSComm1.Input

MSComm1.PortOpen = False

End Sub

Private Sub Form_Load()

If Not IsDriverInstalled Then

MsgBox "error", vbOKOnly

Unload Me

End If

End Sub

Private Sub Check1_Click()

If Check1.Value = 1 Then

PortOut &H378, &HFF

Check1.Caption = "Lampu ON semua"

Else

PortOut &H378, &H0

Check1.Caption = "Lampu OFF semua"

End If

End Sub

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_Load()

If Not IsDriverInstalled Then

MsgBox "error", vbOKOnly

Unload Me

End If

PortOut &H378, &HFF

End Sub

Private Sub keluar_Click()

Unload Me

End Sub

Private Sub L0ON_Click()

ClrPortBit &H378, 0

LED0.BackColor = vbRed

End Sub

Private Sub L0OFF_Click()

SetPortBit &H378, 0

LED0.BackColor = &H8000000F

End Sub

Private Sub L1ON_Click()

ClrPortBit &H378, 1

LED1.BackColor = vbRed

End Sub

Private Sub L1OFF_Click()

SetPortBit &H378, 1

LED1.BackColor = &H8000000F

End Sub

Private Sub L2ON_Click()

ClrPortBit &H378, 2

LED2.BackColor = vbRed

End Sub

Private Sub L2OFF_Click()

SetPortBit &H378, 2

LED2.BackColor = &H8000000F

End Sub

Private Sub L3OFF_Click()

SetPortBit &H378, 3

LED3.BackColor = &H8000000F

End Sub

Private Sub L3ON_Click()

ClrPortBit &H378, 3

LED3.BackColor = vbRed

End Sub

Private Sub L4OFF_Click()

SetPortBit &H378, 4

LED4.BackColor = &H8000000F

End Sub

Private Sub L4ON_Click()

ClrPortBit &H378, 4

LED4.BackColor = vbRed

End Sub

Private Sub L5ON_Click()

ClrPortBit &H378, 5

LED5.BackColor = vbRed

End Sub

Private Sub L5OFF_Click()

SetPortBit &H378, 5

LED5.BackColor = &H8000000F

End Sub

Private Sub L6OFF_Click()

SetPortBit &H378, 6

LED6.BackColor = &H8000000F

End Sub

Private Sub L6ON_Click()

ClrPortBit &H378, 6

LED6.BackColor = vbRed

End Sub

Private Sub L7OFF_Click()

SetPortBit &H378, 7

LED7.BackColor = &H8000000F

End Sub

Private Sub L7ON_Click()

ClrPortBit &H378, 7

LED7.BackColor = vbRed

End Sub

Private Sub Form_Load()

If Not IsDriverInstalled Then

MsgBox "error", vbOKOnly

Unload Me

End If

PortOut &H378, &HFF

End Sub

Private Sub Command1_Click()

LeftPortShift &H378, 0

End Sub

Private Sub Command2_Click()

LeftPortShift &H378, 1

End Sub

Private Sub Command3_Click()

RightPortShift &H378, 0

End Sub

Private Sub Command4_Click()

RightPortShift &H378, 1

End Sub

Private Sub keluar_Click()

Unload Me

End Sub

Private Sub Timer1_Timer()

Dim k As Byte

k = PortIn(&H379)

Label1.Caption = k

End Sub

Private Sub Timer1_Timer()

Dim a As Boolean

Dim b As Boolean

Dim c As Boolean

Dim d As Boolean

a = GetPortBit(&H379, 3)

If a = True Then

Shape1.BackColor = vbBlack

Label1.Caption = "OFF"

Else

Shape1.BackColor = vbYellow

Label1.Caption = "ON"

End If

b = GetPortBit(&H379, 4)

If b = True Then

Shape2.BackColor = vbBlack

Label2.Caption = "OFF"

Else

Shape2.BackColor = vbYellow

Label2.Caption = "ON"

End If

c = GetPortBit(&H379, 5)

If c = True Then

Shape3.BackColor = vbBlack

Label3.Caption = "OFF"

Else

Shape3.BackColor = vbYellow

Label3.Caption = "ON"

End If

d = GetPortBit(&H379, 6)

If d = True Then

Shape4.BackColor = vbBlack

Label4.Caption = "OFF"

Else

Shape4.BackColor = vbYellow

Label4.Caption = "ON"

End If

End Sub

Private Sub Timer1_Timer()

Dim k As Byte

k = PortIn(&H37A)

Label1.Caption = k

End Sub

Private Sub Timer1_Timer()

Dim a As Boolean

Dim b As Boolean

Dim c As Boolean

Dim d As Boolean

a = GetPortBit(&H37A, 0)

If a = True Then

Shape1.BackColor = vbYellow

Label1.Caption = "ON"

Else

Shape1.BackColor = vbBlack

Label1.Caption = "OFF"

End If

b = GetPortBit(&H37A, 1)

If b = True Then

Shape1.BackColor = vbYellow

Label1.Caption = "ON"

Else

Shape1.BackColor = vbBlack

Label1.Caption = "OFF"

End If

c = GetPortBit(&H37A, 2)

If c = True Then

Shape3.BackColor = vbBlack

Label3.Caption = "OFF"

Else

Shape3.BackColor = vbYellow

Label3.Caption = "ON"

End If

d = GetPortBit(&H37A, 3)

If d = True Then

Shape1.BackColor = vbYellow

Label1.Caption = "ON"

Else

Shape1.BackColor = vbBlack

Label1.Caption = "OFF"

End If

End Sub

ISP

Programmer

RS 232 Buffer

AT89S52

P0

P1

P2

P3

PC

Regulator

Downloader

IC AT89S52

RS 232 Buffer

JP1

JP2

P2

P0

P1

P3

57

Modul Praktikum Interfacing