Anda di halaman 1dari 60

MODUL PRAKTIKUM

LABORATORIUM ANTARMUKA KOMPUTER

DISUSUN OLEH:
Taufiq Nuzwir Nizar, S. Kom

JURUSAN TEKNIK DAN ILMU KOMPUTER


FAKULTAS TEKNIK
UNIVERSITAS KOMPUTER INDONESIA
MODUL I
1
Modul Praktikum Interfacing

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
2
Modul Praktikum Interfacing

(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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 25

Nama Sinyal

Arah

Register

Inverse

Strobe
Data 0
Data 1
Data 2
Data 3
Data 4
Data 5
Data 6
Data 7
Ack
Busy
Paper-Out/Paper-End
Select
Auto-Linefeed
Error/Fault
Initialize
Select-Printer/ Select-in
Ground

In/Out
Out
Out
Out
Out
Out
Out
Out
Out
In
In
In
In
In / Out
In
In / Out
In / Out
Gnd

Control Bit 0
Data bit 0
Data bit 1
Data bit 2
Data bit 3
Data bit 4
Data bit 5
Data bit 6
Data bit 7
Status bit 6
Status bit 7
Status bit 5
Status bit 4
Control bit 1
Status bit 3
Control bit 2
Control bit 3

Ya

Ya

Ya
Ya

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 masingmasing 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
3
Modul Praktikum Interfacing

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
4
Modul Praktikum Interfacing

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
PortWordOut
PortDWordOut
PortIn
PortWordIn
PortDWordIn
GetPortBit
SetPortBit
ClrPortBit
NotPortBit
RightPortShift
LeftPortShift
IsDriverInstalled

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


: Mengirim data dalam format word (16-bit) ke port tertentu.
: Mengirim data dalam format double word (32-bit) ke port tertentu.
: Membaca data falam format byte (8-bit) dari port tertentu.
: Membaca data falam format word (16-bit) dari port tertentu.
: Membaca data falam format double word (32-bit) dari port tertentu.
: Membaca status dari bit tertentu.
: Set bit (=1) pada port tertentu.
: Reset bit (=0) pada port tertentu.
: Lakukan inversi (NOT) bit pada port tertentu
: Geser bit dari port tertentu ke kanan, LSBMSB.
: Geser bit dari port tertentu ke kiri, MSB LSB.
: 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

5
Modul Praktikum Interfacing

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.

6
Modul Praktikum Interfacing

Gambar 2.2 Tampilan Program menghidupkan dan mematikan LED


Komponen Visual Basic :
Komponen
Properti
Form
Name : Form1
Caption : Led Driver1
CheckBox
Name : Check1
Caption : ON/OFF
CommandButton
Name : Command1
Caption : Keluar

Subroutin
Private Sub Form_Load()
Private Sub Check1_Click()
Private Sub Command1_Click()

Listing Program :
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

2. Menghidupkan dan mematikan LED per bit


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

7
Modul Praktikum Interfacing

Gambar 2.2 Tampilan Program menghidupkan dan mematikan LED per bit

Komponen Visual Basic :


Komponen
Properti
Form
Name : Form1
Caption : Led Driver1
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

Subroutin
Private Sub Form_Load()
Private Sub L0ON_Click()
8

Modul Praktikum Interfacing

CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton

Name : L1ON
Caption : ON
Name : L2ON
Caption : ON
Name : L3ON
Caption : ON
Name : L4ON
Caption : ON
Name : L5ON
Caption : ON
Name : L6ON
Caption : ON
Name : L7ON
Caption : ON
Name : L0OFF
Caption : OFF
Name : L1OFF
Caption : OFF
Name : L2OFF
Caption : OFF
Name : L3OFF
Caption : OFF
Name : L4OFF
Caption : OFF
Name : L5OFF
Caption : OFF
Name : L6OFF
Caption : OFF
Name : L7OFF
Caption : OFF
Name : Keluar
Caption : Keluar

Private Sub L1ON_Click()


Private Sub L2ON_Click()
Private Sub L30ON_Click()
Private Sub L4ON_Click()
Private Sub L5ON_Click()
Private Sub L6ON_Click()
Private Sub L7ON_Click()
Private Sub L0OFF_Click()
Private Sub L1OFF_Click()
Private Sub L2OFF_Click()
Private Sub L3OFF_Click()
Private Sub L4OFF_Click()
Private Sub L5OFF_Click()
Private Sub L6OFF_Click()
Private Sub L7OFF_Click()
Private Sub Command1_Click()

Listing Program :
Private Sub Form_Load()
If Not IsDriverInstalled Then
MsgBox "error", vbOKOnly
Unload Me
End If
PortOut &H378, &HFF
End Sub
Modul Praktikum Interfacing

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
Modul Praktikum
EndInterfacing
Sub

10

Private Sub L3ON_Click()


ClrPortBit &H378, 3
LED3.BackColor = vbRed
End Sub
Private Sub L3OFF_Click()
SetPortBit &H378, 3
LED3.BackColor = &H8000000F
End Sub
Private Sub L4ON_Click()
ClrPortBit &H378, 4
LED4.BackColor = vbRed
End Sub
Private Sub L4OFF_Click()
SetPortBit &H378, 4
LED4.BackColor = &H8000000F
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
Modul Praktikum Interfacing

11

Private Sub L6ON_Click()


ClrPortBit &H378, 6
LED6.BackColor = vbRed
End Sub
Private Sub L6OFF_Click()
SetPortBit &H378, 6
LED6.BackColor = &H8000000F
End Sub
Private Sub L7ON_Click()
ClrPortBit &H378, 7
LED7.BackColor = vbRed
End Sub
Private Sub L7OFF_Click()
SetPortBit &H378, 7
LED7.BackColor = &H8000000F
End Sub

3. Geser Kiri dan Geser Kanan


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

12
Modul Praktikum Interfacing

Gambar 2.3 Tampilan Program Geser kanan dan Geser kiri


Komponen Visual basic :
Komponen
Form
CommandButton
CommandButton
CommandButton
CommandButton
CommandButton

Properti
Name : Form1
Caption : Led Driver1
Name : Command1
Caption : SHIFT LEFT ON
Name : Command2
Caption : SHIFT LEFT OFF
Name : Command3
Caption : SHIFT RIGHT ON
Name : Command4
Caption : SHIFT RIGHT OFF
Name : Keluar
Caption : Exit

Subroutin
Private Sub Form_Load()
Private Sub
Command1_Click()
Private Sub
Command2_Click()
Private Sub
Command3_Click()
Private Sub
Command4_Click()
Private Sub keluar_Click()

Listing Program :
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
13
Modul Praktikum Interfacing

Private Sub keluar_Click()


Unload Me
End Sub

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

Register
Pin
Inverse

S7
11
ya

S6
10
tidak

Tabel 3.1
S5
S4
12
13
tidak
tidak

S3
15
tidak

S2
S1
S0
Tidak terhubung ke
Pin di port paralel

Praktikum:
1. Buat Rangkaian seperti gambar 3.1
14
Modul Praktikum Interfacing

Gambar 3.1 Input Port Status


2. Buat program seperti gambar 3.2 :

Gambar 3.2 Tampilan Program

Komponen Visual basic :


Komponen
Form
Label
Label
timer

Properti
Name : Form1
Caption : Input Status
Name : Label1
Caption : Data Input
Name : Label2
Caption : Name : timer1
Interval : 100

Subroutin
Timer1_timer()

15
Modul Praktikum Interfacing

Listing Program :
Private Sub Timer1_Timer()
Dim k As Byte
k = PortIn(&H379)
Label1.Caption = k
End Sub
3. Lengkapi Tabel 3.2
Tabel 3.2
SW3 SW4 SW5 SW6 Data Desimal
S7 S6
1
1
1
1
0
0
0
1
0
1

1
1
1
0
1
0
1
0
1
0

1
1
0
1
1
0
1
0
0
1

Data Status Register


S5 S4 S3 S2 S1

S0

1
0
1
1
1
0
0
1
1
0

B. Pembacaan Bit dari Port Status


1. Buat Rangkaian seperti gambar 3.1
2. Buat Program seperti gambar 3.3

16
Modul Praktikum Interfacing

Gambar 3.3 Tampilan program


Komponen Visual basic :
Komponen
Form
Label
(4 Buah)
Shape
(4 buah)
timer

Properti
Name : Form1
Caption : Pembacaan Bit
Name : Label1, Label2,
Label3,Label4
Caption : Bit 3, Bit 4, Bit 5, Bit 6
Name : Shape1, Shape2,
Shape3, Shape4,
Backstyle : Opaque
Name : timer1
Interval : 100

Subroutin
-

Timer1_timer()

Listing program :
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

17
Modul Praktikum Interfacing

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

18
Modul Praktikum Interfacing

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
19
Modul Praktikum Interfacing

Register
Pin
Inverse

Tabel 3.3
C7
C6
C5
C4
Tidak terhubung ke Pin di port
paralel

C3
17
ya

C2
16
tidak

C1
14
ya

C0
1
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 :

20
Modul Praktikum Interfacing

Komponen
Form
Label
Label
timer

Properti
Name : Form1
Caption : Input Control
Name : Label1
Caption : Data Input
Name : Label2
Caption : Name : timer1
Interval : 100

Subroutin
Timer1_timer()

Listing Program :
Private Sub Timer1_Timer()
Dim k As Byte
k = PortIn(&H37A)
Label1.Caption = k
End Sub
6. Lengkapi Tabel 3.4
Tabel 3.4
SW1 SW2 SW3 SW
4
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

Data Desimal
C7 C6

Data Control Register


C5 C4 C3 C2 C1

C0

21
Modul Praktikum Interfacing

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
Form
Label
(4 Buah)
Shape
(4 buah)

timer

Properti
Name : Form1
Caption : Pembacaan Bit
Name : Label1, Label2,
Label3,Label4
Caption : Bit 3, Bit 4, Bit 5, Bit 6
Name : Shape1, Shape2,
Shape3, Shape4,
Caption : Backstyle : Opaque
Name : timer1
Interval : 100

Subroutin
-

Timer1_timer()

22
Modul Praktikum Interfacing

Listing program :
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

23
Modul Praktikum Interfacing

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

24
Modul Praktikum Interfacing

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).
25

