Программирование на Ассемблере в МК Motorolla
Автор: arthurio01 • Апрель 9, 2018 • Курсовая работа • 1,109 Слов (5 Страниц) • 538 Просмотры
Содержание
Содержание 1
ВВЕДЕНИЕ 2
Задание на расчетно-графическую работу. 3
1.Программирование на Ассемблере в МК Motorolla 3
2. Программирования МК AVR. 5
Работа кода программы на симуляторе Proteus, Микроконтроллер Atmega8. 7
Заключение 10
Список использованной литературы. 11
ВВЕДЕНИЕ
Проектирование микропроцессорных систем (МПС) включает проектирование как аппаратных, так и программных средств.
Разработка программ - наиболее трудоемкая часть процесса проектирования. Программное обеспечение (ПО) можно разделить на системное, инструментальное и прикладное.
Системное программное обеспечение (операционная система- ОС) реализует связь аппаратного и программного обеспечения, выступая как "межслойный интерфейс" с одной стороны которого аппаратура, а с другой приложения пользователя. Но для большинства встраиваемых микроконтроллеров ( МК) ОС излишня.
Прикладное ПО – совокупность программ пользователя для конкретной целевой системы. Прикладное ПО отличается наибольшим разнообразием, так как. сфера применения МК расширяется быстрыми темпами.
Инструментальное ПО предназначено для упрощения и облегчения процесса создания новых программ, относящихся как с системному, так и прикладному ПО.
Задание на расчетно-графическую работу.
1.Программирование на Ассемблере в МК Motorolla
Сложить два 16-разрядных числа без проверки разряда переполнения в старшем байте. Данные хранятся в ячейках памяти ОЗУ МК с адресами $40, $41 и $42, $43. Результат сложения должен быть помещен в память по адресам $50 и $51. Числа представлены в прямом двоичном коде без знака.
$include 'gpgtregs.inc';
RomStartEQU $9000 ;назначается начальный адрес прикладной ;программы.
RAMStartEQU $0040;назначается адрес первой ячейки памяти ОЗУ МК.
VectorStartEQU $FFFE;назначает адрес для вектора начального запуска.
ORG RAMStart
Data1: DS 1 ;эти псевдокоманды резервируют ячейки ОЗУ для ;переменных
Data2: DS 1 ;одновременно назначают численные значения ;адресов для символьных имен переменных.
ORG $50
Rezalt DS1;Далее текст программы не изменился.
ORG RomStart
main:ldа Data1 ;загрузить в аккумулятор ACCAмладший байт ;первого операнда.
addData2+1 ;сложить ACCAс младшим байтом второго операнда. Разряд переноса запоминается в триггере Cрегистра признаков.
staRezalt+1 ;запомнить младший байт результата по адресу $51. Эта операция не изменяет значения триггера переноса.
ldaData1 ; загрузить в ACCA старший байт первого операнда.
adcData2 ;сложить ACCAсо старшим байтом второго операнда ;и значением триггера переноса от предыдущего сложения. Разряд ;переноса ;пять запоминается в триггере Cрегистра признаков. Но ;далее это значение ;не используется и не анализируется.
staRezalt ;поместить старший байт результата по адресу $50.
mend: jmp mend
ORG VectorStart
DWmain
End
Проверка в симуляторе
[pic 1]
Рисунок 1 – проверка в симуляторе
Как видно из рисунка, программа работает. Подсчет нечетных виден в ячейке $0120.
2. Программирования МК AVR.
Реализовать программу «бегущие огни»Написать программу бегущие огни с задержкой 500 мс.
.include "m8def.inc";
.org 0; начало программы
.defstack=r16;определение стека
.defloop1=r17;определение переменные
.def loop2=r18
.def loop3=r19
SBIDDRB, 0; устанавливается единица
SBIDDRB, 1; устанавливается единица
SBIDDRB, 2; устанавливается единица
...