Yazılım "UART" tasarımı hakkında kısa bir not: gereksinimlere bağlı olarak en azından niteliksel olarak farklı yaklaşımlar uygulanabilir:
Bir "her şeyi ele geçir" bit-bang sürücüsü tüm kesmeleri devre dışı bırakır ve her biti saatlemek için döngü sayımı kodunu kullanır. "Her şeyi ele geçir" sürücüsü ile veri almak, veri geldiğinde denetleyicinin beklemekten başka bir şey yapmamasını gerektirir.
Bir "ana döngü devralma" bit-bang sürücüsü, döngü sayımı yerine bit zamanlamaları için bir zamanlayıcı kaynağı kullanması dışında yukarıdakine çok benzer şekilde davranacaktır. Servise çok uzun sürmeyen kesintiler etkin bırakılabilir. Seri iletim için, sabit hızlı zamanlayıcı kaynağı başka amaçlarla paylaşılabilir; Bununla birlikte, seri alım için, bit-bang sürücüsünün, başlangıç biti geldiğinde zamanlayıcıyı her gelen bit süresinin ortasında dolacak şekilde yeniden yükleyebilmesi gerekir.
Tam olarak kesilen bir bit-bang sürücüsü, tercihen veri hızının bazı katlarında çalışan sabit oranlı bir zamanlayıcı kullanır (3x ve 5x'in her ikisi de 4x'ten daha iyidir) ve bu zamanlayıcı aracılığıyla her şeyi yapar. Böyle bir sürücü diğer her şeyle aynı anda çalışabilir, ancak eski sürücü türlerinin gerektirdiğinden daha hızlı bir CPU gerektirir.
İlk iki denetleyici stilinin asla gelmeyecek verileri sonsuza kadar beklemesini önlemek için, okuma rutinlerinin bir zaman aşımı değeri içermesi yaygındır. Bir denetleyicinin döngüsü örneğin "100 ms'ye kadar beklerken bir bayt al, hiçbiri gelmediyse başka şeyler yapın, ardından bir sonraki baytı alın, vb." ve bir bayt "get" rutininin zaman aşımına uğradığı zaman ve kontrolör tekrar beklemeye başladığı zaman, bayt kaybolacaktır; iletişim kurduğu cihazın bu olasılığı beklemesi gerekecektir.
Yalnızca üçüncü sürücü stili, bir veri baytı iletilirken veri baytının gelme olasılığını kaldırabilecektir. Bununla birlikte, ilk iki stil, denetleyicinin yalnızca konuşulduğunda konuşması gerekiyorsa, bazı tam hızlı tam çift yönlü iletişim protokolleri için kullanılabilir. İşin püf noktası, gelen bir başlangıç bitini bekleyecek bir "veri okuma ve yazma" rutininin olması ve bir algılamanın üst üste gelmesi bir okuma ve yazma ile çakıştığında, denetleyici her biti tıpkı gelen verileri incelemek üzere olduğu gibi gönderecek şekilde göndermektir. Denetleyici gelen başlangıç bitini algıladığında, sonraki 8 veri bitini ve durdurma bitini ne zaman arayacağını tam olarak bilecek ve böylece kendi verilerini çıkarmak için zamanını güvenli bir şekilde kullanabileceğini bilecektir.
Bir ayrılık notu: veri almak için bit-bang uart'ın ilk iki stilinden birini kullanan bir denetleyici, veri kaybını önlemek için bir sonraki baytın başlangıç bitinin düşen kenarından önce her veri baytını işlemelidir. Denetleyici işlemenin en az yarım zaman alacağını bilirse, durdurma bitini beklemek yerine son veri bitini yakaladığı anda her bir baytı kabul ederek işleme için gereken süreyi en üst düzeye çıkarabilir. Bununla birlikte, kontrol cihazına daha fazla zaman vermenin başka bir yolu olarak, veriyi veren cihazın bir yerine iki durdurma biti ile iletim yapmasına yardımcı olabilir. "Parite işareti" yapılandırılabilirse, bu ek bir bit süresi ekleyecektir. Örneğin 115200-8-M-2'deki iletim, verileri 1.6 kat daha hızlı beslese bile 57600-8-N-1'den daha fazla işlem süresi sağlayacaktır.