ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
27 апреля
518145
ilyaul (26.05.2014 21:14, просмотров: 2146)
Помогите разобраться. Впервые, как пересел на си, использую EEPROM.Так как целевого кристалла нет на руках, для испытаний взял 8535. И всплыл неприятный момент. В проекте используются дисплей, клавиатура. Соответственно, меню. Так вот, при попытке записать данные в еепром МК сбрасывается. Отключил прерывания, перед и после записи в еепром сброс сторожевого таймера, сбрасываться перестал, но не корректно записываются данные. И программа не корректно после этого выполняется. По дизасму вроде все нормально...
    RSEG    CODE:CODE:NOROOT(1)
?eeput16_inc:
    SUBI    Q0,255
    SBCI    Q1,255
?eeput16:
    OUT EEARL,Q0
    OUT EEARH,Q1
    CLI
    SBI EECR,EEMWE
    SBI EECR,EEWE
    OUT SREG,T0
    RET
В программе сделано так:
void save_sett_quant (void)
{
   sett_quant = tui_sett_quant;

   asm("WDR");

   volatile register u08 a = SREG;

   asm("CLI");

   if (ee_sett_quant != sett_quant)
   {
      ee_sett_quant = sett_quant;
   }

   SREG = a;

   asm("WDR");

   set_menu (L_OUT_MODE);
}