Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОМПТ

.pdf
Скачиваний:
22
Добавлен:
11.05.2015
Размер:
235.22 Кб
Скачать

1. Принцип работы микропроцессорной системы и ее

2. Что происходит в микропроцессорной системе при

3.Режимы работы таймера МК51

4. Разработайте программу очистки (обнуления) N

5.Что происходит в микропроцессорной системе при

основные функциональные узлы

обращении к подпрограмме? Стек, указатель стека.

При работе в качестве таймера содержимое Т/С

ячеек резидентной памяти данных МК51 начиная с

появлении запроса на прерывание программы

Микропроцессор - выполненное в виде БИС цифровое

Участок программы, к которому можно обращаться из

инкрементируется в каждом машинном цикле, т.е. через 1

пятидесятой.

По специальному сигналу запроса на прерывание МК

устройство, предназначенное для обработки информации

различных мест программы для выполнения некоторых

мкс при частоте кварца 12 МГц.

org 0

после выполнения текущей команды переходит к

в соответствии с хранимой в памяти программой. Но

действий называется подпрограммой.

Для управления режимами работы Т/С и организации

mov R0, #50; установка начального адреса РПД

выполнению подпрограммы обслуживания прерываний,

полезно помнить, что за определенное каждая команда

При обращении к подпрограмме и возврата из неё в системе

взаимодействия таймеров с системой прерывания

mov R7,#N; задание количество ячеек

затем возвращается к реализации основной программы.

выполняется число тактов. Микропроцессорные системы

команд микропроцессоров используют специальные команды.

используются регистры TMOD и TCON. С помощью

main:mov A, #0; в аккумулятор записываем нуль

Происходит это следующим образом:

можно разделить на микроЭВМ и микроконтроллеры.

В МК51 это команда CALL для вызова подпрограммы и

битов М1 и М0 задаются четыре возможных режима

mov @R0,A;перемещаем в ячейку с адресом R0

1.

Поступает запрос на прерывание

Микроконтроллеры - специализированные устройства с

команда RET для возврата из подпрограммы. Команда CALL

работы Т/С0 и Т/С1.

значение из аккумулятора(то есть 0)

2.

Устанавливается флаг прерывания

программой, зашитой в ПЗУ, выполняющие задачи

не только осуществляют передачу управления на указанный

 

 

inc R0;увеличиваем адрес ячейки на единицу

3.

Завершается текущая команда

управления в реальном масштабе времени. Любой

адрес, но и записывает в стек адрес команды, следующей за

 

 

djnz R7,main;уменьшаем R7 на единицу и если не

4.

Если прерывание от источника маскируется

микроконтроллер содержит процессорное ядро, память и

командой вызова подпрограммы. Команда возврата из

 

 

равно 0 то переходим на метку main

 

в IE, то прерывание не обрабатывается

периферийные устройства. Память можно разделить на

подпрограммы RET передаёт управление команде, адрес

 

 

end

5.

Если не разрешено общее прерывание IE=0,

память данных и память программ. Память данных -

которой был сохранен в стеке командой вызова

 

 

 

 

то прерывание не обрабатывается

оперативная память, в которую записываются требуемые

подпрограммы.

 

 

 

 

6.

Если приоритет поступившего прерывания

входные данные и промежуточные результаты

Очень часто требуется из одной подпрограммы обращаться к

 

 

mov R1,#50

 

ниже, чем у текущего, то прерывание не

вычислений. Память программ содержит код исполняемой

другой подпрограмме. Такое обращение к подпрограмме

 

 

mov R2, #N

 

обрабатывается

программы. Генератор тактовых импульсов

называется вложенным. Количество вложенных подпрограмм

 

 

m1: mov @R1,#0

7.

После всех перечисленных проверок

синхронизирует работу всей системы. Интерфейс

называется уровнем вложенности подпрограмм. Максимально

 

 

inc R1

 

начинается выполняться подпрограмма

используется для соединения с периферийными и

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

Режим 0. Регистр таймера имеет разрядность 13 бит. При

DJNZ R2,m1

 

обслуживания прерываний.

представляет собой набор шин, специальных сигналов и

количеством ячеек памяти, предназначенных для хранения

 

После появления запроса, прерывания от которого

его переходе из состояния «все единицы» в состояние

 

алгоритмов обмена информацией. К периферийным

адресов возврата из подпрограмм.

 

разрешены, процессор записывает в стек адрес следующей

«все нули» устанавливается флаг TF. Работа Т/С

 

устройствам относят порты ввода/вывода, АЦП,

Стек специально организованная область ОЗУ,

 

команды прерываемой программы. На счетчик адреса

разрешена, когда TR=1 и либо GATE=0, либо INT=1.

 

таймеры/счетчики. Основу процессорного ядра составляет

предназначенная для временного хранения данных или

 

команд загружается адрес начала программы

Режим 1. Отличается от режима 0 тем, что регистр

 

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

адресов. Число, записанное в стек последним, извлекается из

 

обслуживания прерываний. В микроконтроллерах МК51

таймера имеет разрядность 16 бит.

 

арифметические и логические операции над данными,

него первым.

 

 

для программ обслуживания зафиксированы постоянные

 

Режим 2. TL работает как 8-битовый

 

представленными в двоичном коде. В состав

Указатель стека SP хранит адрес последней ячейки стека, в

 

начальные адреса. Если в системе возможно

автоперезагружаемый таймер/счетчик. ТН хранит

 

операционной части входит память данных, регистр

которой записана информация. При вызове подпрограммы в

 

обслуживание нескольких прерываний, то программы

значение, которое должно быть перезагружено в TL

 

команд, программный счетчик.

стеке автоматически сохраняется адрес возврата в основную

 

обслуживания должны "обходить" участки программной

каждый раз по его переполнению.

 

 

программу. После сброса МК51 указатель стека

 

памяти, зафиксированные как начальные участки

 

Режим 3. TL0 работает как 8-битовый Т/С и его режим

 

 

устанавливается равным 7.

 

 

программ обслуживания других прерываний.

 

 

определяется управляющими битами Т/С0. ТН0 работает

 

 

 

 

 

В блоке регистров специальных функций есть два

 

 

 

только как 8-битовый таймер, управляемый битом TR1 и

 

 

 

 

 

регистра, предназначенных для управления режимом

 

 

 

использующий флаг TF1. Работа Т/С1 постоянно

 

 

 

 

 

прерываний (IE) и уровнями приоритета (IP). Установка

 

 

 

разрешена в режимах 0,1 и 2 без использования

 

 

 

 

 

бита ЕА (табл. 6.1)снимает общую блокировку

 

 

 

прерываний. Этот режим Т/С1 удобно использовать для

 

Во время выполнения команды счетчик команд формирует

 

 

 

прерываний. При ЕА=1 прерывания могут быть

 

 

синхронизации работы последовательного порта.

 

адрес следующей команды. Команды выбираются из ПЗУ

 

 

 

разрешены индивидуальными разрешениями EX0, ET0,

 

 

 

 

 

последовательно. При выполнении команд условных и

 

 

 

 

 

EX1, ET1, ES. Установка одного из битов PX0, PT0, PX1,

безусловных переходов содержимое СК меняется скачком.

 

 

 

 

 

PT1, PS присваивает соответствующему источнику

 

 

 

 

 

 

прерываний высший приоритет.

6. Программная модель микроконтроллера МК51

7. Сравнительная характеристика микроконтроллеров

8. Оцените содержимое аккумулятора MK51 после

9. Режимы работы последовательного порта MK5I

Режим 2. Формат посылки - 11 бит: старт-бит, восемь бит

Резидентную память данных составляют четыре блока

AVR и МК51

 

выполнения команд

Программный доступ к регистрам приемника и

данных, программируемый девятый бит и стоп-бит.

регистров общего назначения, выбор которых

AVR-архитектура объединяет мощный гарвардский RISC-

MOV

А, #N; запись в аккумулятор числа N

передатчика последовательного интерфейса МК51

Передаваемый девятый бит данных принимает знамение

осуществляется установкой или сбросом битов RS1 и RS0

процессор с раздельным доступом к памяти программ и

MOV

В, #М; запись в расширитель аккумулятора

осуществляется обращением к регистру SBUF. При

бита ТВ8. Бит TB8 регистра SCON может быть

в PSW, 128 программно управляемых флагов

данных, 32 регистра общего назначения, напрямую связанных

 

числа М

записи в SBUF байт загружается в регистр передатчика,

программно установлен в 1 или 0, или в него можно

пользователя, которые можно использовать как ОЗУ

с АЛУ, каждый из которых может работать как регистр-

DIV

АВ; А делится нацело на В . в А записывается

при чтении SBUF байт читается из регистра приемника.

поместить значение бита Р из регистра PSW для

пользователя или стек. К адресному пространству РПД

аккумулятор, и развитую систему команд фиксированной 16-

 

результат деления. в B записывается

Управление работой последовательного порта

повышения достоверности принимаемой информации

непосредственно примыкают адреса регистров

битной длины. Периферия МК AVR включает: 8 и 16-битные

 

остаток oт деления

осуществляется с помощью регистра SCON, все разряды

(контроль по паритету). При приеме девятый бит

специальных функций, многие из которых допускают

таймеры/счетчики, широтно-импульсные модуляторы,

MUL

АВ; в аккумулятор записывается значение

которого программно доступны по записи и чтению:

принятой посылки поступает в бит RB8 регистра SCON.

адресацию отдельных бит. При системном сбросе

поддержку внешних прерываний, аналоговые компараторы,

 

А*В, в B заноситься старший байт, в A –

 

Частота приема и передачи задается программно и может

обнуляется содержимое всех регистров, в регистр-

10-разрядный 8-канальный АЦП, параллельные порты (от 3 до

 

младший байт.

 

быть равна fBQ/32 (SMOD=1) или fBQ/64 (SMOD=0). Бит

указатель стека загружается код 07Н, а в порты Р0-Р3 -

48 линий ввода и вывода), интерфейсы UART, TWI и SPI,

 

 

 

SMOD регистра PCON можно установить в 1 командой

коды 0FFH. Сигнал RST не воздействует на содержимое

сторожевой таймер и устройство сброса по включению

 

 

 

MOV PCON,#80H

резидентной памяти данных. К полному адресному

питания.

 

 

 

 

Режим 3. Полностью идентичен режиму 2, только частота

пространству ячеек внешнего ОЗУ данных обращение

МК51:

 

 

 

 

приема и передачи задается (как и в режиме 1) таймером

производится косвенно через 16-битовый регистр-

- Объем РПП – 4Кбайт

- Тип РПП – ПЗУ

 

 

Режим 0. Информация передастся (младшими битами

Т/C1 и равна (2SMOD/32)fOV, где fOV – частота переполнения

указатель данных DPTR. В памяти программ есть пять

- Объем РПД – 128байт

- Частота – 12МГц

 

 

вперед) и принимается через вход приемника RxD

Т/C1. Обычно для синхронизации последовательного

адресов, которым соответствуют векторы прерываний от

- два 16-битовых многорежимных таймера/счетчика;

 

 

(РЗ.0).Через выход передатчика TxD (РЗ.1) выдаются

порта Т/C1 включается в режим перезагрузки (режим 2). В

пяти источников. Установка бита ЕА снимает общую

- систему прерываний с пятью векторами и двумя уровнями;

 

 

импульсы синхронизации стробирующие каждый

‘том случае fOV=fBQ/{12[256-(TH1)]}. Прерывания от T/C1

блокировку прерываний. При установке ЕА могут быть

- последовательный интерфейс;

 

 

передаваемый или принимаемый бит информации.

запрещаются.

 

разрешены индивидуальные прерывания. Установка

- тактовый генератор.

 

 

 

Формат посылки – 8 бит. Частота приема и передачи –

Назначение остальных битов регистра SCON:

одного из битов приоритета присваивает

Сравнит. характеристика AVR контроллера над МК51:

 

 

fBQ/12.

REN – разрешение приема последовательных данных:

соответствующему источнику прерываний высший

- 16 разрядная память на кристалле;

 

 

Режим 1. Информация передается через выход

TI – флаг прерывания передатчика Устанавливается

приоритет. Каждое из внешних прерываний INT0, INT1

- увеличенное быстродействие, за счет применения

 

 

передатчика, а принимается через вход приемника.

аппаратно в конце выдачи 8-го бита в режиме 0 или в

может быть активизировано по уровню (0) или по фронту

конвейерной системы;

 

 

 

Формат посылки – 10 бит: старт-бит (ноль ). восемь бит

начале стоп-бита в других режимах. Сбрасывается

(переход из 1 в 0) сигналов на выводах Р3.2, Р3.3, что

- выполнение команды за один такт, у МК51 – выполняется за

 

 

данных и стоп-бит (единица) Частота приема и передачи

программно.

 

определяется состоянием битов IT0 и IT1 регистра TCON.

12 тактов;

 

 

 

задается Т/С1.

RI – флаг прерывания приемника. Устанавливается

При поступлении запроса внешнего прерывания

- 32 регистра, которые могут использоваться как аккумулятор;

 

 

 

аппаратно в конце времени приема 8-го бита в режиме и

устанавливаются флаги IE0 или IE1. При прерываниях по

- сторожевой таймер;

 

 

 

 

или через половину интервала стоп бита в других режимах

фронту эти флаги сбрасываются аппаратно при обращении

- таймер с каналами входного захвата, выходного сравнения.

 

 

 

при SM2=0.

 

к подпрограмме обслуживания, при прерываниях по

Архитектура AVR реализует полное логическое и физическое

 

 

 

SM2 в режиме 0 должен быть равен 0. При SM2=1 в

уровню флаги очищаются при снятии запроса внешнего

разделение не только адресных пространств, но и информационных

 

 

 

режиме 1 флаг RI не активизируется, если не принят стоп-

прерывания. Прерывания от таймеров/счетчиков

шин для обращения к памяти программ и к памяти данных.

 

 

 

бит, а в режимах 2 и 3 - если 9-й принятый бит данных

Коневейеризация. Использование трех 16-битных указателей.

 

 

 

вызываются при их переполнении установкой флагов TF0

 

 

 

равен 0.

 

Регистровый файл занимает младшие 32 бита адресного

 

 

 

 

и TF1. Очистка этих флагов происходит автоматически

 

 

 

 

 

пространства доступ к быстрой "регистровой" оперативной памяти

 

 

 

 

 

при обращении к подпрограммам обслуживания.

микроконтроллера двумя путями - непосредственной адресацией в

 

 

 

 

 

Выполнение подпрограммы обслуживания с низким

коде команды к любой ячейке и другими способами адресации ячеек

 

 

 

 

 

уровнем приоритета прерывается при поступлении

SRAM

 

 

 

 

 

 

запроса с высшим уровнем приоритета.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10. Регистр состояния программы МК51. Назначение

11. Разработайте программу перестановки элементов

12. Как работает стек и указатель стека в МК51?

13. Разработайте программу перемещения

14. Определить содержимое аккумулятора после

отдельных битов PSW.

массива резидентной памяти данных МК51 в обратном

Стек - специально организованная область ОЗУ,

(копирования) массива резидентной памяти данных

выполнения команд (два шестнадцатеричных символа

Слово состояния программы PSW включает в себя четыре

направлении.

 

предназначенная для временного хранения данных или

МК51.

 

 

)

 

флага: С -перенос, АС - вспомогательный перенос, OV -

Так как изначальные данные не заданы, то выберем их

адресов. Число, записанное в стек последним, извлекается

Поскольку адрес начала массива и его размер не заданы,

Числа могут быть представлены в различном коде:

переполнение и Р - паритет. Флаг OV устанавливается,

самостоятельно. Выберем начальный адрес исходного массива

из него первым. Указатель стека SP хранит адрес

выберем их самостоятельно. Выберем начальный адрес

двоичном (В), десятичном (без символа на конце),

если результат операции сложения/вычитания не

20Н, длина массива 16 байт (т.е. 10Н). пример программы:

последней ячейки стека, в которой записана информация.

исходного массива 20Н, длина массива 48 байт (т.е.30Н).

шестнадцатеричном(Н) и восьмеричном(Q). Для

укладывается в семи битах и старший бит результата не

MOV

R3, #20H

; присваиваем регистру начальный

При вызове подпрограммы в стеке автоматически

Скопируем массив на другое место, например с 60Н по

вычислительных операций необходимо привести все к

может интерпретироваться как знаковый. При выполнении

 

 