Modul Praktikum Interfacing

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.

Idle

Start

8 Data Bit

Bit
Gambar 4.1 Pengirirnan data serial tanpa bit paritas

Stop
Bit

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
26
Modul Praktikum Interfacing

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

DCD

In

Data Carrier Detect /


Received Line Signal Detect

RxD

In

Receive Data

TxD

Out

Transmit Data

DTR

Out

DataTerminal Ready

GND

DSR

In

Data Set Ready

RST

Out

Request to Send

CTS

In

Clear to Send

RI

In

Ring Indicator

Ground

27
Modul Praktikum Interfacing

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, saluransaluran 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
TxD
DTR

Nomor pin
COM1 COM2
pada
BD-9
3
3FBh 2FBh
4

3FCh

2FCh

Bit

arah

Output

Output
28

Modul Praktikum Interfacing

RTS

3FCh

2FCh

Output

CTS

3FEh

2FEh

Input

DSR

3FEh

2FEh

Input

RI

3FEh

2FEh

Input

DCD

3FEh

2FEh

Input

Untuk dapat mengaksesnya, kita dapat menggunakan fungsi PortOut dan


fungsi PortIn yang terdapat pada IO.DLL dan untuk menset atau mengclearkan bitbit 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:

29
Modul Praktikum Interfacing

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. Input Digunakan 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
30
Modul Praktikum Interfacing

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.
31
Modul Praktikum Interfacing

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


