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

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

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

Сообщение DX168B »

Проще некуда:

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

void ClearBuff(void *ptr, unsigned char size)
{
   for(unsigned char i = 0 ; i < size ; i++)
   {ptr[i] = 0u;}
}

Можно скормить ей любой буфер:

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

unsigned char buff[32];
ClearBuff(buff, sizeof(buff));
I am DX168B and this is my favourite forum on internet!
Реклама
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

использую вот такую конструкцию:

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

#define pred_500V pred_1=1;   pred_2=0; pred_3=0; pred_4=1; 

Необходимо проверять каждую составляющую на истинность. Понятно, можно в скобках указывать как дополнительные условия, но возможно сделать это более красиво?
компилятор PICС18.
Успех - императив!
Реклама
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

если использовать побитовые маски,но смысл в итоге будет такой же.каждое отдельно нужно будет сравнивать.но есть и плюсы-можно комбинацию флагов обработать.
В поисках истины человек развивается.
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

vitalik_1984
Спасибо, подумаю как будет удобнее.
Успех - императив!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
dmirrr
Мучитель микросхем
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

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

Сообщение dmirrr »

Подскажите, где можно почитать о конструкции такого вот вида :
void Scan(char phase)
{
(phase & 0x01)? Port_SCAN1_1 : Port_SCAN1_0;
(phase & 0x02)? Port_SCAN2_1 : Port_SCAN2_0;
(phase & 0x04)? Port_SCAN3_1 : Port_SCAN3_0;
}

или я правильно понял, что это сокращенная запись такого условия:
void Scan(char phase)
{
if (phase & 0x01) { Port_SCAN1_1;} else {Port_SCAN1_0;}
if (phase & 0x02) { Port_SCAN2_1;} else {Port_SCAN2_0;}
if (phase & 0x04) { Port_SCAN3_1;} else {Port_SCAN3_0;}
}
Реклама
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

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

Сообщение hybroid »

Прочитать можно даже тут: http://ru.wikipedia.org/wiki/%D0%A2%D0% ... 0%B8%D1%8F
Реклама
Аватара пользователя
dmirrr
Мучитель микросхем
Сообщения: 475
Зарегистрирован: Вт дек 07, 2010 15:34:19
Откуда: UA

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

Сообщение dmirrr »

почитал, спасибо. Не знал я что это называется "Тернарная условная операция" :oops:
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

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

Сообщение hybroid »

Не за что. Удобная вещь, кстати.
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

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

Сообщение ATtiny13 »

Здрастуйте
Скажите што мне в программе нужно изменить штоб било как надо
тестировал в протеус при нажимании на int1 (ATtiny13) программа которая должна виполнятся, виполняєтса только раз хочу добавить вечний цикл пока не будет 0 на int1 потом виполняєтса вторая программа і т.д.
Спасибо

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

#define F_CPU 9600000UL //тактова частота нашего мк 8Гц
   
   //погружаем библиотеку
#include <avr/io.h> //
#include <avr/iotn13.h> //
#include <util/delay.h> //
#include <avr/interrupt.h>

SIGNAL(SIG_INTERRUPT0)//обработка прерываний

{

           PORTB = 0b00000000;//
               _delay_ms(10);//

           PORTB = 0b11111111;//78
               _delay_ms(50);// //программа, которая должна выполнятся при срабатывании прерывания 1

}

 

SIGNAL(SIG_INTERRUPT1)//обработка прерываний

{

           PORTB = 0b01010101;//
               _delay_ms(10);//

           PORTB = 0b10101010;//78
               _delay_ms(50);//   //программа, которая должна выполнятся при срабатывании прерывания 2

}

 

int main(void)

{

GIMSK=0b01000000; //разрешаем прерывание int0 и int1

MCUCR=0b00001111;// int by rising front -  для кнопки 1 и 2

 

sei(); //Разрешение прерываний глобально по всей программе

 

while(1) //Вечный цикл, все что в нем будет выполнятся постоянно



           PORTB = 0b10000000;//
               _delay_ms(10);//

           PORTB = 0b01000000;//78
               _delay_ms(50);// //Тут располагается код программы, которая будет выполнятся в основном цикле

}

}
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Какой ужассс :facepalm: :facepalm: :facepalm:
Даже если ооочень захочется расшифровать Ваш текст, всё равно не получится.
Всё это - очень грустно, и читать отвратительно...
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

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

Сообщение ATtiny13 »

мне жаль и мне стидно :cry:
но я только учусь миганиє сам писал а остальноє от сюда http://avrlab.com/node/645
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

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

Я Вам не про код говорю, а про текст, которым Вы пытаетесь описать свою проблему. Из него не понятно абсолютно ничего. Всё в кучу, каша...
Аватара пользователя
Roman Venom
Сверлит текстолит когтями
Сообщения: 1135
Зарегистрирован: Сб июл 11, 2009 18:42:21
Откуда: Украина, г.Николаев

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

