7/13/2017 0 Comments Программу Avr AssemblerAssembler - простая программа - You. Tube. Завантаження списк. Учебный курс. Скелет программы При написании прошивки надо очень внимательно подходить к процессу организации архитектуры будущей программы. Программа должна быть быстрой, не допускать задержек главного цикла и легко расширяться. Оптимально использовать аппаратные ресурсы и стараться выжать максимум возможного из имеющихся ресурсов. Вообще, архитектура программ это отдельная тема и ближе к концу курса, в его Сишной части я подробней рассказываю о разных типах организации прошивки. Можешь забежать вперед и поглядеть, что да как. В ассемблерной же части, я расскажу о одном из самых простых вариантов — флаговом автомате, а позже, когда ты уже будешь вовсю ориентироваться в моем коде, дам пример на основе конвейерного диспетчера, с подробным описанием его работы. Суперцикл. Все программы на микроконтроллерах обычно зацикленные. Структура же программы при этом следующая: Макросы и макроопредения. Сегмент ОЗУТочка входа — ORG 0. Таблица векторов — и вектора, ведущие в секцию обработчиков прерываний Обработчики прерываний — тела обработчиков, возврат отсюда только по RETI Инициализация памяти — а вот уже отсюда начинается активная часть программы. Программа должна быть быстрой, не допускать задержек Kom2x2. Микроконтроллеров AVR Atmel, архитектурные особенности и средства. Редактор кода программы. Компилятор ассемблера для AVR. Утилита программирования. Приведен и подробно разобран пример простой программы для AVR микроконтроллера на языке Ассемблер (Assembler). Видеоурок - написание простой программы на встроенном ассемблере. Assembler - простая программа. В ассемблере AVR все команды можно поделить на 4-е лагеря. Как вариант, зациклить можно запустив программу main заново. Для примера я приведу программу мигания светодиодом. Инициализация стека. Инициализация внутренней периферии — программирование и запуск в работу всяких таймеров, интерфейсов, выставление портов ввода- вывода в нужные уровни. Разрешение прерываний. Инициализация внешней периферии — инициализация дисплеев, внешней памяти, разных аппаратных примочек, что подключены к микроконтроллеру извне. Запуск фоновых процессов — процессы работающие непрерывно, вне зависимости от условий. Такие как сканирование клавиатуры, обновление экрана и так далее. Сегмент ЕЕПРОМНачинается все с макросов, их пока не много, если что по ходу добавим. Начиная с AVR Studio v. 4.11 (2005 г.), язык Ассемблер для AVR дополнен новой частью AVR Assembler 2 (в дальнейшем. Программы ориентированы для работы на языке программирования Си, хотя ассемблер полностью поддерживается. AVR Studio и. Нечего. 1. ; RAM ===================================================. END RAM ===============================================С точкой входа и таблицей векторов все понятно, следуя нашему давнему шаблону, берем его оттуда: 1. FLASH ======================================================. ORG $0. 00 ; (RESET). RJMP Reset. . ORG $0. RETI ; (INT0) External Interrupt Request 0. ORG $0. 04. RETI ; (INT1) External Interrupt Request 1. ORG $0. 06. RETI ; (TIMER2 COMP) Timer/Counter. Compare Match. . ORG $0. RETI ; (TIMER2 OVF) Timer/Counter. Overflow. . ORG $0. A. RETI ; (TIMER1 CAPT) Timer/Counter. Программные средства для микроконтроллеров AVR фирмы Atmel. Ассемблер, Си/ Си++1), нет. Справка по Ассемблеру для Atmel AVR. Для устройств с памятью программ свыше 128KB, добавьте пять циклов плюс по три цикла на каждое ожидание. Ассемблер транслирует ассемблируемый исходный код программы в объектный код, который может использоваться в симуляторах или эмуляторах AVR. Capture Event. . ORG $0. C. RETI ; (TIMER1 COMPA) Timer/Counter. Compare Match A. . ORG $0. 0E. RETI ; (TIMER1 COMPB) Timer/Counter. Compare Match B. . ORG $0. 10. RETI ; (TIMER1 OVF) Timer/Counter. Overflow. . ORG $0. RETI ; (TIMER0 OVF) Timer/Counter. Overflow. . ORG $0. RETI ; (SPI,STC) Serial Transfer Complete. ORG $0. 16. RETI ; (USART,RXC) USART, Rx Complete. ORG $0. 18. RETI ; (USART,UDRE) USART Data Register Empty. ORG $0. 1A. RETI ; (USART,TXC) USART, Tx Complete. ORG $0. 1C. RETI ; (ADC) ADC Conversion Complete. ORG $0. 1E. RETI ; (EE. Память, стек, регистры: 1. Reset: LDI R1. 6,Low(RAMEND) ; Инициализация стека. OUT SPL,R1. 6 ; Обязательно!!! Крутимся дальше! Секции внешней и внутренней инициализации переферии пока пусты, но ненадолго. Равно как и запуск фоновых программ. Потом я просто буду говорить, что мол добавьте эту ботву в секцию Internal Hardware Init и все : )1. Internal Hardware Init ======================================. End Internal Hardware Init ===================================. External Hardware Init ======================================. End Internal Hardware Init ===================================. Run ==========================================================. End Run ======================================================А теперь, собственно, сам главный цикл. Main =========================================================. End Main =====================================================Все процедуры располагаются в отдельной секции, не смешиваясь с главным циклом. Так удобней, потом можно их по частям вынести в библиотечные файлы и разделить исходник на несколько файлов. Но мы пока это делать не будем. Разделим их просто логически. Procedure ====================================================. End Procedure ================================================Ну и вот тебе файлик с уже готовым проектом под этот шаблон.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. Archives
August 2017
Categories |