Главная » Просмотр файлов » контроллер ATmega1281

контроллер ATmega1281 (1056160)

Файл №1056160 контроллер ATmega1281 (Всё по лабораторным работам БМТ)контроллер ATmega1281 (1056160)2017-12-27СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

;контроллер ATmega1281

;подключение файла заголовков регистров ввода вывода

.include "m128def.inc"

;.include "" ;файл куда можно записать изменения на портах ввода вывода

;определение имен некоторых регистров для дальнейшего использования их псевдонимов

.DEF klav=R20; регистр для сигнала нажатой кнопки

.DEF temp=R21; регистр для временной информации

.DEF what=R22; регистр для номера нажатой кнопки

.DEF for_trans=R17; регистр для числа, которое будет разбито на

; десятки и единицы

.DEF day_s=r2; регистр для хранения цифры десятков дня выполнения лабы

.DEF day_m=r3; регистр для хранения цифры единиц дня выполнения лабы

.DEF birth_s=r4; регистр для хранения цифры десятков дня рождения

.DEF birth_m=r5; регистр для хранения цифры единиц дня рождения

.DEF mes_s=r6; регистр для хранения цифры десятков месяца рождения

.DEF mes_m=r7; регистр для хранения цифры единиц месяца рождения

.DEF year1_s=r8; регистр для хранения цифры десятков первых двух цифр

; года рождения

.DEF year1_m=r9; регистр для хранения цифры единиц первых двух цифр

; года рождения

.DEF year2_s=r11; регистр для хранения цифры десятков вторых двух цифр

; года рождения

.DEF year2_m=r12; регистр для хранения цифры единиц вторых двух цифр

; года рождения

.DEF ind=R24; регистр для хранения цифры для индикации

.DEF ind2=R25; регистр для хранения кода для цифры индикации

;инициализация указателя стека

ldi r25, LOW(RAMEND); в регистр R25 загружается начальный байт указателя стека

out $3d, r25; по адресу регистра SPL записывается значение

; начального байта указателя стека

ldi r25, HIGH(RAMEND); в регистр R25 загружается конечный байт указателя стека

out $3e, r25; по адресу регистра SPL записывается значение

; конечного указателя стека

;инициализация портов ввода вывода

ldi temp, 0xff; в регистр temp заносится число ff.

out $04, temp; порт B программируется на вывод

; записью в регистр DDRB числа FF

out $07,temp; порт C программируется на вывод

; записью в регистр DDRC числа FF

clr temp;

out $0a, temp; порт D программируется на вывод

; записью в регистр DDRD числа 00

;запись чисел для вывода в регистры

;день лабы

ldi temp, 06; в регистр temp записывается число для дня лабы

mov for_trans, temp; копирование этого значения в регистр for_trans для

; дальнейшего преобразования

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

mov day_s, r14; в регистр day_s копируется значение первой цифры числа

; дня выполнения лабы

mov day_m, r15; в регистр day_m копируется значение второй цифры числа

; дня выполнения лабы

;день рождения

ldi temp, 21; в регистр temp записывается число для дня рождения

mov for_trans, temp; копирование этого значения в регистр for_trans для

; дальнейшего преобразования

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

mov birth_s, r14; в регистр birth_s копируется значение первой цифры ; числа дня рождения

mov birth_m, r15; в регистр birth_m копируется значение второй цифры ; числа дня рождения

;месяц рождения

ldi temp, 12; в регистр temp записывается число для месяца рождения

mov for_trans, temp; копирование этого значения в регистр for_trans для

; дальнейшего преобразования

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

mov mes_s, r14; в регистр birth_s копируется значение первой цифры ; числа месяца рождения

mov mes_m, r15; в регистр birth_m копируется значение второй цифры ; числа месяца рождения

;первые две цифры года рождения

ldi temp, 19; в регистр temp записывается число первых двух цифр года

; рождения

mov for_trans, temp; копирование этого значения в регистр for_trans для

; дальнейшего преобразования

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

mov year1_s, r14; в регистр year1_s копируется значение первой цифры ; первых двух цифр года рождения

mov year1_m, r15; в регистр year1_m копируется значение второй цифры ; первых двух цифр года рождения

;вторые две цифры года рождения

ldi temp, 86; в регистр temp записывается число вторых двух цифр года

