ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
24 ноября
27438
nml (27.04.2005 18:03, просмотров: 1148)
Ответ: Вопрос к знатокам С - компилятор для АВР, 3.20 - он ошибается или я чего напортачил? Вот усеченный вариант программы:
#include 

volatile __no_init __regvar struct 
                {
		unsigned char flag0:1;
		unsigned char flag1:1; 
		unsigned char flag2:1; 
		unsigned char flag3:1;
		unsigned char flag4:1; 
		unsigned char flag5:1;
		unsigned char flag6:1;
		unsigned char flag7:1;
 		} @ 13 ;

int main(void)
 {
 while (1)
   {
   if (flag0!=0) flag0 = 0;
   if (flag1) flag1 = 0;

   flag0 = 0;
   flag0 = 1;
   flag1 = 0;
   flag1 = 1;
   }
 }
Так вот, при компиляции с оптимизацией выше LOW он запись 0 в flag0 делает командой CLR R13! Запись 1 в него, а также все операции с другими флагами - нормально. Вот и думаю - это ошибка компилятора или я чего-то не указал?