Программирование на платформе Atmega 128
Автор: ilyaK • Февраль 15, 2019 • Лабораторная работа • 606 Слов (3 Страниц) • 375 Просмотры
МИНОБРНАУКИ РФ
Федеральное государственное бюджетное образовательное
учреждение высшего образовании
“Ижевский государственный технический университет
имени М.Т.Калашникова”
Кафедра «Конструирование радиоэлектронной аппаратуры»
Лабораторная работа №3
по дисциплине «Микроконтроллеры и микропроцессоры»
на тему «Программирование на платформе Atmega 128»
Выполнил: студент гр. Б05-071-1
Князев И.В.
Проверил: преподаватель
Данилов Е. О.
Ижевск, 2018
Цель: составить программу на платформе Atmega 128 и проверить работоспособность программы в программе Proteus.
Задача:
Составить программу динамической подсветки, в результате которой на четырехразрядный четырнацетисегментный индикатор выведется слово «ВОДА».
Ход работы:
Составим схему включения индикатора к микроконтроллеру Atmega 128 в программе Proteus, представленный на рисунке 1.
[pic 1]
Рис. 1. Схема включения
Скетч программы представлен в приложении №1.
В самом начале программы прописываем директиву .include "m128def.inc", она необходима для подключения списка команд для Atmega 128.
Вводим необходимые значения для вывода букв с помощью .equ, т.е. их кода. В .dseg (ОЗУ) резервируем 9 байт памяти для загрузки кода слова «ВОДА».
Далее прописываем .cseg и начинаем работать с таблицей прерываний, в которой я разрешил и настроил таймер-счетчик 0 на переполнение (это необходимо для быстрого переключения ячеек индикатора). При срабатывании прерывания программа переходит на метку TIM0_OVF в которой и происходит динамическое переключение выводов.
При первом отсчете программа переходит на метку Reset. В данной метке я установила порты А, В и С на выход. Внес значения кодов с . equ, в ОЗУ и с помощью директивы .db записал в программную память значения для общих выводов.
Приложение №1:
;Подключаем заголовочный файл ATMega128
.include "m128def.inc"
; Присваиваем регистрам символические имена
.def temp = r16
.def sys = r17
.def try = r18
;код для буквы В
.equ chV=0b00111101
.equ chV1=0b00100011
;код для буквы О
.equ chO=0b00111111
.equ chO1=0b00000000
;код для буквы Д
.equ chD=0b10001111
.equ chD1=0b00001000
;код для буквы А
.equ chA=0b00110111
.equ chA1=0b01100010
; оперативка
.dseg
Visible:
.byte 8 ; в ОЗУ зараезервируем 9 байт
;основная программа
.cseg
;вектора прерываний
.org $0000
rjmp Reset ; переход на метку Reset
.org $0002
reti
.org $0004
reti
.org $0006
reti
.org $0008
reti
.org $000A
reti
.org $000C
reti
.org $000E
reti
.org $0010
reti
.org $0012
reti
.org $0014
reti
.org $0016
reti
.org $0018
reti
.org $001A
reti
.org $001C
reti
.org $001E
reti
.org $0020 ; Адрес вектора таймера 0 по переполнении
jmp TIM0_OVF ;Переходим на TIM0_OVF
.org $0022
reti
.org $0024
reti
.org $0026
reti
.org $0028
reti
.org $002A
reti
.org $002C
reti
.org $002E
reti
.org $0030
reti
.org $0032
reti
.org $0034
reti
.org $0036
reti
.org $0038
reti
.org $003A
reti
.org $003C
reti
.org $003E
...