Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Регистровая память (РОН и РВВ)



Регистровая память включает 32 регистра общего назначения (РОН или GPR), объединенных в файл, и служебные регистры ввода/вывода (РВВ). И те и другие расположены в адресном пространстве ОЗУ, но не являются его частью.

В области регистров ввода/вывода расположены различные служебные регистры (регистры управления микроконтроллером, регистры состояния и т. п.), а также регистры управления периферийными устройствами, входящими в состав микроконтроллера. По сути, управление микроконтроллером заключается в управлении этими регистрами.

Файл регистров общего назначения

Структура 32 регистров общего назначения:

Рис. 5. Регистры общего назначения CPU микроконтроллеров AVR

Все регистровые команды обращаются непосредственно к регистрам в течение одного тактового цикла. Исключением являются пять логических и арифметических операций с константами (SBCI, SUBI, CPI и ANDI) и операция ORI между константой и содержимым регистра, и команда непосредственной загрузки константы LDI. Эти команды используют вторую половину регистров регистрового файла - R16..R31.

Самые общие команды SBC, SUB, CP, AND и OR и все прочие операции между двумя регистрами или с одним регистром используют для записи результата регистровый файл.

Как показано на Рис. 5, каждому регистру соответствует адрес памяти данных, отображающий их в первых 32 ячейках пользовательского пространства данных. Хотя они не используются как физические ячейки SRAM, такая организация памяти обеспечивает гибкое обращение к регистрам, поскольку X,Y и Z регистры могут быть использованы для индексации любого регистра в файле.

Регистр X, регистр Y и регистр Z

Шесть регистров (с R26 по R31) регистрового файла, кроме обычной для прочих регистров функций, выполняют функцию 16-разрядных регистров указателей адреса при косвенной адресации SRAM. Эти три регистра косвенной адресации определяются как регистры X,Y и Z.

Рис. 6. Формат регистров X, Y и Z

В различных режимах адресации эти регистры выполняют функции фиксированного смещения, автоматического инкремента и декремента (см. описания команд).

Регистры ввода-вывода и спецфункций

Регистры ввода-вывода можно разделить на 2 группы – служебные регистры МК и регистры, относящиеся к конкретным периферийным устройствам.

К регистрам ввода-вывода можно напрямую обратиться двумя способами:

– как к пространству ввода-вывода (команды IN, OUT), в этом случае используются регистры, ввода-вывода, относящиеся к пространству ввода-вывода (адреса $00-$3F)

– как к регистрам (команды LDI, MOV,..), в этом случае адреса регистров необходимо увеличить на $20 (в таблице 1 указан в скобках), так как в начальной области памяти данных располагается 32 регистра общего назначения (3210=2016).

Таблица 1. Пространство I/O микроконтроллера ATmega8515

