Вопросы по С/С++ (СИ)
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: Вопросы по С/С++ (СИ)
Я имел ввиду что при одинаковых выражениях вида 1<<X, где Х -число(0),или переменная которой я присвоил 0, выдаёт разные результаты )Аlex писал(а):В одном случае - переменная, в другом - ноль.какая разница,между этими выражениями ??
Опять таинственные фразы...Ато не работает чего то ((
- 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);} //Если кончились ножки(по маске), то заново.
В поисках истины человек развивается.
- БАТАРЕЙКУС
- Потрогал лапой паяльник
- Сообщения: 347
- Зарегистрирован: Сб фев 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
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
В putch.куда она выводит свои значения
Код: Выделить всё
void putch(char);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: Вопросы по С/С++ (СИ)
Я непонямаю как ета функция работает. Кстате открил я ету библиотеку и нефига там нет только perror от такая функция. Я знаю как ета функция работает на компе но как она работает в МК.ut1wpr писал(а):Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
-
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


