Atmega16: обработка нажатий кнопок в часах (ассемблер)
-
tux
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Чт сен 20, 2012 11:57:28
- Откуда: Владивосток
- Контактная информация:
Atmega16: обработка нажатий кнопок в часах (ассемблер)
Помогите доделать часы. Уже разобрался с выводом информации на ССИ, с отсчетом времени. Теперь никак не получается сделать установку времени через нажатия кнопок. Прикладываю свою програмулю. Либо подскажите, что неправильно в ней, либо хотя приведите пример как это сделать правильно (на ассемблере, ибо си я практически не знаю). Вывод на дисплей там рабочий, как и отсчёт времени.
- Вложения
-
- Clock_Buttons.asm
- (7.81 КБ) 356 скачиваний
- ChipKiller
- Сверлит текстолит когтями
- Сообщения: 1163
- Зарегистрирован: Ср янв 05, 2011 16:25:15
Re: Atmega16: обработка нажатий кнопок в часах (ассемблер)
.. такие часы будут работать плохоtux писал(а): Уже разобрался с выводом информации на ССИ, с отсчетом времени. Теперь никак не получается сделать установку времени через нажатия кнопок. ....... Либо подскажите, что неправильно в ней, либо хотя приведите пример как это сделать правильно ....
1. информацию на ССИ удобно обновлять в прерывании (там же ведут опрос кнопок )
2. по-хорошему для часов используют внешнюю микросхему (например DS1307)
пример динамической индикации
-
tux
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Чт сен 20, 2012 11:57:28
- Откуда: Владивосток
- Контактная информация:
Re: Atmega16: обработка нажатий кнопок в часах (ассемблер)
Я по большей части эти часы делаю лишь для обучалки. И ССИ у меня на данный момент работает. Хочется с кнопками разобраться. Потом уже допиливать буду
Re: Atmega16: обработка нажатий кнопок в часах (ассемблер)
Скинь схемку устройства - тогды и побеседуем. Можно в личку, дабы повторами форум не перегружать. 

-
tux
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Чт сен 20, 2012 11:57:28
- Откуда: Владивосток
- Контактная информация:
Re: Atmega16: обработка нажатий кнопок в часах (ассемблер)
Помучил еще свой код. Опробовал протеус. В нем даже почти все работает. Почему то при выводе на ССИ последняя и первая цифра на всех значениях кроме 0 отображается как 8. Обработчик кнопок виртуально вроде как работает. На реальном железе почему то отказывается вся эта беда работать. Первоначально мигает - потом все вообще тухнет. Укажите, пожалуйста, на косяк. Замучился уже с этими часами
- Вложения
-
- Clock_with_Button.zip
- программа на ассемблере
- (3.07 КБ) 211 скачиваний
-
- clock.zip
- Файл протеуса
- (19.46 КБ) 202 скачивания
Re: Atmega16: обработка нажатий кнопок в часах (ассемблер)
Прийдется наверное все заново писать...
Отдельно модуль регенерации дисплея (возможно совмещение со сканером клавиатуры) и отдельно модуль подсчета времени. Плюс программа обработки/дешифрации показаний под индикатор, обработчик клавиатуры (захват и обработка состояния кнопок /выполнение текущей директивы ввода).
Обмен данными через буфер вывода дисплея в момент окончания цикла развертки (если данная функция разрешена/затребована). Главное прерывание - формирователь тайм-сетки выставляет только флаг запроса (максимально короткий интервал. Дальнейшие действия определяет диспетчер задачи в конце каждой строки развертки дисплея или же задача выполняется в фоновом режиме, при условии, что регенерация дисплея выполняется автономно по второму прерыванию (в этом случае должно быть разрешено вложенное прерывание генератора тайм-сетки).
На мегу 16-ю вряд-ли посодействую, лень материал готовить. Могу набросать для тиньки 2313 или мега8515/мега162. Кстати, у 40-выводных МК возможность управления дисплеем гораздо проще - можно и статикой ограничиться!

Отдельно модуль регенерации дисплея (возможно совмещение со сканером клавиатуры) и отдельно модуль подсчета времени. Плюс программа обработки/дешифрации показаний под индикатор, обработчик клавиатуры (захват и обработка состояния кнопок /выполнение текущей директивы ввода).
Обмен данными через буфер вывода дисплея в момент окончания цикла развертки (если данная функция разрешена/затребована). Главное прерывание - формирователь тайм-сетки выставляет только флаг запроса (максимально короткий интервал. Дальнейшие действия определяет диспетчер задачи в конце каждой строки развертки дисплея или же задача выполняется в фоновом режиме, при условии, что регенерация дисплея выполняется автономно по второму прерыванию (в этом случае должно быть разрешено вложенное прерывание генератора тайм-сетки).
На мегу 16-ю вряд-ли посодействую, лень материал готовить. Могу набросать для тиньки 2313 или мега8515/мега162. Кстати, у 40-выводных МК возможность управления дисплеем гораздо проще - можно и статикой ограничиться!
