Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ (экз.).docx
Скачиваний:
30
Добавлен:
01.04.2022
Размер:
11.92 Mб
Скачать

1.20. Регистры специального назначения. Таймеры.

Применительно к микроконтроллерам, таймер – это цифровой счетчик, осуществляющий подсчет импульсов, подаваемых на него.

Источником импульсов могут служить: тактовые импульсы МК (от внешнего генератора/кварца или внутреннего генератора) и импульсы, подаваемые непосредственно на вход таймера с внешнего источника.

Принцип работы таймера предельно прост – он считает импульсы. Подсчет ведется в регистре-счетчике таймера. Т.к. регистры 8-миразрядные, то подсчет ведется от 0 до 255 (период переполнения таймера), потом происходит переполнение счетчика, и он сбрасывается в 0. Для каждого таймера можно настроить делитель импульсов – заставить таймер считать каждый 2-й, 4-й, 8-й и т.д. импульсы (что приведет к увеличению времени периода переполнения таймера).

1.21. Регистры специального назначения. Регистры ввода\вывода.

Регистры ввода/вывода

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

Все регистры ввода/вывода (в дальнейшем буду писать РВВ) условно можно разделить на два типа:

- служебные регистры микроконтроллера

- регистры, относящиеся к конкретным периферийным устройствам

Все регистры ввода/вывода (как и РОН) занимают свое адресное пространство в памяти данных (SRAM) – от 32 до 95 (или в шестнадцатеричном исчислении от $20 до $5F) и идут сразу за регистрами общего назначения, в так называемом адресном пространстве ввода/вывода. Каждый регистр восьмиразрядный и занимает память в один байт.

Всего МК может иметь 64 регистра ввода/вывода – максимальное число (за редким исключением). В тоже время, если МК простенький и в нем мало устройств, и он использует меньшее число РВВ, в области памяти данных все равно резервируется 64 адреса. Некоторым, слишком навороченным МК, стандартного значения в 64 РВВ недостаточно. В таких МК в адресном пространстве памяти данных выделяется еще дополнительно 160 ячеек памяти для дополнительных регистров ввода/вывода.

Каждый регистр ввода/вывода имеет свой номер – от 0 до 63 (или в шестнадцатиричном виде – от $00 до $3F), который соответствует его адресу в адресном пространстве ввода/вывода. Адрес РВВ в адресном пространстве ввода/вывода и адреса соответствующих им ячеек в ОЗУ (памяти данных) не совпадают. Если регистр имеет номер 0, то в адресном пространстве ОЗУ он будет занимать 32 ячейку памяти (ведь сначала идут 32 регистра общего назначения, а за ними уже – РВВ). Для определения адреса РВВ в области памяти данных необходимо прибавить к его номеру 32.

Помимо номера, каждый регистр имеет свое имя (буквенную аббревиатуру) – для удобства программистов.

Регистры ввода-вывода модели ATmega16

Название

Адрес

Функция

SREG

$3F ($5F)

Регистр состояния

SPH

$3E ($5E)

Указатель стека, старший байт

SPL

$3D ($5D)

Указатель стека, младший байт

OCR0

$3C ($5C)

Регистр совпадения таймера/счетчика T0

GICR

$3B ($5B)

Общий регистр управления прерываниями

GIFR

$3A ($5A)

Общий регистр флагов прерываний

TIMSK

$39 ($59)

Регистр маски прерываний от таймеров/счетчиков

TIFR

$38 ($58)

Регистр флагов прерываний от таймеров/счетчиков

SPMCR

$37 ($57)

Регистр управления памятью программ

TWCR

$36 ($56)

Регистр управления TWI

MCUCR

$35 ($55)

Регистр управления микроконтроллером

MCUCSR

$34 ($54)

Регистр управления и состояния микроконтроллера

TCCR0

$33 ($53)

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

TCNT0

$32 ($52)

Счетный регистр таймера/счетчика T0

OSCCAL

$31 ($51)

Регистр калибровки тактового генератора

OCDR

Регистр внутрисхемной отладки

SFIOR

$30 ($20)

Регистр специальных функций

TCCR1A

$2F ($4F)

Регистр управления A таймера/счетчика T1

TCCR1B

$2E ($4E)

Регистр управления B таймера/счетчика T1

TCNT1H

$2D ($4D)

Счетный регистр таймера/счетчика T1, старший байт

TCNT1L

$2C ($4C)

Счетный регистр таймера/счетчика T1, младший байт

OCR1AH

$2B ($4B)

Регистр совпадения A таймера/счетчика T1, старший байт

OCR1AL

$2A ($4A)

Регистр совпадения A таймера/счетчика T1, младший байт

OCR1BH

$29 ($49)

Регистр совпадения B таймера/счетчика T1, старший байт

OCR1BL

$28 ($48)

Регистр совпадения B таймера/счетчика T1, младший байт

ICR1H

$27 ($47)

Регистр захвата таймера/счетчика T1, старший байт

ICR1L

$26 ($46)

Регистр захвата таймера/счетчика T1, младший байт

TCCR2

$25 ($45)

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

TCNT2

$24 ($44)

Счетный регистр таймера/счетчика T2

OCR2

$23 ($43)

Регистр совпадения таймера/счетчика T2

ASSR

$22 ($42)

Регистр состояния асинхронного режима

WDTCR

$21 ($41)

Регистр управления сторожевым таймером

UBRRH

$20 ($40)

Регистр скорости передачи USART, старший байт

UCSRC

Регистр управления и состояния USART

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)

Регистр данных порта B

DDRB

$17 ($37)

Регистр направления данных порта B

PINB

$16 ($36)

Выводы порта B

PORTC

$15 ($35)

Регистр данных порта C

DDRC

$14 ($34)

Регистр направления данных порта C

PINC

$13 ($33)

Выводы порта C

PORTD

$12 ($32)

Регистр данных порта D

DDRD

$11 ($31)

Регистр направления данных порта D

PIND

$10 ($30)

Выводы порта D

SPDR

$0F ($2F)

Регистр данных SPI

SPSR

$0E ($2E)

Регистр состояния SPI

SPCR

$0D ($2D)

Регистр управления SPI

UDR

$0C ($2C)

Регистр данных USART

UCSRA

$0B ($2B)

Регистр управления и состояния A USART

UCSRB

$0A ($2A)

Регистр управления и состояния B USART

UBRRL

$09 ($29)

Регистр скорости передачи USART, младший байт

ACSR

$08 ($28)

Регистр управления и состояния компаратора

ADMUX

$07 ($27)

Регистр управления мультиплексором АЦП

ADCSRA

$06 ($26)

Регистр управления и состояния АЦП

ADCH

$05 ($25)

Регистр данных АЦП, старший байт

ADCL

$04 ($24)

Регистр данных АЦП, младший байт

TWDR

$03 ($23)

Регистр данных TWI

TWAR

$02 ($22)

Регистр адреса TWI

TWSR

$01 ($21)

Регистр состояния TWI

TWBR

$00 ($20)

Регистр скорости передачи TWI