Anda di halaman 1dari 5

KOMUNIKASI SERIAL RS232

TRANSMISI DATA SERIAL Data pada umumnya dikirimkan diantara beberapa PC dan ke terminal lainnya dengan merubah besaran tegangan dan arus dalam kanal atau kabel. Seperti halnya transfer yang disebut serial jika bit berpindah satu demi satu melewati satu saluran, atau disebut parallel jika sekelombok bit berpindah melalui beberapa jalur pada saat yang bersamaan. Transmisi serial biasa dipergunakan dalam transmisi jarak jauh, Untuk mengkonversi data dari parallel ke serial dan sebaliknya dikerjakan menggunakan shiftregister.

Gambar

a. Transmisi parallel untuk bit 01001011 b. Transmisi serial untuk bit 01001011 dengan mode asynchronous

SISTEM SYNCHRONOUS DAN ASYNCHRONOUS Transmisi data serial disebut sebagai transmisi synchronous bila waktu kirim dan terima atau lamanya penerimaan masing-masing bit ditentukan secara pasti sebelum bit tersebut dikiriim atau diterima. Disebut asynchronous jika waktu yang dibutuhkan tiap bit dari suatu karakter tidak ditentukan atau diatur oleh karakter sebelumnya. Protokol yang dipergunakan untuk sistem synchronous dan asynchronous berbeda dalam beberapa hal, sehingga juga dipergunakan protokol sederhana sebagai penterjemah. Data serial dapat dikirim secara synchronous maupun asyncronous. Pada transmisi synchronous, data dikirim dalam bentuk berkelompok (blok) pada kecepatan yang tetap. Awalan blok (start-block) dan akhiran blok (stop-block) diidentifikasikan dengan bytes (deretan bit) dengan susunan yang spesifik. Pada transmisi asynchronous maka informasi uraikan menjadi karakter dan masing-masing karakter tersebut memiliki bit yang diidentifikasi sebagai awalan (startbit) dan 1 atau 2 bit (stop-bit) sebagai akhiran. Bila masing-masing karakter yang ditransmisikan dapat dikenali, maka sekumpulan karakter tersebut dapat dikirimkan kapan saja secara asynchronous dengan interval yang berbeda.

KOMUNIKASI RS-232 DENGAN MIKROKONTROLLER Pada Mikrokontroller AT89C/SXX Port 3 merupakan port yang memiliki fungsi ganda. Selain berfungsi untuk I/O, juga dapat berfungsi sebagai Interupsi Eksternal, Counter, dan komunikasi RS-232. Pin P3.0 adalah pin yang dapat berfungsi sebagai RXD atau Receive Data Serial, sedangkan pin P3.1 dapat berfungsi sebagai TXD yaitu Transmit Data Serial. Karena tegangan pada mikrokontroller adalah standard digital +5V dan 0 V, maka Integrated Circuit (IC) MAX232 digunakan untuk mengubah level TTL menjadi level RS 232. Pada RS-232 biner 1 disebut mark dan bisa memiliki tegangan dari -3 sampai -25 Volt. Biner 0 disebut space dan memiliki jangkauan tegangan antara +3 sampai +25 Volt. Port serial dalam mikrokontroller AT89C/SXX memiliki sifat full duplex, yang berarti dapat mengirim dan menerima data secara bersamaan. Register penerima dan pengirim pada port serial adalah Serial Buffer (SBUF). Register TMOD (Timer Mode) dan TH1 dipakai juga untuk menentukan baudrate. Register pengontrol kerja port serial adalah Serial Control (SCON). Register SCON memiliki format sebagai berikut: M
S M

S
0

B
S M 1 S M 2 R E N T B 8 R B 8 T I

L
R

S
I

Simbol SM0 SM1 SM2 REN TB8 RB8 TI RI


Tabel

Fungsi Pemilih mode port serial Pemilih mode port serial Membuat enable port komunikasi multiprocessor dalam mode 2 dan 3 Set/clear perangkat lunak untuk menjalankan/melumpuhkan penerimaan Bit ke-9 yang akan dikirim dalam mode 2 dan 3. set/clear secara software Dalam mode 2 dan 3 adalah bit data ke-9 yang diterima. Dalam mode 1 jika SM2=0, RB8 merupakan bit stop yang diterima. Dalam mode 0 RB8 tidak digunakan Transmit interrupt flag. Diset oleh perangkat keras pada akhir waktu bit ke8 dalam mode 0 atau pada permulaan dari bit stop dalam mode lainnya. Diclear secara software Receive interrupt flag. Diset oleh perangkat keras pada akhir waktu bit ke8 dalam mode 0

Format bit pada Register SCON dan fungsi tiap tiap bit

Nilai SM0 dan SM1 menentukan mode tranmisi SM0 SM1 Mode Decsription BaudRate 0 0 0 Shift Register Fixed (fOSC./12) 0 1 1 8-bit UART Variable (set by timer) 1 0 2 9-bit UART Fixed (fOSC./64 or fOSC./32) 1 1 3 9-bit UART Variable (set by timer) contoh kasus : Diketahui XTAL = 11, 0592 MHz = 11059200 Hz BaudRate yang diinginkan 19200 bps 8 bit data transfer, tidak ada parity Maka nilai yang harus diinisialisasikan pada Mikrokontroller?

