Уважаемый Alexeyslav Я с вами согласени по поводу "Рано тебе программы писать "с наскока". Начни с блок-схем. На них хорошо видны все возможные ситуации и узкие места." Вот есть у меня умная книжка http://www.labirint.ru/books/300259/ как вы считаете? она подойдёт я изучения программирования? там как раз и блок-схемы описывают, только она правда для PIC, ну это не важно!
А если нет, подскажите Какую книжку выбрать? и какую чучше скачать прогу (софт) для создания блок-схем (для си или ассемблера)
... и какую чучше скачать прогу (софт) для создания блок-схем (для си или ассемблера)
Карандаш обыкновенный и лист бумаги. Если алгоритм не влезет на лист бумаги, то он как бы и не нужен ))) Впрочем, он и так не особо полезен, мыслить программными модулями куда удобнее.
_________________ Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Описание блок-схем нужно только для того как какой участок отображать на схеме, ну вроде стандарта.
Программ для рисования блок-схем не видел ни одной достойной, даже платные... чтобы нарисовать что-то и подключить в нужные места нужно слишком много телодвижений. Карандашом же - в среднем 4 линии на фигуру - от 2 до 5 секунд. И, однако, мысль все-равно порой быстрее... Программы нужны разве что для того чтобы задокументировать готовые схемы - для этих целей годится даже DRAW из состава OpenOffice, но там все очень сложно с привязкой к определенной сетке - пока выровняешь все фигуры пройдет столько же времени как на их рисование и соединение, изменение может порушить красиво разведенные связи и т.д.
Если кто найдет более удобную программу для рисования блок-схем, сообщите.
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Ну чтож, коли пошла такая пьянка, подкину и я своих дровишек в костёрчик ) Раз тут собрались одни АВРщики , пришлось поставить CV и черкнуть на нём примерчик обработки кнопок. CV взял из-за генератора кода, т.к. не хочется лезть в даташит на совершенно незнакомые мне МК. В общем, за им генерируемый код меня не пинать . Остальное, что касается моей писанины - обсуждаем, критикуем, закидываем помидорами, .... В архиве проект + файл всеми любимого протеуса:
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
//--------Чтение состояния городской линии void city_line_read(flag_tmp* fl_tmp) { static uchar8 key_acc; //переменная для хранения послед. состояний кнопки
key_acc <<=1; // Сдвигаем аккумулятор влево на 1 бит key_acc |= !(CITY_LINE_PIN); // читаем состояние ножки и добавляем новое значение к аккумулятору
switch(key_acc) { case 0: fl_tmp->city_line_state=ZERO; break;
case 0xFF: fl_tmp->city_line_state=ONE; break;
default: fl_tmp->city_line_state=RANDOM; break;
} }
_________________ Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Если кто найдет более удобную программу для рисования блок-схем, сообщите.
есть такая бесплатная программа - yEd, компании yWorks. скачивается из интернета. 40 МБ. По примеру уважаемого Jack_A картинку закинул под спойлерСпойлер
Вложения:
Комментарий к файлу: пример primer.png [39.13 KiB]
Скачиваний: 1791
_________________ Ставим плюсы: )
Последний раз редактировалось ibiza11 Вс ноя 11, 2012 22:56:39, всего редактировалось 1 раз.
На мой взгляд, не лучшее решение. Имея электронный вариант схемы, ее легче копировать и модифицировать. Пользуюсь банальным Paint. Открываем 2 экземпляра программы, в одном будет рабочее поле, в другом -- библиотека элементов ( или схема-прототип, из которой будем выдергивать нужные элементы ) . Простым копипастом набрасываем каркас схемы, затем в текстовом режиме добавляем обозначения и названия. В итоге получаем что-то вроде :
Диаграммы умеет рисовать множество программ, тот же DRAW имеет для этого все инструменты... но, пользоваться ими со скоростью мысли невозможно. Только как в качестве чистовика. Рисование в программах отнимает уйму времени и собственно отвлекает от самого алгоритма.
Сколько я не пробовал таких программ, ни в одной не получалось делать сразу ровные вертикальные и горизонтальные стрелки - места стыковки параллелограмма и прямоугольника одинаковых размеров находятся на разных осях. не говоря уже если тебе надо нарисовать один элемент чуть шире остальных и не совсем по центру.
А рисовать схемы в паинте это вообще мазохизм... гораздо удобней для этого одна из программ 98-го года, она работает по принципу паинта с библиотекой "заготовок" но она слава богу ушла в небытие, и её вполне способен заменить Sprint Layout работающий по тому же принципу но с векторными объектами. Но в нём столь же неудобно рисовать блок-схемы... не для того он заточен.
Да что говорить, пачка бумаги с десятком карандашей стоит сейчас дешевле чем эти программы-рисовальщики(Visio Pro например). Выигрывает в скорости, но проигрывает в красивости. Вот во втором случае программы и выручают, когда рисуется окончательный вариант... но обычно он уже не нужен - программа написана а бумажки сожжены выполнив свою роль. Кстати черкать и переделывать блок-схему в электронном виде не так-то и просто - слишком много времени теряется.
Зачем еще одна программа которая работает абсолютно так же как и DRAW? Оно конечно хорошо, но все элементы имеют разный размер потом их приходится постоянно ровнять. А сразу клепать одинаковые как-то не получается... только копи-паст.
Подскажите пожалуйста, если у меня кнопка без фиксации, как мне обработать нажатие кнопки? if (!PIND.2) //если нажата кнопка { for (i=0; i<8; i++) {}; //антидребезг if (!PIND.2) //если все-таки нажата кнопка {тут что-то происходит}; }// тут получается, что выполняется программа, пока нажата кнопка, если ее отжать, то ничего не будет происходить, а как мне сделать, чтобы код выполнялся, после нажатия-отжатия?
по идее, я нажимаю кнопку, программа генерирует последовательность, зажигаются светодиоды, потом должно происходить считывание с двух других кнопок (одна - 0, другая - 1, кнопки тоже без фиксации), чтобы ввести двоичный код, затем эти последовательности сравниваются и уже в зависимости от результата разные сигналы выходные. т.к. кнопка без фиксации,
Собственно в чем суть проблемы? Чтение всего 3-х страниц не помогло(последняя не в счет)?
Цитата:
for (i=0; i<8; i++) {}; //антидребезг
Это не антидребезг а пародия на антидребезг... за какое время выполнится эта часть кода? 20-30 тактов процессора от силы, если компилятор не упростит всю конструкцию до одной команды...
Кнопки надо считывать раз в 10-20мс не чаще, тогда на дребезг не нарвёшься...
key_acc <<=1; // Сдвигаем аккумулятор влево на 1 бит key_acc |= !(CITY_LINE_PIN); // читаем состояние ножки и добавляем новое значение к аккумулятору
Странное дело вроде как дефайном CITY_LINE_PIN можно установить любую ножку для пользы дела, но ведь сдвиг осуществляется путем ввода нулей с другой стороны, то есть чтобы получилось состояние 0xFF просто необходимо, чтобы CITY_LINE_PIN было 0x01 в чем тут цинус?
стоп стоп стоп, расшифруйте тогда что у вас спрятано за этим CITY_LINE_PIN. про восемь раз я все прекрасно понял. И я еще немножко неправильно выразился, нужно чтобы !(CITY_LINE_PIN) всегда получался 0x01.
Предположим, что там (PORTB&PINB4) если кнопка нажата получится 0b0001 0000 как тогда получится 0xFF, если когда сдвинули и сложили получили 0b00110000 Или я чего то недопонимаю?
Видимо, если проделать эту операцию 8 раз и за все эти 8 раз значение бита не менялось то весь байт примет однородное значение - либо $00 либо $FF. Но правда, зачем такой изощренный метод использовать для подавления дребезга - загадка. Вероятно, экономится парочка регистров?
#define CITY_LINE_PIN PINB.4 /*пин опроса состояния городской линии*/
Это для CVAVR. Можно выкрутится и с более стандартной записью
Код:
#define CITY_LINE_PIN (PINB&(1<<PB4)) /*пин опроса состояния городской линии*/ ... key_acc |= (CITY_LINE_PIN)? (0):(1); // читаем состояние ножки и добавляем новое значение к аккумулятору
Может и проще можно, лень думать )))
_________________ Любой, заслуживающий внимания, опыт приобретается себе в убыток...
Вопрос к Alex: а почему мою тему viewtopic.php?f=20&t=80979 закрыли и при этом направили меня сюда??? Тут и так "полным-полна коробушка", меня только со своими нубскими вопросами не хватало.... Я эту ветку прочитал, но еще больше запутался. Не получается у меня опрашивать эти чертовы кнопки - хоть ты мать божью пой. Компиляется все красиво, а вот протеус говорит "не видать тебе удачи". И хотя я неоднократно слышал, что симуляторы не всегда правду говорят, в данном случае мне кажется, что не врет он... Я конечно могу в железе собрать свою схему, плату вытравить - дело 30 минут, но только ничего я и на плате наверное не увижу. Модер, открой тему мою, я лучше там буду потихоньку вопросы задавать - глядишь кто чего и подскажет. А то в этой теме мне стыдно позориться со своим "мегапроектом".
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения