Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
.ESEG
.org $0001
Programm_Status: .db 0
запись в епром
ldi XL,low(Programm_Status)
ldi XH,High(Programm_Status);устанавливаем адрес
ldi tmp,0b00000010
sts DATA_EEPROM,tmp;=============================================================================
EEPROM_write: ;Запись в EEPROM
in tmp,sreg
push tmp
cli ;Глобально запрещаем прерывания
EEPROM_write1:
sbic EECR,EEWE
rjmp EEPROM_write1 ;Ждём завершения предведущей записи
out EEARH,XH
out EEARL,XL ;Адрес в который нужно записать байт
lds tmp,Data_EEPROM
out EEDR,tmp ;Загрузка данных для сохранения
sbi EECR,EEMWE ;Устанавливаем флаг разрешения управления записи в EEPROM
; Старт записи в епром
sbi EECR,EEWE
;Паркуем адрес
EEPROM_write2:
sbic EECR,EEWE
rjmp EEPROM_write2 ;Ждём завершения записи
clr XH
clr XL
out EEARH,XH
out EEARL,XL ;паркуем адрес
pop tmp
out Sreg,tmp
ret;=============================================================================
чтение из епрома
ldi XL,low(Programm_Status)
ldi XH,High(Programm_Status);устанавливаем адрес;=============================================================================
EEPROM_read:
in tmp,sreg
push tmp
cli ;Глобально запрещаем прерывания
EEPROM_read1:
sbic EECR,EEWE
rjmp EEPROM_read1 ;Проверка выполнения записи
out EEARH,XH
out EEARL,XL ;Адрес c который нужно считать байт
sbi EECR,EERE ;Читаем адрес
in tmp,EEDR
sts Data_EEPROM,tmp ;Сохраняем считанные данные
EEPROM_read2:
sbic EECR,EEWE
rjmp EEPROM_read2 ;Ждём завершения записи
clr XH
clr XL
out EEARH,XH
out EEARL,XL ;паркуем адрес
pop tmp
out Sreg,tmpret
;=============================================================================
В Студии всё ок! на кристале читается FF ... avr m8
Какие будут предположения господа???