Программирование микропроцессорных систем на языке ассемблер
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура. Для… Читать ещё >
Программирование микропроцессорных систем на языке ассемблер (реферат, курсовая, диплом, контрольная)
Микроконтроллер ATtiny2313 — низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой. Выполняя команды за один цикл, ATtiny2313 достигает производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.
ATtiny2313 имеет следующие характеристики: 2 КБ программируемой в системе Flash память программы, 128 байтную EEPROM память данных, 128 байтное SRAM (статическое ОЗУ), 18 линий ввода — вывода общего применения, 32 рабочих регистра общего назначения, однопроводный интерфейс для встроенного отладчика, два гибких таймера/счетчика со схемами сравнения, внутренние и внешние источники прерывания, последовательный программируемый USART, универсальный последовательный интерфейс с детектором стартового условия, программируемый сторожевой таймер со встроенным генератором и три программно инициализируемых режима пониженного потребления.
В режиме Idle останавливается ядро, но ОЗУ, таймеры/счетчики и система прерываний продолжают функционировать. В режиме Power-down регистры сохраняют свое значение, но генератор останавливается, блокируя все функции прибора до следующего прерывания или аппаратного сброса. В Standby режиме задающий генератор работает, в то время как остальная часть прибора бездействует. Это позволяет очень быстро запустить микропроцессор, сохраняя при этом в режиме бездействия мощность. Блок-схема ATtiny2313 приведена на рисунке 1.
Рисунок 1 Блок-схема микроконтроллера Attiny2313.
Прибор изготовлен по высокоплотной энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать память программы в системе через последовательный SPI интерфейс или обычным программатором энергонезависимой памяти. Объединив в одном кристалле восьми битное RISC ядро с самопрограммирующейся в системе Flash памятью, ATtiny2313 стал мощным микроконтроллером, который дает большую гибкость разработчика микропроцессорных систем. Расположение выводов ATtiny2313 показано на рисунке 2.
Рисунок 2 Расположение выводом Attiny2313.
ATtiny2313 поддерживается различными программными средствами и интегрированными средствами разработки, такими как компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы.
Для программирования микроконтроллера Attiny2313 можно использовать языки программирования, ассемблер и C. Для реализации программного кода для микроконтроллера Attiny2313 был написан код прошивки на языке программирования Си в среде AtmelStudio, эта программа позволяет пользователям с легкостью написать алгоритм работы микроконтроллера.
Полученный в результате компиляции исходного кода программы на языке С исполняемый модуль (файл прошивки) может быть непосредственно записан в память программ микроконтроллера.
Работа программы начинается с инициализации:
movlw .0.
bcf STATUS, 5.
movwf T2CON; Помещаем в регистр T2CON — 0.
bsf T2CON, 0; Устанавливаем бит T2CKPS0 (Предделитель).
bsf T2CON, 2; Включаем таймер TMR2 битом TMR2ON.
bsf T2CON, 3; Устанавливаем бит TOUTPS0 (Постделение) На этом инициализация таймера закончена. Теперь при включении контроллера от будет служить источником для нашего ШИМ модуля.
Инициализация ШИМ модуля происходит следующим образом:
movlw 10 1111b; Подготавливаем конфигурацию.
movwf CPPCON; Конфигурируем ШИМ.
bsf CPPCON, 2; Включаем модуль ШИМ.
Все, на этом инициализация закончена. Теперь мы можем помещать в регистр CPP1L число от 0 до 255, тем самым меняя скважность выходных импульсов.
Краткая заметка по командам, использованных в программе:
equ — Присвоение имени на определенный адрес.
goto — Переход программы на метку, либо определенную строку.
call — Вызов подпрограммы.
movlw — Поместить в регистр W, число.
movwf — Переместить из регистра W число.
bsf — Установить бит в регистре, в состояние 1.
bcf — Установить бит в регистре, в состояние 0.
addlw — Прибавить в регистр W число.
btfss — Проверить бит в регистре на 1.
incf — Инкриминировать регистр (прибавить 1).
decf — Декриминировать регистр (вычесть 1).
decfsz — Вычесть 1 из регистра + проверка на 0.