Pamięci 24C04 posiadają 4 kilobity pojemności (a dokładnie 4096 bitów), jako ze komórki pamięci są 8-bitowe to 4096/8=512 bajtów pojemności czyli aby zaadresować wszystkie komórki pamięci potrzebujemy 9 bitowy adres (2 do potęgi 9). Protokół I2C może wysyłać tylko osiem bajtów więc musieli zakombinować z tym dziewiątym bitem adresu. Dziewiąty, najbardziej znaczący bit adresu pamięci został przesunięty do ostatniego bitu adresu sprzętowego tuż przed bit zapisu/odczytu (tak więc możliwość adresowania sprzętowego została okrojona o jeden bit).
Natomiast pamięci 24C08 mają pojemność 8 kilobitów (dokładnie 8192 bity) po podziale przez osiem otrzymujemy 1024 sztuki komórek pamięci które trzeba zaadresować,na co potrzeba 10 bitów. Tu analogicznie 2 najstarsze bity adresu komórek pamięci zostały przesunięte do pola adresu sprzętowego tuż przed bit zapisu odczytu. Oczywiście również możliwość adresowania sprzętowego ogranicza się o kolejny bit więc mamy do dyspozycji tylko A2 czyli nogę 3 (w pamięciach 24c04 do dyspozycji były dwie A1 i A2 na nogach 2 i 3)
Podsumowując należy zmodyfikować funkcje ale nie te które wypisałeś:
AKSELINEK napisał(a):
I2C START
I2C STOP
I2C Read Byte
I2C Write Byte
bo te funkcje dotyczą samego protokołu I2C a nie pamieci.
W ćwiczeniach z BB były funkcje EI2C_read_buf/EI2C_write_buf które są odpowiedzialne za komunikację z pamięcią EEPROM i to je trzeba by zmodyfikować; aczkolwiek akurat funkcje w BB były tak napisane że oba tu przytoczone typy pamięci powinny działać bez jakichkolwiek modyfikacji.
Jedyne co może mieć wpływ to zdefiniowany adres sprzętowy:
pamięć 24C04 ma ten adres w postaci 1010 "A2" "A1" 00 gdzie A2 i A1 odpowiada sposobowi podłączenia odpowiednich pinów fizycznych kości (piny 2 i 3) jeśli pin podłączony do Vcc to ma być tam "1" jeśli do GND to ma być "0"
natomiast pamięć 24C08 adres fizyczny ma w postaci 1010 "A2" 000
Sam adres pozostawiony bez zmian po zamianie pamięci również nie powinien mieć większego znaczenia na komunikację (w sensie jej brak, bo na poprawność zapisu może mieć wpływ dla niektórych wartości adresu fizycznego), natomiast przypuszczam że na szynie I2C oprócz pamięci masz wpięte jeszcze inne urządzenie którego adres koliduje ze skróconym adresem pamięci 24C08.