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

UptoLike

267
;в РОН SLUG_I2C_R - адрес устройства и признак операции (запись).
;-------------------------------------------------------------------------------
Pod_WRITE_I2C:
LCALL Pod_START ;START
MOV A,SLUG_I2C_R ; передача адр устройства
LCALL Pod_OUT_BYTE ; и признака записи
LCALL Pod_ZACK ;запрос подтверждения
MOV A,DATA_I2C_R ; передача данных записи
LCALL Pod_OUT_BYTE ;
LCALL Pod_ZACK ;запрос подтверждения
LCALL Pod_STOP ;STOP
RET
;-------------------------------------------------------------------------------
;Подпрограмма чтения байта из ведомого устройства по шине I2C.
;Предварительно следует поместить в РОН SLUG_I2C_R - адрес устройства и признак
;операции (запись). Прочитанный байт данных возвращается в РОНе DATA_I2C_R.
;-------------------------------------------------------------------------------
Pod_READ_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 ;да, выход
;Подключение модулей опроса кнопок и вывода данных на ЖКИ (с опросом ЖКИ)
$INCLUDE (C:\PR_2051\I2C_MAST\knop.asm)
$INCLUDE (C:\PR_2051\I2C_MAST\lcd_opr.asm)
;Конец исполняемого кода
END
Трансляция этого файла в объектный файл с расширением .hex для
AT89C2051 осуществляется без каких-либо отличий от трансляции файлов с
исходными текстами для ADuC824. К сожалению, AT89C2051 не поддерживает
режима последовательного внутрисхемного программирования через UART,
поэтому читателям, желающим повторить предложенный макет, придется вос-