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;
}
Тоже будет работать, т.к. определение перечисляемого типа сделано вне описания структуры.
В этом случае с программиста снимается забота о соответствии типов данных и их ширины.

FreshMan писал(а):почему ?
Код: Выделить всё
PORTD &= (1<<3)|(1<<5);
SubDia писал(а):Если любой из битов равен 1, то в результате получаем 1, если оба 0, то в результате 0. То есть, имеем:(0b00001000)|(0b00000001) = 0b00101000.

PORTD &=~((1<<1)(1<<0));
Код: Выделить всё
PORTD &=~((1<<1)|(1<<0));FreshMan писал(а): я правильно понял ?
Код: Выделить всё
CBI PORTD,0b00000011ut1wpr писал(а):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;
}}