реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Some problems with writing into the pin of a port, it's impossible to write like "IO0PIN_bit.P0_6 = *p & 0x
Shedon
сообщение Oct 15 2006, 17:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 110
Регистрация: 30-11-04
Из: Nizhny Novgorod
Пользователь №: 1 262



Собственно сабж, был у меня кусок программы:
Код
#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
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 15 2006, 19:28
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Shedon @ Oct 15 2006, 20:48) *
Собственно сабж, был у меня кусок программы:

Кусок явно ошибочный.
*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?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Shedon
сообщение Oct 15 2006, 19:49
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 110
Регистрация: 30-11-04
Из: Nizhny Novgorod
Пользователь №: 1 262



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

ступил, спасибо, просто как-то думалось что бит должен быть равен единице при любом значение не равном нулю
Go to the top of the page
 
+Quote Post
DASM
сообщение Oct 15 2006, 20:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



зачем в русскоязычном форуме писать тему на английском ? Выпендрежа ради ? Не стОит, не оценят. В менее лояльных форумах плюсик бы точно выдали
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 16 2006, 06:07
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(DASM @ Oct 15 2006, 23:50) *
зачем в русскоязычном форуме писать тему на английском ?

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
makc
сообщение Oct 16 2006, 06:15
Сообщение #6


Гуру
******

Группа: Админы
Сообщений: 3 621
Регистрация: 18-10-04
Из: Москва
Пользователь №: 904



bb-offtopic.gif bb-offtopic.gif bb-offtopic.gif maniac.gif

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


--------------------
BR, Makc
В недуге рождены, вскормлены тленом, подлежим распаду. (с) У.Фолкнер.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01509 секунд с 7
ELECTRONIX ©2004-2016