; рождения

mov for_trans, temp; копирование этого значения в регистр for_trans для

; дальнейшего преобразования

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

mov year2_s, r14; в регистр year2_s копируется значение первой цифры ; вторых двух цифр года рождения

mov year2_m, r15; в регистр year2_m копируется значение второй цифры ; вторых двух цифр года рождения

clr r15; очитска регистра r15

clr r14; очистка регистра r14

;основной блок программы

main:

;в данной программе происходит программная задержка микроконтроллера.

;задержка опроса клавиатуры составляет 1/10c. Достигается она с помощью

;вызова процедуры wait 3 раза, что обеспечивает загрузка в регистр R16

;числа 3. Процедура wait написана для обеспечения задержки порядка 1/30с.

;таким образом вызывая процедуру wait 3 раза с помощью меток w1 и rm

;можно обеспечить требуемое время задержки.

rcall opros_klavy; вызов процедуры опроса клавиатуры на нажатие одной

; или нескольких клавиш

ldi R16, 3 ; загрузка в регистр r16 числа 3 для обеспечения задержки

; опроса клавы

w1: cpi klav,1 ; сравнение регистра klav с 1

breq vyvod ; если в регистре состояния Z записана 1, то переход

; на процедуру вывода

rc: rcall wait ; вызов процедуры ожидания

rm: dec R16 ; уменьшение содержания регистра R16 на 1

brne w1 ; проверка последней операции на равенство 0. Если выполнено

; то переход на строчку вниз

rjmp main ; зацикливание программы

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

; 3-ной вложенный цикл

wait:

; формирование задержки

; частота микроконтроллера равна 4 МГц. Следовательно на один такт тратится

; (1/40*10^6)c. для реализации задержки в 1/30c необходимо:

; (1/40*10^6)c/30=133000 тактов

; операции dec и brne занимают 1 такт. Следовательно для одного блока вложенного

; цикла требуется два такта. (пренебрегаем тем, что brne при выполнении условия

; занимает 2 такта)

; тогда 133000/(255*2)=261.

; Поучили максимальное значение внутреннего цикла R19=$ff

; 261/(65*2)=2

; Получили максимальные значения среднего и внешнего циклов R18=65, R20=2

;

ldi R19, 0xff ; загрузка в регистр r19 начального значения

; счетчика внутреннего цикла

ldi R18, 0x41 ; загрузка в регистр r18 начального значения счетчика

; среднего цикла

ldi R20, 0x02 ; загрузка в регистр r20 начального значения счетчика

; внешнего цикла

m2:

dec R19 ; уменьшение на 1 значение регистра r19

brne m2 ; если результат предыдущей операции равен 0,

; то переход на метку m2

ldi R19, 0xff; загрузка в регистр r19 начального значения счетчика

; внешнего цикла

dec R18 ; уменьшение на 1 значение регистра r18

brne m2 ; если результат предыдущей операции равен 0,

; то переход на метку m2

ldi R18, 0xff; загрузка в регистр r18 начального значения счетчика

; внешнего цикла

dec R20 ; уменьшение на 1 значение регистра r17

brne m2 ; если результат предыдущей операции равен 0,

; то переход на метку m2

=примерно 61000мкс=61мс=0.061с=16Гц

rjmp rm ; переход на метку rm (зацикливание программы)

;подпрограмма опроса состояния порта ввода (состояния нажатия каких-либо кнопок)

opros_klavy:

in temp, $0b; в регистр temp записывается значение на выводах порта D ($0b)

cpi temp, 0xfe; сравнение полученного значения с 1 - условие нажатия

; первой кнопки

breq b1 ; если результат выполнения предыдущей операции равен 0

; то переход на метку b1

cpi temp, 0xfd; сравнение полученного значения с 2 - условие нажатия

; второй кнопки

breq b2 ; если результат выполнения предыдущей операции равен 0

; то переход на метку b2

cpi temp, 0xfb; сравнение полученного значения с 3 - условие нажатия

; третьей кнопки

breq b3 ; если результат выполнения предыдущей операции равен 0

; то переход на метку b3

rjmp b0; в любом другом случае переход на метку b0

b0: ; метка для подготовки регистров для вывода дня выполнения лабы

