Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
mich91
Встал на лапы
Сообщения: 95
Зарегистрирован: Ср ноя 02, 2011 15:11:49

Re: Вопросы по С/С++ (СИ)

Сообщение mich91 »

char cur_pin_out=0;
...........
Вот скажыте,какая разница,между этими выражениями ??
этой---
cur_pin_out=0x00;
if(PIND!=(~(1<<cur_pin_out)))

и вот этой---

if(PIND!=(~(1<<0)))
....
Ато не работает чего то ((
Последний раз редактировалось Аlex Вт апр 10, 2012 00:39:42, всего редактировалось 1 раз.
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

какая разница,между этими выражениями ??
В одном случае - переменная, в другом - ноль.

Ато не работает чего то ((
Опять таинственные фразы...
Реклама
mich91
Встал на лапы
Сообщения: 95
Зарегистрирован: Ср ноя 02, 2011 15:11:49

Re: Вопросы по С/С++ (СИ)

Сообщение mich91 »

(unsigned char)~(1<<cur_pin_out)
а так работает ))
Последний раз редактировалось Аlex Вт апр 10, 2012 00:40:19, всего редактировалось 1 раз.
Причина: ---
mich91
Встал на лапы
Сообщения: 95
Зарегистрирован: Ср ноя 02, 2011 15:11:49

Re: Вопросы по С/С++ (СИ)

Сообщение mich91 »

Аlex писал(а):
какая разница,между этими выражениями ??
В одном случае - переменная, в другом - ноль.

Ато не работает чего то ((
Опять таинственные фразы...

Я имел ввиду что при одинаковых выражениях вида 1<<X, где Х -число(0),или переменная которой я присвоил 0, выдаёт разные результаты )
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

если хотите переменную использовать лучше применить маски
В поисках истины человек развивается.
Реклама
mich91
Встал на лапы
Сообщения: 95
Зарегистрирован: Ср ноя 02, 2011 15:11:49

Re: Вопросы по С/С++ (СИ)

Сообщение mich91 »

vitalik_1984 писал(а):если хотите переменную использовать лучше применить маски

Это как ??
Реклама
Аватара пользователя
Rimsky
Грызет канифоль
Сообщения: 299
Зарегистрирован: Вт июн 15, 2010 07:16:42
Откуда: Иркутск
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Rimsky »

vitalik_1984 писал(а):в этом выражении еще и скобка лишняя похоже:-)

Код: Выделить всё

strncmp_P((const char*)data, *bru_600, 3))


а точно адрес первого элемента массива нужно передать в функцию?может нулевой?

Код: Выделить всё

Код:
strncmp_P((char const*)&data[1], PSTR("600"), 3)


Да, все Ок, работает. Нулевой элемент массива у меня для других целей.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

Приветствую всех.
Такой вопрос. Имеем класс:

Собственно, объявление класса:

Код: Выделить всё

class SHUNT
{
private:
   ........
   unsigned char         v_min;            // Min tension flag
   unsigned char         v_max;            // Max tension flag
public:
   SHUNT();
   ~SHUNT();
   .........
   bool LoadShuntBypass(unsigned char *addr);
};


Реализация метода:

Код: Выделить всё

bool SHUNT::LoadShuntBypass(unsigned char *addr)
{
   if(addr[DATA_SIZE] != SH_BYP_SZ){return false;}    //  DATA_SIZE =0x02u ; SH_BYP_SZ = 0x03u
   v_min = addr[V_MIN];     // V_MIN = 0x03u
   v_max = addr[V_MAX];    // V_MAX = 0x04u
   return true;
}


Обращение к методу извне:

Код: Выделить всё

static unsigned char buff[32];
SHUNT sh2;
..................
..............//Принимаем пакет в буфер и проверяем на целостность.
..............
if(!(sh2.LoadShuntBypass(buff))){cout<<"BYPASS DATA CORRUPTED!"<<endl;} //После первичной проверки, извлекаем некоторые данные из пакета.
....................


Правильно ли я делаю, или где-то накосячил?
Интересует именно правильность операций с массивом buff[32]
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение vitalik_1984 »

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

Код: Выделить всё



#define _BV(x) (1<<(x))
#define PIN1 1 
#define PIN2 2 
#define PIN3 3 
#define MASK_PINS (_BV(PIN1)|_BV(PIN2)|_BV(PIN3))  //формируем маску здесь и тремя строками выше

unsigned char cur_pin_out;    //Переменную обьявили
///___________Основной цикл
if(MASK_PINS&(cur_pin_out<<=1)){/*тут делаем что нужно*///Тут применили маску и заодно сдвинули cur_pin_out влево
      else {cur_pin_out=_BV(PIN1);} //Если кончились ножки(по маске), то заново.
 

А что конкретно вы хотели таким способом добиться? Поди сканировать клавиатуру,порты?
В поисках истины человек развивается.
Аватара пользователя
БАТАРЕЙКУС
Потрогал лапой паяльник
Сообщения: 346
Зарегистрирован: Сб фев 07, 2009 19:21:25

Re: Вопросы по С/С++ (СИ)

Сообщение БАТАРЕЙКУС »

Мужики помогите чем можете.
я программирую PIC18 с помощью мелкочиповского компилятора C18, и столкнулся проблемой я не как
не могу создать указатель на массив.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

обоснуйте....
const rom char *pArrRom="12345";
Аватара пользователя
AI_Disable
Сверлит текстолит когтями
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение AI_Disable »

urry писал(а):const rom char *pArrRom="12345";

Смахивает на какой-то бред. Если, конечно, это не очередные приблуды псевдо-си компиляторов.
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение urry »

:)
Вполне нормальная запись для MCC18.
Хотя можно и в 3 строчки.
near rom char * near_rom_ptr;
rom char rom_array[] = "ROM";
near_rom_ptr = &rom_array[0];
Последний раз редактировалось urry Ср апр 11, 2012 23:50:19, всего редактировалось 1 раз.
Transistor
Прорезались зубы
Сообщения: 209
Зарегистрирован: Пт авг 27, 2010 18:05:09

Re: Вопросы по С/С++ (СИ)

Сообщение Transistor »

Ребята что ето за такая функция printf с чем к чему ету функцию подають разтолкуйте мне? Pic c CCS
П.С.Как будто на лсд экран оно не выдает :dont_know: (так как в ПК) куда она выводит свои значения.
Аватара пользователя
Кислый
Поставщик валерьянки для Кота
Сообщения: 2095
Зарегистрирован: Чт апр 08, 2010 18:50:01
Откуда: Краснодар
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Кислый »

о_0
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение Аlex »

куда она выводит свои значения
В putch.

Код: Выделить всё

void putch(char);
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

Re: Вопросы по С/С++ (СИ)

Сообщение ut1wpr »

Transistor писал(а):Ребята что ето за такая функция printf с чем к чему ету функцию подають[skip]
куда она выводит свои значения.
Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
С уважением,
Виктор.
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение DX168B »

DX168B писал(а):Приветствую всех.
Такой вопрос.
//////////////
buff[32]

Сразу скажу, что конструкция не работала. Почему, уже разобрался сам.
Спасибо за "помощь".....
I am DX168B and this is my favourite forum on internet!
Transistor
Прорезались зубы
Сообщения: 209
Зарегистрирован: Пт авг 27, 2010 18:05:09

Re: Вопросы по С/С++ (СИ)

Сообщение Transistor »

ut1wpr писал(а):Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.

Я непонямаю как ета функция работает. Кстате открил я ету библиотеку и нефига там нет только perror от такая функция. Я знаю как ета функция работает на компе но как она работает в МК.
Mr.Denis
Прорезались зубы
Сообщения: 220
Зарегистрирован: Пт авг 07, 2009 22:06:49
Откуда: Россия, Москва

Re: Вопросы по С/С++ (СИ)

Сообщение Mr.Denis »

Приветствует!
Подскажите как понимать эту конструкцию:
while (!( SCS &0x00000040));
Если я правильно понимаю, то цикл висит до тех пор пока в регистре scs этот бит не будет равен 1?
И еще не совсем понятно как работает вот эта конструкция:
while( PLLSTAT & 0x000);

Подскажите пожалуйста!
STM32F4 Discovery + KEIL + Windows 7
Ответить

Вернуться в «Разные вопросы по МК»