Страница 83 из 386
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 00:11:19
mich91
char cur_pin_out=0;
...........
Вот скажыте,какая разница,между этими выражениями ??
этой---
cur_pin_out=0x00;
if(PIND!=(~(1<<cur_pin_out)))
и вот этой---
if(PIND!=(~(1<<0)))
....
Ато не работает чего то ((
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 00:32:20
Аlex
какая разница,между этими выражениями ??
В одном случае - переменная, в другом - ноль.
Ато не работает чего то ((
Опять таинственные фразы...
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 00:32:37
mich91
(unsigned char)~(1<<cur_pin_out)
а так работает ))
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 00:35:01
mich91
Аlex писал(а):какая разница,между этими выражениями ??
В одном случае - переменная, в другом - ноль.
Ато не работает чего то ((
Опять таинственные фразы...
Я имел ввиду что при одинаковых выражениях вида 1<<X, где Х -число(0),или переменная которой я присвоил 0, выдаёт разные результаты )
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 09:24:05
vitalik_1984
если хотите переменную использовать лучше применить маски
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 10:16:08
mich91
vitalik_1984 писал(а):если хотите переменную использовать лучше применить маски
Это как ??
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 16:08:06
Rimsky
vitalik_1984 писал(а):в этом выражении еще и скобка лишняя похоже:-)
а точно адрес первого элемента массива нужно передать в функцию?может нулевой?
Код: Выделить всё
Код:
strncmp_P((char const*)&data[1], PSTR("600"), 3)
Да, все Ок, работает. Нулевой элемент массива у меня для других целей.
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 22:09:17
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]
Re: Вопросы по С/С++ (СИ)
Добавлено: Вт апр 10, 2012 22:20:54
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);} //Если кончились ножки(по маске), то заново.
А что конкретно вы хотели таким способом добиться? Поди сканировать клавиатуру,порты?
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср апр 11, 2012 20:24:42
БАТАРЕЙКУС
Мужики помогите чем можете.
я программирую PIC18 с помощью мелкочиповского компилятора C18, и столкнулся проблемой я не как
не могу создать указатель на массив.
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср апр 11, 2012 23:13:25
urry
обоснуйте....
const rom char *pArrRom="12345";
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср апр 11, 2012 23:26:04
AI_Disable
urry писал(а):const rom char *pArrRom="12345";
Смахивает на какой-то бред. Если, конечно, это не очередные приблуды псевдо-си компиляторов.
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср апр 11, 2012 23:31:07
urry
Вполне нормальная запись для MCC18.
Хотя можно и в 3 строчки.
near rom char * near_rom_ptr;
rom char rom_array[] = "ROM";
near_rom_ptr = &rom_array[0];
Re: Вопросы по С/С++ (СИ)
Добавлено: Ср апр 11, 2012 23:48:16
Transistor
Ребята что ето за такая функция printf с чем к чему ету функцию подають разтолкуйте мне? Pic c CCS
П.С.Как будто на лсд экран оно не выдает

(так как в ПК) куда она выводит свои значения.
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 01:20:50
Кислый
о_0
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 07:59:24
Аlex
куда она выводит свои значения
В
putch.
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 12:19:00
ut1wpr
Transistor писал(а):Ребята что ето за такая функция printf с чем к чему ету функцию подають[skip]
куда она выводит свои значения.
Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 14:13:02
DX168B
DX168B писал(а):Приветствую всех.
Такой вопрос.
//////////////
buff[32]
Сразу скажу, что конструкция не работала. Почему, уже разобрался сам.
Спасибо за "помощь".....
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 18:54:57
Transistor
ut1wpr писал(а):Насчет "куда" - Алекс уже сказал. Использует putc(...) библиотеки stdio.h как стандартный вывод. Переписываем его или пишем свой и помещаем в проект. Самописный "перекроет" библиотечный.
Ну, а насчет "с чем идять и подають" - это сходу в Википедрию. Если нет другой литературы. Функция весьма популярна, причем не только в Си.
Я непонямаю как ета функция работает. Кстате открил я ету библиотеку и нефига там нет только perror от такая функция. Я знаю как ета функция работает на компе но как она работает в МК.
Re: Вопросы по С/С++ (СИ)
Добавлено: Чт апр 12, 2012 19:13:01
Mr.Denis
Приветствует!
Подскажите как понимать эту конструкцию:
while (!( SCS &0x00000040));
Если я правильно понимаю, то цикл висит до тех пор пока в регистре scs этот бит не будет равен 1?
И еще не совсем понятно как работает вот эта конструкция:
while( PLLSTAT & 0x000);
Подскажите пожалуйста!