download

Percobaan 8
INTERFACE MIKROKONTROLER DAN
KOMPUTER SECARA SERIAL
I. Tujuan
1. Memahami komunikasi serial.
2. Memahami cara mengggunakan interrupt serial pada mikrokontroller 8051.
3. Memahami cara kerja transfer data lewat komunikasi serial RS-232 .
4. Mampu membuat serta mengembangkan program bagi transfer data antar
mikrokontroller 8051 dengan Personal Computer.
II . Ruang Lingkup
A . Teori Singkat
Komunikasi serial merupakan komunikasi data dengan pengiriman data
secara satu per satu dengan menggunakan satu jalur kabel data. Sehingga
komunikasi serial hanya menggunakan 2 kabel data yaitu kabel data untuk
pengiriman yang disebut transmit (Tx) dan kabel data untuk penerimaan yang
disebut receive (Rx). Kelebihan dari komunikasi serial adalah jarak pengiriman
dan penerimaan dapat dilakukan dalam jarak yang cukup jauh dibandingan
dengan komunikasi parallel tetapi kekurangannya adalah kecepatan lebih lambat
daripada komunikasi parallel, untuk saat ini sedang dikembangkan teknologi
serial baru yang dinamakan USB (Universal Serial Bus) yang memiliki kecepatan
pengiriman dan penerimaan data lebih cepat disbanding serial biasa.
Beberapa contoh : komunikasi Serial RS-232 dan RS-485.
Berikut ini merupakan gambar rangkaian dari RS-232 dan RS-485 yang
digunakan untuk melakukan komunikasi serial:
0,1µF 0,1µF
5V
Transmit
1 C
1+
0,1µF
6,3 V 3 C
4 C 12+
0,1µF
5 C
2-
TTL CMOS
INPUT
16
V+
2
RO
'1'
RE/DE
5 V To 10 V
V-
A
-10 V
0,1µF
11 T1IN
T1
T1OUT 14
10 T2IN
T2
T2OUT 7
R1OUT
R2OUT
DATA
RS 232
OUTPUT
R2IN
8
DI
DATA
A
'0'
B
0V
DI
NC
RO
NC
Receive
DATA
RO
A
RS 232
INPUT
RO
5V
RE/DE
B
R1IN 13
5K
TTL CMOS
OUTPUT
NC
'0'
5K
A
RE/DE
RE/DE
B
NC
5V
DI
0V
'1'
B
DI
DATA
RS 485
RS 232
Gambar 8.1 Gambar rangkaian RS-232 dan RS-485
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 1 dari 10
AT89C51 mempunyai On Chip Serial Port yang dapat digunakan untuk
komunikasi data serial secara Full Duplex sehingga Port Serial ini masih dapat
menerima data pada saat proses pengiriman data terjadi. Untuk menampung data
yang diterima atau data yang akan dikirimkan, AT89C51 mempunyai sebuah
register yaitu SBUF yang terletak pada alamat 99H di mana register ini berfungsi
sebagai buffer sehingga pada saat mikrokontroler ini membaca data yang pertama
dan data kedua belum diterima secara penuh, maka data ini tidak akan hilang.
Gambar 8.2 Blok Diagram Port Serial
Pada serial terdapat 4 mode, yaitu mode 0,1,2, dan 3. Kita akan membahas satu
persatu dari mode mode tersebut.
Mode serial port :
1. Pada mode 0, Pin TX mengeluarkan shift clock, dan pin RX dapat menerima
maupun mengirim data, dengan format 8 bit data dimulai dengan LSB dulu
yang dikirim. Jadi pada saat dikirim data melalui RX maka sekalian pin TX
mengirimkan signal clock secara berbarengan. Baud ratenya fix yaitu 1/12
frekuensi osilatornya.
2. Pada mode 1, Pin TX berfungsi untuk mengirim data dan RX berfungsi untuk
menerima data, data yang dikirim formatnya 8 bit data dengan LSB dikirim
dahulu, serta 1 start bit( berlogika 0 ) dan 1 stop bit( berlogika 1 ). Baud ratenya
variabel tergantung dari nilai yang ada pada register timer 1 maupun timer 2.
3. Pada mode 2, Pin TX berfungsi untuk mengirim data dan RX untuk menerima
data, format datanya sama dengan mode 1 hanya saja terdapat parity bitnya
sehingga total bit yang terkirim sebanyak 11 bit. Bit paritynya dapat diset
melalui TB8( lihat pada SCON ). Baud ratenya hanya ada 2 pilihan yaitu 1/32
atau 1/64 dari frekuensi osilatornya.
4. Pada mode 3 identik dengan mode 2, hanya saja Baud ratenya variabel
tergantung nilai yang terdapat pada register dari timer 1 dan timer 2.
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 2 dari 10
Cara Menset Mode serial ialah melalui Register SCON :
Dalam coding serial dalam MCS, terdapat 2 konsep yaitu secara polling
maupun secara interrupt. Seperti yang sudah dijelaskan diatas mengenai TI dan RI,
maka dalam menerima data RI akan terset secara hardware sedangkan TI diset pada
saat data hampir selesai dikirim, dan dalam hal transmisi data sangat perlu untuk
“CEK” kondisi TI. Bila TI sudah berlogika 1 berarti data yang ditaruh dalam SBUF
sudah selesai dikirim dan harus diclear secara software( secara program ), sebab
bila tidak dicek apakah TI sudah ‘1’ atau belum maka mungkin saja terjadi SBUF
sudah direload dengan data baru sedangkan data yang lama belum selesai dikirim
sehingga terjadi apa yang disebut dengan data corruption. Maka sebelum mengirim
byte data yang selanjutnya sangatlah perlu untuk mengecek TI dulu.
Bila coding serial dengan konsep polling maka codenya harus terus menerus
mengecek flag TI dan RI, apakah berlogika ‘1’, bila berlogika ‘1’ maka langsung
lompat ke procedure yang bersangkutan, dengan jangan lupa secepatnya mengclear
flag TI atau RI, agar tidak lompat ke int. veltor dari serial. Keuntungan konsep
polling adalah codenya yang simple, tetapi menghabiskan cpu time sebab selalu
mengecek flag TI dan RI terus menerus tanpa dapat melakukan tugas yang lain,
sebab bila melakukan yang lain maka pada saat salah satu flag tersebut menjadi satu
maka akan langsung lompat ke int. vektor serial sehingga program akan menjadi
kacau.
Bila coding serial dengan konsep interrupt, maka program serialnya hanya
ada pada subroutine dari int. serial saja, dimana hanya mengecek oleh flag mana
interrupt serial terpanggil? Oleh TI atau RI? Bila oleh TI maka taruh datanya ke
SBUF TI utk dikirim, dan bila karena RI maka selamatkan datanya ke suatu
variabel dari SBUF RI. Keuntungannya code kita dapat melakukan tugas yang
lainnya, kerugiannya adalah code yang cukup kompleks ( walaupun sebetulnya
masalah kompleks relatif bagi setiap orang ).
Data transfer rate dinyatakan dalam baud rate, yaitu kecepatan perubahan
data per waktu. Cara menset serial serta BAUD yang dibutuhkan hanya cukup
menset register IE, SCON (mengatur mode Serial), TCON, TMOD.
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 3 dari 10
SCON
SM0: Serial Port Mode bit 0, bit Pengatur Mode Serial
SM1: Serial Port Mode bit 1, bit Pengatur Mode Serial
SM2: Serial Port Mode bit 2, bit untuk mengaktifkan komunikasi multiprosesor
pada kondisi set.
REN: Receive Enable, bit untuk mengaktifkan penerimaan data dari Port Serial
pada kondisi set. Bit ini di set dan clear oleh perangkat lunak.
TB8: Transmit bit 8, bit ke 9 yang akan dikirimkan pada mode 2 atau 3. Bit ini
diset dan clear oleh perangkat lunak
RB8: Receive bit 8, bit ke 9 yang diterima pada mode 2 atau 3. Pada Mode 1 bit
ini berfungsi sebagai stop bit.
TI:
Transmit Interrupt Flag, bit yang akan set pada akhir pengiriman karakter.
Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak
RI:
Receive Interrupt Flag, bit yang akan set pada akhir penerimaan karakter.
Bit ini diset oleh perangkat keras dan di clear oleh perangkat lunak
Selain variabel-variabel di atas, masih terdapat sebuah variabel lagi yang
menjadi pengatur baud rate serial yaitu Bit SMOD pada Register PCON. Apabila
bit ini set maka faktor pengali 32 pada formula 3.1 akan berubah menjadi 16. Oleh
karena itu dapat disimpulkan formula untuk baud rate serial untuk Mode 1 dan
Mode 3 adalah:
Mode
Baud Rate
1
0
12
1
2
3
SMOD = 0
f osc
Baud rate =
12 x(256 − TH 1) x32
1
f osc
32
Baud rate =
f osc
12 x(256 − TH 1) x32
f osc
SMOD = 1
f osc
Baud rate =
12 x (256 − TH 1) x16
1
f osc
64
Baud rate =
f osc
12 x (256 − TH 1) x16
Pada serial sebelum menerima maupuin mengirim data, data tersebut
ditampung pada buffer serial atau yang disebut SBUF(serial buffer). Sebetulnya
pada serial MCS terdapat 2 serial buffer dengan nama SBUF. Jika demikian maka
bagaimana caranya MCS dapat membedakan SBUF mana untuk kirim dan untuk
terima? Jawabannya MCS dapat mengetahui SBUF mana yang mau diakses melalui
instruksi dari programnya.
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 4 dari 10
Contoh :
MOV SBUF,A à berarti SBUF transmit
MOV A,SBUF à berarti SBUF receive
Dalam coding serial dalam MCS, terdapat 2 konsep yaitu secara polling maupun
secara interrupt. Seperti yang sudah dijelaskan diatas mengenai TI dan RI, maka
dalam menerima data RI akan terset secara hardware sedangkan TI diset pada saat
data hampir selesai dikirim, dan dalam hal transmisi data sangat perlu untuk “CEK”
kondisi TI. Bila TI sudah berlogika 1 berarti data yang ditaruh dalam SBUF sudah
selesai dikirim dan harus diclear secara software( secara program ), sebab bila tidak
dicek apakah TI sudah ‘1’ atau belum maka mungkin saja terjadi SBUF sudah
direload dengan data baru sedangkan data yang lama belum selesai dikirim
sehingga terjadi apa yang disebut dengan data corruption. Maka sebelum mengirim
byte data yang selanjutnya sangatlah perlu untuk mengecek TI dulu.
Bila coding serial dengan konsep polling maka codenya harus terus menerus
mengecek flag TI dan RI, apakah berlogika ‘1’, bila berlogika ‘1’ maka langsung
lompat ke procedure yang bersangkutan, dengan jangan lupa secepatnya mengclear
flag TI atau RI, agar tidak lompat ke int. veltor dari serial. Keuntungan konsep
polling adalah codenya yang simple, tetapi menghabiskan cpu time sebab selalu
mengecek flag TI dan RI terus menerus tanpa dapat melakukan tugas yang lain,
sebab bila melakukan yang lain maka pada saat salah satu flag tersebut menjadi satu
maka akan langsung lompat ke int. vektor serial sehingga program akan menjadi
kacau.
Bila coding serial dengan konsep interrupt, maka program serialnya hanya
ada pada subroutine dari int. serial saja, dimana hanya mengecek oleh flag mana
interrupt serial terpanggil? Oleh TI atau RI? Bila oleh TI maka taruh datanya ke
SBUF TI utk dikirim, dan bila karena RI maka selamatkan datanya ke suatu
variabel dari SBUF RI. Keuntungannya code kita dapat melakukan tugas yang
lainnya, kerugiannya adalah code yang cukup kompleks ( walaupun sebetulnya
masalah kompleks relatif bagi setiap orang ).
Gambar berikut ini menggambarkan pin-pin konektor serial yang
diperlukan untuk melakukan komunikasi sederhana ke computer :
Tx
Rx
Ground
1
2
6
3
7
4
8
5
9
Connector FEMALE
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 5 dari 10
B . Daftar Alat
1. Modul Aplikasi & Interfacing
kode :
III . Referensi
• Manual Book Serial Interfacing INex CITS NX-2000
• Anonim, Architectural Overview of The MCS-51 Family of Microcontrollers,
Intel Inc.
• Hall, Douglas V. (1991), Microprocessors And Interfacing : Programming and
Hardware. McGraw-Hill Inc.
• http://lab.binus.ac.id/pk/databook/atmel/89c51.pdf
• http://lab.binus.ac.id/pk/download/aplikasi/Timer.pdf
• http://lab.binus.ac.id/pk/download/aplikasi/serial.pdf
• http://www.lammertbies.nl/comm/info/RS-232_uart.html
• http://www.maxim-ic.com/MAX232.pdf
• http://www.maxim-ic.com/appnotes.cfm/appnote_number/2020
IV . Urutan Instruksi Kerja
A . Prosedur
Port MCS Sebagai Output
• Hubungkan Modul 8051 dengan Modul Led Display Board dengan
menggunakan data bus seperti gambar 8.1 di bawah ini
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 6 dari 10
Gambar 8.3 Koneksi antara modul 8051 dengan Led Display Board
•
Ketiklah program (Assembly) dibawah ini pada Notepad :
Program mengirim sebuah karakter dengan Bahasa Assembler 51
DATA_TX
EQU 30H
DATA_RX
EQU 31H
BR
EQU 0FDH
FLAG_RX
EQU 20H.0
TXREADY
EQU 20H.1
ORG 00H
AJMP START
ORG 23H
AJMP SERIAL
ORG 40H
START:
MOV SP,#60H
MOV TMOD,#20H
MOV SCON,#50H
MOV TL1,#BR
MOV TH1,#BR
SETB TR1
SETB ES
SETB EA
CLR FLAG_RX
SETB TXREADY
LOOPING:
JNB FLAG_RX,TIDAK_ADA
ADA:
CLR FLAG_RX
MOV A,DATA_RX
MOV DATA_TX,A
ACALL SEND_BYTE
TIDAK_ADA:
AJMP LOOPING
SEND_BYTE:
JNB
MOV
MOV
CLR
RET
TXREADY,$
A,DATA_TX
SBUF,A
TXREADY
SERIAL:
PUSH ACC
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 7 dari 10
KIRIM:
TERIMA:
DONE:
JB TI,KIRIM
JB RI,TERIMA
CLR TI
SETB TXREADY
AJMP DONE
CLR RI
MOV A,SBUF
MOV DATA_RX,A
SETB FLAG_RX
POP ACC
RETI
END
Program mengirim sebuah karakter dengan Bahasa C 51
#include <at89x52.h>
#define BR
0xFD //setting baudrate
char Data_Rx;
char Data_Tx;
bit flag_Rx;
bit TxReady;
void initSerial() {
SCON = 0x50;
TMOD = 0x20;
TH1 = BR;
TL1 = BR;
TR1 = 1;
ES
= 1;
EA
= 1;
TxReady = 1;
flag_Rx = 0;
}
void int_Serial()
if(RI) {
RI = 0;
Data_Rx
flag_Rx
}
if(TI) {
TI = 0;
TxReady
}
}
interrupt 4 {
= SBUF;
= 1;
= 1;
void sendByte() {
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 8 dari 10
while(!TxReady);
SBUF = Data_Tx;
TxReady = 0;
}
void main() {
initSerial();
while(1) {
if(flag_Rx)
{
flag_Rx = 0;
Data_Tx = Data_Rx;
sendByte();
}
}
}
• Compile-lah dan write dengan WINISP.EXE ke dalam IC
• Perhatikanlah apa yang terjadi.
Tugas :
Buatlah program komunikasi serial antara PC dan MCS-52 agar PC dapat menyalakan
8 buah led. Status dari nyala Led ditampilkan pada program Microsoft Visual Basic 6.0
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 9 dari 10
B.
Tugas Laporan
1. Komunikasi Serial MCS dan PC
2. Keuntungan/kerugian menggunakan komunikasi serial
3. Perhitungan Baud Rate
4. Flowchart semua program
5. Kesimpulan
C.
Tugas Pendahuluan
1. Menurut anda apa manfaat komunikasi serial pada MCS-52?
2. Apa yang dimaksud dengan baud rate pada komunikasi serial?
3. Mengapa IC MAX232 diperlukan pada modul praktikum?
4. Sebutkan dan jelaskan mode-mode serial yang terdapat pada MCS-52!
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing
Percobaan 8
UPT Perangkat Keras
Halaman : 10 dari 10