32
Modul Praktikum Interfacing

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
33

Modul Praktikum Interfacing

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.

ISP

PC

RS
232
Buffer
Regulat
or

Programmer

P0
AT89S52

P1
P2

Download
er

IC
AT89S52

Gambar 5.2 Diagram Blok modul AT89S52

P3

P0
P1

P2
P3

RS 232
Buffer
Modul Praktikum Interfacing

JP1

34

JP2

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

35
Modul Praktikum Interfacing

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

36
Modul Praktikum Interfacing

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


37

Modul Praktikum Interfacing

1.2

Programkan file *.hex hasil compile kedalam mikrokontroler AT89S52


Pemograman bit pada Port
Org 100h
AWAL:
SETB P1.0
SETB P1.1
SETB P1.2
SETB P1.3
CLR P1.4
CLR P1.5
CLR P1.6
CLR P1.7
ACALL DELAY
CLR P1.0
CLR P1.5
CLR 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
38

Modul Praktikum Interfacing

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

2.2.

Simpan dan compile program tersebut

Programkan file *.hex hasil compile kedalam mikrokontroler AT89S52


Membaca masukan bit dari Port
Org 100h
AWAL:
JB P2.0,NEXT
MOV P1,#0FH
SJMP AWAL
NEXT:
39

Modul Praktikum Interfacing

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
40
Modul Praktikum Interfacing

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
SMOD(7)

(6)

(5)

(4)

GF1(3)

GFO(2)

PD(1)

LSB
IDL(0)

Keterangan :
Bit(7) SMOD
Bit(4-6) Bit(3) GF1
Bit(2) GFO
Bit(1) PD
Bit(0) IDL

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


