ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.01.2025
Просмотров: 3678
Скачиваний: 8
СОДЕРЖАНИЕ
1. Структура и функционирование микроконтроллера aTmega128
Регистр управления делением частоты кварцевого генератора – xdiv
2. Интегрированная система программирования avr Studio v4.12
3.Описание лабораторного стенда лс-2.
Работа №1 микроконтроллер aTmega128: методы адресации, команды передачи данных и управления
Работа №2 микроконтроллер aTmega128: команды обработки данных
Работа №3 цифровые системы на базе микроконтроллерa aTmega128:
Регистр управления внешними прерываниями – eicra и eicrb
16-Разрядные таймеры/счетчики t/c1 и t/c3
Регистры сравнения а таймеров/счетчиков - ocRxA
Работа №6 цифровые системы на базе микроконтроллера aTmega128:
Передача данных - Передатчик usart.
Прием данных - Приемник usart.
Работа №7 цифровые системы на базе микроконтроллера aTmega128:
Таблица 1.1. Регистры ввода-вывода микроконтроллера ATmega128
|
Название |
Адрес |
Функция |
|
UCSR1C |
($9D) |
Регистр управления и состояния С USART1 |
|
UDR1 |
($9C) |
Регистр данных USART1 |
|
UCSR1A |
($9B) |
Регистр управления и состояния A USART1 |
|
UCSR1B |
($9A) |
Регистр управления и состояния В USART1 |
|
UBRR1L |
($99) |
Регистр скорости передачи USART1, младший байт |
|
UBRR1H |
($98) |
Регистр скорости передачи USART1, старший байт |
|
UCSR0C |
($95) |
Регистр управления и состояния С USART0 |
|
UBRR0H |
($90) |
Регистр скорости передачи USART0, старший байт |
|
TCCR3C |
($8C) |
Регистр управления С таймера/счетчика ТЗ |
|
TCCR3A |
($8B) |
Регистр управления А таймера/счетчика ТЗ |
|
TCCR3B |
($8A) |
Регистр управления В таймера/счетчика ТЗ |
|
TCNT3H |
($89) |
Счетный регистр таймера/счетчика ТЗ, старший байт |
|
TCNT3L |
($88) |
Счетный регистр таймера/счетчика ТЗ, младший байт |
|
OCR3AH |
($87) |
Регистр совпадения А таймера/счетчика ТЗ, старший байт |
|
OCR3AL |
($86) |
Регистр совпадения А таймера/счетчика ТЗ, младший байт |
|
OCR3BH |
($85) |
Регистр совпадения В таймера/счетчика ТЗ, старший байт |
|
OCR3BL |
($84) |
Регистр совпадения В таймера/счетчика ТЗ, младший байт |
|
OCR3CH |
($83) |
Регистр совпадения С таймера/счетчика ТЗ, старший байт |
|
OCR3CL |
($82) |
Регистр совпадения С таймера/счетчика ТЗ, младший байт |
|
ICR3H |
($81) |
Регистр захвата таймера/счетчика ТЗ, старший байт |
|
ICR3L |
($80) |
Регистр захвата таймера/счетчика ТЗ, младший байт |
|
ETIMSK |
($7D) |
Дополнительный регистр маски прерываний от таймеров/счетчиков |
|
ETIFR |
($7C) |
Дополнительный регистр флагов прерываний от таймеров/счетчиков |
|
TCCR1C |
($7A) |
Регистр управления С таймера/счетчика Т1 |
|
OCR1CH |
($79) |
Регистр совпадения С таймера/счетчика Т1, старший байт |
|
OCR1CL |
($78) |
Регистр совпадения С таймера/счетчика Т1, младший байт |
|
TWCR |
($74) |
Регистр управления TWI |
|
TWDR |
($73) |
Регистр данных TWI |
|
TWAR |
($72) |
Регистр адреса TWI |
|
TWSR |
($71) |
Регистр состояния TWI |
|
TWBR |
($70) |
Регистр скорости передачи TWI |
|
OSCCAL |
($6F) |
Регистр калибровки тактового генератора |
|
XMCRA |
($6D) |
Регистр управления А внешней памятью |
|
XMCRB |
($6C) |
Регистр управления В внешней памятью |
|
EICRA |
($6A) |
Регистр управления А внешними прерываниями |
|
SPMCR |
($68) |
Регистр управления памятью программ |
|
PORTG |
($65) |
Регистр данных порта G |
|
DDRG |
($64) |
Регистр направления данных порта G |
|
PING |
($63) |
Выводы порта G |
|
PORTF |
($62) |
Регистр данных порта F |
|
DDRF |
($61) |
Регистр направления данных порта F |
|
SREG |
$3F($5F) |
Регистр состояния |
|
SPH |
$3E($5E) |
Указатель стека, старший байт |
|
SPL |
$3D($5D) |
Указатель стека, младший байт |
|
XDIV |
$3C($5C) |
Регистр управления делителем тактовой частоты |
|
RAMPZ |
$3B($5B) |
Регистр выбора страницы |
|
EICRB |
$3A($5A) |
Регистр управления В внешними прерываниями |
|
EIMSK |
$39($59) |
Регистр маски внешних прерываний |
|
EIFR |
$38 ($58) |
Регистр флагов внешних прерываний |
|
TIMSK |
$37($57) |
Регистр маски прерываний от таймеров/счетчиков |
|
TIFR |
$36($56) |
Регистр флагов прерываний от таймеров/счетчиков |
|
MCUCR |
$35($55) |
Регистр управления микроконтроллером |
|
MCUCSR |
$34($54) |
Регистр управления и состояния микроконтроллера |
|
TCCR0 |
$33($53) |
Регистр управления таймером/счетчиком Т0 |
|
TCNT0 |
$32($52) |
Счетный регистр таймера/счетчика Т0 |
|
OCR0 |
$31($51) |
Регистр совпадения таймера/счетчика Т0 |
|
ASSR |
$30($50) |
Регистр состояния асинхронного режима |
|
TCCR1A |
$2F($4F) |
Регистр управления А таймера/счетчика Т1 |
|
TCCR1B |
$2E($4E) |
Регистр управления В таймера/счетчика Т1 |
|
TCNT1H |
$2D($4D) |
Счетный регистр таймера/счетчика Т1, старший байт |
|
TCNT1L |
$2C($4C) |
Счетный регистр таймера/счетчика Т1, младший байт |
|
OCR1AH |
$2B($4B) |
Регистр совпадения А таймера/счетчика Т1, старший байт |
|
OCR1AL |
$2A($4A) |
Регистр совпадения А таймера/счетчика Т1, младший байт |
|
OCR1BH |
$29($49) |
Регистр совпадения В таймера/счетчика Т1, старший байт |
|
OCR1BL |
$28($48) |
Регистр совпадения В таймера/счетчика Т1, младший байт |
|
ICR1H |
$27($47) |
Регистр захвата таймера/счетчика Т1, старший байт |
|
ICR1L |
$26($46) |
Регистр захвата таймера/счетчика Т1, младший байт |
|
TCCR2 |
$25($45) |
Счетный регистр таймера/счетчика Т2 |
|
TCNT2 |
$24($44) |
Регистр совпадения таймера/счетчика Т2 |
|
OCR2 |
$23($43) |
Регистр совпадения таймера/счетчика Т2 |
|
OCDR |
$22($42) |
Регистр внутрисхемной отладки |
|
WDTCR |
$21($41) |
Регистр управления сторожевым таймером |
|
SFIOR |
$20($40) |
Регистр специальных функций |
|
EEARH |
$1F($3F) |
Регистр адреса EEPROM, старший байт |
|
EEARL |
$1E($3E) |
Регистр адреса EEPROM, младший байт |
|
EEDR |
$1D($3D) |
Регистр данных EEPROM |
|
EECR |
$1C($3C) |
Регистр управления EEPROM |
|
PORTA |
$1B($3B) |
Регистр данных порта А |
|
DDRA |
$1A($3A) |
Регистр направления данных порта А |
|
PINA |
$19($39) |
Выводы порта А |
|
PORTB |
$18($38) |
Регистр данных порта В |
|
DDRB |
$17($37) |
Регистр направления данных порта В |
|
PINB |
$16($36) |
Выводы порта В |
|
PORTC |
$15($35) |
Регистр данных порта С |
|
DDRC |
$14($34) |
Регистр направления данных порта С |
|
PINC |
$13($33) |
Выводы порта С |
|
PORTD |
$12($32) |
Регистр данных порта D |
|
DDRD |
$11($31) |
Регистр направления данных порта D |
|
PIND |
$10($30) |
Выводы порта D |
|
SPDR |
$0F($2F) |
Регистр данных SPI |
|
SPSR |
$0E($2E) |
Регистр состояния SPI |
|
SPCR |
$0D($2D) |
Регистр управления SPI |
|
UDR0 |
$0C($2C) |
Регистр данных USART0 |
|
UCSR0A |
$0B($2B) |
Регистр управления и состояния A USART0 |
|
UCSR0B |
$0A($2A) |
Регистр управления и состояния В USART0 |
|
UBRR0L |
$09($29) |
Регистр скорости передачи USART0, младший байт |
|
ACSR |
$08($28) |
Регистр управления и состояния аналогового компаратора |
|
ADMUX |
$07($27) |
Регистр управления мультиплексором АЦП |
|
ADCSRA |
$06($26) |
Регистр управления и состояния АЦП |
|
ADCH |
$05($25) |
Регистр данных АЦП, старший байт |
|
ADCL |
$04($24) |
Регистр данных АЦП, младший байт |
|
PORTE |
$03($23) |
Регистр данных порта Е |
|
DDRE |
$02($22) |
Регистр направления данных порта Е |
|
PINE |
$01($21) |
Выводы порта Е |
|
PINF |
$00($20) |
Выводы порта F |
В пространстве регистров ввода-вывода находятся и регистры управления процессором микроконтроллера: регистр состояния, указатель стека, регистр выбора страницы, регистр управления процессором, регистр управления коэффициентом деления частот. Формат этих регистров следующий:
Регистр состояния SREG.
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$3F ($5F) |
I |
T |
H |
S |
V |
N |
Z |
C |
SREG |
|
Исходное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Bit7 – Разрешение всех прерываний. Для разрешения прерываний этот бит должен быть установлен ( =1). Разрешение конкретного прерывания выполняется регистрами маски прерывания EIMSK и TIMSK. Если этот бит очищен ( =0), то ни одно из прерываний не обрабатывается. Бит аппаратно очищается после возникновения прерывания и устанавливается (разрешая последующие прерывания) командой RETI.
Bit 6 – Бит сохранения копии. Команды копирования бита BLD и BST используют этот бит как источник и приемник при операциях с битами. Командой BST бит регистра общего назначения копируется в бит Т, командой BLD бит Т копируется в бит регистра общего назначения.
Bit 5 – Флаг полупереноса. Флаг полупереноса указывает на перенос между тетрадами при выполнении ряда арифметических операций. Более подробная информация приведена в описании системы команд.
Bit 4 – Бит знака. Бит S имеет значение результата операции исключающее ИЛИ (NV) над флагами отрицательного значения (N) и дополнения до двух флага переполнения (V) . Более подробная информация приведена в описании системы команд.
Bit 3 – Дополнение до двух флага переполнения. Этот бит поддерживает арифметику дополнения до двух. Более подробная информация приведена в описании системы команд.
Bit 2 – Флаг отрицательного значения. Этот флаг указывает на отрицательный результат ряда арифметических и логических операций. Более подробная информация приведена в описании системы команд.
Bit 1 – Флаг нулевого значения. Этот флаг указывает на нулевой результат ряда арифметических и логических операций. Более подробная информация приведена в описании системы команд.
Bit 0 – Флаг переноса. Этот флаг указывает на перенос при арифметических и логических операциях. Более подробная информация приведена в описании системы команд.
Указатель стека – sp.
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$3E ($5E) |
SP15 |
SP14 |
SP13 |
SP12 |
SP11 |
SP10 |
SP9 |
SP8 |
SPH |
|
$3D ($5D) |
SP7 |
SP6 |
SP5 |
SP4 |
SP3 |
SP2 |
SP1 |
SP0 |
SPL |
|
Исходное |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Микроконтроллеры AVR оснащены 16-разрядным указателем стека, размещенным в двух регистрах ввода-вывода. Поскольку микроконтроллеры ATmega128 поддерживают объем ОЗУ до 64 Кбайт, то используются все 16 разрядов указателя стека.
Указатель стека указывает на область в ОЗУ данных, в которой размещается стек подпрограмм и прерываний. Начальный адрес указателя должен задаваться программно перед вызовом подпрограмм и разрешением прерываний. Начальное значение должно быть больше $60. Указатель стека декрементируется на единицу при каждом занесении командой PUSH данных в стек, и на две единицы при занесении в стек адреса при вызове подпрограммы или процедуры прерывания.
Указатель стека инкрементируется на единицу при извлечении данных из стека командой POP, и на две единицы при извлечении адреса из стека при возврате из подпрограммы (RET) или возврате из процедуры прерывания (RETI).
Регистр выбора страницы ОЗУ- RAMPZ.
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$3B ($5B) |
- |
- |
- |
- |
- |
- |
- |
RAMPZ0 |
RAMPZ |
|
Исходное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
Регистр RAMPZ используется обычно для определения страницы ОЗУ данных, к которой возможно обращение посредством указателя Z. Поскольку микроконтроллеры AТmega128 не поддерживают ОЗУ объемом более 64 К, этот регистр используется только для выбора страницы в памяти программ при использовании команды ELPM. Имеются следующие варианты использования единственного значащего бита RAMPZ0:
RAMPZ0 = 0: Команде ELPM доступна память программ с адресами от $0000 до $7FFF (младшие 64 Кбайт)
RAMPZ0 = 1: Команде ELPM доступна память программ с адресами от $8000 до $FFFF (старшие 64 Кбайт).
Отметим, что на команду LPM установки регистра RAMPZ не воздейсвуют.
Регистр управления MCU – MCUCR
|
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
$35 ($55) |
SRE |
SRW |
SE |
SM1 |
SM0 |
- |
- |
- |
MCUR |
|
Исходное значение |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|