как понять эти символы
<< - это вроде смещение влево
а это >> а это вправо
как понять эти символы
<< - это вроде смещение влево
а это >> а это вправо
mastech писал(а):у меня вопрос по Си как понять эти символы << - это вроде смещение влево а это >> а это вправо, просто не могу понять их работу.
их вроде можно записать по другому?
[code]
#include <avr/io.h>
#include <util/delay.h>
while ((PIND&(1 << PD0)) == 1){}
Для удобства чтения через год. Только непонятно, зачем вы модифицируете в этом примере порт ввода. Из него читают состояния на входных пинах.mastech писал(а):значит эту запись (PIND|=((1 << PD0)|(1 << PD4)|1 << PD5) можно сменить на PIND|=0b00110001;?
и зачем их смещать?))
ut1wpr писал(а):Только непонятно, зачем вы модифицируете в этом примере порт ввода.
так стоп кажись понял допустим 1 << PD0- это означает: присваиваем 1 порту PD0, далее 1 << PD4: присваиваем 1 PD4 и т.д., |(или) - логическое сложение и все это дело присваивается(=) к пинам PIND, верно?
Код: Выделить всё
PORTD=0b0101 0001; //выставили
начальное значение
PORTD&=~((1<<PD0)|(1<< PD5)); //сбрасываем биты 0 и 5
получится
PORTD=0b0101 0000;
остальные биты не трогаютсяКод: Выделить всё
LSL ByteL
ROL ByteHКод: Выделить всё
ByteHi <<= 1;
if (ByteLo & (1<<7))
ByteHi |= (1<<0);
ByteLo <<= 1;Код: Выделить всё
short a = 0x1234;
a = a << 1; // двигаем переменную из 2-х байт
long b = 0x12345678;
b <<= 1; // двигаем переменную из 4-х байтshads писал(а):Еще вопросик: Как отлаживать прогу на С?
В асме там все просто, зациклил в нужном месте прогу, запустил эмуляцию в протеусе, остановил и смотриш содержимое нужного регистра.
А на С, как узнать содержимое переменной?
Циклить не обязательно. Это зависит от задачи отладки.shads писал(а):Еще вопросик: Как отлаживать прогу на С?
В асме там все просто, зациклил в нужном месте прогу, запустил эмуляцию в протеусе, остановил и смотриш содержимое нужного регистра.
А на С, как узнать содержимое переменной?
shads писал(а):Еще вопросик: Как отлаживать прогу на С?
В асме там все просто, зациклил в нужном месте прогу, запустил эмуляцию в протеусе, остановил и смотриш содержимое нужного регистра.
А на С, как узнать содержимое переменной?
Это вы про эмуляцию в протеусе???zero648 писал(а):Чтобы не зацикливать, нужно в свойствах МК указывать не .НЕХ файл, а объектный файл .OBJ, тогда просто поставил брейкпоинт в нужной строке программы и всё, если прога на С, тогда указывай файл .ELF