rjmploop

m2:

sbic PINB,6;если 7 бит в порту В=0, то переходим через инструкцию (к команде ldi temp,2)

rjmpmain_prg;а если 7 бит в порту B=1, то выполняем переход на метку main_prg - возврат назад

ldi temp,253;загружаем в регистр r16 число FD (двоичное 11111101)

outPORTD,temp;выводим его в порт D (горит только диод D1)

loop:

rjmpmain_prg;зацикливаем программу. Это необходимо по такой причине: программный

;счетчик после выполнения последней нами заданной команды попытается дать процессору

;адрес следующей ячейки программной памяти, думая что там находится следующая команда

;А поскольку мы туда ничего не записывали, там может оказаться "мусор", вследстие чего

;микроконтроллер начнёт выполнять случайный код.

2.2 Скомпилировать программу:Build→Build

2.3 Отладить программу

2.3.1 Пошаговая отладка со входом в бесконечный цикл:

Стрелка показывает какая команда выполняется в данный момент.

Результаты отладки (порт D):

2.3.2 Пошаговая отладка без входа в бесконечныйцикл:

Результаты отладки (порт D):

2.3.3 Пошаговая отладка с выходом из бесконечного цикла:

2.4 Подключаем макет

2.4.1 С помощью программатора JTAGICE подключаем макет к компьютеру

2.5 Описание КонтроллерAtmega128

ATmega128 – маломощный 8-разр. КМОП микроконтроллер, основанный на расширенной AVR RISC-архитектуре. За счет выполнения большинства инструкций за один машинный цикл ATmega128 достигает производительности 1 млн. операций в секунду/МГц, что позволяет проектировщикам систем оптимизировать соотношение энергопотребления и быстродействия.

Ядро AVR сочетает богатый набор инструкций с 32 универсальными рабочими регистрами. Все 32 регистра непосредственно подключены к арифметико-логическому устройству (АЛУ), который позволяет указать два различных регистра в одной инструкции и выполнить ее за один цикл. Данная архитектура обладает большей эффективностью кода за счет достижения производительности в 10 раз выше по сравнению с обычными CISC-микроконтроллерами.

ATmega128 содержит следующие элементы: 128 кбайт внутрисистемно программируемой флэш-памяти с поддержкой чтения во время записи, 4 кбайт ЭСППЗУ, 4 кбайт статического ОЗУ, 53 линии универсального ввода-вывода, 32 универсальных рабочих регистра, счетчик реального времени (RTC), четыре гибких таймера-счетчика с режимами сравнения и ШИМ, 2 УСАПП, двухпроводной последовательный интерфейс ориентированный на передачу байт, 8-канальный 10-разр. АЦП с опциональным дифференциальным входом с программируемым коэффициентом усиления, программируемый сторожевой таймер с внутренним генератором, последовательный порт SPI, испытательный интерфейс JTAG совместимый со стандартом IEEE 1149.1, который также используется для доступа к встроенной системе отладке и для программирования, а также шесть программно выбираемых режимов уменьшения мощности. Режим холостого хода (Idle) останавливает ЦПУ, но при этом поддерживая работу статического ОЗУ, таймеров-счетчиков, SPI-порта и системы прерываний. Режим выключения (Powerdown) позволяет сохранить содержимое регистров, при остановленном генераторе и выключении встроенных функций до следующего прерывания или аппаратного сброса. В экономичном режиме (Power-save) асинхронный таймер продолжает работу, позволяя пользователю сохранить функцию счета времени в то время, когда остальная часть контроллера находится в состоянии сна. Режим снижения шумов АЦП (ADC NoiseReduction) останавливает ЦПУ и все модули ввода-вывода, кроме асинхронного таймера и АЦП для минимизации импульсных шумов в процессе преобразования АЦП. В дежурном режиме (Standby) кварцевый/резонаторный генератор продолжают работу, а остальная часть микроконтроллера находится в режиме сна. Данный режим характеризуется малой потребляемой мощностью, но при этом позволяет достичь самого быстрого возврата в рабочий режим. В расширенном дежурном режиме (ExtendedStandby) основной генератор и асинхронный таймер продолжают работать.

Микроконтроллер производится по технологии высокоплотной энергонезависимой памяти компании Atmel. Встроенная внутрисистемно программируемая флэш-память позволяет перепрограммировать память программ непосредственно внутри системы через последовательный интерфейс SPI с помощью простого программатора или с помощью автономной программы в загрузочном секторе. Загрузочная программа может использовать любой интерфейс для загрузки прикладной программы во флэш-память. Программа в загрузочном секторе продолжает работу в процессе обновления прикладной секции флэш-памяти, тем самым поддерживая двухоперационность: чтение во время записи. За счет сочетания 8-разр. RISC ЦПУ с внутрисистемносамопрограммируемой флэш-памятью в одной микросхеме ATmega128 является мощным микроконтроллером, позволяющим достичь высокой степени гибкости и эффективной стоимости при проектировании большинства приложений встроенного управления.

ATmega128 поддерживается полным набором программных и аппаратных средств для проектирования, в т.ч.: Си-компиляторы, макроассемблеры, программные отладчики/симуляторы, внутрисистемные эмуляторы и оценочные наборы.

2.6 Прошивка микроконтроллера

2.6.1В верхней панели выбираем вкладку Debug→SelectPlatformandDevice

2.6.2ВокнеDebugplatformвыбратьJTAGICE.

ВокнеDeviceвыбратьATmega128

Нажать кнопку Finish.

2.6.3Компилируем программу:Build→Build and Run

2.6.4Запускаем программу:

В верхей панели инструментов нажать кнопку “Run”(F5).

2.6.5Наблюдаем результаты на макете.

3. Вывод:

В данной лабораторной работе вы ознакомились с макетом, вами был написан, сгенерирован и отлажен элементарный программный код на языке ассеблер, а так же вы приобрели практические навыки работы в среде AVR студио.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: