Na początek fakty:
zmienna X1 jest typu int czyli 16 bitów
zmienna argument funkcji Write_data jest typu uint8_t.
I teraz zapis Write_data(X1>>8) powoduje ni mniej ni więcej przesunięcie w prawo o 8 pozycji zmiennej X1 i przekazanie 8 najmłodszych bitów (a niejako przez wcześniejsze przesunięcie 8 najstarszych zmiennej X1) do funkcji, jako że jej argument jest 8-bitowy to z automatu brana jest tylko część najmłodsza.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
W drugim zapisie Write_data(X1) dziej się tak samo, tzn. brana jest tylko najmłodsza część zmiennej X1, ale tu jest przekazywana bez przesunięcia.
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Podsumowując w pierwszym wywołaniu funkcji dzięki przesunięciu jest wysyłany starszy bajt zmiennej X1, w drugim młodszy.