Коротка примітка щодо розробки програмного забезпечення "UART": існує, принаймні, якісно різні підходи, залежно від вимог:
Драйвер біт-бангу «Перейняти все» відключить усі переривання та використовувати код, що рахується циклом, для перегляду кожного біта. Отримання даних з драйвером "перебрати все" вимагає, щоб при надходженні даних контролер нічого не робив, але чекав на них.
Драйвер біт-баг "перейняти основний цикл" буде поводитись так само, як зазначено вище, за винятком того, що він буде використовувати ресурс таймера для тимчасових розрядів бітів, а не підрахунку циклів. Перерви, які не потребують занадто довгого обслуговування, можуть бути залишені увімкненими. Для послідовної передачі ресурс таймера з фіксованою швидкістю може бути спільним для інших цілей; для послідовного прийому, однак, драйвер біт-бангу повинен мати можливість перезавантажити таймер, коли приходить стартовий біт, щоб змусити його закінчуватися в середині кожного вхідного бітового часу.
Драйвер, що керується повністю перериванням, використовує таймер з фіксованою швидкістю, який працює на деякому кратному рівні швидкості передачі даних (3 і 5 разів краще, ніж 4 рази), і робить все через цей таймер. Такий драйвер може працювати одночасно з усім іншим, але вимагає швидшого процесора, ніж вимагали колишні типи драйверів.
Щоб уникнути того, що перші два стилі контролера вічно чекають даних, які ніколи не можуть надходити, звичайно, щоб підпрограми читання включали значення тайм-аута. Зауважте, що якщо цикл aa-контролера робить, наприклад, "отримайте байт під час очікування до 100 мс для нього, зробіть якісь інші речі, якщо жоден не з'явився, то отримайте наступний байт тощо". і байт приходить між тимчасовим часом виходу "контрольного" виходу, і контролер знову починає чекати, що байт буде загублений; пристрій, з яким він спілкується, повинен очікувати такої можливості.
Лише третій стиль драйвера зможе обробити можливість байта даних починати надходити під час передачі байта даних. Перші два стилі можуть, однак, використовуватися для деяких протоколів повного дуплексного зв'язку з повною швидкістю, якщо контролеру доводиться говорити лише під час розмови. Підступність полягає в тому, щоб мати процедуру "читання і запису даних", яка буде чекати вхідного початкового біта, а коли виявлено, буде перекриватись читання і запис таким чином, що контролер надсилає кожен біт так само, як збирається вивчити вхідні дані. Як тільки контролер виявить вхідний біт запуску, він точно буде знати, коли він повинен шукати наступні 8 бітів даних та стоп-біт, і таким чином буде знати, що він може безпечно використовувати час між для виведення власних даних.
Одна примітка про розставання: контролер, який використовує один з перших двох стилів bit-bang uart для отримання даних, повинен обробити кожен байт даних перед падінням краю біта початку наступного байту, щоб уникнути втрати даних. Якщо контролер знає, що обробка потребуватиме щонайменше половини бітового часу, вона може максимально збільшити час, доступний для обробки, приймаючи кожен байт, як тільки він схопив останній біт даних, а не чекав біту зупинки. В якості подальшого засобу, що надає контролеру більше часу, може бути корисним пристрій, який надає йому передачу даних двома стоп-бітами, а не одним. Якщо "позначити паритет" можна налаштувати, це додасть ще один додатковий час. Передача, наприклад, 115200-8-M-2, дозволить отримати більше часу на обробку, ніж 57600-8-N-1, навіть незважаючи на те, що вона буде подавати дані в 1,6 рази швидше.