Jump to content

    
Sign in to follow this  
Shedon

Some problems with writing into the pin of a port

Recommended Posts

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

#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

Share this post


Link to post
Share on other sites
Собственно сабж, был у меня кусок программы:

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

*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?

Share this post


Link to post
Share on other sites
из последнего в 1 бит умещается только последний бит, т.е. 0.

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
зачем в русскоязычном форуме писать тему на английском ?

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this