AT89S51 memiliki komunikasi data serial memiliki parameter yang terdiri dari register SBUF, Register Serial Port Control (SCON), dan register Power Mode Control (PCON). Register SBUF untuk menahan data dan merupakan bit dalam register SFR. Register Serial Port Control (SCON) seperti yang diperlihatkan Gambar 2.13 berfungsi untuk mengontrol komunikasi data.
Sementara itu, tabel 2.9 di bawah ini berisi konfigurasi mode SM0 dan SM1.
- Synchronous, yaitu detak (clock) yang dikirim bersama dengan data serial itu sendiri.
- Asynchronous, yaitu detak dibangkitkan oleh masing-masing sistem, baik pengirim maupun penerima
Proses komunikasi serial membutuhkan protokol yang disebut dengan protokol serial. Protokol serial terdapat pada komunikasi asynchronous. Format yang dipakai dalam protokol serial adalah 12 bit seperti yang diperlihatkan pada gambar 2.15.
- Start bit berfungsi untuk menginisialisasikan rangkaian pewaktu. Hal ini terdeteksi dengan perubahan bit dari high ke low.
- bit data diawali Least Significant Bit (LSB) dan diakhiri Most Significant Bit (MSB).
- Optional bit parity.
- Stop bit. Pada stop bit, line menjadi high untuk 1 atau 2 bit yang menandakan karakter telah habis.
Inisialisai UART
TMOD merupakan register 8 bit yang berfungsi untuk mengatur kerja Timer/Counter. Dengan memanfaatkan bit TMOD.5 dan TMOD.1 (Timer 1) atau dengan TMOD.4 dan TMOD.0 (Timer 0), kita dapat memilih mode operasi pencacah biner yang diinginkan. Dengan bantuan register SCON, kita dapat menentukan besarnya laju baud (baud rate) yang diinginkan dengan memanfaatkan bit SCON.7 dan SCON.6 untuk memilih mode jenis baud rate. Perhitungan baud rate dari tiap mode adalah[7]:
02:JNB TI,$
03:MOV SBUF,A
04:CLR TI
05:RET
Proses penerimaan data serial dilakukan dengan mengecek bit RI pada register SCON. Bit RI merupakan petanda yang setara dengan petanda Receiver Data Register Full (RDRF). Setelah register SBUF menerima data dari port serial, bit RI akan bernilai 1 dengan sendirinya kemudian harus dinolkan dengan program agar bisa dipakai untuk memantau keadaan SBUF dalam penerimaan data berikutnya. Berikut adalah subrutin penerimaan data serial.
02:JNB RI,$
03:MOV A,SBUF
04:CLR RI 05:RET
berikutnya. Selanjutnya, pada baris empat RI dinolkan.