komunikasi serial
DESCRIPTION
documentTRANSCRIPT
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Jurusan Teknik ElektroFakultas Teknik Industri
MikroprosesorTemu 10:
Komunikasi Serial
Oleh: Dipl.Ing Asril Jarin, MSc
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 1
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Points
Dalam modul ini akan dibahas teori tentang komunikasi serial dan cara
pengaplikasiannya.
1. Teori Dasar
2. Komunikasi Serial 8051
3. Setting Mode Komunikasi 8051
4. Setting untuk menentukan Baudrate
5. Mengirim dan Menerima data Baudrate
6. Menghubungkan TxD dan RxD dengan Konektor
7. Menghubungkan Prosesor 8051 dengan PC
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 2
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Komunikasi Serial
1. Teori Dasar
Komunikasi Serial:
“Komunikasi serial adalah komunikasi yang mengantarkan data digital secara bit per
bit secara bergantian melalui media interface serial”, contoh: modem, mouse dll
Pengiriman data melalui interface serial dapat dilakukan secara bit per bit (setiap
satu step waktuà 1 bit) atau juga dalam satuan baud dimana 1 baud tidak mesti
senilai dengan 1 bit per second, tergantung besaran data untuk setiap kali clock
transfer.
Kerugian Komunikasi Paralel
Penggunaan kabel yang lebih pendek, sebab keterbatasan proses transfer
Membutuhkan banyak kabel penghantar
Konsekuensi terhadap Komunikasi Serial
Tingginya tingkat keamanan terhadap gangguan karena tingginya ayunan
tegangan (dengan jangkauan max. 50 Volt) à Sehingga dapat direalisasikan
dengan kabel yang lebih panjang.
Membutuhkan sedikit kabel penghantar (misalkan dg tiga utas kabel: Tx, Rx
dan Ground)
Membutuhkan penyesuaian protokol komunikasi data terutama untuk
sinkronisasi antara pengirim dan penerima.
Perbedaan diantara Komunikasi Serial
Perbedaan data rate (jumlah data per waktu)
Jumlah dan jenis penghantar (min. 1 kabel koaxial)
Penggunaan protokol komunikasi
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 3
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Metode Sinkronisasi
Problem utama komunikasi serial adalah metode sinkronisasi, yakni
pengendalian clock pengirim dan penerima. Kedua clok seharusnya berada
pada frekuensi yang sama, agar penerima dapat mengambil data tepat pada
waktunya.
Tujuan sinkronisasi adalah menghindari keterlambatan dan kesalahan
pengambilan data sehingga perlu dilakukan penyesuaian clok penerima
dengan clok pengirim.
Komunikasi Sinkron
Ditandai dg: Clok penerima disetting hanya pada awal komunikasi clok
pengirim.
Terdapat dua bentuk realisasi:
1. Menyediakan 3 penghantar ( untuk data yang dikirim, data yang
diterima dan external clok). Dengan bantuan penghantar clok,
penerima dapat mengendalikan proses pengambilan data (sampling
data).
2. Interface serial terdiri hanya satu penghantar atau pasangan
penghantar, dimana diawal paket data dikirimkan bit preamble sebagai
bit sinkronisasi. Clok penerima akan mengalami settingan selama bit
preamble berjalan.
Komunikasi Asynchrone (Tidak Sinkron)
Ditandai dg: Dimana sinkronisasi clok pengirim dan penerima terjadi pada
awal dari setiap simbol data yang dikirim.
Realisasinya : sebelum bits data terdapat satu atau dua startbit. Starbit ini
menentukan kapan penerima mengambil data, dan ini berjalan dalam
sebagian dari periode clok.
Komunikasi Asynchrone mengirimkan data secara simbol per simbol, dimana
disini ditandai acknowledge untuk setiap penyelesaian masing-masing simbol.
Format Data Komunikasi Asynchrone tidak standard, bervariasi tergantung
pada:
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 4
Date 3-Jun-08, Semester 6 –Progr.Karyawan
1. Genap atau ganjilnya parity (parity menandakan genap atau ganjilnya
jumlah dari bit ‘1’ )
2. Satu atau dua stopbits
Komunikasi Asynchrone pada RS -232 (mis. 1 simbol = 1 Byte)
Gambar diatas memperlihatkan bentuk gelombang komunikasi serial dengan format
8N1, yaitu 8-bit data, tanpa parity, 1 stop bit.
Pada keadaan idle atau menganggur (idle), jalur RS-232 ditandai dengan
mark state atau Logika HIGH.
Pengiriman data diawali dengan start bit yang berlogika 0 atau LOW,
berikutnya data dikirimkan bit demi bit mulai dari LSB (Least Significant Bit)
atau bit ke-0.
Pengiriman setiap byte diakhiri dengan stop bit yang berlogika HIGH.
Gambar ini memperlihatkan kondisi LOW setelah stop bit, ini adalah start bit yang
menandakan data berikutnya akan dikirimkan. Jika tidak ada lagi data yang ingin
dikirim, maka jalur transmisi ini akan dibiarkan dalam keadaan HIGH.
Ada yang disebut ‘Break Signal’, yaitu keadaan LOW yang lamanya cukup untuk
mengirimkan 8-bit data. Jika pengirim menyebabkan jalur komunikasi dalam keadaan
seperti ini, penerima akan menganggap ini adalah ‘break signal’ atau sinyal rusak.
Data yang dikirimkan dengan cara seperti pada gambar diatas disebut data yang
terbingkai (to be framed) oleh start dan stop bit. Jika stop bit dalam keadaan
LOW, berarti telah terjadi framing error. Biasanya hal ini terjadi karena perbedaan
kecepatan komunikasi antara pengirim dengan penerima.
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 5
Date 3-Jun-08, Semester 6 –Progr.Karyawan
UART pada 8051
UART: Universal Asynchronous Receiver Transmitter.
Fungsi UART membangun komunikasi aliran data digital secara serial dalam frame
yang ditetapkan. Frame ini terdiri dari Start Bit, 5 s/d 9 Bits Data, optional memiliki
bit Parity yang berperan untuk mendeteksi kesalahan transfer data, dan Stop Bit.
UART juga merupakan salah satu sarana yang disediakan oleh Intel 8051, yang
melayani pengiriman dan penerimaan data dengan bantuan register SBUF.
Dengan adanya UART, programer hanya butuh membaca data dari register SBUF
tanpa harus susah payah mengatur pengiriman data bit demi bit dengan baudrate
tertentu.
Baudrate : besaran kecepatan komunikasi data untuk setiap kali step (clok) pengiriman. Satuannya adalah baud atau symbol/second
Sebelum komunikasi berlangsung, harus dilakukan dulu inisialisasi register-register
tertentu pada SFR yang terkait dengan komunikasi serial termasuk penentuan
baudrate. Saat proses pengiriman maupun penerimaan data sedang berlangsung,
kosong dan penuhnya SBUF akan diberitakan melalui bit indikator TI dan RI.
Pemantauan TI dan RI dapat dilakukan dengan atau tanpa melibatkan sistem
interupsi.
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 6
Date 3-Jun-08, Semester 6 –Progr.Karyawan
2. Setting Mode Komunikasi SerialSebelum komunikasi dilakukan, programer harus melakukan setting-an register:
SCON à apabila komunikasi yang dilakukan secara sinkron
SCON serta TMOD (utk settingan Timer Mode), TH1, dan SMOD (salah satu
bit register PCON) à apabila komunikasi dilakukan secara asynchrone
Isi Register SCON
Bit ke- Nama bit Address Explanation of Function
7 SM0 9F Serial port mode bit 0
6 SM1 9E Serial port mode bit 1.
5 SM2 9D Multiprocessor Communications Enable
4 REN 9C Receiver Enable.
3 TB8 9B Transmit bit 8. The 9th bit to transmit in mode 2 and 3.
2 RB8 9A Receive bit 8. The 9th bit received in mode 2 and 3.
1 TI 99 Transmit Flag. Set when a byte has been completely transmitted.
0 RI 98 Receive Flag. Set when a byte has been completely received.
Sebagai tambahannya, tabel diatas berisi mode komunikasi serial yang sesuai
dengan keadaan bit-bit SM0 dan SM1.
Mode komunikasi serial berdasarkan bit pada SM0 dan SM1
SM0 SM1 Serial Mode Explanation Baud Rate
0 0 0 8-bit Shift Register Oscillator / 12
0 1 1 8-bit UART Terkait dengan Timer 1
1 0 2 9-bit UART Oscillator / 32 or / 64
1 1 3 9-bit UART Terkait dengan Timer 1
Bit ke-7 sampai bit ke-4 pada SCON merupakan bit konfigurasi. Seperti tampak pada
Tabel 10.2, setting bit SM0 dan bit SM1 memungkinkan kita memilih 1 dari 4 mode
komunikasi. Mode 0 berarti komunikasi asinkron dengan kecepatan transfer 1/12 kali
frekuensi osilator. Jika kita menggunakan osilator 12 MHZ, berarti kecepatan
transfernya 1 Mbaud. Mode 1 adalah mode yang palign sering dipilih. Pada mode ini,
komunikasi dilakukan secara asinkron dengan baudrate ditentukan berdasarkan
setting pada Timer 1. Jika mode 1 ini dipilih, Timer 1 harus diset pada mode 8-bit
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 7
Date 3-Jun-08, Semester 6 –Progr.Karyawan
autoreload. Pengisian register TH1 dan bit SMOD pada register PCON menentukan
baudrate yang akan berlaku pada komunikasi serial tipe ini.
Mode 2 dan 3 adalah mode komunikasi serial dengan bingkai atau frame berukuran
9-bit. Karena 1-byte data hanya terdiri dari 8-bit, bit kesembilan diambil dari bit TB8
atau RB8 pada register SCON. Bit TB8 adalah bit yang ditambahkan ketika dilakukan
transmit atau pengiriman data, sedangkan bit RB8 ditambahkan ketika prosesor
sedanga menerima atau receive data.
Bit SM2 hanya digunakan untuk komunikasi multiprosesor. Biasanya, jika prosesor
sedang berperan sebagai penerima data, saat SBUF penuh, bit RI akan berubah
menjadi HIGH. Tetapi jika SM2 diset HIGH, maka perubahan RI menjadi HIGH ini
bergantung pada bit ke-9 yang diterima, jika bit ke-9 ini HIGH, maka RI juga ikut
menjadi HIGH. Meskipun SBUF telah penuh, jika bit ke-9 LOW, maka bit indikator RI
tidak akan berubah menjadi HIGH. Hal seperti ini berguna pada aplikasi tertentu
yang melibatkan beberapa prosesor untuk berkomunikasi antar mereka. Dengan
kata lain setting SM2 bisa membuat prosesor bersangkutan menjadi tuli, tidak
menghiraukan datangnya data pada SBUF karena memang data tersebut bukan
untuknya tetapi untuk prosesor lainnya yang ada pada jalur komunikasi serial yang
sama.
Bit REN atau Receive Enable diset jika kita ingin komunikasi berlangsung 2 arah,
prosesor juga dapat menerima data selain dapat mengirim data melalui saluran
serial. Jika bit ini diset LOW, maka prosesor menjadi tuli, sama sekali tidak dapat
menerima data.
Empat bit LSB pada register SCON merupakan bit-bit operasional. Bit TB8 dan bit
RB8 terkait dengan komunikasi serial mode 2 dan 3 seperti telah dijelaskan
sebelumnya. Sedangkan bit RI dan TI merupakan bit indikator yang menyatakan
SBUF telah dalam keadaan penuh atau kosong. Jika prosesor mengirim data, data
tsb cukup diletakkan di register SBUF, pengiriman bit demi bit dilakukan oleh internal
USART. Saat SBUF kosong karena semua bit telah dikirimkan ke saluran serial TxD,
maka bit indikator TI (transmit interrupt) akan berubah menjadi HIGH. Sedangkan bit
indikator RI bekerja sebaliknya. Ketika prosesor sedang menerima data bit demi bit
dari saluran serial RxD, bit indikator RI (receive interrupt) akan berubah menjadi
HIGH saat SBUF telah dipenuhi 8-bit data.
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 8
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Perlu dicatat bahwa sebenarnya bit TI diset HIGH pada pertengahan pengiriman stop
bit, sedangkan bit RI diset pada pertengahan penerimaan stop bit. Untuk komunikasi
dengan standard RS-485 programmer tidak boleh melakukan disable saluran
komunikasi terlalu cepat, ia harus menunggu paling tidak selama setengah periode
stop bit setelah RI atau TI berubah menjadi HIGH, jika tidak, maka akan terjadi
transmission error.
3. Setting untuk menentukan BaudrateSeperti tampak pada tabel sebelumnya penentuan kondisi bit SM0 dan SM1
berakibat pada pilihan 1 dari 4 mode komunikasi serial. Mode 0 dan 2 menggunakan
baudrate yang hanya bergantung pada frekuensi osilator. Pada mode 0, hanya satu
macam baudrate yang diizinkan, yaitu frekuensi kristal. Jika kita menggunaka
kristal 11.0592 Mhz, baudrate untuk mode 0 adalah 921600 baud. Untuk mode 2,
disediakan 2 pilihan baudrate, yaitu atau kali frekuensi kristal, bergantung
pada kondisi bit SMOD pada register PCON. Jika SMOD diset HIGH, maka baudrate
sama dengan kali frekuensi kristal. Jika frekuensi kristal 11.0592 Mhz dan SMOD
diset LOW, maka baudrate untuk mode 2 adalah 172800 baud.
Untuk mode 1 dan 3, penentuan baudrate harus melibatkan Timer 1. Timer 1 harus
digunakan dengan mode 8-bit autoreload dan pengisian TH1 harus disesuaikan
dengan baudrate yang diinginkan. Rumus untuk menentukan isi TH1 terkait dengan
budrate yang diinginkan adalah sebagai berikut.
, jika bit SMOD pada register PCON diset LOW.
, jika bit SMOD = HIGH.
Misalnya, jika kita menggunakan kristal 11.0592 Mhz, untuk memperoleh baudrate
19200 baud, TH1 harus diisi dengan angka berikut ini,
TH1 = 256 - ((f / 384) / Baud)
TH1 = 256 - ((11059200 / 384) / 19200)
TH1 = 256 - ((28,799) / 19200)
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 9
Date 3-Jun-08, Semester 6 –Progr.Karyawan
TH1 = 256 - 1.5 = 254.5
Tetapi karena TH1 harus diisi dengan bilangan integer, maka kita harus memilih
pembulatan dari 254.5 menjadi 254 atau 255. Jika kita pilih TH1 = 254, maka
baudrate yang akan kita peroleh adalah 14400 baud, sedangkan jika kita pilih TH1 =
255, maka baudratenya menjadi 28800 baud. Tentu saja ini menyulitkan kita. Untuk
mengatasinya, kita dapat memanfaatkan bit SMOD pada register PCON. Jika SMOD
diset HIGH, maka perhitungan TH1 menjadi seperti berikut ini,
TH1 = 256 - ((f / 192) / Baud)
TH1 = 256 - ((11059200 / 192) / 19200)
TH1 = 256 - ((57699) / 19200)
TH1 = 256 - 3 = 253
Karena yang diperoleh adalah bilangan integer, yaitu 253, maka baudrate yang kita
peroleh akan sama dengan 19200 baud.
Secara ringkas, untuk memperoleh baudrate 19200 baud, kita harus melakukan
langkah-langkah berikut ini,
1. Pilih komunikasi serial mode 1 atau 3.
2. Pilih mode 2 atau 8-bit autoreload untuk Timer 1.
3. Isi register TH1 dengan bilangan 253.
4. Set bit SMOD pada register PCON menjadi HIGH.
4. Mengirim dan Menerima Data melalui saluran SerialSecara ringkas, pengiriman data cukup dilakukan dengan mengisi register SBUF
dengan data yang akan dikirimkan, byte selanjutnya dikirim ketika bit TI berubah
menjadi HIGH. Sedangkan penerimaan ada cukup dilakukan dengan mengambil
data dari SBUF setelah bit RI menjadi HIGH.
Berikut ini adalah contoh potongan program tanpa interupsi untuk mengirimkan 8-
byte data dari RAM mulai alamat 30H melalui saluran serial TxD dengan kecepatan
transfer 19200 baud. Frekuensi kristal yang digunakan harus 11.0592 MHz.
$MOD51DSEGORG 30H
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 10
Date 3-Jun-08, Semester 6 –Progr.Karyawan
Buffer: DS 10 ;pesan tempat 10-byte pada RAM mulai 30HLoop: DS 1 ;sebagai counter pengulangan
CSEGORG 0HLJMP STARTORG 30HSTART:MOV SCON,#01010000BMOV TMOD,#00100001BMOV PCON,#10000000BMOV TH1,#253MOV TL1,#253SETB TR1
MOV R1,#bufferMOV Loop,#8Ulang:CLR TIMOV SBUF,@R1 ;copy data dari RAM internal ke SBUFJNB TI,$INC R1DJNZ Loop,ulang
END
Jika kita ingin mengambil 8-byte data dari saluran serial RxD kemudian
meletakkannya di RAM mulai alamat 30H, maka potongan programnya sebagai
berikut,
$MOD51DSEGORG 30HBuffer: DS 10 ;pesan tempat 10-byte pada RAM mulai 30HLoop: DS 1 ;sebagai counter pengulangan
CSEGORG 0HLJMP STARTORG 30HSTART:MOV SCON,#01010000BMOV TMOD,#00100001BMOV PCON,#10000000BMOV TH1,#253MOV TL1,#253SETB TR1
MOV R1,#bufferMOV Loop,#8Ulang:JNB RI,$MOV @R1,SBUF ;copy data dari SBUF ke RAM internalCLR RIINC R1
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 11
Date 3-Jun-08, Semester 6 –Progr.Karyawan
DJNZ Loop,ulang
END
5. Menghubungkan pin TxD dan RxD dengan konektor DB9.Untuk melakukan komunikasi serial dengan standar RS-232, harus dilakukan
penyesuaian level sinyal dari level TTL menjadi level RS-232 menggunakan IC
tertentu, misalnya DS 275 atau MAX232. Gambar 5.1. di bawah ini merupakan
contoh penggunaan IC MAX232 untuk menyesuaikan tegangan dari prosesor
dengan tegangan standar RS-232 yang melalui konektor DB9. Pin TxD dari prosesor
dihubungkan dengan pin T1IN pada MAX232, sedangkan pin RxD dari prosesor
dihubungkan dengan pin R1OUT pada MAX232.
Gambar 5.1. Contoh penggunaan IC pengubah level sinyal.
Gambar 5.2. memperlihatkan contoh sambungan prosesor AT89C2051 dengan
konektor DB9. Karena prosesor terhubung juga dengan driver stepper motor, maka
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 12
Date 3-Jun-08, Semester 6 –Progr.Karyawan
dapat dibuat program untuk memungkinkan pengendalian stepper tersebut melalui
saluran serial. Informasi dapat berasal dari PC maupun alat lainnya seperti
handphone.
Gambar 5.2. Contoh sambungan antara DB9 dengan prosesor AT89C2051.
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 13
Date 3-Jun-08, Semester 6 –Progr.Karyawan
6. Menghubungkan prosesor Intel 8051 dengan Personal Computer.Berikut ini adalah contoh potongan program yang menggunakan interupsi untuk
komunikasi anta prosesor Intel 8051 dengan sebuah Personal Computer melalui
konektor DB9. Gambar 6.1. memperlihatkan software yang digunakan untuk
komunikasi serial pada PC, sedangkan gambar 6.2. adalah contoh setting format
data dan baudrate yang diinginkan.
Gambar 6.1. Penggunaan program Hyper Terminal pada Windows XP.
Gambar 6.2. Penentuan konektor DB9 (kiri) dan baudrate (kanan)
Untuk menerima data dari PC, prosesor Intel 8051 harus diisi dengan program
penerimaan data dari PC seperti tampak pada listing berikut ini,
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 14
Date 3-Jun-08, Semester 6 –Progr.Karyawan
PENERIMAAN DATA DARI PC
$MOD51
ORG 000H
LJMP START ;alamat awal program
ORG 023H ;alamat awal ISR untuk Komunikasi Serial
LJMP SERIALKOM
START: MOV SCON,#50H
MOV TMOD,#0010000B
MOV TL1,#0FDH ;baud rate 9600 bps
MOV TH1,#0FDH
MOV PCON,#00H
SETB TR1
SETB ES
SETB EA
SJMP $
SERIALKOM: CLR RI
MOV A,SBUF
MOV P1,A
RETI
END
PENGIRIMAN DATA KE PC
$MOD51
ORG 000H
LJMP START ;alamat awal program
ORG 023H ;alamat awal ISR untuk Komunikasi Serial
LJMP SERIALKOM
START: CLR ET1
MOV SCON,#40H
MOV TMOD,#0010000B
MOV TL1,#0FDH ;baud rate 9600 bps
MOV TH1,#0FDH
MOV PCON,#80H
SETB TR1
SETB ES
SETB EA
MOV A,#’1’ ;kode ASCII untuk angka ‘1’
CLR TI
MOV SBUF,A
SJMP $
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 15
Date 3-Jun-08, Semester 6 –Progr.Karyawan
SERIALKOM: CLR TI
MOV SBUF,A
CJNE A,#’9’,PLUS
MOV A,#’1’
SJMP EXIT
PLUS: INC A
EXIT: RETI
END
PENERIMAAN DAN PENGIRIMAN DATA.
Program ini memungkinkan prosesor Intel 8051 menerima data dari PC, kemudian
langsung mengembalikannya ke PC.
$MOD51
ORG 000H
LJMP START ;alamat awal program
ORG 023H ;alamat awal ISR untuk Komunikasi Serial
LJMP SERIALKOM
START: CLR ET1
MOV SCON,#50H
MOV TMOD,#0010000B
MOV TL1,#0FDH ;baud rate 9600 bps
MOV TH1,#0FDH
MOV PCON,#00H
SETB TR1
SETB ES
SETB EA
SJMP $
SERIALKOM: CLR RI
MOV A,SBUF
CLR TI
MOV SBUF,A
JNB TI,$
CLR TI
RETI
END
PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARIN
MIKROPROSESOR 16
Instruction
Decoder
ClockInternal Bus
Bus Kontrol
Bus DataBus
Alamat Bus
Interface
Unit Pengendalia
n
Unit Pengoperasi
an
PC(Program Counter)
InstruksiInterpreter
Kontrol dan
ALUAritmetik
Logic Unit
RegisterLokal