Upload
doandat
View
221
Download
0
Embed Size (px)
Citation preview
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