To jest funkcja do wysyłania przez I2C ale nie sprzętowo tylko programowo
Tak w if-ie jest maskowany bit danej do wysyłki i tak
w pierwszym przebiegu pętli "do...while" maska ma wartość 0x80 czyli binarnie 0b10000000
i porównywany jest "(b & i)" najstarszy bit danej "b"
i jeśli jeśli jest jeden (czyli prawda) to wysyła (ustawia pin uC w stan wysoki)
a jeśli zero to w stan niski (makro I2C_SDL_HI i I2C_SDL_LO)
następnie kiedy dojdzie do "while" jest przesunięcie w lewo o 1 i "i" ma wartość 0b01000000
W następnym przebiegu pętli już porównywany jest bit nr. 6 (bity od 7..0)
i tak aż nie wyjdzie jedynka z bajtu "i" czyli osiem przebiegów.
mam nadzieję że nic nie poplątałem i napisałem zrozumiale
------------------------ [ Dodano po: 1 minucie ]A i jeszcze jedna uwaga wstawiaj kod w znacznikach [syntax=c]