адрес массива

сохраняется адрес возврата в основную программу. Как

8FH ячейки РПД. Пример программы:

одному виду, лучше к десятичному.

операции деления флаг OV сбрасывается, а в случае

MOV

R4, #10H

; присваиваем регистру количество

правило, в начале каждой подпрограммы сохраняют в

 

 

 

MOV

B, # N; запись в расширитель аккумулятора

деления на нуль - устанавливается. При умножении флаг

 

 

элементов для перестановки

стеке содержимое всех задействованных при ее

MOV

R7, #30H; присваиваем регистру R7

 

числа N

OV устанавливается, если результат больше 255. Флаг Р

MOV

A, R4

; считаем количество

выполнении регистров, а в конце подпрограммы

значение числа элементов массива

MOV

A, # M; запись в аккумулятор числа M

равен 0, если число единиц аккумулятора четное.

MOV

B,#2

; необходимых

восстанавливают их из стека.

MOV

R1, #20H; присваиваем регистру R1

ADD

A, B; сложение чисел А и В. Младший байт

 

DIV

AB

; перестановок

После сброса МК51 указатель стека устанавливается

значение начальной ячейки исходного массива

 

заносится в А, старший в В

 

MOV

R5,A

; сохраняем количество

равным 7.

MOV

R0, #60H; присваиваем регистру R0

DA

A; десятичная коррекция А

 

 

 

перестановок в регистре

 

значение начальной ячейки нового массива-копии

Команда DA всегда идет вслед за командами ADD или

 

MOV

A, R4

; считаем

 

М1: MOV A, @R1; копируем в аккумулятор (А)

ADDC и используется для обработки чисел,

 

ADD

A, R3

; конечный

 

значение из ячейки с адресом R1

представления их в двоично-десятичном коде. К примеру,

 

MOV

R4, A

; адрес массива

 

МОV

@R0, А; записываем значение из А в

надо привести число 9FH к двоично-десятичному виду.

 

M1: MOV A, @R4

; копируем значение последнего

 

ячейку с адресом R0

Находим десятичный код этого числа 9FH=159. Далее

 

 

 

элемента хранящегося в регистре

 

INC

R0

; увеличение R0 на 1

полученный код записываем как 16-ричное, т.е. 0159Н –

 

MOV

R6, A

; сохраняем значение последнего

 

INC

R1

; увеличение R1 на 1

именно это число и надо представить в ответе.

 

 

 

элемента (буфер)

 

DJNZ

R7, M1 ; Цикл (уменьшение R7 на 1. пока

 

 

 

MOV

A, @R3

; берем значение первого элемента

 

не 0, идем на М1)

 

 

 

MOV

@R4, A

; записываем значение первого

 

 

 

 

 

 

 

 

 

элемента в последнюю ячейку

 

 

 

 

 

 

 

MOV

A, R6

; извлекаем значение последнего

 

 

 

 

 

 

 

 

 

элемента

 

 

 

 

 

 

 

MOV

@R3, A

; записываем значение последнего

 

 

 

 

 

 

 

 

 

элемента в первую ячейку

 

 

 

 

 

 

 

INC

R3

; увеличиваем начальный адрес

 

 

 

 

 

 

 

DEC

R4

; уменьшаем конечный адрес

 

 

 

 

 

 

 

DJNZ

R5, M1

; уменьшаем R5 на 1, пока не

 

 

 

 

 

 

 

 

 

«0» переходим на М1

 

 

 

 

 

 

15. Программная модель AVR – микроконтроллера.

16. Достоинства AVR – микроконтроллера.

17. Оценить время выполнения команд в

18. Принцип действия канала выходного

Если задан любой из 12 режимов ШИМ, то OCRnx

 

программная модель AVR-микроконтроллеров, которая

AVR – это 8-битные микроконтроллеры, построенные на базе

микросекундах (fк = 12 МГц)

сравнения таймера микроконтроллера AVR.

содержит двойную буферизацию, которая синхронизирует

представляет собой диаграмму программно доступных

расширенной архитектуры, характеризуются наилучшим

Для определения времени выполнения команды, сначала

 

обновление регистра порога сравнения OCRnx по

ресурсов AVR. Центральным блоком на этой диаграмме

