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

UptoLike

210
JNB ACC_1,Lg_70 ;переход, если ст бит равен 0
JNB ACC_0,Lg_60 ;переход, если мл бит равен 0
MOV EEDATA_R,EDATA4 ;если оба бита равны 0
RET ;
Lg_60: MOV EEDATA_R,EDATA3 ;
RET ;
Lg_70: MOV EEDATA_R,EDATA2 ;
RET ;
Lg_80: MOV EEDATA_R,EDATA1 ;
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_ADUC\EEPROM1\knop.asm)
$INCLUDE (C:\PR_ADUC\EEPROM1\lcd_opr.asm)
$INCLUDE (C:\PR_ADUC\EEPROM1\preobr.asm)
;Конец исполняемого кода
END
Работает она точно так же, как и предыдущая, но адрес ячейки данных в
массиве EEPROM здесь не восьми- , а десятиразрядный. Его старшая и млад-
шая части содержатся соответственно в регистрах EEADRH_R, EEADRL_R.
(Старшая часть в регистре EEADRH_R занимает два младших разряда.) Как и в
предыдущем примере, подпрограммы Pod_EEADR, Pod_EEDATA_WR и
Pod_EEDATA_RD осуществляют преобразование адреса байта, содержащегося
в EEADRH_R, EEADRL_R в адрес страницы и в адрес байта внутри страницы.
Восьмибитовый адрес страницы формируется из десятибитового адреса байта
путем двойного сдвига содержимого EEADRL_R вправо и выделения из ре-
зультата младших шести бит. Затем содержимое EEADRH_R также дважды
сдвигается вправо и из результата выделяются два старших бита. Получившие-
ся два числа логически складываются инструкцией ORL, что и дает в результа-
те один байт адреса страницы, помещаемой подпрограммой соответственно в
регистр EADRL. Следует заметить, что это, наверняка, не самый оптимальный
алгоритм получения требуемого результата. Особо «продвинутые» читатели
могут попытаться самостоятельно придумать что-нибудь более компактное.
Информацию об адресе байта внутри страницы, как и в предыдущем слу-
чае, несут два младших бита EEADR_R.