Timer 1
= tidak digunakan, untuk pengembangan selanjutnya
= Bit Flag serbaguna
= Bit Flag serbaguna
= Bit power down. Bila berlogika. 1 mode power down aktif
= Bit idle mode. Aktif jika berlogika 1.

2. Serial Port Control (SCON)


Isi dari SCON adalah sebagai berikut :
MSB
SM0(7)

SM1(6)

SM2(5)

REN(4)

TB8(3)

RB8(2)

TI(1)

LSB
RI(0)
41

Modul Praktikum Interfacing

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
0
0
1
1

SM1
0
1
0
1

Serial Mode
0
1
2
3

Keterangan
8 bit Shift register
8 bit UART
9 bit UART
9 bit UART

Baudrate
Osilator/12
Set oleh timer 1
Osilator/32
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
42
Modul Praktikum Interfacing

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
GATE(7)

LSB
Timer/Counter 1
C/T(6)
M0(5)

M1(4)

GATE(3)

Timer/Counter 0
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).

Bit MO dan M1

= bit mode Timer / Counter.


Tabel 6.2 Pemilihan Mode Timer

MO
0
1

Timer Mode
0
1

Keterangan
13 bit Timer
16 bit Timer
43

Modul Praktikum Interfacing

0
1

2
3

8 bit
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
TF1(7)

TR1(6)

TF0(5)

TR0(4)

I E (3)

I T (2)

IE0(1)

LSB
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


44
Modul Praktikum Interfacing

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).
45
Modul Praktikum Interfacing

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
In te rr up t me ru p ak an fi tu r p en ti ng p ad a s ua tu 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
46
Modul Praktikum Interfacing

prioritas tinggi dan interrupt mana pula yang memiliki prioritas rendah.
Bit-bit pada register IE adalah sebagai berikut.
MSB
EA(7)

(6)

(5)

ES(4)

E T 1 (3)

E X 1 (2)

ET0(1)

LSB
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. Masing-masing


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

Interrupt Luar 0
lEO
Timer 0
TFO
Interrupt Luar 1
IE1
Timer 1
TH
Serial
TI atau RI

Alamat Vektor
Interrupt
3H
BH
13H
1BH
23H

Prioritas
1 (tertinggi)
2
3
4
5 (terendah)

Jika register IE (Interupt Enable) digunakan untuk mengatur interrupt mana


saja yang aktif, maka register IP (Interupt Priority Con trol) digunakan untuk
mengatur prioritas dari interrupt. Bit-bit pada register IP didefinisikan sebagai
berikut.
MSB
(7)

(6)

(5)

PS(4)

P T 1 (3)

P X 1 (2)

PT0(1)

LSB
PX0(0)

47
Modul Praktikum Interfacing

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 ;
;
clr TI
;
reti
;

apakah ada inerupsi serial?


jika ya lompat ke "ya"
jika interupsi pengiriman,hapus TI
kembali
48

Modul Praktikum Interfacing

get_data:
mov a,SBUF
clr RI
mov R1,a
CLR TI
MOV SBUF,a
JNB TI,$
reti

; baca karakter yang diterima


; hapus RI agar bisa menerima lagi
; simpan isi acc di register r1
; cek sampai karakter selesai dikirim

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.

49
Modul Praktikum Interfacing

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

50
Modul Praktikum Interfacing

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.

51
Modul Praktikum Interfacing

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

52
Modul Praktikum Interfacing

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

53
Modul Praktikum Interfacing

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
54

Modul Praktikum Interfacing

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
o

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

InputMode : menentukan tipe data input yang akan dibaca CPU


o

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


55

Modul Praktikum Interfacing

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:
56
Modul Praktikum Interfacing

Komponen VB :
Komponen
Form
MS Comm
CommandButton
Label
TextBox

Properti
Name : Form1
Caption : Led Driver1
Name : MS Comm1
Caption :
Name : Command2
Caption : SHIFT LEFT OFF
Name : Label1
Caption : Karakter Dikirim
Name : Text1.text
Caption : Karakter Dikirim

Subroutin
Private Sub Form_Load()
Private Sub
Command2_Click()

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 :

57
Modul Praktikum Interfacing

C. MENERIMA KARAKTER DARI MIKROKONTROLER


Contoh :
Program pada mikrokontroler :
ORG 00H
58
Modul Praktikum Interfacing

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

59
Modul Praktikum Interfacing

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

60
Modul Praktikum Interfacing

Anda mungkin juga menyukai