DISUSUN OLEH:
UNIVERSITAS SRIWIJAYA
MODUL I
1
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.
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)
Table 1.
Nomor Pin Nama Sinyal Arah Register Inverse
(DB25)
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
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:
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.
MODUL II
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.
Listing Program :
Private Sub Form_Load()
If Not IsDriverInstalled Then
MsgBox "error", vbOKOnly
Unload Me
End If
End Sub
Gambar 2.2 Tampilan Program menghidupkan dan mematikan LED per bit
Listing Program :
Private Sub Form_Load()
If Not IsDriverInstalled Then
MsgBox "error", vbOKOnly
Unload Me
End If 9
Modul PraktikumPortOut
Interfacing &H378, &HFF
End Sub
Private Sub keluar_Click()
Unload Me
End Sub
12
Listing Program :
Private Sub Form_Load()
If Not IsDriverInstalled Then
MsgBox "error", vbOKOnly
Unload Me
End If
Private&H378,
PortOut Sub Command1_Click()
&HFF
LeftPortShift
End Sub &H378, 0
End Sub
Private Sub Command2_Click()
LeftPortShift &H378, 1
End Sub
Private Sub Command3_Click()
RightPortShift &H378, 0
End Sub 13
Private Sub Command4_Click()
Modul Praktikum Interfacing
RightPortShift &H378, 1
End Sub
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
14
Tabel 3.1
Register S7 S6 S5 S4 S3 S2 S1 S0
Pin 11 10 12 13 15 Tidak terhubung ke
Inverse ya tidak tidak tidak tidak Pin di port paralel
Praktikum:
1. Buat Rangkaian seperti gambar 3.1
15
Listing Program :
Private Sub Timer1_Timer()
Dim k As Byte
k = PortIn(&H379)
Label1.Caption = k
End Sub
16
Listing program :
17
a = GetPortBit(&H379, 3)
If a = True Then
Shape1.BackColor = vbBlack
Label1.Caption = "OFF"
Else
Shape1.BackColor = vbYellow
Label1.Caption = "ON"
End If
18
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
19
Tabel 3.3
Register C7 C6 C5 C4 C3 C2 C1 C0
Pin Tidak terhubung ke Pin di port 17 16 14 1
Inverse paralel ya tidak ya ya
Praktikum:
4. Buat Rangkaian seperti gambar 3.4
20
21
22
Listing program :
23
a = GetPortBit(&H37A, 0)
If a = True Then
Shape1.BackColor = vbYellow
Label1.Caption = "ON"
Else
Shape1.BackColor = vbBlack
Label1.Caption = "OFF"
End If
24
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
25
26
1 1 0 0 0 1 0 1 1 0 0 1 1
Start Stop
Idle 8 Data Bit
Bit 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
27
Tabel 4.1 Konfigurasi pin dan nama sinyal konektor serial DB-9
Nomor Nama
Direction Keterangan
Pin Sinyal
Data Carrier Detect /
1 DCD In
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
28
Properti MSComm
Jumlah properti pada MSComm sangat banyak sehingga kita tidak akan
membahas seluruhnya. Kita hanya akan mem¬bahas bcberapa properti yang perlu
kita ketahui sebelum kita dapat menggunakan MSComm. Properti-properti yang
sering dipakai adalah sebagai berikut:
30
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
31
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.
32
1. Konfigurasi Pin
Mikrokontroler AT89S52 mempunyai 40 pin dengan catu daya tunggal 5 Volt. Ke-40
pin tersebut digambarkan seperti pada gambar 5.1
33
34
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 P0
P3
P0
P1
P2
P3
RS 232 Buffer
35
JP1
Gambar 5.3 Modul AT89S52
Memprogram IC AT89S52
36
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
37
DELAY:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0AFH
SETB TR0
JNB TF0,$
CLR TR0
CLR TFO
38
DELAY:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0AFH
SETB TR0
39
40
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)
41
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
42
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
43
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).
44
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) I E (3) I T (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
45
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
46
5. Interupt
In te rr up t me ru pa ka n 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
47
MSB LSB
EA(7) (6) (5) ES(4) E T 1 (3) E X 1 (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
Alamat Vektor
Nama Interrupt Flag Prioritas
Interrupt
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)
48
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
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
;--------------------------------------------------------
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
50
4. Akan Tampil Jendela Connection Description, Ketikkan Nama Koneksi dan pilih
icon untuk Koneksi, Misal “Test1”
51
6. Pada Jendela COM Properties, isikan kolom-kolom sesuai dengan setting pada
mikrokontroler.
52
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).
53
54
55
56
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
57
Listing Program :
TUGAS :
Buatlah Program untuk menyalakan dan mematikan 8 buah Led dengan menggunakan
komunikasi serial Tampilan program seperti gamabar di bawah ini :
58
ORG 00H
59
;--------------------------------------------------------
;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
60
61