Mikrokontroller 89S51 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, 89S51 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.
Pada kenyataannya register SBUF terdiri dari dua buah register yang memang menempati alamat yang sama yaitu 99H. Register tersebut adalah Transmit Buffer
Register yang bersifat write only (hanya dapat ditulis) dan Receive Buffer Register yang
bersifat read only (hanya dapat dibaca). Pada proses penerimaan data dari Port Serial, data yang masuk ke dalam Port Serial akan ditampung pada Receive Buffer Register terlebih dahulu dan diteruskan ke jalur bus internal pada saat pembacaan register SBUF sedangkan pada proses pengiriman data ke Port Serial, data yang dituliskan dari bus internal akan ditampung pada Transmit Buffer Register terlebih dahulu sebelum dikirim ke Port Serial.
SBUF Receive Buffer Register
(read only)
SHIFT REGISTER
SBUF Transmit Buffer Register
(write only) Bus Internal 89s51 D Clk RXD (P3.0) TXD (P3.1)
Baud rate clok (receive) Baud rate clok
(transmit)
Gambar 2.6 Diagram blok port serial
Port Serial 89S51 dapat digunakan untuk komunikasi data secara sinkron maupun asinkron. Komunikasi data serial secara sinkron adalah merupakan bentuk komunikasi data serial yang memerlukan sinyal clock untuk sinkronisasi di mana sinyal clock tersebut akan tersulut pada setiap bit pengiriman data sedangkan komunikasi asinkron tidak
memerlukan sinyal clock sebagai sinkronisasi. Pengiriman data pada komunikasi serial 89S51 dilakukan mulai dari bit yang paling rendah (LSB) hingga bit yang paling tinggi (MSB).
Gambar 2.7 Komunikasi Sinkron dan Komunikasi Asinkron 2.5.3 Baud Rate Serial Pada Mikrokontroller AT89S51
Baud rate clok berkaitan erat dengan frekuensi kristal yang digunakan dan pada mode 1,2 dan 3 juga di tentukan oleh bit SMOD pada PCON register. Baud rate clok tiap mode ditentukan sebagia berikut
• Mode 0 adalah 1/12 frekuensi kristal
• Mode 2, untuk SMOD = 0 adalah 1/64 frekuensi kristal
• Mode 2, untuk SMOD =1 adalah 1/32 frekuensi kristal
• Mode 1 dan 3 untuk SMOD = 0 adalah 1/32 dari timer overflow
• Mode 1 dan 3 untuk SMOD = 1 adalah 1/16 dari timer overflow
PCON tidak dapat di akses secara bit, sehingga pengaturan bit SMOD dapat dilakukan dengan perintah dibawah ini, dalam hal ini SMOD di clearkan MOV A, PCON ; ambil nilai PCON
CLR Acc.7 ; clear bit 7
MOV PCON,A ; kembali ke PCON
Baud rate dari Port Serial 89C51 dapat diatur pada Mode 1 dan Mode 3, namun pada Mode 0 dan Mode 2, baud rate tersebut mempunyai kecepatan yang permanen yaitu untuk Mode 0 adalah 1/12 frekwensi osilator dan Mode 2 adalah 1/64 frekwensi osilator.
Dengan mengubah bit SMOD yang terletak pada Register PCON menjadi set (kondisi awal pada saat sistem reset adalah clear) maka baud rate pada Mode 1, 2 dan 3 akan berubah menjadi dua kali lipat.
Pada Mode 1 dan 3 baud rate dapat diatur dengan menggunakan Timer1. Cara yang biasa digunakan adalah Timer Mode 2 (8 bit auto reload) yang hanya menggunakan register TH1 saja. Pengiriman setiap bit data terjadi setiap Timer 1 overflow sebanyak 32 kali sehingga dapat disimpulkan bahwa:
Baud rate (jumlah bit data yang terkirim tiap detik) =
32 1
lowx
TimerOverf …… (2.5)
Apabila diinginkan baud rate 9600 bps maka timer 1 harus diatur agar overflow setiap
32 9600
1
x detik
Timer 1 overflow setiap kali TH1 mencapai nilai limpahan (overflow) dengan frekwensi sebesar fosc/12 atau periode 12/fosc. Dari sini akan ditemukan formula
fosc TH x[256 1] 12 − = 32 9600 1 x sebagai berikut: 32 ] 1 256 [ 12 9600 x TH x fosc − =
Dengan frekwensi osilator sebesar 11,0592 MHz maka TH1 adalah 253 atau 0FDH. 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:
xK TH x fosc Baudrate ] 1 256 [ 12 − = ………(2.6)
Tabel 2.5 memberikan bermacam nilai pada TH 1 pada pembangkit baud reat komunikasi data serial melalui port serial pada metode 1 dan 3, penggunaan kristal 12 MHz hanya di perbolehkan hingga kecepatan 4800 bps saja. Penggunaan kecepatan 4800 untuk
Tabel 2.4 Mode Serial vs baud rate
Mode Baud rate
0 1/12 fosc
1 SMOD = 0 SMOD = 1
2 1/32 fosc 1/32 fosc
3
Table.2.5 penentuan nilai TH1 pada pembangkit Baud rate:
BPS Kristal SMOD TH1 reload REAL BPS ERROR
4800 12 1 -13(F3h) 4807 0.16% 2400 12 0 -13(F3h) 2404 0.16% 2400 12 1 -26(E6h) 2404 0.16% 1200 12 1 -26(E6h) 1202 0.16% 1200 12 1 -56(CCh) 1202 0.16% 19200 11.059 1 -3(FDh) 19200 0% 9600 11.059 0 -3(FDh) 9600 0%
BPS Kristal SMOD TH1 reload REAL BPS ERROR
9600 11.059 1 -6(Fah) 9600 0% 4800 11.059 0 -6(Fah) 4800 0% 4800 11.059 1 -12(F4h) 4800 0% 2400 11.059 0 -12(F4h) 2400 0% 2400 11.059 1 -24(E8h) 2400 0% 1200 11.059 0 -24(E8h) 1200 0% 1200 11.059 1 -48(D0h) 1200 0% 2.5.4 Standar RS 232
Dalam hal interfacing secara serial antara PC dengan Mikrokontroller AT89S51 disini digunakan gerbang interkoneksi dari dan ke komputer melalui sinyal level RS 232. Standar RS 232 ditetapkan oleh Industry Association and Telecomunication Industry
Association pada tahun 1962 jauh sebelum IC TTL popular, oleh karena itu level
tegangan yang ditentukan untuk RS 232 tidak ada hubungannya dengan level tegangan TTL. Beberapa parameter yang ditetapkan oleh EIA (Electronics Industry Association) antara lain:
• Logika “0” (Low) antara tegangan +3 V s/d +25 V
• Logika “1” (High) antara tegangan -3 V s/d -25 V
• Tegangan rangkaian terbuka tidak boleh lebih dari 25 V (dengan acuan ground)
• Arus hubungan singkat rangkaian tidak boleh lebih dari 500 mA.
Gambar 2.8 Konfigurasi Pin DB 9
Komunikasi pada RS 232 dengan PC adalah komunikasi asinkron. Dimana sinyal clocknya tidak dikirim bersamaan dengan data. Masing-masing data disinkronkan menggunakan clock internal pada tiap-tiap sisinya. Format transmisi satu byte pada RS 232 adalah 8 bit, sebelum data tersebut ditransmisikan maka akan diawali oleh start bit dengan logika “0” (0 Volt) kemudian 8 bit data akan diakhiri oleh satu stop bit dengan logika “1” (5 Volt).
2.5.5 IC MAX 232
Untuk dapat berkomunikasi antara mikrokontroller dengan komputer, maka diperlukan suatu penyetaraan level tegangan. Besarnya level tegangan komunikasi serial (Level Tegangan RS232) adalah -25 s.d -3 V untuk logika high (1) dan +3 s.d +25 V untuk logika low (0). Hal ini sangat berbeda dengan level tegangan pada mikrokontroller (Level Tegangan TTL/CMOS) dimana untuk logika high (1) level tegangannya adalah 5 V dan untuk logika low (0) level tegangannya adalah 0 V. Oleh karena itu diperlukan sebuah pengantarmuka yang dapat menyamakan level tegangan dari komunikasi serial pada komputer dengan mikrokontroller, yaitu IC RS232 produksi MAXIM yang disebut MAX232.
Gambar 2.9 Bentuk Fisik IC MAX232
MAX232 adalah saluran driver/receiver ganda yang termasuk pembangkit tegangan kapasitip yang menyediakan level tegangan RS232 dari sebuah sumber tegangan 5V. Setiap receiver pada IC MAX232 ini mengkonversikan level tegangan RS232 ke level tegangan TTL/CMOS sebesar 5 V.
Dan setiap receiver ini mempunyai ambang batas sebesar 1.3 V, dan histeresis sebesar 0.5 V, serta dapat menerima masukan level tegangan ±30 V. Sedangkan untuk setiap driver pada IC MAX232 ini mengkonversikan level tegangan masukan
pasang konvertor TTL ke RS232 dan kebalikannya. Pada aplikasinya yang digunakan biasanya hanya satu pasang saja.