Chyba nie jest to trudne - ja mam prawie cała procedure w asm z wyjatkiem tego ustawiania kolejnych boitów - nie wiem jak sie dokłądnie do tego zabrać.
Generalnie przerwanie ma:
-ustawić pierwszą zwłoke czasową 1,25 x czas trwania bitu (1.728 lub 1,778 bo różnie podają)
-wyzerować zmienne
-ustawić licznik na 15
-zalaczyć tajmer
-przełaczyć przerwania na ovf timera (tylko).
W ovf timera sprawdzasz czy zmienna licznik jest zero czy jeszcze nie.
Jeżeli jeszcze nie to znaczy ze jeszcze nie koniec kodu (tak naprawdę kod skonczy sie w granicah 13 ale opóźnienie sie przyda)
-wsunać kolejny bit z portu do zmiennej
-ustawić tajmer na przerwanie po 1,778ms (lub 1,728)
-jeszcze raz wystartować tajmer.
Jeżeli licznik zero to należy
-zatrzymać tajmer
-przepisać odpowiednie bity do odpowiednich zmiennych (RRC, RLC,itp)
-sprawdzić czy w slowie startu było 2 lub 3
-jezeli prawidłowy start to obliczyc adres i komendę
-ustawić odpowiedni bit ze odebrano prawidlowy kod
-odblokowac przerwanie int
-zablokować timer