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

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

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

Добавлен: 23.01.2025

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

Скачиваний: 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.

breq _row2

sbr temp,(1<<row1)

rjmp _ret_kbd

_row2:

cbi PORTD,row2

rcall del_key

in temp,kbd

sbi PORTD,row2

com temp

cbr temp,$8F

breq _row3

sbr temp,(1<<row2)

rjmp _ret_kbd

_row3:

cbi PORTD,row3

rcall del_key

in temp,kbd

sbi PORTD,row3

com temp

cbr temp,$8F

breq _row4

sbr temp,(1<<row3)

rjmp _ret_kbd

_row4:

cbi PORTD,row4

rcall del_key

in temp,kbd

sbi PORTD,row4

com temp

cbr temp,$8F

breq _no_key

sbr temp,(1<<row4)

_ret_kbd:

cp temp,scan_kbd

breq _no_key

mov scan_kbd,temp

rcall key_det

mov dig1,dig2

mov dig2,dig3

mov dig3,temp

ret

_no_key:

ret

;===================================================================

;Подпрограмма определения нажатой клавиши

;===================================================================

key_det:

cpi temp,0b00010001

brne _key2

ldi temp,1

ret

_key2:

cpi temp,0b00100001

brne _key3

ldi temp,2

ret

_key3:

cpi temp,0b01000001

brne _key4

ldi temp,3

ret

_key4:

cpi temp,0b00010010

brne _key5

ldi temp,4

ret

_key5:

cpi temp,0b00100010

brne _key6

ldi temp,5

ret

_key6:

cpi temp,0b01000010

brne _key7

ldi temp,6

ret

_key7:

cpi temp,0b00010100

brne _key8

ldi temp,7

ret

_key8:

cpi temp,0b00100100

brne _key9

ldi temp,8

ret

_key9:

cpi temp,0b01000100

brne _key10

ldi temp,9

ret

_key10:

cpi temp,0b00011000

brne _key11

ldi temp,10

ret

_key11:

cpi temp,0b00101000

brne _key12

ldi temp,11

ret

_key12:

cpi temp,0b01001000

brne _err_key

ldi temp,12

_err_key:

ret

;===================================================================

;Подпрограмма задержки для клавиатуры

;===================================================================

del_key:

ldi deley,5

_del_key1:

dec deley

brne _del_key1

ret

;===================================================================

;Подпрограмма задержки для индикатора

;===================================================================

_deley:

ldi deley1,1

_deley1:

dec deley


brne _deley1

dec deley1

brne _deley1

ret

;===================================================================

RESET:

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

ldi temp,High(RAMEND)

out SPH,temp ;устанавливаем указатель стека

ldi temp,Low(RAMEND) ;на конечный адрес ОЗУ контроллера

out SPL,temp

;очищаем регистры

clr dig1

clr dig2

clr dig3

clr scan_kbd

;настройка выходных линий разрядов и их выключение

in temp,DDRE

sbr temp,(1<<razr1)+(1<<razr2)+(1<<razr3)

out DDRE,temp

in temp,PORTE

sbr temp,(1<<razr1)+(1<<razr2)+(1<<razr3)

out PORTE,temp

;настройка выходных линий сегментов и их выключение

ldi temp,$FF

out DDRC,temp

out seg,temp

;настройка выходных линий клавиатуры

in temp,DDRD

sbr temp,(1<<row1)+(1<<row2)+(1<<row3)+(1<<row4)

out DDRD,temp

ldi temp,$FF

out PORTD,temp

;===================================================================

;Основная программа

;===================================================================

main:

rcall Display

rcall Keyboard

rjmp main

;===================================================================

;Таблица констант в памяти программ

;===================================================================

seg_table:

.db $C0,$F9,$A4,$B0,$99,$92,$82,$F8,$80,$90,$88,$83,$C6,$A1,$86,$8E,$FF

.EXIT

Программа Lesson4 определяет факт нажатия одной из клавиш 12-кнопочной клавиатуры, организованной в виде матрицы 4 строки х 3 столбца, заносит номер нажатой клавиши в регистр scan_kbd и отображает номер нажатой клавиши в шестнадцатеричном формате на семисегментном индикаторе макета. Подразумевается, что в каждый момент времени может быть нажата только одна клавиша. Код нажатой клавиши заносится в регистр temp и по нему определяется номер клавиши в подпрограмме key_det (это удобно при дальнейшем анализе и выполнении операций управления), который выводится на индикатор.

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

  2. Загрузить программу lesson4.hex в микроконтроллер по методике пункта 2.4 «ЗАПИСЬ ПРОГРАММЫ В МИКРОКОНТРОЛЛЕР».


Задания

1. Составить программу, которая анализирует номер нажатой клавиши и формирует соответствующий десятичный номер на двух семисегментных индикаторах. (Кодировка клавиш задается преподавателем).