Адрес I/O (адрес SRAM) Обозначение Функция
$3F ($5F) SREG Регистр статуса (Status REGister)
$3E ($5E) SPH Верхний байт указателя стека (Stack Pointer High)
$3D ($5D) SPL Нижний байт указателя стека (Stack Pointer Low)
$3C ($5C)   Не используется
$3B $5B) GICR Общий регистр управления прерываниями
$3A ($5A) GIFR Общий регистр флагов прерываний
$39 ($59) TIMSK Регистр масок прерываний по таймерам/счетчикам (Timer/Interrupt MaSK register)
$38 ($58) TIFR Регистр флагов прерывания по таймерам/счетчикам (Timer/ Counter Interrupt Flag register)
$37 ($57) SPMCR Регистр управления памятью программ
$36 ($56) EMCUCR Дополнительный регистр управления МК
$35 ($55) MCUCR Регистр управления МК
$34 ($54) MCUCSR Регистр управления и состояния МК
$33 ($53) TCCR0 Регистр управления таймером/счетчиком 0 (Timer/Counter0 Control Register)
$32 ($52) TCNT0 Таймер/счетчик0 (Timer/Counter0 (8-bit))
$31 ($51) OCR0 Регистр сравнения выхода таймера/счетчика 0 (Timer/Counter0 Output Compare Register)
$30 ($50) SFIOR Регистр специальных функций
$2F ($4F) TCCR1A Управляющий регистр A таймера/счетчика 1 (Timer/Counter1 Control Register A)
$2E ($4E) TCCR1B Управляющий регистр B таймера/счетчика 1 (Timer/Counter1 Control Register A)
$2D ($4D) TCNT1H Старший байт таймера/счетчика 1 (Timer/Counter1 High Byte)
$2C ($4C) TCNT1L Младший байт таймера/счетчика 1 (Timer/Counter1 Low Byte)
$2B ($4B) OCR1AH Старший байт регистра A сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register A High Byte)
$2A ($4A) OCR1AL Младший байт регистра A сравнения выхода таймера/ счетчика 1 (Timer/Counter1 Output Compare Register A Low Byte)
$29 ($49) OCR1BH Старший байт регистра B сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register B High Byte)
$28 ($48) OCR1BL Младший байт регистра B сравнения выхода таймера/счетчика 1 (Timer/Counter1 Output Compare Register B Low Byte)
$27 ($47)   Не используется
$26 ($46)   Не используется
$25 ($45) ICR1H Старший байт регистра захвата таймера/счетчика 1 (Timer/Counter1 Input Capture Register High Byte)
$24 ($44) ICR1L Младший байт регистра захвата таймера/счетчика 1 (Timer/Counter1 Input Capture Register Low Byte)
$21 ($41) WDTCR Регистр управления сторожевым таймером (Watchdog Timer Control Register)
$20 ($40) UBRRH, UCSRC Регистр скорости передачи данных USART (мл.байт), Регистр управления и состояния USART
$1F ($3F) EEARH Старший байт регистра адреса EEPROM (EEPROM Address Register High)
$1E ($3E) EEARL Младший байт регистра адреса EEPROM (EERPOM Address Register Low)
$1D ($3D) EEDR Регистр данных EEPROM (EEPROM Data Register)
$1C ($3C) EECR Регистр управления EEPROM (EEPROM Control Register)
$1B ($3B) PORTA Регистр данных порта A (Data Register, Port A)
$1A ($3A) DDRA Регистр направления данных порта A (Data Direction Register, Port A)
$19 ($39) PINA Выводы входов порта A (Input Pins, Port A)
$18 ($38) PORTB Регистр данных порта B (Data Register, Port B)
$17 ($37) DDRB Регистр направления данных порта B (Data Direction Register, Port B)
$16 ($36) PINB Выводы входов порта B (Input Pins, Port B)
$15 ($35) PORTC Регистр данных порта C (Data Register, Port C)
$12 ($32) PORTD Регистр данных порта D (Data Register, Port D)
$11 ($31) DDRD Регистр направления данных порта D (Data Direction Register, Port D)
$10 ($30) PIND Выводы входов порта D (Input Pins, Port D)
$0F ($2F) SPDR Регистр данных SPI I/O (SPI I/O Data Register)
$0E ($2E) SPSR Регистр статуса SPI (SPI Status Register)
$0D ($2D) SPCR Регистр управления SPI (SPI Control Register)
$0C ($2C) UDR Регистр данных USART I/O (UART I/O Data Register)
$0B ($2B) USRA Регистр статуса USART (USART Status Register)
$0A ($2A) UCRB Регистр управления USART (USART Control Register)
$09 ($29) UBRRL Регистр управления скоростью USART (USART Baud Rate Register)
$08 ($28) ACSR Регистр статуса и управления аналогового компаратора (Analog Comparator Control and Status Register)
$07 ($27) PORTE Регистр данных порта E (Data Register, Port E)
$06 ($26) DDRE Регистр направления данных порта E (Data Direction Register, Port E)
$05 ($25) PINE Выводы входов порта E (Input Pins, Port E)
$04 ($24) OSCCAL Регистр калибровки тактового генератора
$03 ($23)   Не используется
$02 ($22)   Не используется
$01 ($21)   Не используется
$00 ($20)   Не используется

Регистр статуса – SREG

Регистр статуса – SREG – размещен в пространстве I/O по адресу $3F ($5F) и его биты определяются как:

Таблица 2. Формат регистра флагов микроконтроллера ATmega8515

Биты
               
 
$3F ($5F)
I T H S V N Z C
REG

Bit 7 – I: Global Interrupt Enable – Разрешение глобального прерывания.
Бит разрешения глобального прерывания для разрешения прерывания должен быть установлен в состояние 1. Управление разрешением конкретного прерывания выполняется регистрами маски прерывания GIMSK и TIMSK. Если бит глобального прерывания очищен (в состоянии 0), то ни одно из разрешений конкретных прерываний, установленных в регистрах GIMSK и TIMSK, не действует. Бит I аппаратно очищается после прерывания и устанавливается для последующего разрешения глобального прерывания командой RETI.

Bit 6 – T: Bit Copy Storage – Бит сохранения копии. Команды копирования бита BLD (Bit LoaD) и BST (Bit STore) используют бит T как бит источник и бит назначения при операциях с битами. Командой BST бит регистра регистрового файла копируется в бит T, командой BLD бит T копируется в регистр регистрового файла.

Bit 5 – H: Half Carry Flag – Флаг половинного переноса. Флаг полупереноса указывает на полуперенос в ряде арифметических операций. Устанавливается в «1», если произошел перенос из младшей половины байта в старшую половину (или заем из старшей тетрады при вычитании).

Bit 4 – S: Sign Bit, S = NÅV – Бит знака. Бит S всегда находится в состоянии, определяемом логическим «исключающим ИЛИ» (exclusive OR) между флагом отрицательного значения N и флага переполнения V.

Bit 3 – V: Two’s Complement Overflow Flag – Дополнение до двух флага переполнения. V = CÅCI. V определяемом логическим «исключающим ИЛИ» над флагом переноса С (перенос из седьмого разряда результата в восьмой) и флагом CI (перенос из шестого разряда результата в седьмой).

Bit 2 – N: Negative Flag – Флаг отрицательного значения. Флаг отрицательного значения N указывает на отрицательный результат ряда арифметических и логических операций. Определяется по старшему 7 знаковому разряду результата операции.

Bit 1 – Z: Zero Flag – Флаг нулевого значения. Флаг нулевого значения Z=1 указывает на нулевой результат ряда арифметических и логических операций.

Bit 0 – C: Carry Flag – Флаг переноса. Флаг переноса C указывает на перенос в арифметических и логических операциях. «С» указывает на перенос из седьмого разряда результата в восьмой при сложении и заем в восьмом разряде при вычитании.

Пример формирования арифметических флагов по результату операции в АЛУ.

Необходимо сложить два числа 49h + 78h и выставить арифметические флаги.

1) Перед операцией сложения необходимо числа представить в двоичной системе счисления:

4916=0100 10012, 7816=0111 10002.

2) Сложить и выставить арифметические флаги:

При сложении двух положительных чисел в дополнительном коде, получен отрицательный результат (С1h), что говорит о переполнении разрядной сетки МК.

Hf=1, перенос из младшей в старшую тетраду байта при сложении;

Nf=1, флаг отрицательного результата определяется по старшему знаковому разряду результата;

Zf=0, полученный результат отличен от нуля;

Сf=0, нет основного переноса за границы байта при сложении;

Vf=1, V = CÅCI=0Å1=1 – переполение;

Sf=0, S = NÅV=1Å1=0, полученный результат положительный, но произошло переполнение разрядной сетки МК.





Дата публикования: 2014-11-03; Прочитано: 914 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.008 с)...