temu 10 komunikasi serial

22
Date 3-Jun-08, Semester 6 –Progr.Karyawan Jurusan Teknik Elektro Fakultas Teknik Industri Mikroprosesor Temu 10: Komunikasi Serial PUSAT PENGEMBANGAN BAHAN AJAR-UMB SRIL JARIN MIKROPROSESOR 1

Upload: sugiantara

Post on 16-Nov-2015

46 views

Category:

Documents


1 download

DESCRIPTION

komunikasi

TRANSCRIPT

Jurusan Teknik Elektro

Date 3-Jun-08, Semester 6 Progr.Karyawan

Jurusan Teknik Elektro

Fakultas Teknik Industri

Mikroprosesor

Temu 10:

Komunikasi SerialOleh: Dipl.Ing Asril Jarin, MScPointsDalam modul ini akan dibahas teori tentang komunikasi serial dan cara pengaplikasiannya.

1. Teori Dasar2. Komunikasi Serial 80513. Setting Mode Komunikasi 80514. Setting untuk menentukan Baudrate5. Mengirim dan Menerima data Baudrate6. Menghubungkan TxD dan RxD dengan Konektor 7. Menghubungkan Prosesor 8051 dengan PCKomunikasi Serial1. Teori DasarKomunikasi 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

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:

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.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.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 bitAddressExplanation of Function

7SM09FSerial port mode bit 0

6SM19ESerial port mode bit 1.

5SM29DMultiprocessor Communications Enable

4REN9CReceiver Enable.

3TB89BTransmit bit 8. The 9th bit to transmit in mode 2 and 3.

2RB89AReceive bit 8. The 9th bit received in mode 2 and 3.

1TI99Transmit Flag. Set when a byte has been completely transmitted.

0RI98Receive 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

SM0SM1Serial ModeExplanation Baud Rate

0008-bit Shift Register Oscillator / 12

0118-bit UART Terkait dengan Timer 1

1029-bit UARTOscillator / 32 or / 64

1139-bit UARTTerkait 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 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.

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)

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 Serial

Secara 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.

$MOD51

DSEG

ORG 30H

Buffer:DS10;pesan tempat 10-byte pada RAM mulai 30H

Loop:

DS1;sebagai counter pengulangan

CSEG

ORG 0H

LJMPSTART

ORG 30H

START:

MOVSCON,#01010000B

MOVTMOD,#00100001B

MOVPCON,#10000000B

MOVTH1,#253

MOVTL1,#253

SETBTR1

MOVR1,#buffer

MOVLoop,#8

Ulang:

CLRTI

MOVSBUF,@R1

;copy data dari RAM internal ke SBUF

JNBTI,$

INCR1

DJNZLoop,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,

$MOD51

DSEG

ORG 30H

Buffer:DS10;pesan tempat 10-byte pada RAM mulai 30H

Loop:

DS1;sebagai counter pengulangan

CSEG

ORG 0H

LJMPSTART

ORG 30H

START:

MOVSCON,#01010000B

MOVTMOD,#00100001B

MOVPCON,#10000000B

MOVTH1,#253

MOVTL1,#253

SETBTR1

MOVR1,#buffer

MOVLoop,#8

Ulang:

JNBRI,$

MOV@R1,SBUF

;copy data dari SBUF ke RAM internal

CLRRI

INCR1

DJNZLoop,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 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.

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,

PENERIMAAN DATA DARI PC

$MOD51

ORG 000H

LJMP START ;alamat awal program

ORG 023H ;alamat awal ISR untuk Komunikasi Serial

LJMP SERIALKOM

START:MOVSCON,#50H

MOVTMOD,#0010000B

MOV TL1,#0FDH;baud rate 9600 bps

MOVTH1,#0FDH

MOVPCON,#00H

SETBTR1

SETBES

SETBEA

SJMP$

SERIALKOM:CLRRI

MOVA,SBUF

MOVP1,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:CLRET1

MOVSCON,#40H

MOVTMOD,#0010000B

MOVTL1,#0FDH;baud rate 9600 bps

MOVTH1,#0FDH

MOVPCON,#80H

SETBTR1SETBES

SETBEA

MOVA,#1

;kode ASCII untuk angka 1

CLRTI

MOVSBUF,A

SJMP$

SERIALKOM:CLRTI

MOVSBUF,A

CJNEA,#9,PLUS

MOVA,#1

SJMPEXIT

PLUS:INCA

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:CLRET1

MOVSCON,#50H

MOVTMOD,#0010000B

MOV TL1,#0FDH;baud rate 9600 bps

MOVTH1,#0FDH

MOVPCON,#00H

SETBTR1

SETBES

SETBEA

SJMP$

SERIALKOM:CLRRI

MOVA,SBUF

CLRTI

MOVSBUF,A

JNBTI,$

CLRTI

RETI

END

Instruction Decoder

Clock

Internal Bus

Bus Kontrol

Bus Data

Bus Alamat

Bus Interface

Unit Pengendalian

Unit Pengoperasian

PC

(Program Counter)

Instruksi

Interpreter

Kontrol

dan

Instruksi

ALU

Aritmetik

Logic

Unit

Register

Lokal

PUSAT PENGEMBANGAN BAHAN AJAR-UMB ASRIL JARINMIKROPROSESOR 3

_1176184229.unknown

_1176184263.unknown

_1203309222.bin

_1170585105.unknown

_1176184114.unknown

_1170584980.unknown