Một lưu ý ngắn gọn về thiết kế phần mềm "UART": có ít nhất các cách tiếp cận khác nhau về mặt chất lượng mà người ta có thể thực hiện, tùy thuộc vào yêu cầu:
Trình điều khiển bit-bang "tiếp quản mọi thứ" sẽ vô hiệu hóa tất cả các ngắt và sử dụng mã được tính theo chu kỳ để theo dõi từng bit. Nhận dữ liệu với trình điều khiển "tiếp quản mọi thứ" yêu cầu rằng khi dữ liệu đến, bộ điều khiển không làm gì ngoài việc chờ đợi nó.
Trình điều khiển bit-bang "tiếp quản vòng lặp chính" sẽ hoạt động giống như trên, ngoại trừ việc nó sẽ sử dụng tài nguyên bộ định thời cho thời gian bit thay vì đếm chu kỳ. Ngắt mà không mất quá nhiều thời gian để phục vụ có thể được kích hoạt. Đối với truyền nối tiếp, tài nguyên bộ đếm thời gian cố định có thể được chia sẻ với các mục đích khác; tuy nhiên, đối với việc nhận nối tiếp, trình điều khiển bit-bang sẽ phải có thể tải lại bộ hẹn giờ khi bit start bắt đầu để làm cho nó hết hạn ở giữa mỗi thời gian bit đến.
Trình điều khiển bit-bang được điều khiển ngắt hoàn toàn sử dụng bộ hẹn giờ tốc độ cố định chạy ở nhiều mức tốc độ dữ liệu tốt nhất (3x và 5x đều tốt hơn 4x) và thực hiện mọi thứ thông qua bộ hẹn giờ đó. Trình điều khiển như vậy có thể chạy đồng thời với mọi thứ khác, nhưng sẽ yêu cầu CPU nhanh hơn các loại trình điều khiển trước đây sẽ yêu cầu.
Để tránh việc hai kiểu điều khiển đầu tiên phải đợi mãi cho dữ liệu có thể không bao giờ đến, thông thường các thói quen đọc sẽ bao gồm giá trị hết thời gian chờ. Lưu ý rằng nếu vòng lặp của bộ điều khiển aa thực hiện, ví dụ: "lấy một byte trong khi chờ tới 100ms cho nó, hãy thực hiện một số công việc khác nếu không có, sau đó lấy byte tiếp theo, v.v." và một byte đến giữa thời gian "get" hết thời gian và bộ điều khiển bắt đầu chờ lại, byte đó sẽ bị mất; thiết bị mà nó giao tiếp sẽ phải chờ đợi khả năng đó.
Chỉ có kiểu trình điều khiển thứ ba mới có thể xử lý khả năng byte dữ liệu bắt đầu đến trong khi byte dữ liệu đang được truyền đi. Tuy nhiên, hai kiểu đầu tiên có thể được sử dụng cho một số giao thức truyền thông song công toàn tốc độ đầy đủ nếu bộ điều khiển chỉ phải nói khi nói chuyện. Mẹo nhỏ là có một thói quen "đọc và ghi dữ liệu", nó sẽ đợi bit bắt đầu đến và khi phát hiện ra một chồng lên đọc và ghi sao cho bộ điều khiển gửi từng bit giống như khi nó kiểm tra dữ liệu đến. Khi bộ điều khiển phát hiện bit khởi động đến, nó sẽ biết chính xác khi nào nó sẽ tìm kiếm 8 bit dữ liệu và bit dừng tiếp theo, và do đó sẽ biết rằng nó có thể sử dụng thời gian giữa để xuất dữ liệu của mình một cách an toàn.
Một lưu ý chia tay: bộ điều khiển sử dụng một trong hai kiểu đầu tiên của bit-bang uart để nhận dữ liệu phải xử lý từng byte dữ liệu trước khi cạnh xuống của bit bắt đầu của byte kế tiếp để tránh mất dữ liệu. Nếu bộ điều khiển biết rằng việc xử lý sẽ mất ít nhất nửa thời gian, nó có thể tối đa hóa thời gian có sẵn để xử lý bằng cách chấp nhận từng byte ngay khi lấy được bit dữ liệu cuối cùng, thay vì chờ bit dừng. Tuy nhiên, như một phương tiện nữa giúp bộ điều khiển có nhiều thời gian hơn, tuy nhiên, có thể hữu ích khi thiết bị cung cấp cho nó dữ liệu truyền với hai bit stop chứ không phải một. Nếu "đánh dấu chẵn lẻ" có thể được cấu hình, điều đó sẽ thêm một chút thời gian nữa. Truyền tại ví dụ 115200-8-M-2 sẽ cho phép thời gian xử lý nhiều hơn 57600-8-N-1, mặc dù nó sẽ cung cấp dữ liệu nhanh hơn 1,6 lần.