соотношением производительность/стоимость. Набор команд

разберем ее работу и время выполнения каждой команды

 

достижении верхнего или нижнего предела счета. Эта

является регистровый файл на 32 оперативных регистра

содержит более 120 инструкций, микроконтроллеры имеют

в машинных циклах (мц)

 

 

синхронизация предотвращает возможность

(R0-R31), непосредственно доступных ALU. Старшие

производительность около 20 млн. операций в секунду при

Байты, занимаемые программой Время выполнения в мц

 

возникновения несимметричных ШИМ импульсов

регистры объединены парами и образуют три 16-

тактовой частоте 20 МГц. В микроконтроллерах atmega

0,1

MOV

B, #N1

; 1 мц, запись в B числа N1

 

нечетной длины. OCRnx считывается напрямую, а не

разрядных регистра, предназначенных для косвенной

реализована аппаратная команда умножения с временем

2,3

MOV

А, #N2

; 1 мц, запись в аккум А числа

 

через временный регистр старшего байта. Запись

адресации ячеек памяти (AVR без RAM имеют только

выполнения 2 такта задающего генератора (100 нс при

N2

 

 

 

 

регистров OCRnx происходит через временный регистр,

один 16-битный регистр Z).

тактовой частоте 20 МГц). Микросхемы имеют несколько

4, 5, 6

DJNZ

B, $ ; 2 мц, Цикл (уменьшение B на 1пока

 

т.к. все 16 разрядов участвуют в сравнении непрерывно.

 

режимов энергосбережения. В ряду AVR-микроконтроллеров

не 0)

 

 

 

 

Первым необходимо записать старший байт. Если

 

есть микросхемы с объемом памяти программ от 1 до 256

7,8,9

DJNZ

АСС, $-3; 2 мц, Цикл (уменьшение A на 1

 

выполняется запись младшего байта то параллельно

 

Кбайт.

пока не 0) переход на 3 байта назад, т.е. на 4-й байт)

 

копируется содержимое временного регистра в старшие 8

 

1. Микроконтроллеры AVR имеют Гарвардскую

 

 

 

 

 

разрядов буферного регистра OCRnx или регистра порога,

 

архитектуру, с применением технологии RISC (Reduced

Первый цикл выполнится N1 paз (если N1 - 0 то 256 paз) и

 

тем самым обновляя все 16 разрядов за один такт ЦПУ..

 

Instruction Set Computing) архитектура сокращенного набора

обнулит B, после чего программа перейдет к выполнению

 

 

 

 

команд.

второго цикла, который выполнит декремент А, сравнит с

 

 

 

 

2. Семейство микроконтроллеров AVR перекрывает

«0» и перейдет по адресу S-7. т.е. «само на себя» и еще 3

 

 

 

 

широкий ценовой диапазон изделий.

байта назад, т.е. на 4 байт программы, где начинается

 

 

 

 

3.Микроконтроллеры AVR имеют высокоэффективное

предыдущий цикл. Следовательно, программа зациклена

 

 

 

 

оптимизированное RISC ядро, исполняющее до 131 команд

и будет выполняться долгое время

16-разрядный компаратор непрерывно сравнивает

 

 

 

(для ATmega16/I6L большинство выполняется за один такт),

Количество циклов равно: N =

значение TCNTn со значением регистра порога сравнения

 

 

 

благодаря этому код, получаемый при компиляции программы

1+1+2*N1+2*N2+2*N2*256

(OCRnx).Если значение TCNT равно OCRnx, то

 

 

 

на языке высокого уровня компактнее чем у других моделей

Длительность одного мц равна 12 тактам

компаратор формирует сигнал совпадения .Следующий за

 

 

 

микроконтроллеров аналогичного уровня (к примеру - PIC).

микроконтроллера, следовательно, 1мц=1мкс;

совпадением такт ЦПУ устанавливает флаг сравнения

 

 

 

4. Возможности ядра дополняются неплохими

Длительность выполнения равна: N (мкс)

(OCFnx).Если бит OCIEnx=1, то установка флага

 

 

 

аппаратными средствами, в частности: аналого-цифровым

 

 

 

 

сравнения приведет к генерации прерывания по

 

 

 

преобразователем разрядностью 10 бит с 200-кратным

 

 

 

 

результату сравнения. Флаг OCFnx автоматически

 

 

 

увеличением на два канала (на старших моделях), аналоговым

 

 

 

 

сбрасывается после перехода на вектор обработки

 

 

 

компаратором, средствами широтно-импульсной модуляции,

 

 

 

 

прерывания. Альтернативно флаг OCFnx сбрасывается

 

 

 

серийными портами. 8 b 16-битными таймерами.

 

 

 

 

программно, если записать в него лог. 1.Сигнал

 

 

 

 

 

 

 

 

совпадения используется формирователем выходного

 

 

 

 

 

 

 

 

сигнала, результирующая форма которого зависит от

 

 

 

 

 

 

 

 

выбранного режима работы таймера и режима

 

 

 

 

 

 

 

 

формирования импульсов. Сигналы Верхний и Нижний

 

 

 

 

 

 

 

 

предел исп-ся формирователем импульсов для отработки

 

 

 

 

 

 

 

 

особых случаев задания экстремальных значений в

 

 

 

 

 

 

 

 

некоторых режимах работы.

 

 

19. Принцип действия канала входного захвата таймера микроконтроллера AVR.

Основным источником, инициирующим захват состояния таймер-счетчика, является вывод захвата (ICPn). Таймерсчетчик 1 также альтернативно может использовать выход аналогового компар. в качестве источника инициации захвата. Для этого надо установить бит разрешения захвата анал. компаратором (ACIC) в регис. сост. и управления анал. компаратора (ACSR). Изменение источника инициации захвата может привести к возникн. захвата. Поэтому, после изменения источника должен быть сброшен флаг захвата.

Таймер-счетчик содержит блок захвата, который запоминает состояние счетчика при возникновении внешнего события, тем самым определяя время его возникновения. В качестве события/событий выступает внешний сигнал, подключенный к выводу ICPn. Для таймера-счетчика 1 альтернативно может использоваться аналоговый компаратор в качестве источника внешнего события. Если на входе захвата (ICPn) или альтернативно на выходе аналогового компаратора (ACO) возникает изменение логического уровня (событие), которое соответствует установкам детектора фронта, то выполняется захват состояния таймера.

 

20. Разработать программу преобразования двоично-

При этом 16-разр. значение содержимого таймера (TCNTn)

десятичного кода числа в двоичный.

помещается в регистр захвата (ICRn).Флаг захвата (ICFn)

Зададим двоично-десятичное число N. Пример

устанавливается на том же такте ЦПУ, на котором произошло

программы:

 

копирование значения TCNTn в ICRn. Установка бита

MOV

A, #N

; заносим в A число

TICIEn =1 разрешает прерывание по установке флага захвата.

MOV

B, #10H

; заносим в B делитель

Флаг ICFn автоматически сбрасывается при переходе на

DIV

AB

; делим

вектор прерывания. Альтернативно флаг ICFn сбрасывается

MOV

R1, B

; сохраняем остаток

программно, если записать в него лог. 1. Считывание 16-разр.

MOV

B, #10

; умножаем частное

значения регистра захвата (ICRn) выполняется чтением

MUL

AB

; на 10

сначала младшего байта (ICRnL), а затем старшего байта

ADD

A, R1

; складываем, и получаем

(ICRnH). При выполнении команды чтения младшего байта

 

 

двоичное число

значение старшего байта автоматически копируется во

 

 

 

временный регистр. Если ЦПУ выполняет команду чтения

 

 

 

регистра ICRnH, то фактически считывается содержимое

 

 

 

временного регистра. Запись в регистр ICRn возможна только

 

 

 

в том случае, если битами задания режима работы таймера

 

 

 

выбран режим, в котором значение регистра ICRn задает

 

 

 

верхний предел счета. В этом случае необходимо выполнить

 

 

 

соответствующую установку бит режима работы (WGMn3:0), а

 

 

 

только затем выполнить запись значения верхнего предела в

 

 

 

регистр ICRn. Запись 16-разр. значения в регистр ICRn

 

 

 

выполняется путем записи сначала старшего байта в ICRnH, а

 

 

 

только затем младшего байта в ICRnL.