[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
; Read
call I2CStart ; Выдаем "СТАРТ"-условие
movlw Adr24C01 ; Получим значение адреса EEPROM на шине.
call I2CTransW ; Передаем адрес устройства.
movlw b'00000000' ; Значение адреса в памяти устройства
call I2CTransW ; Передаем адрес байта памяти.+++ Я бы в этом месте Stop послал, не помешает. А то неизвестно в каком состоянии I2CTransW оставляет линии SDA и SCL
+++ call I2CStop ; Выдаем "СТОП"-условие.call I2CStart ; Выдаем "СТАРТ"-условие
movlw Adr24C01 ; Получим значение адреса EEPROM на шине.
addlw b'00000001' ; Добавляем бит чтение из EEPROM.+++ А здесь я бы использовал ИЛИ для надежности:
+++ iorlw b'00000001' ; Добавляем бит чтение из EEPROM.call I2CTransW ; Передаем адрес с битом чтения.
call I2CRecive ; Читаем данные из EEPROM в W.
call SendNack ; Посылаем подтверждение приема.+++ А почему NACK? Ведь надо ACK, а то передатчик не будет больше ничего посылать.
call I2CStop ; Выдаем "СТОП"-условие.
E-mail: info@telesys.ru