Penulisan ini ditulis untuk berbagi ilmu tentang Komunikasi Serial yang sedang saya pelajari di praktikum Interfacing. Nah, kalau begitu langsung saja ke materi. Ok
Sebelumnya apa itu komunikasi serial, komunikasi serial adalah komunikasi dimana pengiriman data dilakukan per bit, sehingga lebih lambat dibandingkan komunikasi parallel seperti pada port printer yang mampu mengirim 8bit sekaligus dalam sekali detak. Beberapa contoh komunikasi serial adalah mouse, scanner dan system akuisisi data yang terhubung ke port COM1 / COM2.
MCS-51 memiliki kemampuan untuk berkomunikasi secara serial melalui pin RXD dan TXD. Kalau tidak tahu apa itu pin RXD dan TXD bisa dilihat di data sheet mikrokontroller AT89S51. Satu hal yang perlu diingat adalah tingkat ketegangan komunikasi kedua pin serial menggunakan tingkat tegangan TTL. Pada prinsipnya, komunikasi serial adalah komunikasi dimana transmisi data dilakukan per bit. Interface serial hanya membutuhkan jalur yang sedikit (umumnya hanya 2 jalur), sehingga lebih menghemat pin jika dibandingkan dengan interface parallel. Komunikasi serial ada 2 macam, asynchronous serial dan synchronous serial :
1. Synchronous serial adalah komunikasi dimana hanya ada satu pihak (pengirim dan penerima) yang menghasilkan clock dan mengirimkan clock tersebut bersama-sama dengan data. Contoh penggunaan synchronous serial terdapat pada transmisi data keyboard.
2. Asynchronous serial adalah komunikasi dimana kedua pihak (pengirim dan penerima) masing-masing menghasilkan clock namun hanya data yang ditransmisikan, tanpa clock. Agar data yang dikirim sama dengan data yang diterima, maka kedua frekuensi clock harus sama dan harus terdapat sinkronisasi. Setelah ada sinkronisasi, pengirim akan mengirimkan datanya sesuai dengan frekuensi clock penerima. Contoh penggunaan asynchronous serial adalah pada Universal Asynchronous Receiver Transmitter (UART) yang digunakan pada serial port (COM) computer. MCS-51 mendukung komunikasi secara asinkron, bahkan 3 dari 4 serial mode yang dimiliki MCS-51 kompatibel dengan UART.
MCS-51 memiliki 4 mode komunikasi serial. Mode 0 berupa synchronous serial (shift register), sedangkan tiga mode yang lain berupa asynchoronous serial (UART). Pada semua mode, pengiriman dilakukan jika ada instruksi yang mengisi nilai register SBUF. Sedangkan pada saat pengiriman, data yang diterima akan disimpan pada register SBUF.
MODE 0
Mode 0 adalah 8 bit shift register dimana data dikirimkan dan diterima melalui pin RXD sedangkan clock dikirimkan dan diterima melalui pin TXD. Pengiriman data 8 bit dilakukan dengan mengirimkan Least Significant Bit (LSB) terlebih dahulu. Pada mode 0, baudrate yang digunakan adalah sebesar 1/12 dari frekuensi osilator.
MODE 1
Pada mode 1, jumlah data yang dikirimkan sebanyak 10 bit yang terdiri dari start bit, 8 bit data ( LSB terlebih dahulu ) , dan stop bit. Ada proses penerimaan, nilai stop bit akan dimasukkan ke RB8 secara otomatis. Pada proses pengiriman, stop bit akan diberi nilai “1” secara otomatis. Pada mode 1, baudrate yang digunakan dapat diatur melalui Timer 1.
MODE 2
Pada mode 2, jumlah data yang dikirimkan sebanyak 11 bit yang terdiri dari start bit, (LSB terlebih dahulu), bit ke-9, dan stop bit. Pada proses pengiriman, nilai bit ke-9 dapat diatur dengan mengisi nilai TB8. Pada proses penerimaan, bit ke-9 akan dimasukkan ke RB8 secara otomatis. Pada mode 2, baudrate yang dapat digunakan adalah sebesar 1/64 frekuensi osilator atau 1/32 frekuensi osiliator jika SMOD bernilai “1”.
MODE 3
Mode 3 hampir sama dengan mode 2, perbedaannya terdapat pada baudrate yang digunakan. Jika mode 2 menggunakan baudrate yang pasti, mode 3 menggunakan baudrate yang dihasilkan oleh Timer 1.
Baudrate adalah frekuensi clock yang digunakan dalam pengiriman dan penerimaan data. Satuan baudrate pada umumnya adalah bps (bit per second), yaitu jumlah bit yang dapat ditransmisikan per detik. Baudrate untuk mode 0 bernilai tetap dengan rumus yang terdapat pada persamaan 1.
Sebelum melangkah lebih lanjut kita harus mengetahui bagaimana arsitektur serial port MCS-51, serial port memiliki beberapa register antara lain SBUF ,SCON, SMOD, untuk kecepatan transfer data di tentukan oleh clock yang di berikan ke serial port yang di generate oleh Timer1 atau oleh Timer2 yang ada pada family dengan akhiran 52 mis: AT89S52, oleh karena itu kecepatan transfer data akan ditentukan oleh nilai yang di programkan ke Timer1/Timer2 ini. Family dengan akhiran 52 dapat memilih clock source untuk serial portnya apakah dari Timer1/Timer2, Timer yang tidak dipakai dapat digunakan untuk aplikasi lainnya. Tapi yang dibahas disini adalah yang menggunakan clock source dari Timer1, berikut penjelasan register serial port :
1. SBUF, berfungsi sebagai register untuk menerima dan mengirim data, jadi data yang diterima akan disimpan di SBUF, dan data yang dikirim ditulis ke SBUF, sebenarnya SBUF merupakan dua register yang terpisah untuk penerimaan dan pengiriman data.
2. SCON, berfungsi untuk mengontrol serial port, isi dari register ini akan menentukan mode dari serial port(SM2,SM1,SM0), pengaktifan penerimaan data (REN), penerimaan dan pengiriman bit ke 9 pada mode 2 dan 3(TB8,RB8), dan bit status dari penerimaan (RI) dan pengiriman data (TI). Bit RI akan bernilai "1" jika suatu data di terima oleh serial port, bit TI akan bernilai "1" jika pengiriman data sudah selesai dilaksanakan.
3. SMOD, SMOD merupakan bit yang ada pada register PCON yang mana bila nilainya di set (1) maka kecepatan data (baud rate) akan dikalikan 2.
Untuk penjelasan lebih lanjut anda dapat membaca data sheet mikrokontroller yang digunakan