Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тупит компилятор EAVR 4.3?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Beginning
Не могу понять, почему в выражении: PORTC_Bit0=(z&(1<<4)); компилятор генерирует ассемблерный код, где биту всегда присваивается 0. Скачайте проект и посмотрите в симуляторе (отладчике), что за код? Компилятор тупит???
zltigo
Цитата(Beginning @ Dec 30 2007, 19:39) *
Компилятор тупит???

Нет, тупит тот, кто считает, что (100 & 8 ) не равно 0.
Сделайте z глобальной и посмотрите на результат.
Beginning
Тупит тот, кому лень посмотреть опцию NONE в настройках оптимизации компилятора. Выкладываю более понятный проект.
zltigo
Цитата(Beginning @ Dec 30 2007, 21:22) *
Тупит тот, кому лень посмотреть опцию NONE в настройках оптимизации компилятора...

Вы не доотцениваете мое безразличие - я вообще не собираюсь открывать сей "проект" и тем более рассматривать галочки. А Вам теперь подумать, как Вы это собираетесь присвоить биту, напрмер, 0x10, 0x20,.... 0x80... С 0x00 и 0x01, естественно проблем нет.

P.S.
К делу не относится. Совет - никогда не городить безумные конструкции и не не использовать IAR-овские уродские _Bit.
Beginning
Цитата
Вы не доотцениваете мое безразличие - я вообще не собираюсь открывать сей "проект" и тем более рассматривать галочки.

Это не просто галочка, она запрещает компилятору всяческое вольнество, и заставляет компилировать, так как написано (но впрочем, это вы прекрасно знаете). А если бы вы всё же открыли проект (хотя как вы узнали некоторые его подробности? телепатия..!), то увидели, что биту присваивается не
Цитата
0x10, 0x20,.... 0x80

а конструкция (z&(1<<x)) которая может принять 2 значения TRUE/FALSE.
Цитата
IAR-овские уродские _Bit.

Полностью согласен. Но чем заменить, что бы конструкция была не сложнее типа PORTA.3

Кажется, догадался, почему компилятор себя так ведёт. Переменная типа _Bit, как ни странно, является char, но длиной в 1 бит. И все законы на эту переменную распространяются как на char. Может в этом собака зарыта?
zltigo
Цитата(Beginning @ Dec 30 2007, 22:36) *
а конструкция (z&(1<<x)) которая может принять 2 значения TRUE/FALSE.

Разумеется, сия конструкция НЕ принимает значения TRUE/FALSE. Матчасть, однако надо знать.
Beginning
Для бита принимает. И еслибы это был бит, то конструкция работала так как надо. Ядумаю вы не будете саорить что например конструкция if(123) и if(0) компилятором воспринимается однозначно. Так чем вы заменяете _Bit
zltigo
Цитата(Beginning @ Dec 30 2007, 23:03) *
Для бита принимает.

Не морочте голову ни себе не другим.
Цитата
Так чем вы заменяете _Bit

Естественно явными сишными портируемыми конструкциями c | & ^ и <<.
Beginning
Цитата
Не морочте голову ни себе не другим.

И чем же я так вам голову заморочил?
Цитата
Естественно явными сишными портируемыми конструкциями c | & ^ и <<.

Иногда бывает удобнее пользоватся чем то другим.
Тема закрыта. sad.gif
zltigo
Цитата(Beginning @ Dec 30 2007, 23:46) *
И чем же я так вам голову заморочил?

Мне? Мне ничем - и не такую писанину видал.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.