17.04.2014, 10:10
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Сдвиг в cvavr
Объясните пож. почему сдвиг работает не так как я от него ожидаю
проект создан в cvavr версии 2.04.4а
проц attyni2313
вот часть кода, код сгенерирован по умолчанию(запустил код генератор и сразу save and exit)
Код:
|
...
unsigned char qwerty=0x00;
...
void main(void)
{
...
while(1)
{
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
qwerty=1‹‹qwerty;
}
}
} |
не понимаю почему переменная qwerty последовательно принимает значения:
0x00
0x01
0x02
0x04
0x10 !!!!!?
0x00 !!!!!?
т.е. после значения 4 переменная qwerty сразу принимает значение 16 вместо значения 8! почему?!
прикладываю проект в архиве rar.
|
|
|
|
17.04.2014, 10:16
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,002
Сказал спасибо: 2,557
Сказали Спасибо 11,873 раз(а) в 5,951 сообщении(ях)
|
Re: сдвиг в cvavr
А если на бумажке, вручную, включив мозг в режиме тиньки, проделать этот кусок программы? Пар не пойдет?
Внимательно посмотрите, чего хотите от контроллера и что, по факту, просите сделать.
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.04.2014, 12:29
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Сдвиг в cvavr
Будьте добры просто напишите инструкцию так как она должна выглядеть! У меня явное не понимание синтаксиса cvavr!
Если вы намекаете на: qwerty=qwerty‹‹1; то сдвига не происходит вообще!
|
|
|
|
17.04.2014, 12:32
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,530
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 810 сообщении(ях)
|
Re: Сдвиг в cvavr
Сообщение от KOCTR
|
почему?!
|
Потому что вы двигаете 1 на число раз в qwerty и присваиваете результ qwerty
Если хотите просто двигать qwerty
Код:
|
qwerty= qwerty ‹‹ 1;
или
qwerty ‹‹= 1; |
Учите Си!
|
|
|
|
17.04.2014, 12:50
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,002
Сказал спасибо: 2,557
Сказали Спасибо 11,873 раз(а) в 5,951 сообщении(ях)
|
Re: Сдвиг в cvavr
Можно типа
for (i=1; i‹17; i++) {
qwerty=1‹‹i;
.......
}
И при чем тут CV ? Просто потому, что привыкли на него наезжать?
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.04.2014, 13:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Сдвиг в cvavr
Сообщение от KOCTR
|
Код:
|
unsigned char qwerty=0x00; |
|
До опупения можно сдвигать, ноль, он и "сдвинутый" будет ноль. Куда бы ни сдвигали.. ![Улыбка](images/smilies/icon_smile.gif)
Выше правильно посдказывали.
Код:
|
unsigned char qwerty=0x01;
qwerty ‹‹= 1;
// etc |
...Учите и понимайте Си.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
17.04.2014, 13:59
|
|
Заблокирован
Регистрация: 21.01.2014
Сообщений: 589
Сказал спасибо: 7
Сказали Спасибо 267 раз(а) в 206 сообщении(ях)
|
Re: Сдвиг в cvavr
Сообщение от KOCTR
|
после значения 4 переменная qwerty сразу принимает значение 16 вместо значения 8! почему?!
|
Для получения 8 надо сдвинуть на 3, а у Вас уже 4 в переменной лежит. Значение 3 проскакивается из-за применяемого способа сдвига.
|
|
|
|
17.04.2014, 15:16
|
|
Прохожий
Регистрация: 28.08.2007
Сообщений: 3
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Сдвиг в cvavr
Учите си в значении не приставай с дурацкими вопросами... Но на то вопросы и задаются чтобы понять что-то! Однако и я дам совет: вместо того чтобы умничать иногда нужно просто дать готовый ответ! Извините не я задал тон общения! Начинающему всегда трудно понять логику из-за отсутствия опыта. Ключевым моментом тут было то что переменная имела нулевое значение из за чего я и не получал нужного результата, а в литературе нигде не было сказано об этом! Тем не менее боьшое всем спасибо!
|
|
|
|
17.04.2014, 16:24
|
|
Гуру портала
Регистрация: 06.05.2005
Адрес: Краснодар, возле укротворного моря.
Сообщений: 19,002
Сказал спасибо: 2,557
Сказали Спасибо 11,873 раз(а) в 5,951 сообщении(ях)
|
Re: Сдвиг в cvavr
Сообщение от KOCTR
|
1‹‹qwerty
|
Это значит единицу продвинуть столько раз, СКОЛЬКО ЛЕЖИТ в переменной. Другими словами, если в переменной единица сдвинута уже в 3-й разряд (4-й по счету), то следующий сдвиг будет уже на 8 разрядов.
Это к
Сообщение от KOCTR
|
Учите си в значении не приставай с дурацкими вопросами...
|
__________________
Не бейте больно, ежели чо, ну не удержался... А вааще,
"Мы за все хорошее, против всей х..., По лугам некошеным чтобы шли ступни,
Чтобы миром правила правда, а не ложь, Мы за все хорошее, нас не на...!
..." (Ленинград)
Я не несу ответственности за свои действия в Вашей голове.
|
|
|
|
17.04.2014, 17:23
|
|
Почётный гражданин KAZUS.RU
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,616
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
|
Re: Сдвиг в cvavr
Сообщение от KOCTR
|
Учите си в значении не приставай с дурацкими вопросами... Но на то вопросы и задаются чтобы понять что-то! Однако и я дам совет: вместо того чтобы умничать иногда нужно просто дать готовый ответ! Извините не я задал тон общения! Начинающему всегда трудно понять логику из-за отсутствия опыта. Ключевым моментом тут было то что переменная имела нулевое значение из за чего я и не получал нужного результата, а в литературе нигде не было сказано об этом! Тем не менее боьшое всем спасибо!
|
Ни один из советующих не умничал. Ни разу. А вот давать советы имея 3 (три) личных поста на форуме я бы не рекомендовал. Не так поймут. ![Улыбка](images/smilies/icon_smile.gif)
В дальнейшем для понимания сути происходящего тренируйте беглое представление чисел в разных форматах представления. В вашем случае вам достаточно было написать подряд 8 нулей (0х00 в бинарном представлении выглядят "00000000") чтобы сразу увидеть, какие числа будут появляться при смещении этих нулей влево или вправо.
dec-›hex-›bin в пределах восьми разрядов у вас должны быть зрительно-мгновенны. На вскидку. Работайте над этим. Это основы.
__________________
С уважением,
Vic / ut1wpr
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:18.
|
|