ВУЗ:
Составители:
209
Pod_WR_EEPROM:
ACALL Pod_EEADR ;подпр определения адр стр EEPROM
MOV ECON,#01h ;читать страницу
ACALL Pod_EEDATA_WR ;подпр определения адр байта для зап
MOV ECON,#05h ;стереть страницу
MOV ECON,#02h ;записать страницу в EEPROM
MOV ECON,#04h ;верифицировать страницу
MOV ACC,ECON ;не было ли ошибки записи ?
JZ Lg_0 ;нет, выход
SETB _ERR_WR_EE ;да, уст флаг "ошибка зап в EEPROM"
Lg_0: RET
;-------------------------------------------------------------------------------
;Подпрограмма определения адреса страницы EEPROM из абсолютного адреса
;-------------------------------------------------------------------------------
Pod_EEADR:
MOV ACC,EEADRL_R ;---------------------------------
RR A ; Получение шести мл бит адреса
RR A ; стр EEPROM
ANL ACC,#00111111b ;
MOV EADRL,ACC ;---------------------------------
MOV ACC,EEADRH_R ;---------------------------------
RR A ; Получение двух ст бит адреса
RR A ; стр EEPROM
ANL ACC,#11000000b ;
ORL A,EADRL ;---------------------------------
MOV EADRL,ACC ;загрузить подготовл адр страницы
RET
;-------------------------------------------------------------------------------
;Подпрограмма определения адреса байта (для записи) внутри страницы из мл байта
;абс адреса
;-------------------------------------------------------------------------------
Pod_EEDATA_WR:
MOV ACC,EEADRL_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 данных по адресу, предварительно
;помещенному в РОНы EEADRH_R, EEADRL_R. Прочитанный байт данных оказывается в
;РОНе EEDATA_R. Ошибка чтения не диагностируется. Можно адресовать полько
;640 (от 0 до 639) байт EEPROM.
;-------------------------------------------------------------------------------
Pod_RD_EEPROM:
ACALL Pod_EEADR ;подпр определения адр стр EEPROM
MOV ECON,#01h ;читать страницу
ACALL Pod_EEDATA_RD ;подпр определения адр байта для чтен
RET
;-------------------------------------------------------------------------------
;Подпрограмма определения адреса байта (для чтения) внутри страницы из мл байта
;абс адреса
;-------------------------------------------------------------------------------
Pod_EEDATA_RD:
MOV ACC,EEADRL_R ; выделение двух мл бит
ANL ACC,#00000011b ;---------------------------------
JZ Lg_80 ;переход, если оба бита равны 0
Страницы
- « первая
- ‹ предыдущая
- …
- 207
- 208
- 209
- 210
- 211
- …
- следующая ›
- последняя »
