Перейти к содержанию
    

Some problems with writing into the pin of a port

Собственно сабж, был у меня кусок программы:

#define SD            IO0PIN_bit.P0_6

for(unsigned char i=0; i<8; i++)
{
    SD = *p & 0x80;
    *p <<= 1;
    SCLK=1;
    SCLK=0;
    Sleep(2);
}

да вот заметил я, что в SD всегда ноль в независимоти от того, что находится в *p

перепивал код так

#define SD            IO0PIN_bit.P0_6

for(unsigned char i=0; i<8; i++)
{
    if( *p & 0x80 ) SD = 1;
    else SD = 0;
    *p <<= 1;
    SCLK=1;
    SCLK=0;
    Sleep(2);
}

и заработало!

Кто-то сталкивался с подобным?

 

----------------------------------------

Процессор: LPC2214

Компилятор: IAR 4.30A

Отладчик: jLink

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Собственно сабж, был у меня кусок программы:

Кусок явно ошибочный.

*p & 0x80 может принимать значения либо 0 либо 0x80, из последнего в 1 бит умещается только последний бит, т.е. 0.

 

можно написать

SD = (*p & 0x80) != 0, тогда получится. Или SD = (*p & 0x80) ? 1 : 0; или как Вы придумали.

 

Для окончательного понимания предлагаю такой вариант:

struct {
uint8_t tmp:8;
} var;

var.tmp = 0xFF;
++var.tmp;

чему будет равен var.tmp?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

из последнего в 1 бит умещается только последний бит, т.е. 0.

ступил, спасибо, просто как-то думалось что бит должен быть равен единице при любом значение не равном нулю

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

зачем в русскоязычном форуме писать тему на английском ? Выпендрежа ради ? Не стОит, не оценят. В менее лояльных форумах плюсик бы точно выдали

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

зачем в русскоязычном форуме писать тему на английском ?

Ну, например, для того, что-бы сообщения об ответе на эту тему уходили в том числе и на мобильного провайдера не подозревающего о существовании разнообразных 'русских' кодировок и на мобильнике можно было прочитать что это такое прибежало...

Здесь, вроде, не форум любителей вязания и каждый по определению обязан немного владеть английским. К чему такая достаточно резкая реакция?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:bb-offtopic: :bb-offtopic: :bb-offtopic: :maniac:

 

Обсуждения языков и т.п. не по теме - в разделе "Общение".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...