Прийом і передача двобайтових чисел по uart!

Підкажіть будь ласка хто знає, мені потрібно приймати і передавати між ПК і контролером двухбайтное числа. Вирішив піти по такому шляху, програма ПК розбиває двухбайтное число на старший і молодший байт і відправляє їх у кому порт.Контроллер отримує ці два байта, з'єднує їх в двухбайтное чісло.В залежності від цього числа програма МК формує інше двухбайтное число, розбиває його на старший і молодший байт і відправляє їх назад в кого порт. Програма працює в циклі, ПК-МК-ПК і так до нескінченності. Ось що у мене вийшло:

Звідси питання, може хто небудь знає кращий варіант реалізації даного завдання?

Наприклад, приймаємо два числа H1F (37) і HFA (250), наступні один за одним.
Чи можемо отримати або (256 * MSB) + LSB = (256 * 37) + 250 = 9722
або (256 * LSB) + MSB = (256 * 250) + 37 = 64037

тоді краще ввести байт початку передачі, наприклад, H55 і контрольну суму
приймаємо байт за байтом в масив з 4-х байт
якщо перший байт H55, починаємо запис в масив побайтно
після прийому всіх байтів даних + 1 (контрольна сума) [H1F HFA H], починаємо вважати за алгоритмом, ну, скажімо, перший байт складаємо з другим, якщо більше HFF, то віднімаємо з нього HFF, порівнюємо з контрольною сумою (H1A). все зійшлося - значить, використовуємо ці дані. якщо немає - Обнуляємо масив і переходимо до прийому нових
Checksum = HFF - (H1F + HFA) = H1A

Наприклад, приймаємо два числа H1F (37) і HFA (250), наступні один за одним.
Чи можемо отримати або (256 * MSB) + LSB = (256 * 37) + 250 = 9722
або (256 * LSB) + MSB = (256 * 250) + 37 = 64037

тоді краще ввести байт початку передачі, наприклад, H55 і контрольну суму
приймаємо байт за байтом в масив з 4-х байт
якщо перший байт H55, починаємо запис в масив побайтно
після прийому всіх байтів даних + 1 (контрольна сума) [H1F HFA H], починаємо вважати за алгоритмом, ну, скажімо, перший байт складаємо з другим, якщо більше HFF, то віднімаємо з нього HFF, порівнюємо з контрольною сумою (H1A). все зійшлося - значить, використовуємо ці дані. якщо немає - Обнуляємо масив і переходимо до прийому нових
Checksum = HFF - (H1F + HFA) = H1A


Алготім щось на зразок зрозумілий, ну як це красиво в баском перекласти, чи то пак, як красиво прийняти і передати, не знаю.