ldi what, 0; в регистр what загружается информация о номере нажатой кнопки

ldi klav, 1; в регистр klav записывается единица - индикатор нажатия кнопки

ret;

b1: ; метка для подготовки регистров для вывода года рождения

ldi klav, 1; в регистр klav записывается единица - индикатор нажатия кнопки

ldi what, 1; в регистр what загружается информация о номере нажатой кнопки

ret;

b2: ; метка для подготовки регистров для вывода дня рождения

ldi klav, 1; в регистр klav записывается единица - индикатор нажатия кнопки

ldi what, 2; в регистр what загружается информация о номере нажатой кнопки

ret;

b3: ; метка для подготовки регистров для вывода месяца рождения

ldi klav, 1; в регистр klav записывается единица - индикатор нажатия кнопки

ldi what, 3; в регистр what загружается информация о номере нажатой кнопки

ret; возвращение в main

;подпрограмма вывода на порты вывода определенной информации

vyvod:

cpi what, 0 ; сравнение номера нажатой кнопки с 0 - выяснение какая

; кнопка нажата

breq no ; если результат выполнения предыдущей операции равен 0,

; то происходит переход на метку no

cpi what, 1 ; сравнение номера нажатой кнопки с 1 - выяснение какая

; кнопка нажата

breq s1 ; если результат выполнения предыдущей операции равен 0,

; то происходит переход на метку s1

cpi what, 2 ; сравнение номера нажатой кнопки с 2 - выяснение какая

; кнопка нажата

breq s2 ; если результат выполнения предыдущей операции равен 0,

; то происходит переход на метку s2

cpi what, 3 ; сравнение номера нажатой кнопки с 3 - выяснение какая

; кнопка нажата

breq s3 ; если результат выполнения предыдущей операции равен 0,

; то происходит переход на метку s3

no:

;вывод дня лабы

mov ind, day_s; в регистр ind заносится информация о первой цифре

; дня выполнения лабы

rcall cod7 ; вызов процедуры генерации кода цифры для отображения

ldi temp, 0xfe; в регистр temp заносится число, которое используется для ; первого регистра

out $05, temp; в порт B ($05) заносится номер индикатора

; на который пойдет отображение - 01

out $08, ind2; в порт С ($08) заносится код числа для отображения

mov ind, day_m; в регистр ind заносится информация о второй цифре дня

; выполнения лабы

rcall cod7 ; вызов процедуры генерации кода цифры для отображения

ldi temp, 0xfd; в регистр temp заносится число которое используется для ; выбора второго регистра

out $05, temp; в порт B ($05) заносится номер индикатора на который

; пойдет отображение - 02

out $08, ind2; в порт С ($08) заносится код числа для отображения

rjmp rc; переход на метку rc в основном блоке программы

s1:

;год рождения

mov ind, year1_s; в регистр ind заносится информация о первой цифре первых

; двух цифр года рождения

rcall cod7 ; вызов процедуры генерации кода цифры для отображения

ldi temp, 0xfe ; в регистр temp заносится число которое используется для ; выбора первого регистра

out $05, temp ; в порт B ($05) заносится номер индикатора на который

; пойдет отображение - 01

out $08, ind2 ; в порт С ($08) заносится код числа для отображения

mov ind, year1_m; в регистр ind заносится информация о второй цифре первых

; двух цифр года рождения

rcall cod7 ; вызов процедуры генерации кода цифры для отображения

ldi temp, 0xfd ; в регистр temp заносится число которое используется для ; выбора второго регистра

out $05, temp ; в порт B ($05) заносится номер индикатора на который

; пойдет отображение - 02

Характеристики

Тип файла
Документ
Размер
186 Kb
Тип материала
Высшее учебное заведение

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов лабораторной работы

Всё по лабораторным работам БМТ
1
lab
AvrBuild.bat
Ogonik_lab1.hex
Ogonik_lab1.obj
lab.aps
lab.asm
lab.hex
lab.map
lab.obj
labels.tmp
Ogonik_lab1.aps
2
AvrBuild.bat
Lab2.aps
Lab2.asm
Lab2.hex
Lab2.map
Lab2.obj
lab2.aws
laba2.aps
laba2.asm
laba2.hex
laba2.map
laba2.obj
labels.tmp
3
Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее