Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
char cur_pin_out=0;
...........
Вот скажыте,какая разница,между этими выражениями ??
этой---
cur_pin_out=0x00;
if(PIND!=(~(1<<cur_pin_out)))
и вот этой---
if(PIND!=(~(1<<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: Вопросы по С/С++ (СИ)
В одном случае - переменная, в другом - ноль.какая разница,между этими выражениями ??
Опять таинственные фразы...Ато не работает чего то ((
Re: Вопросы по С/С++ (СИ)
(unsigned char)~(1<<cur_pin_out)
а так работает ))
а так работает ))
Последний раз редактировалось Аlex Вт апр 10, 2012 00:40:19, всего редактировалось 1 раз.
Причина: ---
Причина: ---
Re: Вопросы по С/С++ (СИ)
Аlex писал(а):В одном случае - переменная, в другом - ноль.какая разница,между этими выражениями ??Опять таинственные фразы...Ато не работает чего то ((
Я имел ввиду что при одинаковых выражениях вида 1<<X, где Х -число(0),или переменная которой я присвоил 0, выдаёт разные результаты )
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
если хотите переменную использовать лучше применить маски
В поисках истины человек развивается.
- Реклама
Re: Вопросы по С/С++ (СИ)
vitalik_1984 писал(а):если хотите переменную использовать лучше применить маски
Это как ??
- Rimsky
- Грызет канифоль
- Сообщения: 299
- Зарегистрирован: Вт июн 15, 2010 07:16:42
- Откуда: Иркутск
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
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: Вопросы по С/С++ (СИ)
Приветствую всех.
Такой вопрос. Имеем класс:
Собственно, объявление класса:
Реализация метода:
Обращение к методу извне:
Правильно ли я делаю, или где-то накосячил?
Интересует именно правильность операций с массивом buff[32]
Такой вопрос. Имеем класс:
Собственно, объявление класса:
Код: Выделить всё
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: Вопросы по С/С++ (СИ)
Я хотел сказать если не хотите эту переменную использовать как само число, показывающее используемую ногу то можно использовать маску.Вообще маску можно использовать во многих случаях, особенно когда на том же порту используются ноги другого значения.В этом примере можно использовать любые три подряд ноги порта.
А что конкретно вы хотели таким способом добиться? Поди сканировать клавиатуру,порты?
Спойлер
Код: Выделить всё
#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, и столкнулся проблемой я не как
не могу создать указатель на массив.
я программирую PIC18 с помощью мелкочиповского компилятора C18, и столкнулся проблемой я не как
не могу создать указатель на массив.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
обоснуйте....
const rom char *pArrRom="12345";
const rom char *pArrRom="12345";
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
urry писал(а):const rom char *pArrRom="12345";
Смахивает на какой-то бред. Если, конечно, это не очередные приблуды псевдо-си компиляторов.
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Вполне нормальная запись для 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: Вопросы по С/С++ (СИ)
Ребята что ето за такая функция printf с чем к чему ету функцию подають разтолкуйте мне? Pic c CCS
П.С.Как будто на лсд экран оно не выдает
(так как в ПК) куда она выводит свои значения.
П.С.Как будто на лсд экран оно не выдает
(так как в ПК) куда она выводит свои значения.- Кислый
- Поставщик валерьянки для Кота
- Сообщения: 2095
- Зарегистрирован: Чт апр 08, 2010 18:50:01
- Откуда: Краснодар
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
о_0
RETI ;рети-рети интеррапт, через шины данных тракт, через память, через порт, возвращайся в главный код
@hobbyelectronics
@hobbyelectronics
Re: Вопросы по С/С++ (СИ)
Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.Transistor писал(а):Ребята что ето за такая функция printf с чем к чему ету функцию подають[skip]
куда она выводит свои значения.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
С уважением,
Виктор.
Виктор.
- DX168B
- Друг Кота
- Сообщения: 4468
- Зарегистрирован: Вс янв 24, 2010 19:19:52
- Откуда: Главный Улей России (Moscow)
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
DX168B писал(а):Приветствую всех.
Такой вопрос.
//////////////
buff[32]
Сразу скажу, что конструкция не работала. Почему, уже разобрался сам.
Спасибо за "помощь".....
I am DX168B and this is my favourite forum on internet!
-
Transistor
- Прорезались зубы
- Сообщения: 209
- Зарегистрирован: Пт авг 27, 2010 18:05:09
Re: Вопросы по С/С++ (СИ)
ut1wpr писал(а):Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
Я непонямаю как ета функция работает. Кстате открил я ету библиотеку и нефига там нет только perror от такая функция. Я знаю как ета функция работает на компе но как она работает в МК.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: Вопросы по С/С++ (СИ)
Приветствует!
Подскажите как понимать эту конструкцию:
while (!( SCS &0x00000040));
Если я правильно понимаю, то цикл висит до тех пор пока в регистре scs этот бит не будет равен 1?
И еще не совсем понятно как работает вот эта конструкция:
while( PLLSTAT & 0x000);
Подскажите пожалуйста!
Подскажите как понимать эту конструкцию:
while (!( SCS &0x00000040));
Если я правильно понимаю, то цикл висит до тех пор пока в регистре scs этот бит не будет равен 1?
И еще не совсем понятно как работает вот эта конструкция:
while( PLLSTAT & 0x000);
Подскажите пожалуйста!
STM32F4 Discovery + KEIL + Windows 7


