ВУЗ:
Составители:
238
RET
;------------------------------------------------------------------------------
;Подпрограмма передачи байта по шине I2C. Передаваемый байт следует
;предварительно поместить в аккумулятор. Используется счетчик циклов R3.
;Аккумулятор портится.
;------------------------------------------------------------------------------
Pod_OUT_BYTE:
SETB MDE ;SDA - выход
MOV R3,#8 ;нач уст ст циклов
Out_0: RLC A ;сдвиг А влево через С, бит 7 идет в С
MOV MDO,C ;передача бита
CALL Pod_DEL_I2C ;
SETB MCO ;--------------------------------
CALL Pod_DEL_I2C ;
CLR MCO ;--------------------------------
DJNZ R3,Out_0 ;
RET
;-------------------------------------------------------------------------------
;Подпрограмма приема байта по шине I2C. Принятый байт оказывается в аккумуляторе.
;Используется счетчик циклов R3.
;-------------------------------------------------------------------------------
Pod_IN_BYTE:
CLR MDE ;SDA - вход
MOV R3,#8 ;нач уст ст циклов
In_0: SETB MCO ;--------------------------------
CALL Pod_DEL_I2C ;
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 адрес ячейки, а в
Страницы
- « первая
- ‹ предыдущая
- …
- 236
- 237
- 238
- 239
- 240
- …
- следующая ›
- последняя »
