Anda di halaman 1dari 10

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,1F 0,1F
5V Transmit
1 C 16 V+ 2 DATA
0,1F 1+ NC RO RO
5 V To 10 V 5V
6,3 V 3 C A A
4 C 1- V- -10 V '1' RE/DE RE/DE '0'
2+
0,1F 0,1F B B
5 C 0V
2- DI DI NC
DATA
11 T1IN T1 T1OUT 14
RS 232
T2 Receive
10 T2IN T2OUT 7 OUTPUT
TTL CMOS DATA
RO RO NC
INPUT R1OUT 5V
R1IN 13 A A
'0' RE/DE RE/DE '1'
5K RS 232
B B
INPUT 0V
TTL CMOS R2OUT R2IN NC DI DI
8 DATA
OUTPUT
5K RS 485

RS 232

Gambar 8.1 Gambar rangkaian RS-232 dan RS-485


Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing UPT Perangkat Keras
Percobaan 8 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 UPT Perangkat Keras
Percobaan 8 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 UPT Perangkat Keras


Percobaan 8 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
0 1
f osc
12
1 SMOD = 0 SMOD = 1
f osc f osc
Baud rate = Baud rate =
12 x(256 TH 1) x32 12 x (256 TH 1) x16
2 1 1
f osc f osc
32 64
3 f osc f osc
Baud rate = Baud rate =
12 x(256 TH 1) x32 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 UPT Perangkat Keras


Percobaan 8 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 3 4 5

6 7 8 9

Connector FEMALE

Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing UPT Perangkat Keras


Percobaan 8 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 UPT Perangkat Keras


Percobaan 8 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 TXREADY,$
MOV A,DATA_TX
MOV SBUF,A
CLR TXREADY
RET

SERIAL:
PUSH ACC
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing UPT Perangkat Keras
Percobaan 8 Halaman : 7 dari 10
JB TI,KIRIM
JB RI,TERIMA
KIRIM: CLR TI
SETB TXREADY
AJMP DONE
TERIMA: CLR RI
MOV A,SBUF
MOV DATA_RX,A
SETB FLAG_RX
DONE: 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() interrupt 4 {


if(RI) {
RI = 0;
Data_Rx = SBUF;
flag_Rx = 1;
}
if(TI) {
TI = 0;
TxReady = 1;
}
}

void sendByte() {
Pedoman Praktikum Aplikasi Mikroprosesor & Interfacing UPT Perangkat Keras
Percobaan 8 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 UPT Perangkat Keras


Percobaan 8 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 UPT Perangkat Keras


Percobaan 8 Halaman : 10 dari 10

Anda mungkin juga menyukai