Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Voprosy_po_Arkht_EVM_i_Yazyk_assemblera.docx
Скачиваний:
44
Добавлен:
01.04.2022
Размер:
5.16 Mб
Скачать

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

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

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

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

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

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

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

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

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

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

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

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

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

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