ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 23.01.2025

Просмотров: 3698

Скачиваний: 8

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

Введение

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.

Bit 2 – TOV3: - Флаг переполнения Таймера 3. Бит TOV3 устанавливается при переполнении Таймера 3. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах TOIE3 и TOV3 выполняется прерывание по переполнению Таймера 3.

Bit 1 – OCF3C: - Флаг 3C совпадения выхода. Бит OCF3C устанавливается при совпадении состояния Таймера 3 и содержимого регистра OCR3C. Бит OCF3C аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах OCIE3C и OCF3C выполняется прерывание по совпадению выхода Таймера 3.

Bit 0 – OCF1C: - Флаг 1C совпадения выхода. Бит OCF1C устанавливается при совпадении состояния Таймера 1 и содержимого регистра OCR1C. Бит OCF1C аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных битах OCIE1C и OCF1C выполняется прерывание по совпадению выхода Таймера 1.

Обратите внимание, что программно установить флаг таймера-счетчика, записав в него «1», невозможно!


Выполнение основного задания

  1. Изучить функционирование подсистемы прерываний микроконтроллера ATmega128.

  1. Запустить на персональном компьютере интегрированную систему программирования AVRStudio. Командой ProjectNew 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. Процедуры обслуживания разрешенных источников не содержат исполняемых команд и подробнее будут рассмотрены в следующих работах.

  1. Выполнить компиляцию программы командой Project/Build.

  2. При успешной компиляции с помощью команды Debug/StartDebuggingзапустить симулятор.

  3. Выполнить программу по шагам, выполняя команду Debug/StepIntro(F11) до зацикливанияloop.В окнеWorkspaceизменяем, значение регистраTCNT0 наFFтем самым вызываем прерывание по переполнению Таймера 0.

  1. Выполнить программу по шагам, используя команду Debug/StepIntro(F11) до возврата в циклloop.В окнеWorkspaceобнуляем, бит 0 регистраPINDтем самым вызываем прерываниеINT0.



Задания

  1. Составить различные процедуры обслуживания прерываний, выполняемых при переполнении и сравнении Таймеров 1,2,3.

  1. Запустить составленные программы на выполнение. Реализовать вызов и выполнение соответствующих процедур обслуживания прерываний, изменяя значения в регистрах Таймеров 1,2,3 и контролируя работу программы с помощью интегрированной системы программирования.

Работа №4 цифровые системы на базе микроконтроллера aTmega128: работа с внешними устройствами через параллельные порты ввода вывода – работа с клавиатурой и светодиодным индикатором

Цель работы: получение практических навыков программирования процедур ввода-вывода сигналов внешних устройств (на примере работы с клавиатурой и индикатором).

Введение

Индикатор является неотъемлемой частью любого электронного устройства. Роль индикатора могут выполнять многие устройства от светодиода до TFT панели.

Установленный на плате лабораторного стенда светодиодный индикатор позволяет отображать 3 разряда по 8 сегментов в каждом. Он подключен к портам С и Е. Схема подключения показана на рисунке 4.1. Восемь сегментов подключены к выводам PC0-PC7, три разряда к выводам РЕ4-РЕ6. Вывод информации на индикатор производится в динамическом режиме, то есть в каждый момент времени включается один разряд из восьми сегментов. Для исключения мерцания индикатора частота включения каждого разряда должна превышать 25Гц. Вывод информации на индикатор производится последовательной установкой “0” на выводах PE4-PE6 и включением нужных сегментов установкой в “0” выводов PC0-PC7. Перед выключением предыдущего и включением следующего разряда выдерживается пауза, от времени которой зависит яркость индикатора.

Рис. 4.1 Схема подключения светодиодного индикатора на плате лабораторного стенда ЛС-2.

Клавиатура является одним из наиболее распространенных устройств для ввода оператором в цифровую систему команд и данных. Обычно клавиши клавиатуры организованы в виде матрицы, и их состояние читается через параллельные порты.

На плате лабораторного макета смонтирована простая 12-кнопочная клавиатура, которая подключена к выводам PD0 – PD6 порта PD микроконтроллера. Клавиатура имеет вид матрицы 4 х 3, кнопки обозначены А1 – А3, В1 – В3, С1 – С3, D1 – D3, где цифры 1, 2, 3 определяют номер столбца, а буквы A, B, C, D указывают позицию кнопки в столбце. Подключение кнопок клавиатуры к выводам порта PD показано на рисунке 4.2. Для контроля состояния кнопки необходимо подать низкий потенциал (логический «0») на один из выводов микроконтроллера PD0, PD1, PD2 или PD3. В этом случае на выводе PD4, PD5 или PD6, подключенном к нажатой кнопке, установится «0».