Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В чем разница компиляторов IAR и CodeVisionAVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
clpe
Код
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 как будто одного цикла не хватает
rezident
А где два разных результата компиляции-то? ASMовые листинги приведите.
Цитата(clpe @ Mar 26 2009, 21:22) *
В CodeVisionAVR, все как надо, а в IAR'e как будто одного цикла не хватает
Скорее всего вы про квалификатор volatile где-то забыли.
Кстати, а что это за not в самом конце?
Цитата
while(not TESTBIT(DATA_PIN, DATA_DATA));

В СИ логическое отрицание вообще-то знаком ! обозначается.
Палыч
Что значит "разный результат"? Функция data_read возвращает разные значения? Следует заглянуть в ассемблерный код, который пораждают компиляторы для этой функции...
clpe
Цитата(rezident @ Mar 26 2009, 19:29) *
Скорее всего вы про квалификатор volatile где-то забыли.
Кстати, а что это за not в самом конце?

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

Подключил <iso646.h>.


Цитата(Палыч @ Mar 26 2009, 19:29) *
Что значит "разный результат"? Функция data_read возвращает разные значения? Следует заглянуть в ассемблерный код, который пораждают компиляторы для этой функции...

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

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


Согласен с rezident-ом. IAR более интеллектульный и строгий. CV Си подобный. Надо смотреть асмовские листинги.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.