- •Оглавление
- •Введение
- •1. Структура и функционирование микроконтроллера aTmega128
- •Указатель стека – sp.
- •Регистр управления делением частоты кварцевого генератора – xdiv
- •2. Интегрированная система программирования avr Studio v4.12
- •2.1. Создание проекта.
- •2.2. Компиляция проекта.
- •3.Описание лабораторного стенда лс-2.
- •Работа №1 микроконтроллер aTmega128: методы адресации, команды передачи данных и управления
- •Введение
- •Команды передачи данных приведены в Табл.1.1. Из таблицы видно, что набор этих команд представляет собой сочетание восьми операций с различными методами адресации.
- •Из табл.1.1 и табл.1.2 видно, что команды пересылки данных и команды переходов значения флагов регистра sreg не изменяют.
- •Работа №2 микроконтроллер aTmega128: команды обработки данных
- •Введение
- •Задания
- •Работа №3 цифровые системы на базе микроконтроллерa aTmega128:
- •Введение
- •Регистр управления внешними прерываниями – eicra и eicrb
- •Выполнение основного задания
- •Задания
- •Работа №4 цифровые системы на базе микроконтроллера aTmega128: работа с внешними устройствами через параллельные порты ввода вывода – работа с клавиатурой и светодиодным индикатором
- •Введение
- •Выполнение основного задания
- •Задания
- •Работа №5
- •16-Разрядные таймеры/счетчики t/c1 и t/c3
- •Регистры сравнения а таймеров/счетчиков - ocRxA
- •Выполнение основного задания
- •Задания
- •Работа №6 цифровые системы на базе микроконтроллера aTmega128:
- •Введение
- •Универсальный синхронный и асинхронный приемопередатчик usart предназначен для организации последовательной связи.
- •Инициализация usart.
- •Передача данных - Передатчик usart.
- •Прием данных - Приемник usart.
- •Описание регистров usart.
- •Задания
- •Работа №7 цифровые системы на базе микроконтроллера aTmega128:
- •Аналоговый компаратор.
- •Задания
- •Задания
- •Приложение 1.
- •Приложение 2.
Выполнение основного задания
Изучить функционирование подсистемы прерываний микроконтроллера ATmega128.
Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Командой ProjectNew Project создать новый проект Lesson3. С использованием редактора текста создать демонстрационную программу:
.device ATmega128
.include "m128def.inc"
;*****таблица векторов прерываний*****************************************
.CSEG
.org $0000 ;начальный адpес пpогpаммы
rjmp Start ;пеpеход к pабочей части пpогpаммы (вектоp Reset)
.org $0002
rjmp int_INT0 ;Внешнее пpеpывание Int0
.org $0004
reti ;Внешнее пpеpывание Int1
.org $0006
reti ;Внешнее пpеpывание Int2
.org $0008
reti ;Внешнее пpеpывание Int3
.org $000A
reti ;Внешнее пpеpывание Int4
.org $000C
reti ;Внешнее пpеpывание Int5
.org $000E
reti ;Внешнее пpеpывание Int6
.org $0010
reti ;Внешнее пpеpывание Int7
.org $0012
reti ;Совпадение таймера/счетчика T2
.org $0014
reti ;Переполнение таймера/счетчика T2
.org $0016
reti ;Захват таймера/счетчика T1
.org $0018
reti ;Совпадение "А" таймера/счетчика T1
.org $001A
reti ;Совпадение "В" таймера/счетчика T1
.org $001C
reti ;Переполнение таймера/счетчика T1
.org $001E
reti ;Совпадение таймера/счетчика T0
.org $0020
rjmp OvfT0 ;Переполнение таймера/счетчика T0
.org $0022
reti ;Передача по SPI завершена
.org $0024
reti ;USART0, прием завершен
.org $0026
reti ;Регистр данных USART0 пуст
.org $0028
reti ;USART0, передача завершена
.org $002A
reti ;Преобразование АЦП завершено
.org $002C
reti ;Запись в EEPROM завершена
.org $002E
reti ;Аналоговый компаратор
.org $0030
reti ;Совпадение "C" таймера/счетчика T1
.org $0032
reti ;Захват таймера/счетчика T3
.org $0034
reti ;Совпадение "А" таймера/счетчика T3
.org $0036
reti ;Совпадение "В" таймера/счетчика T3
.org $0038
reti ;Совпадение "C" таймера/счетчика T3
.org $003A
reti ;Переполнение таймера/счетчика T3
.org $003C
reti ;USART1, прием завершен
.org $003E
reti ;Регистр данных USART1 пуст
.org $0040
reti ;USART1, передача завершена
.org $0042
reti ;Прерывание от модуля TWI
.org $0044
reti ;Готовность SPM
;***** Основная программа**********************************************
Start:
ldi R16,High(RAMEND) ;инициализация стека
out SPH,R16 ;
ldi R16,Low(RAMEND) ;
out SPL,R16 ;
;*****настройка линии INT0 для программного симулятора******************
in R16,DDRD ;
sbr R16,(1<<PD0) ;установка линии порта INT0 на выход
out DDRD, R16 ;разрешение работы линии порта INT0 на выход
sbi PORTD,PD0 ;установка высокого уровня на выходе INT0
;*********************************************************************
in R16,TCCR0 ; установка бита CS00,тактирование таймера
sbr R16,(1<<CS00) ; частотой процессора
out TCCR0, R16 ;разрешение работы Таймера 0
in R16,TIMSK ;
sbr R16,(1<<TOIE0) ;установка бита TOIE0
out TIMSK, R16 ;разрешение прерывания по переполнению Таймера 0
in R16,EIMSK ;
sbr R16,(1<<INT0) ;установка бита INT0
out EIMSK, R16 ;разрешение прерывания INT0 от низкого уровня
;на входе INT0
sei ;разрешение всех прерываний
loop:
rjmp loop ;зацикливание программы до прихода прерывания
;***** Обработка прерывания Int0: ******************************************
int_INT0:
nop
reti
;***** Обработка прерывания Таймера0 ******************************************
OvfT0:
nop
reti
Программа lesson3 показывает работу процессора по прерываниям. Разрешены прерывания от внешнего выводаINT0 и переполнения Таймера 0. Процедуры обслуживания разрешенных источников не содержат исполняемых команд и подробнее будут рассмотрены в следующих работах.
Выполнить компиляцию программы командой Project/Build.
При успешной компиляции с помощью команды Debug/StartDebuggingзапустить симулятор.
Выполнить программу по шагам, выполняя команду Debug/StepIntro(F11) до зацикливанияloop.В окнеWorkspaceизменяем, значение регистраTCNT0 наFFтем самым вызываем прерывание по переполнению Таймера 0.
Выполнить программу по шагам, используя команду Debug/StepIntro(F11) до возврата в циклloop.В окнеWorkspaceобнуляем, бит 0 регистраPINDтем самым вызываем прерываниеINT0.