Микроконверторы фирмы Analog Devices в микропроцессорных приборных комплексах. Виноградов А.Б - 248 стр.

UptoLike

248
;-------------------------------------------------------------------------------
Pod_IN_BYTE:
CLR MDE ;SDA - вход
MOV R3,#8 ;нач уст ст циклов
In_0: SETB MCO ;-----------------------------------
CALL Pod_MON_SCL ;дожидаемся перехода SCL в выс уров
MOV C,MDI ;прием бита
CLR MCO ;-----------------------------------
RLC A ;сдвиг А влево через С, С идет в бит 0
DJNZ R3,In_0 ;
RET
;-------------------------------------------------------------------------------
;Подпрограмма фиктивной записи (обращение с признаком записи по
;некоторому адресу ячейки без собственно записи) по шине I2C.
;-------------------------------------------------------------------------------
Pod_PWRITE_I2C:
LCALL Pod_START ;START
MOV A,SLUG_I2C_R ; передача адр устройства
LCALL Pod_OUT_BYTE ; и признака записи
LCALL Pod_ZACK ;запрос подтверждения
MOV A,ADRH_I2C_R ; передача ст байта адреса ячейки
LCALL Pod_OUT_BYTE ; в устройстве
LCALL Pod_ZACK ;запрос подтверждения
MOV A,ADRL_I2C_R ; передача мл байта адреса ячейки
LCALL Pod_OUT_BYTE ; в устройстве
LCALL Pod_ZACK ;запрос подтверждения
RET
;-------------------------------------------------------------------------------
;Подпрограмма записи байта в ведомое устройство EEPROM по шине I2C.
;Предварительно следует поместить в РОНы ADRH_I2C_R, ADRL_I2C_R адрес ячейки,
;в РОН DATA_I2C_R - данные записи, в РОН SLUG_I2C_R - адрес устройства и признак
;операции (запись).
;-------------------------------------------------------------------------------
Pod_WRITE_I2C:
LCALL Pod_PWRITE_I2C ;фиктивная запись - указание на ячейку
MOV A,DATA_I2C_R ; передача данных записи
LCALL Pod_OUT_BYTE ;
LCALL Pod_ZACK ;запрос подтверждения
LCALL Pod_STOP ;STOP
RET
;-------------------------------------------------------------------------------
;Подпрограмма чтения байта из ведомого устройства EEPROM по шине I2C.
;Предварит следует поместить в РОНы ADRH_I2C_R, ADRL_I2C_R адрес ячейки, а в
;РОН SLUG_I2C_R - адрес устройства и признак операции (запись).
;Прочитанный байт данных возвращается в РОНе DATA_I2C_R.
;-------------------------------------------------------------------------------
Pod_READ_I2C:
LCALL Pod_PWRITE_I2C ;фиктивная запись - указание на ячейку
LCALL Pod_START ;повторный START
MOV A,SLUG_I2C_R ;
SETB ACC_0 ;уст признак чтения данных
LCALL Pod_OUT_BYTE ;передача адреса устр и признака чтения
LCALL Pod_ZACK ;запрос подтверждения
LCALL Pod_IN_BYTE ;чтение байта данных из устройства
LCALL Pod_NACK ;не даем подтверждения
LCALL Pod_STOP ;STOP
MOV DATA_I2C_R,A ;
RET
;-----------------------------------------------------------------------------
;Подпрограмма инициализации РСН.
;-----------------------------------------------------------------------------
Pod_INIT_RSN:
MOV PORT_KNOP,#11111111b ;сделать вх все линии порта кн
MOV PORT_IND,#00000000b ;сделать вых все линии порта индик