Вопросы по С/С++ (СИ)
Re: Вопросы по С/С++ (СИ)
AI_Disable, я конечно извиняюсь, но это точно ? ведь переменная х инкремениркется только когда кнопка mode НАЖАТА
Tell Me The Truth
- Реклама
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
FreshMan писал(а):AI_Disable, я конечно извиняюсь, но это точно ?
А что вас смущает? Если первая часть выражения с лог. И ложна, то вторая часть уже не исполняется и не проверяется.
Re: Вопросы по С/С++ (СИ)
не могу понять как в вашем варианте будет инкременироваться х ?
Tell Me The Truth
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Там же в условии ++x
- Реклама
Re: Вопросы по С/С++ (СИ)
AI_Disable, а можно ли более лаконично записать следующие строки ?
сдесь я ставлю перед собой задачу: при каждом нажатии на кнопку mode переменная var должна инкреминироваться на 1.
Код: Выделить всё
if(!mode){delay_ms(5);++var;whli(!mode){};delay_ms(5);};
if(var>==5)var=0;сдесь я ставлю перед собой задачу: при каждом нажатии на кнопку mode переменная var должна инкреминироваться на 1.
Tell Me The Truth
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Можно, конечно, всё засунуть в один if но не стоит оно того, в данном случаи: сильно ухудшит читаемость кода.
Только задержки объедение в одну, нет смысла её тут разделять.
И когда пишите пустой цикл фигурные скобки ставить не обязательно, также как и точку с запятой после фигурных скобок:
if(!mode){++var;while(!mode);delay_ms(10);}
if(var>=5)var=0;
Только задержки объедение в одну, нет смысла её тут разделять.
И когда пишите пустой цикл фигурные скобки ставить не обязательно, также как и точку с запятой после фигурных скобок:
if(!mode){++var;while(!mode);delay_ms(10);}
if(var>=5)var=0;
Re: Вопросы по С/С++ (СИ)
AI_Disable писал(а):Можно, конечно, всё засунуть в один if
а увеличится ли при этом скорось выполнения программы ?
по поводку задержки: я ее поставил в начале и в конце из тех соображений, что дребезг контактов происходит при нажатии и отпускании кнопки.
Tell Me The Truth
- AI_Disable
- Сверлит текстолит когтями
- Сообщения: 1116
- Зарегистрирован: Чт окт 15, 2009 14:16:18
- Откуда: Екб
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
FreshMan писал(а):а увеличится ли при этом скорось выполнения программы ?
Нет, скорость точно не увеличится.
Re: Вопросы по С/С++ (СИ)
здравствуйте!
помогите понять почему не компилирует?
указывает на ошибку линии INT MAIN VOID
спосибо!
помогите понять почему не компилирует?
указывает на ошибку линии INT MAIN VOID
спосибо!
Код: Выделить всё
#define <16F873A.h>
#use delay(clock=8M)
int main(void)
{unsigned int a=0;
PORTA = 0xFF: TRISA=0x00;
OPTION_REG=0x7F; PORTB=0xFF; TRISB=0xFF;
PORTC=0x00; TRISC=0x00;
while (1)
{ while (PORTB.F4 !=0) a++;
delay_ms(30);
if (Button(6POTRB,4,1,0))
{ PORTC=0xFF; delay_ms(400);
swich(a 4 6 + 1)
{
case1: PORTC=0xF7; break;
case2: PORTC=0xE8; break;
case3: PORTC=0xE3; break;
case4: PORTC=0xAA; break;
case5: PORTC=0xA2; break;
case6: PORTC=0x88;
}
}
}
Последний раз редактировалось Аlex Пт апр 27, 2012 07:41:07, всего редактировалось 1 раз.
Причина: ---
Причина: ---
Re: Вопросы по С/С++ (СИ)
Скобки не парные. (фигурные)
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: Вопросы по С/С++ (СИ)
помогите напиать прогу
для серводвигателя?
буду благодарен за любую помощь!
для серводвигателя?
буду благодарен за любую помощь!
Re: Вопросы по С/С++ (СИ)
den81 писал(а):здравствуйте!
помогите понять почему не компилирует?
указывает на ошибку линии INT MAIN VOID
спосибо!Код: Выделить всё
int main(void)
{
skip....
skip....
skip....
return(0);
}
Функция main объявлена как возвращающая значение типа int.
В вашей программе возврат значения функции отсутствует.
Добавьте оператор возрата значения в самой последней строчке перед закрытием тела функции main и ошибка должна пропасть.
Анализ скобок не производил. Это уже ваши проблемы и относится к неаккуратности а не к непониманию...
С уважением,
Виктор.
Виктор.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Это точно не из-за этого.Там же ошибка, а не предупреждение.Скобки реально не хватает.
Я стараюсь подписывать в коментах какая фигурная скобка что закрывает, тогда не запутаешься.
Я стараюсь подписывать в коментах какая фигурная скобка что закрывает, тогда не запутаешься.
В поисках истины человек развивается.
Re: Вопросы по С/С++ (СИ)
всем спасибо!
Re: Вопросы по С/С++ (СИ)
подскажите что необходимо написать в начале кода для PIC16F84 и PIC16F83А
есть вот такой код для серводвигателя:
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
спасибо !!
есть вот такой код для серводвигателя:
unsigned short MotorA_Speed = 127; // Ширина импульса ШИМ по умолчанию 50%
unsigned short MotorB_Speed = 127; // для обоих двигателей
// Переменные для работы с двигателями
unsigned short MotorA_Status = 0; // 0 - Выключен, 1 - Вперед, 2 - Назад
unsigned short MotorB_Status = 0;
unsigned short MotorA_CurrentSpeed = 255;
unsigned short MotorB_CurrentSpeed = 255;
unsigned short MotorInitStatus = 0; // Статус функции инициализации
const unsigned long PWMFreq = 5000;// Частота ШИМ
// Подключение моторов:
// *** Motor A *****
// RD0 ====> 1A
// RD1 ====> 1B
// RC2 ====> 1E (PWM1)
// *** Motor B *****
// RB1 ====> 2A
// RB2 ====> 2B
// RC1 ====> 2E (PWM2)
// Инициализация модулей ШИМ и двигателей
void MotorInit (void){
if (MotorInitStatus == 0) { // Это первый вызов функции?
MotorInitStatus = 1; // Установка состояния
ANSELH.F0 = 0; // RB1 - цифровой вход/выход
ANSELH.F2 = 0; // RB2 - цифровой вход/выход
TRISB.RB1 = 0; // Motor B 2A
TRISB.RB2 = 0; // Motor B 2B
TRISD.RD0 = 0; // Motor A 1A
TRISD.RD1 = 0; // Motor A 1B
PWM1_Init(PWMFreq); // Инициализация модулей ШИМ
PWM2_Init(PWMFreq);
}
}
спасибо !!
- БАТАРЕЙКУС
- Потрогал лапой паяльник
- Сообщения: 346
- Зарегистрирован: Сб фев 07, 2009 19:21:25
Re: Вопросы по С/С++ (СИ)
Доброе время суток коты
подскажите как можно очистить массив одной командой а то мне приходится писать так
а это неудобно
подскажите как можно очистить массив одной командой а то мне приходится писать так
Код: Выделить всё
LSD_Buffer[0] = 0x20 ; //
LSD_Buffer[1] = 0x20 ; //
- - - - - - - - - - - - - - - - - - - - - - -
LSD_Buffer[15] = 0x20 ; //а это неудобно
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Вопросы по С/С++ (СИ)
Используйте цикл.
Можно заюзать memset().
Можно заюзать memset().
Код: Выделить всё
memset(LSD_Buffer, 0x20, sizeof(LSD_Buffer));- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Вопросы по С/С++ (СИ)
Код: Выделить всё
LSDЛСД... Лол
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- БАТАРЕЙКУС
- Потрогал лапой паяльник
- Сообщения: 346
- Зарегистрирован: Сб фев 07, 2009 19:21:25
Re: Вопросы по С/С++ (СИ)
LSD_Buffer это просто буфер для данных. и надо очистить их попроще.
не так как в примере.
не так как в примере.
Мечтатель - не тот, кто сидит на диване и думает о несбыточном, а тот, кто всеми силами стремится воплотить несбыточное в реальность.


