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

UptoLike

256
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 ;сделать вых все линии порта индик
RET
;------------------------------------------------------------------------------
;Подпрограмма инициализации РОНов. Обнуляются все РОНы с адресами
;от NACH_ADR до KON_ADR при помощи косвенной адресации.
;------------------------------------------------------------------------------
Pod_INIT_RON:
MOV R0,#NACH_ADR ;установка начального адреса
Lk_0: MOV @R0,#0 ;обнуление очередного РОНа
INC R0 ;переход к следующему адресу
CJNE R0,#KON_ADR,Lk_0 ;не достигли ли последнего адреса ?
MOV @R0,#0 ;обнуление последнего РОНа
RET ;да, выход
;-----------------------------------------------------------------------------
;Подпрограмма вывода на ЖКИ содержимого буфера из 10 РОНов в виде 10 знакомест.
;R0 должен указывать на РОН в буфере, содержимое которого индицируется первым.
;R1 должен содержать нач адрес знакоместа в ОЗУ ЖКИ.
;-----------------------------------------------------------------------------
Pod_IND_10ZN:
MOV R2,#0 ;нач уст ст цикла
Ii_0: MOV DATA_IND_R,@R0 ;