Tak, działa. Już tłumaczę panie kolego. Otóż jak wiadomo układ 24c16 to tak naprawdę kilka kości EEP w jednym scalaku. Gdybyśmy chcieli się odwołać do adresu komórki pamięci dec 340, czyli binarnie 101010100 przekroczymy 8bitowy adres o 1 bit. Dlatego aby odwołać się do tego adresu komórki musimy zapisać te 'wystające' bity do adresu scalaka ( 1010xxx0 ) , w miejsce x. W tej części (subAddr>>8), 101010100 przesuniemy o 8 , czyli zostanie nam 000000001. Teraz wystarczy przesunąć to znów o 1, do 000000010. Teraz gdy wykonamy operacje OR - 1010xxx0 | 000000010 = 10100010 otrzymamy adres jednej z wielu kości w tym scalaku. Jak wiadomo z noty, bit R w adresie scalaczka 1010xxxR oznacza tryb READ lub WRITE. W późniejszej linijce dodajemy do adresu 1, aby ustawić ten bit na 1, by dać wygnał kości, że będzie odczyt.
Mam nadzieję, że jest to choć trochę zrozumiałe. Polecam wziąć kawałek kartki i sobie po kolei rozrysować wszystkie operacje. Szybciej się da zrozumieć.
Polecam do lektury:
Klik