2. Разработать и реализовать различные варианты подавления дребезга контактов клавиатуры.

3. Составить программу, осуществляющую считывание трех последовательно вводимых с клавиатуры чисел и их вывод на три семисегментных индикатора.

4. Составить программу опроса клавиатуры, имеющую защиту от одновременного нажатия двух и более клавиш.

5. Составить программу опроса клавиатуры, которая рассматривает некоторые клавиши как служебные, изменяющие действие нажатых основных клавиш.

6. Составить программу опроса клавиатуры, которая наращивает значение в ячейке памяти, соответствующей клавише, если клавиша нажата и удерживается. Результат должен наблюдаться на семисегментных индикаторах.

7. Провести отладку разработанных программ на лабораторном стенде с использованием интегрированной системы программирования. Проверить правильность выполнения программ на макете, продемонстрировать результаты преподавателю.

Работа №5

ЦИФРОВЫЕ СИСТЕМЫ НА БАЗЕ МИКРОКОНТРОЛЛЕРА ATmega128:

реализация таймерных функций

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

Введение

Микроконтроллер ATmega128 имеет четыре таймера/счетчика: два 8-разрядных Таймер 0, Таймер 2 и два 16-разрядных Таймер1, Таймер 3. Таймер 0, в дополнение к обычному режиму, может тактироваться асинхронно от внешнего генератора. Этот генератор оптимизирован под использование кварцевого кристалла на частоту 32768 кГц, что позволяет использовать Таймер 0 как часы реального времени (Real Time Clock - RTC).

8-разрядные таймеры/счетчики Т/С0 и Т/С2.

Таймеры/счетчики T/C0 и T/C2 предназначены для отсчета и измерения временных интервалов, генерации сигналов с широтно-импульсной модуляцией (ШИМ), а также как счетчик внешних событий.


Таймеры/счетчики T/C0 и T/C2 отличаются только наличием асинхронного режима работы в таймере/счетчике T/C0.

В состав таймеров/счетчиков входят 3 регистра ввода/вывода:

  • счетный регистр TCNT0 (TCNT2)

  • регистр управления TCCR0 (TCCR2)

  • регистр сравнения OCR0 (OCR2)

  • регистр ASSR в таймере/счетчике T/C0 для управления в асинхронном режиме.

В регистре флагов прерывания таймеров/счетчиков TIFR хранятся различные флаги состояния (переполнения, совпадения при сравнении и захвата события). Разрешение и запрещение прерываний производится посредством регистра масок прерываний таймеров/счетчиков TIMSK.

Точность и разрешение 8-разрядных таймеров/счетчиков растет с уменьшением коэффициента предварительного деления. Высокий коэффициент предварительного деления удобно использовать при реализации медленных операций или точной синхронизации редко происходящих действий.

Оба таймера/счетчика поддерживают две функции сравнения выхода, используя регистры сравнения выходов OCR0 и OCR2 как источники данных, сравниваемых с содержимым таймеров/счетчиков. В функции сравнения выхода входит очистка счетчика при совпадении, а также формирование, при совпадении, активных сигналов на выводах PB4(OC0/PWM0) и PB7(OC2/PWM2).

Таймеры/счетчики 0 и 2 можно использовать как 8-разрядные широтно-импульсные модуляторы. В этом режиме таймер/счетчик, совместно с регистром совпадения выхода, работает как автономный ШИМ с центрированными импульсами без ложных выбросов.

Регистр состояния асинхронного режима таймера/счетчика T/C0 - ASSR

Разряд

7

6

5

4

3

2

1

0

$30 ($50)

-

-

-

-

AS0

TCN0UB

OCR0UB

TCR0UB

TCCR0

Исходное значение

0

0

0

0

0

0

0

0


Разряд 4-7 - Зарезервированные биты

Разряд 3 – AS0: Разрешение асинхронного режима таймера/счетчика T/C0. При установленном (= 1) бите на вход предделителя таймера/счетчика 0 поступают импульсы с внешнего кварцевого генератора. В этом режиме выводы TOSC1 и TOSC2 используются для подключения кварцевого резонатора.

Разряд 2 – TCN0UB: Состояние обновления регистра TCNT0

Разряд 1 – OCR0UB: Состояние обновления регистра OCRT0

Разряд 0 – TCR0UB: Состояние обновления регистра TCRT0

Регистр управления таймером/счетчиком - TCCR0

Разряд

7

6

5

4

3

2

1

0

$33 ($53)

FOC0

WGM00

COM01

COM00

WGM01

CS02

CS01

CS00

TCCR0

Исходное значение

0

0

0

0

0

0

0

0

Разряд

7

6

5

4

3

2

1

0

$25 ($45)

FOC2

WGM20

COM21

COM20

WGM21

CS22

CS21

CS20

TCCR2

Исходное значение

0

0

0

0

0

0

0

0