AVR. Учебный курс. Скелет программы
Автор DI HALT
Опубликовано 10 июля 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, Макро язык, Программирование, Трюки, Флаги
При написании прошивки надо очень внимательно подходить к процессу организации архитектуры будущей программы. Программа должна быть быстрой, не допускать задержек главного цикла и легко расширяться. Оптимально использовать аппаратные ресурсы и стараться выжать максимум возможного из имеющихся ресурсов.
Вообще, архитектура программ это отдельная тема и ближе к концу курса, в его Сишной части я подробней рассказываю о разных типах организации прошивки. Можешь забежать вперед и поглядеть, что да как.
В ассемблерной же части, я расскажу о одном из самых простых вариантов — флаговом автомате, а позже, когда ты уже будешь вовсю ориентироваться в моем коде, дам пример на основе конвейерного диспетчера, с подробным описанием его работы.
Суперцикл
Все программы на микроконтроллерах обычно зацикленные. Т.е. у нас есть какой то главный цикл, который вращается непрерывно.
Структура же программы при этом следующая:
- Макросы и макроопредения
- Сегмент ОЗУ
- Точка входа - ORG 0000
- Таблица векторов - и вектора, ведущие в секцию обработчиков прерываний
- Обработчики прерываний - тела обработчиков, возврат отсюда только по RETI
- Инициализация памяти - а вот уже отсюда начинается активная часть программы
- Инициализация стека
- Инициализация внутренней периферии - программирование и запуск в работу всяких таймеров, интерфейсов, выставление портов ввода-вывода в нужные уровни. Разрешение прерываний.
- Инициализация внешней периферии - инициализация дисплеев, внешней памяти, разных аппаратных примочек, что подключены к микроконтроллеру извне.
- Запуск фоновых процессов - процессы работающие непрерывно, вне зависимости от условий. Такие как сканирование клавиатуры, обновление экрана и так далее.
- Главный цикл - тут уже идет вся управляющая логика программы.
- Сегмент ЕЕПРОМ
AVR. Учебный Курс. Типовые конструкции
Автор DI HALT
Опубликовано 09 июля 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, Макро язык, Начинающим, Оптимизация, Трюки
При написании программ постоянно приходится использовать разные стандартные конструкции вроде циклов, операторов выбора, перехода, сравнения. Всякие там if-then-else или case-switch. В высокоуровневых языках это все уже готово, а на ассемблере приходится изобретать каждый раз заново.
Впрочем, такие вещи пишутся один раз, а дальше просто по наезженной тропинке применяются везде, где потребуется. Заодно и оптимизируются по ходу процесса.
Условие if-then-else
Тут проще всего методом последовательной проверки проложить маршрут до нужного блока кода. Приведу пример:
1 2 3 4 5 6 7 8 9 | if (А>=B) { action_a } else { action_b } next_action |
Как это проще всего сделать на ассемблере?
Читать полностью
AVR. Учебный курс. Макроассемблер
Автор DI HALT
Опубликовано 05 июля 2008
Рубрики: AVR. Учебный курс
Метки: Assembler, AVR, Макро язык
Перед изучением системы команд микроконтроллера надо бы разобраться в инструментарии. Плох тот плотник который не знает свой топор. Основным инструментом у нас будет компилятор. У компилятора есть свой язык — макроассемблер, с помощью которого жизнь программиста упрощается в разы. Ведь гораздо проще писать и оперировать в голове командами типа MOV Counter,Default_Count вместо MOV R17,R16 и помнить что у нас R17 значит Counter, а R16 это Default_Count. Все подстановки с человеческого языка на машинный, а также многое другое делается средствами препроцессора компилятора. Его мы сейчас и рассмотрим.
Читать полностью




