Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 08.12.2007, 01:31  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

Для авр

-- Прилагается рисунок: --

Реклама:
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
Непрочитано 08.12.2007, 01:36  
dimonbest
Гражданин KAZUS.RU
 
Аватар для dimonbest
 
Регистрация: 30.04.2006
Сообщений: 984
Сказал спасибо: 5
Сказали Спасибо 18 раз(а) в 14 сообщении(ях)
dimonbest на пути к лучшему
По умолчанию

Не знаю... Тот пример что я привел со студией - в кодевиженавр. Возможно компиляторы по разному компилируют. Но по логике:
Код:
test=t1 ‹‹8;
переменная t1 char, и когда мы сдвинем на 8 бит влево, будет ноль, который мы и присвоим переменной test
dimonbest вне форума  
Непрочитано 08.12.2007, 09:57  
nokazus
Вид на жительство
 
Регистрация: 05.09.2006
Сообщений: 360
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
nokazus на пути к лучшему
По умолчанию

Извините, что влазию. Чтобы таких споров не возникало нужно при обработке делать явное преобразование типов. Если же Вы используете неявное преобразование, то читайте внимательно мануал компилятора и при переносе программ Вам все равно не избежать ошибок, которые обнаружить, как Вы сами убедились, очень сложно. У меня в строке test=t1‹‹8; CV выдает предупреждение: Shift result will be 0.
Что мешает написать test=t1; test‹‹=8;?
Любой компилятор откомпилит правильно. Хотя по правилам ANSI C переменная char, если результат int должна сначала преобразоваться в int. Но ведь C исходно перешел на МК с 16 разрядных машин. Т.е. обычное число 16 бит, а в МК 8. Так что все могет быть.
Удачи.
nokazus вне форума  
Непрочитано 08.12.2007, 10:46  
user_ushastyj
Временная регистрация
 
Регистрация: 06.12.2007
Сообщений: 91
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
user_ushastyj на пути к лучшему
По умолчанию

злит это все.. Такая невинная строчка - и проблемы в кодевижион. Когда ее писал, то рассчитывал, что компилятор, естественно, ничего сдвигать не будет - обнулит младший регистр инт (при сдвиге на 8 разрядов он обнуляется), а в старший занесет значение. Вот хайтек и иар так и сделали. А в кодевижин нужно написать приведение - т.е. вместо test=t1‹‹8; test=(int)t1‹‹8; тогда заработает. Да и то, генерируемый код... Мрак..
Так, как Вы предложили, сначала занести - потом сдвинуть - димонбест уже сказал постами выше.
Если бы я не работал с другими компиляторами, то не удивлялся бы кодевижин...
__________________
разум когда-нибудь победит... (с)
user_ushastyj вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в IAR выделить из ИНТ младший старший байт? prottoss Proteus, KiCAD и другие ECAD 2 25.07.2005 22:57


Часовой пояс GMT +4, время: 00:47.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot