а что это значит ?ut1wpr писал(а):у меня уже березка на горизонте...
СПАСИБО...................., только вот английский мой пока храмаетut1wpr писал(а):Вот один из результатов помощи дядьки Гугла.
а что это значит ?ut1wpr писал(а):у меня уже березка на горизонте...
СПАСИБО...................., только вот английский мой пока храмаетut1wpr писал(а):Вот один из результатов помощи дядьки Гугла.
Слава Богу, что вы этого не знаете. Значит рано еще. Подольше бы вам не знать..FreshMan писал(а):а что это значит ?
А вот это плохо. Совсем плохо. Значит, вам кроме преподавателей еще и переводчики потребуются.СПАСИБО...................., только вот английский мой пока храмает
Можно и так, я чего-то не догадался.ut1wpr писал(а): Си нас ни в чем не ограничивает. Можно определить новый тип данных:Тоже будет работать, т.к. определение перечисляемого типа сделано вне описания структуры.Спойлер
Код: Выделить всё
typedef enum{ CAN_IDLE, CAN_SENDING, CAN_WAIT_RX, CAN_PROCESS } state; struct g_sCAN{ [skip] state eState; }; int main (){ [skip] // Set the initial state to idle. g_sCAN.eState = CAN_IDLE; }
В этом случае с программиста снимается забота о соответствии типов данных и их ширины.
Спросите у Atmel. Видать, мозгов\места на камне\щедрости (нужное подчеркнуть) не хватило у них.FreshMan писал(а):почему ?
Код: Выделить всё
PORTD &= (1<<3)|(1<<5);
простите, может сдесь результат будет равен не 0b00101000 а 0b00001001 ???SubDia писал(а):Если любой из битов равен 1, то в результате получаем 1, если оба 0, то в результате 0. То есть, имеем:(0b00001000)|(0b00000001) = 0b00101000.

Если всё же посчитать, что пропущен оператор битового ИЛИ и выражение должно какPORTD &=~((1<<1)(1<<0));
Код: Выделить всё
PORTD &=~((1<<1)|(1<<0));Почти,толькоFreshMan писал(а): я правильно понял ?
Код: Выделить всё
CBI PORTD,0b00000011Спасибо всем! Сделал дефайнами. Но просто интересно, почему в другом алгоритме подобная схема работаетut1wpr писал(а):DX168B писал(а): Си нас ни в чем не ограничивает. Можно определить новый тип данных:Тоже будет работать, т.к. определение перечисляемого типа сделано вне описания структуры.Код: Выделить всё
typedef enum{ CAN_IDLE, CAN_SENDING, CAN_WAIT_RX, CAN_PROCESS } state; struct g_sCAN{ [skip] state eState; }; int main (){ [skip] // Set the initial state to idle. g_sCAN.eState = CAN_IDLE; }
В этом случае с программиста снимается забота о соответствии типов данных и их ширины.
Скорее всего, это интересно уже только вам. Разроете - будет ваша маленькая победа, еще один шажок на пути к полному пониманию.Chip115 писал(а):Спасибо всем! Сделал дефайнами. Но просто интересно, почему в другом алгоритме подобная схема работает
Код: Выделить всё
if((Buffer[Bit/8]>>(Bit%8))&0x01)Так и есть!vitalik_1984 писал(а):Вычислит то вы числит, а что это за алгоритм такой?
Похоже на последовательный вывод значения регистра на ногу контроллера
Код: Выделить всё
#define OUT_PORT PORTB
#define OUT_PIN 1
void data_shift(unsigned char DATA){
for (i=0;i<7;i++){
if (DATA&0x01) setbit(OUT_PORT,OUT_PIN);
else clearbit(OUTPORT,OUT_PIN);
DATA=DATA>>1;
}}