Сообщение Roman Venom »

ATtiny13

хочу добавить вечний цикл пока не будет 0 на int1 потом виполняєтса вторая программа і т.д.

Честно старался, но, увы, мало что поня о вашей проблеме :( .
Но

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

while(1) {}
будет бесконечно выполнять, то, что находится в фигурных скобках. Если хотите выходить из цикла по некоторому условию, необходимо определить его в скобках, т.е.

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

while(условие)
Успех - императив!
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

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

Сообщение hybroid »

Ему надо выполнять в цикле логику, которая на данный момент в прерывании, пока на ноге с прерыванием единица. А у него прерывание по восходящему фронту на ноге один раз отрабатывает - и всё.
Так же со вторым прерыванием. Т.е. смысл в том, что пока жмёт кнопку - надо делать одно, жмёт другую - второе, не жмёт - третье, что сейчас в главном цикле.
Прерывания тут не к месту, их так использовать глупо и надо сразу себя к этому приучать. Код прерывания должен обрабатываться быстро и делать выход из прерывания.
Считывайте ваши кнопки в главном цикле и в нём же всё делайте, не трогайте прерывания.
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

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

Сообщение ATtiny13 »

Спасибо што объяснили :)
Да на пишу плохо потомушто из западной украини иощаюсь так только здесь(я учусь і буду старатса писать правильно не пользуясь гугл переводчиком)
Да именно так я хочу. иметь как би шаблон как потом делать.
А вместо прериваний што можно использовать?
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение ut1wpr »

Аlex писал(а):Я Вам не про код говорю, а про текст, которым Вы пытаетесь описать свою проблему. Из него не понятно абсолютно ничего. Всё в кучу, каша...
+100500!
Прочитав только фразу "Чтоб было как надо" вспомнился анекдот. Принес Новый Русский (украинец) купленный фотошоп обратно на фbрму-продавец. Спрашивают, в чем проблема? Отвечает: "Слишком много кнопочек! Мне надо с одной, на которой написано "Все зае..[censored]..ись!"...
А как надо? Сам то хоть понимает, что он выложил и что оно должно делать?
Может рановато мужичку сразу на этот уровень?
С уважением,
Виктор.
ut1wpr
Вымогатель припоя
Сообщения: 581
Зарегистрирован: Ср янв 05, 2011 10:03:18

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

Сообщение ut1wpr »

ATtiny13 писал(а):Спасибо што объяснили :)
Да на пишу плохо потомушто из западной украини иощаюсь так только здесь(я учусь і буду старатса писать правильно не пользуясь гугл переводчиком)
Да именно так я хочу. иметь как би шаблон как потом делать.
А вместо прериваний што можно использовать?

Шановний! Я так само з Західної України, але чомусь не підшукую собі виправдовувань з малограмотності. Де в кого може скластись уявлення, що на заході України російскої мови не знають взагалі. Вже був такий період з колишніми прибалтами. Не треба себе обмежувати знанням лише однієї мови, це мінус, а не плюс. Чим більше мов знає людина, тим більше поваги до неї.
На цьому свій offtop припиняю і приношу свої вибачення всім форумчанам і персонально модератору. Як то кажуть - душа не витримала.
С уважением,
Виктор.
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

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

Сообщение hybroid »

ATtiny13 писал(а):А вместо прериваний што можно использовать?

Писал же:
hybroid писал(а):Считывайте ваши кнопки в главном цикле и в нём же всё делайте, не трогайте прерывания.


Примеры гуглите по "опрос кнопок avr", например. Просто смотрите биты кнопок в PINB (или PINA, или куда там у вас подключено) в цикле и делайте то, что нужно, в зависимости от них. Ещё есть понятие механического дребезга, не забывайте.
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

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

Сообщение ATtiny13 »

ut1wpr
От не розумію навіщо писати тут багато точніше все що написали воно ніяким чином не стосуєтся теми і мого запитання!
Я не хочу і не намагаюсь виправдатись, а за вас я дуже радий що ви такі грамотні і наводити такі чудові приклади у вигляді анекдотів!
А как надо? Сам то хоть понимает, что он выложил и что оно должно делать?
Может рановато мужичку сразу на этот уровень?

Люди які дійсно хочуть допомогти вони зрозуміли і так а взагалі то форум створено для того щоб питатись та знаходити відповіді на свої питання.
Суть розумію що воно повинно робити!
Старайтесь стримувати душу!
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

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

Сообщение ATtiny13 »

Спасибо вот нашол тему думаю подойдет
http://www.radiokot.ru/forum/viewtopic.php?f=20&t=39341
Ответить

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