Catatan singkat tentang perancangan "UART" perangkat lunak: setidaknya ada beberapa pendekatan yang berbeda secara kualitatif yang dapat diambil, tergantung pada persyaratan:
Driver bit-bang "take over everything" akan menonaktifkan semua interupsi dan menggunakan kode siklus untuk menghitung setiap bit. Menerima data dengan driver "take over everything" mensyaratkan bahwa ketika data tiba controller tidak melakukan apa-apa selain menunggunya.
Pengandar bit-bang "take over main loop" akan berperilaku seperti di atas kecuali bahwa itu akan menggunakan sumber daya pengatur waktu untuk pengaturan waktu bit daripada menghitung siklus. Gangguan yang tidak memakan waktu terlalu lama untuk layanan dapat dibiarkan diaktifkan. Untuk transmisi serial, sumber daya timer tingkat tetap dapat digunakan bersama dengan tujuan lain; untuk penerimaan serial, bagaimanapun, driver bit-bang harus dapat memuat ulang timer ketika bit mulai tiba sehingga membuatnya berakhir di tengah setiap waktu bit yang masuk.
Pengandar bit-bang yang digerakkan sepenuhnya-interrupt menggunakan timer tingkat-tetap yang berjalan pada beberapa kelipatan data lebih disukai (3x dan 5x keduanya lebih baik dari 4x), dan melakukan semuanya melalui timer itu. Driver seperti itu dapat berjalan secara simultan dengan yang lainnya, tetapi akan membutuhkan CPU yang lebih cepat daripada tipe driver sebelumnya.
Untuk menghindari dua gaya pengontrol pertama menunggu selamanya untuk data yang mungkin tidak pernah datang, itu biasa bagi rutinitas baca untuk memasukkan nilai batas waktu. Perhatikan bahwa jika loop pengontrol melakukan mis. "Dapatkan byte sambil menunggu hingga 100 ms untuk itu, lakukan beberapa hal lain jika tidak ada yang datang, lalu dapatkan byte berikutnya, dll." dan satu byte tiba di antara waktu "get" time out rutin dan controller mulai menunggu lagi, byte itu akan hilang; perangkat yang berkomunikasi dengannya harus mengharapkan kemungkinan itu.
Hanya driver gaya ketiga yang dapat menangani kemungkinan byte data mulai berdatangan saat byte data sedang dikirim. Dua gaya pertama dapat, bagaimanapun, digunakan untuk beberapa protokol komunikasi full-duplex kecepatan penuh jika controller hanya perlu berbicara ketika diajak bicara. Triknya adalah memiliki rutin "baca dan tulis data" yang akan menunggu bit masuk yang masuk, dan ketika seseorang terdeteksi tumpang tindih dengan baca dan tulis sehingga pengontrol mengirim setiap bit sama seperti saat akan memeriksa data yang masuk. Setelah pengontrol mendeteksi bit awal yang masuk, ia akan tahu persis kapan ia akan mencari 8 bit data berikutnya dan menghentikan bit, dan dengan demikian akan tahu bahwa ia dapat dengan aman menggunakan waktu antara untuk menampilkan data sendiri.
Satu catatan perpisahan: pengontrol yang menggunakan salah satu dari dua gaya pertama bit-bang uart untuk menerima data harus memproses setiap byte data sebelum tepi jatuh dari bit awal byte berikutnya untuk menghindari kehilangan data. Jika pengontrol mengetahui bahwa pemrosesan akan memakan waktu setidaknya setengah waktu, itu dapat memaksimalkan waktu yang tersedia untuk pemrosesan dengan menerima setiap byte segera setelah ia mengambil bit data terakhir, daripada menunggu bit berhenti. Akan tetapi, sebagai cara lebih lanjut untuk memberi pengontrol lebih banyak waktu, mungkin akan membantu jika perangkat yang memberikannya mentransmisikan data dengan dua bit stop daripada satu. Jika "mark parity" dapat dikonfigurasi, itu akan menambah waktu bit tambahan lainnya. Transmisi pada mis. 115200-8-M-2 akan memungkinkan waktu pemrosesan lebih dari 57600-8-N-1, meskipun itu akan memberi makan data lebih dari 1,6 kali lebih cepat.