2 SMOD * XTAL 384 * ( 256 TH 1) (2 SMOD * XTAL) TH 1 = 256 384 * Baudrate Baudrate = untuk SMOD = 1 Sehingga : TH 1 = 256 (2 * 11059200 ) = 253 = 0FDH 384 * 19200 ; Timer 1 mode 2 Auto Reload ; Timer 0 Off ; SMOD = 1 ; NILAI TIMER 1 ; TIMER 1 JALAN ; Return (Subrutin Selesai)

untuk program inisialisasinya : INIT_RS232: MOV TMOD, #00100000B MOV SCON, #01010010B MOV PCON, #10000000B MOV TH1, #0FDH SETB TR1 RET

Nilai SMOD : SM0 dan SM1 (1) : termasuk mode 1 yang berfungsi sebagai 8 bit UART dengan baud rate variabel SM2 (0) : menggunakan single processor REN (1) : membolehkan penerimaan TB8 (0) dan RB8 (0) : disable, karena menggunakan mode 1 TI (1) : menjalankan transmit intrerrupt flag RI (0) : Siap menerima interupsi SUBRUTIN KOMUNIKASI SERIAL Prosedur SEND Prosedur ini adalah prosedur untuk mengirim data serial yang sudah diinisialisasi. Prosedur ini mengecek transmiter buffer, apakah sudah kosong. Jika kosong maka pengiriman data serial segera dilaksanakan. Akumulator (A) adalah data serial yang akan dikirim. ; INPUT : A (Kode yang akan dikirimkan) ; OUTPUT :SEND: JNB TI, SEND CLR TI MOV SBUF, A RET Contoh pemakaian prosedur ini adalah : ORG 00h RESET: ACALL INIT_RS232 ; Inisialisasi RS232 MOV A, #10101010B ; mengirimkan #AAH ke Akumulator ACALL SEND ; Kirimkan Akumulator ke Serial

STOP: SJMP STOP

; Stop

Prosedur RECEIVE Merupakan Subrutin untuk membaca data serial secara polling. Pengecekan dilakukan terus menerus sampai data serial telah mencapai 8 bit data. ; INPUT :; OUTPUT : A (hasil baca data serial) RECEIVE: JNB RI, RECEIVE ; Cek apakah Serial masih sedang menerima CLR RI ; Tidak mengirim kirim sekarang MOV A, SBUF ; kirim sekarang RET ; Kembali dengan A adalah data Serial Contoh pemakaian prosedur ini adalah ORG 00H START: LCALL INIT_RS232 ;Memakai Long Call agar Init dapat diletakkan ;dimana saja TERIMA_TERUS: LCALL RECEIVE ; Ambil Data Serial LCALL SEND ; Kirim Balik Data tersebut ke pengirimnya LJMP TERIMA_TERUS ; Keep Terima Program diatas dapat kita tes dengan menghubungkan MCU ke komputer melalui Software Hyper Terminal Windows maka apa yang kita ketik di keyboard akan dibalikkan Microcontroller ke komputer lagi sehingga kita dapat melihat karakter yang kita kirim sebelumnya. Program ini disebut juga ECHO. Kadang kala kita perlu mengetes level tegangan dari serial RS-232. Untuk melihat level tegangan high dan low pada data RS-232 maka kita membutuhkan suatu karakter yang mengirimkan sinyal pulsa ke serial secara terus menerus, karakter biner tersebut adalah #AAH atau dalam biner #10101010B. Pengetesan dapat dilakukan dengan Osiloskop. ORG 00H LJMP START START: LCALL INIT_RS232 MOV A, #10101010B LOOP_KIRIM: LCALL SEND LJMP LOOP_KIRIM ; RESET Vector START ; Inisialisasi RS232 ; A = 10101010b ; Kirim data ; Terus Kirim data

Dengan komunikasi serial ini kita dapat jadikan antar mikrokontroller berkomunikasi secara serial RS-232. Program untuk komunikasi antar Mikrokontroller tersebut adalah ; Program di sisi penerima ORG 00H LJMP START

START: LCALL MOV LOOP_TERIMA: LCALL CJNE

INIT_RS232 ; Inisialisasi RS P1, #00H

RECIVE ; Menerima Karakter A, #1, LOOP_TERIMA ; Jika karakter bukan ASCII 1 ; maka ambil karakter lainnya MOV P1, #0FFH ; Jika benar maka STOP: LJMP STOP ; Stop Program disini ; Program di sisi Pengirim ORG 00H LJMP START START: LCALL INIT_RS232 MOV A,#1 LOOP_KIRIM: LCALL SEND LJMP LOOP_KIRIM Untuk mengetes program diatas, MCU penerima harus dihidupkan terlebih dahulu, kemudian MCU pengirim.