Прописка
Регистрация: 24.07.2008
Сообщений: 151
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Запись EEPROM Megi88
Добрый день. Пытаюсь осуществить запись в «еепром» все бы не чего только вот через какое-то время запись прекращается т.е. как бы срабатывает таймер. Вот код
void do_IR_write(unsigned char sel
{
unsigned char temp; //r16
init_inout();
#asm
.equ PINB_ =0x03 // mega8 $16
.equ eea_preparats =0x01
.def ee =r16
.def temp =r21
.def reg_00 =r1
.def sel =r17
ldi ee,eea_preparats
add ee,sel
clr temp
in temp,PINB_
asr temp
ori temp,0xFE
rcall ee_write
ee_write:
sbic eecr,eepe
rjmp ee_write
out eearl,ee
out eearh,reg_00
out eedr,temp
sbi eecr,eempe
sbi eecr,eepe
ret
#endasm
data[sel]=temp;
но меня настораживает следующий момент если закомментировать ret то запись прдолжается правда белиберда пишется. Как выйти из положения
запись начинается с 0x02 и т.д. все заканчивается на sel=42 т.е. 0x1B смещение начального адреса (eea_preparats) результатом не дало. Что делать ума не приложу.
data[sel] объявлена как массив
eeprom unsigned char data[112]={ // data[0] – не используется, =0xff.
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|