Здравствуйте все! Недавно начал изучать микроконтроллеры(пора бы уже, а то совсем отстал от жизни) ну и разумеется, параллельно и язык Си, т.к. увы, в школе у нас программирование было пару уроков, и то, на уровне выведения рисунка из звёздочек "*" на экран в QBasic. Немного получше в институте: Visual Basic и 8 лабораторных работ, но опять же почти никаких объяснений
Но, не будем о грустном)))
В итоге пришлось додумывать и понимать самому, но оно к лучшему. Изучив статьи Спирита с известного сайта и ещё разные статьи и конструкции с других сайтов, решил сделать сам что-нибудь. Не знаю почему, но первая мысль, которая пришла в голову - часы! Сразу же "вымыслился" алгоритм работы. По моей задумке было 3 вложенных один в другой цикла For, каждый из которых отвечал за секунды, минуты и часы. Цикл секунд содержит в себе инкрементирование переменной секунд и задержку на 1000мс, повторяется от 0 до 60(или 59, не помню), и вложен с цикл минут, а минутный - в часовой. В общем, примерно принцип работы понятен. Если будет востребовано(сомневаюсь
), могу выложить и исходник. Всё ничего, но, как выяснилось позже, часы прилично спешат(по 1-2с за минуту). Поняв, что такая реализация в общем-то только чтобы поиграться, было решено переделать. Опять поиски в сети... Нашёл часы на основе системного таймера. То что надо!
Изучил код, рекомендации и прочее, начал писать свой код. Попутно, добавил в "тех. задание" меню настройки "всего, что нужно", будильник и календарь. Сегодня с обеда за CodeVision-ом и Proteus-ом, как итог - полурабочая программа и большое кол-во времени за поиском "неисправностей". Некоторые из них до сих пор не исправил
. Пока не стал делать будильник и календарь.
Проблема вот: [ Вложение: Вам нельзя просматривать вложения ] Я, конечно, всё понимаю, но зачем 4 раза показывать время одновременно
? А календарь тогда куда?)))
Во вложении папка clock3 - к компилятору, а остальные файлы к Протеусу.
Часы работают так:
Таймер с частотой 7.813 кГц считает до 7811 импульсов(по совету с сайта взял), потом вызывает прерывание, выполняет инкрементирование переменной секунд (ss), сбрасывается и опять сначала... В бесконечном цикле крутится проверка состояния кнопки на PIND.3, которая отвечает за вход в "меню" настройки и условия для минут, часов, дней, месяцев и лет. Переход в меню последовательный:
текущее время->минуты->часы->будильник.минуты->будильник.часы->дни->месяцы->года->текущее время
За переход по пунктам меню отвечает кнопка Set. За вход в меню - как это ни странно, кнопка snooze(приготовил под будильник, но пришлось пока переназначить). При запуске часов сразу появляется меню настройки. Нажимаем Set раз 6-10(как повезёт) и появятся часы или ждём пока меню само пройдёт все пункты(около половины минуты).
Помогите, кто чем может. Часы при некоторых попытках исправления кода то показывают 4 раза подряд одно и то же, то в режиме очень быстро бегущей строки, похоже, что только одну строку со временем.
Извините, уж, за такие неудобства. На удобство пользованием не претендую, да и многое ещё буду дорабатывать(если,конечно, оно в нынешнем варианте начнёт нормально работать).
Да, между первой(часы) и третьей(аналогично) конструкциями была вполне удачная попытка сделать простого робота(опять же в протеусе) отсюда и название темы.
Ух, вот расписал-то)) Надеюсь, меня не оштрафуют