реклама на сайте
подробности

 
 
> В чем разница компиляторов IAR и CodeVisionAVR, Один участок кода в разных компиляторах дает разный результат?
clpe
сообщение Mar 26 2009, 16:22
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132



Код
unsigned int data_read(unsigned char databits)
{
  unsigned int data = 0;
  unsigned char i;

  __disable_interrupt();

  CLEARBIT(DATA_PORT, DATA_CLOCK);
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();
  __no_operation();

  for(i=databits; i>0; i--)
  {
    SETBIT(DATA_PORT, DATA_CLOCK);
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    if(TESTBIT(DATA_PIN, DATA_DATA))
      data++;
    CLEARBIT(DATA_PORT, DATA_CLOCK);
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    __no_operation();
    data <<= 1;
  }
  data >>= 1;

  __enable_interrupt();

  // Окончание запроса координаты
  while(not TESTBIT(DATA_PIN, DATA_DATA));
  SETBIT(DATA_PORT, DATA_CLOCK);

  return data;
}

В CodeVisionAVR, все как надо, а в IAR'e как будто одного цикла не хватает

Сообщение отредактировал clpe - Mar 26 2009, 16:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Mar 26 2009, 16:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



А где два разных результата компиляции-то? ASMовые листинги приведите.
Цитата(clpe @ Mar 26 2009, 21:22) *
В CodeVisionAVR, все как надо, а в IAR'e как будто одного цикла не хватает
Скорее всего вы про квалификатор volatile где-то забыли.
Кстати, а что это за not в самом конце?
Цитата
while(not TESTBIT(DATA_PIN, DATA_DATA));

В СИ логическое отрицание вообще-то знаком ! обозначается.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Mar 30 2009, 05:16
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(rezident @ Mar 26 2009, 20:29) *
А где два разных результата компиляции-то? ASMовые листинги приведите.
Скорее всего вы про квалификатор volatile где-то забыли.
Кстати, а что это за not в самом конце?

В СИ логическое отрицание вообще-то знаком ! обозначается.


Согласен с rezident-ом. IAR более интеллектульный и строгий. CV Си подобный. Надо смотреть асмовские листинги.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 07:14
Рейтинг@Mail.ru


Страница сгенерированна за 0.01419 секунд с 7
ELECTRONIX ©2004-2016