Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Ну и подобным образом далее.
моя процедура записи ниже:
WR_EEPROM:
#message "----------------------------------------------------------------------------------------------------"
#warning "This procedure must be verify FLASH self-programming complete flag, and so on.. It is uncompletely!"
#message "----------------------------------------------------------------------------------------------------"
rcall Wait_If_EEPROM_BUSY;Ждем, если EEPROM занят (заодно и сбросим WDT).
;
out EEARL,XL ;Установим адрес
out EEARH,XH ;--//--
;
in XL,SREG
cli ;Теперь запретим прерывания на время записи.
; ф.I восстановится при восстановлении SREG.
mov XH,TMP ;Запомним записываемые данные.
out EEDR,TMP ;Помещаем данные в EEDR
ldi TMP,0b00000100 ;приготовимся к записи
out EECR,TMP
ldi TMP,0b00000110 ;Начинаем запись
out EECR,TMP
;
mov TMP,XH ;Вспомним записываемые данные.
out SREG,XL ;Восстановим статус прерываний.
;
in XL,EEARL ;Восстановим адрес
in XH,EEARH ;--//--
;
ret
;============================================================================
;-- Проверка: не занят ли блок EEPROM предыдущей операцией чтения/записи
Wait_If_EEPROM_BUSY:
wdr ;Сброс "собаки" в паузе ожидания (на всякий случай).
sbic EECR,EERE ;Ждем, если EEPROM, занят на чтение.
rjmp Wait_If_EEPROM_BUSY
sbic EECR,EEWE ;Ждем, если EEPROM, занят на запись.
rjmp Wait_If_EEPROM_BUSY
ret
;============================================================================