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

UptoLike

203
Pod_EEADR:
MOV ACC,EEADR_R ;---------------------------------
RR A ; Деление абс адреса на 4 для
RR A ; получения адреса стр EEPROM
ANL ACC,#00111111b ;---------------------------------
MOV EADRL,ACC ; загрузить подготовл адр страницы
RET
;-------------------------------------------------------------------------------
;Подпрограмма определения адреса байта (для записи) внутри страницы из абс адреса
;-------------------------------------------------------------------------------
Pod_EEDATA_WR:
MOV ACC,EEADR_R ; выделение двух мл бит
ANL ACC,#00000011b ;---------------------------------
JZ Lg_50 ;переход, если оба бита равны 0
JNB ACC_1,Lg_40 ;переход, если ст бит равен 0
JNB ACC_0,Lg_30 ;переход, если мл бит равен 0
MOV EDATA4,EEDATA_R ;если оба бита равны 0
RET ;
Lg_30: MOV EDATA3,EEDATA_R ;
RET ;
Lg_40: MOV EDATA2,EEDATA_R ;
RET ;
Lg_50: MOV EDATA1,EEDATA_R ;
RET
;-------------------------------------------------------------------------------
;Подпрограмма чтения одного байта из EEPROM данных по адресу, предварительно
;помещенному в РОН EEADR_R. Прочитанный байт данных оказывается в РОНе EEDATA_R.
;Ошибка чтения не диагностируется. Адресуется полько 256 байт EEPROM.
;-------------------------------------------------------------------------------
Pod_RD_EEPROM:
ACALL Pod_EEADR ;подпр определения адр стр EEPROM
MOV ECON,#01h ;читать страницу
ACALL Pod_EEDATA_RD ;подпр определения адр байта для чтен
RET
;-------------------------------------------------------------------------------
;Подпрограмма определения адреса байта (для чтения) внутри страницы из абс адреса
;-------------------------------------------------------------------------------
Pod_EEDATA_RD:
MOV ACC,EEADR_R ; выделение двух мл бит
ANL ACC,#00000011b ;---------------------------------
JZ Lg_80 ;переход, если оба бита равны 0
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: