H046179595 PDF
H046179595 PDF
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
Pada serial terdapat 4 mode, yaitu mode 0,1,2, dan 3. Kita akan membahas satu
persatu dari mode mode tersebut.
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.
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 ).
1 2 3 4 5
6 7 8 9
Connector FEMALE
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
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
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 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
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!