Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМПТ.docx
Скачиваний:
1
Добавлен:
16.09.2019
Размер:
415.81 Кб
Скачать

6) Программная модель микроконтроллера мк51. Память программ, память данных, регистры специальных функций.

Резидентную память данных составляют четыре блока регистров общего назначения, выбор которых осуществляется установкой или сбросом битов RS1 и RS0 в PSW, 128 программно управляемых флагов пользователя, которые можно использовать как ОЗУ пользователя или стек. К адресному пространству РПД непосредственно примыкают адреса регистров специальных функций, многие из которых допускают адресацию отдельных бит (адрес младшего бита совпадает с адресом регистра). При системном сбросе обнуляется содержимое всех регистров, в регистр-указатель стека загружается код 07Н, а в порты Р0-Р3 - коды 0FFH. Сигнал RST не воздействует на содержимое резидентной памяти данных. К полному адресному пространству ячеек внешнего ОЗУ данных обращение производится косвенно через 16-битовый регистр-указатель данных DPTR. В памяти программ есть пять адресов, которым соответствуют векторы прерываний от пяти источников.

Установка бита ЕА снимает общую блокировку прерываний. При установке ЕА=1 прерывания могут быть разрешены индивидуальные прерывания. Установка одного из битов присваивает соответствующему источнику прерываний высший приоритет.

Каждое из внешних прерываний INT0, INT1 может быть активизировано по уровню (0) или по фронту (переход из 1 в 0) сигналов на выводах Р3.2, Р3.3, что определяется состоянием битов IT0 и IT1 регистра TCON. При поступлении запроса внешнего прерывания устанавливаются флаги IE0 или IE1. При прерываниях по фронту эти флаги сбрасываются аппаратно при обращении к подпрограмме обслуживания, при прерываниях по уровню флаги очищаются при снятии запроса внешнего прерывания. Прерывания от таймеров/счетчиков вызываются при их переполнении установкой флагов TF0 и TF1. Очистка этих флагов происходит автоматически при обращении к подпрограммам обслуживания.

Выполнение подпрограммы обслуживания с низким уровнем приоритета прерывается при поступлении запроса с высшим уровнем приоритета. Слово состояния программы (PSW) включает в себя четыре флага: С - перенос, АС - вспомогательный перенос, OV - переполнение и Р – паритет.

7) Сравнительная характеристика микроконтроллеров avr и мк51. Пути повышения быстродействия в avr-микроконтроллере.

AVR-архитектура объединяет мощный гарвардский RISC-процессор с раздельным доступом к памяти программ и данных, 32 регистра общего назначения, напрямую связанных с АЛУ, каждый из которых может работать как регистр-аккумулятор, и развитую систему команд фиксированной 16-битной длины. Большинство команд выполняются за один машинный такт с одновременным исполнением текущей и выборкой следующей команды, что обеспечивает производительность до 1 MIPS на каждый МГц тактовой частоты. Регистровый файл также доступен как часть памяти данных. Инструкции битовых операций включают инструкции установки, очистки и тестирования битов. Периферия МК AVR включает: 8 и 16-битные таймеры/счетчики, широтно-импульсные модуляторы, поддержку внешних прерываний, аналоговые компараторы, 10-разрядный 8-канальный АЦП, параллельные порты (от 3 до 48 линий ввода и вывода), интерфейсы UART, TWI и SPI, сторожевой таймер и устройство сброса по включению питания.

МК51:

- Объем РПП – 4Кбайт - Тип РПП – ПЗУ

- Объем РПД – 128байт - Частота – 12МГц

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

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

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

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

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

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

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

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

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

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

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

8) Оцените содержимое аккумулятора МК51 после выполнения команд

MOV A,# N

MOV B,# M

DIV AB

MUL AB

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

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

DIV АВ; А делится нацело на В . в А записывается результат деления. в B записывается остаток or деления

MUL АВ; в аккумулятор записывается значение А*В, в B заноситься старший байт, в A – младший байт.

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

Программный доступ к регистрам приемника и передатчика последовательного интерфейса МК51 осуществляется обращением к регистру SBUF. При записи в SBUF байт загружается в регистр передатчика, при чтении SBUF байт читается из регистра приемника. Управление работой последовательного порта осуществляется с помощью регистра SCON, все разряды которого программно доступны по записи и чтению:

Режим 0. Информация передастся (младшими битами вперед) и принимается через вход приемника RxD (РЗ.0).Через выход передатчика TxD (РЗ.1) выдаются импульсы синхронизации стробирующие каждый передаваемый или принимаемый бит информации. Формат посылки – 8 бит. Частота приема и передачи – fBQ/12.

Режим 1. Информация передается через выход передатчика, а принимается через вход приемника. Формат посылки – 10 бит: старт-бит (ноль ). восемь бит данных и стоп-бит (единица) Частота приема и передачи задается Т/С1.

Режим 2. Формат посылки - 11 бит: старт-бит, восемь бит данных, программируемый девятый бит и стоп-бит. Передаваемый девятый бит данных принимает знамение бита ТВ8. Бит TB8 регистра SCON может быть программно установлен в 1 или 0, или в него можно поместить значение бита Р из регистра PSW для повышения достоверности принимаемой информации (контроль по паритету). При приеме девятый бит принятой посылки поступает в бит RB8 регистра SCON. Частота приема и передачи задается программно и может быть равна fBQ/32 (SMOD=1) или fBQ/64 (SMOD=0). Бит SMOD регистра PCON можно установить в 1 командой MOV PCON,#80H

Режим 3. Полностью идентичен режиму 2, только частота приема и передачи задается (как и в режиме 1) таймером Т/C1 и равна (2SMOD/32)fOV, где fOV – частота переполнения Т/C1. Обычно для синхронизации последовательного порта Т/C1 включается в режим перезагрузки (режим 2). В ‘том случае fOV=fBQ/{12[256-(TH1)]}. Прерывания от T/C1 запрещаются.

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

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

TI – флаг прерывания передатчика Устанавливается аппаратно в конце выдачи 8-го бита в режиме 0 или в начале стоп-бита в других режимах. Сбрасывается программно.

RI – флаг прерывания приемника. Устанавливается аппаратно в конце времени приема 8-го бита в режиме и или через половину интервала стоп бита в других режимах при SM2=0.

SM2 в режиме 0 должен быть равен 0. При SM2=1 в режиме 1 флаг RI не активизируется, если не принят стоп-бит, а в режимах 2 и 3 - если 9-й принятый бит данных равен 0.

10) Регистр состояния программы МК51. Назначение отдельных битов PSW.

Слово состояния программы PSW включает в себя четыре флага: С -перенос, АС - вспомогательный перенос, OV - переполнение и Р - паритет. Флаг OV устанавливается, если результат операции сложения/вычитания не укладывается в семи битах и старший бит результата не может интерпретироваться как знаковый. При выполнении операции деления флаг OV сбрасывается, а в случае деления на нуль - устанавливается. При умножении флаг OV устанавливается, если результат больше 255. Флаг Р равен 0, если число единиц аккумулятора четное.

11) Разработайте программу перестановки элементов массива резидентной памяти данных МК51 в обратном направлении.

Так как изначальные данные не заданы, то выберем их самостоятельно. Выберем начальный адрес исходного массива 20Н, длина массива 16 байт (т.е. 10Н). пример программы:

MOV R3, #20H ; присваиваем регистру начальный адрес массива

MOV R4, #10H ; присваиваем регистру количество элементов для перестановки

MOV A, R4 ; считаем количество

MOV B,#2 ; необходимых

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

MOV R5,A ; сохраняем количество перестановок в регистре

MOV A, R4 ; считаем

ADD A, R3 ; конечный

MOV R4, A ; адрес массива

M1: MOV A, @R4 ; копируем значение последнего элемента хранящегося в регистре

MOV R6, A ; сохраняем значение последнего элемента (буфер)

MOV A, @R3 ; берем значение первого элемента

MOV @R4, A ; записываем значение первого элемента в последнюю ячейку

MOV A, R6 ; извлекаем значение последнего элемента

MOV @R3, A ; записываем значение последнего элемента в первую ячейку

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

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

DJNZ R5, M1 ; уменьшаем R5 на 1, пока не«0» переходим на М1

END ; конец

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

Стек - специально организованная область ОЗУ, предназначенная для временного хранения данных или адресов. Число, записанное в стек последним, извлекается из него первым. Указатель стека SP хранит адрес последней ячейки стека, в которой записана информация. При вызове подпрограммы в стеке автоматически сохраняется адрес возврата в основную программу. Как правило, в начале каждой подпрограммы сохраняют в стеке содержимое всех задействованных при ее выполнении регистров, а в конце подпрограммы восстанавливают их из стека.

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

13) Разработайте программу перемещения (копирования) массива резидентной памяти данных МК51.

Поскольку адрес начала массива и его размер не заданы, выберем их самостоятельно. Выберем начальный адрес исходного массива 20Н, длина массива 48 байт (т.е.30Н). Скопируем массив на другое место, например с 60Н по 8FH ячейки РПД. Пример программы:

MOV R7, #30H ; присваиваем регистру R7 значение числа элементов массива

MOV R1, #20H ; присваиваем регистру R1 значение начальной ячейки исходного массива

MOV R0, #60H ; присваиваем регистру R0 значение начальной ячейки нового массива-копии

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

МОV @R0, А ; записываем значение из А в ячейку с адресом R0

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

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

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

14) Определить содержимое аккумулятора после выполнения команд ( два шестнадцатеричных символа )

MOV B, # N

MOV A, # M

ADD A, B

DA A

Числа могут быть представлены в различном коде: двоичном (В), десятичном (без символа на конце), шестнадцатеричном(Н) и восьмеричном(Q). Для вычислительных операций необходимо привести все к одному виду, лучше к десятичному.

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

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

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

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

Команда DA всегда идет вслед за командами ADD или ADDC и используется для обработки чисел, представления их в двоично-десятичном коде. К примеру, надо привести число 9FH к двоично-десятичному виду. Находим десятичный код этого числа 9FH=159. Далее полученный код записываем как 16-ричное, т.е. 0159Н – именно это число и надо представить в ответе.

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

программная модель AVR-микроконтроллеров, которая представляет собой диаграмму программно доступных ресурсов AVR. Центральным блоком на этой диаграмме является регистровый файл на 32 оперативных регистра (R0-R31), непосредственно доступных ALU. Старшие регистры объединены парами и образуют три 16-разрядных регистра, предназначенных для косвенной адресации ячеек памяти (AVR без RAM имеют только один 16-битный регистр Z).

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

AVR – это 8-битные микроконтроллеры, построенные на базе расширенной архитектуры, характеризуются наилучшим соотношением производительность/стоимость. Набор команд содержит более 120 инструкций, микроконтроллеры имеют производительность около 20 млн. операций в секунду при тактовой частоте 20 МГц. В микроконтроллерах atmega реализована аппаратная команда умножения с временем выполнения 2 такта задающего генератора (100 нс при тактовой частоте 20 МГц). Микросхемы имеют несколько режимов энергосбережения. В ряду AVR-микроконтроллеров есть микросхемы с объемом памяти программ от 1 до 256 Кбайт.

1. Микроконтроллеры AVR имеют Гарвардскую архитектуру, с применением технологии RISC (Reduced Instruction Set Computing) архитектура сокращенного набора команд.

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

3.Микроконтроллеры AVR имеют высокоэффективное оптимизированное RISC ядро, исполняющее до 131 команд (для ATmega16/I6L большинство выполняется за один такт), благодаря этому код, получаемый при компиляции программы на языке высокого уровня компактнее чем у других моделей микроконтроллеров аналогичного уровня (к примеру - PIC).

4. Возможности ядра дополняются неплохими аппаратными средствами, в частности: аналого-цифровым преобразователем разрядностью 10 бит с 200-кратным увеличением на два канала (на старших моделях), аналоговым компаратором, средствами широтно-импульсной модуляции, серийными портами. 8 b 16-битными таймерами.

17) Оценить время выполнения команд в микросекундах ( fк = 12 МГц )

MOV B, # N

MOV A ,# N

DJNZ B, $

DJNZ ACC, $ -3

Для определения времени выполнения команды, сначала разберем ее работу и время выполнения каждой команды в машинных циклах (мц)

Байты, занимаемые программой Время выполнения в мц 0,1 MOV B, #N1 ; 1 мц, запись в B числа N1

2,3 MOV А, #N2 ; 1 мц, запись в аккум А числа N2

4, 5, 6 DJNZ B, $ ; 2 мц, Цикл (уменьшение B на 1пока не 0)

7,8,9 DJNZ АСС, $-3 7,8,9 DJNZ АСС, $-3; 2 мц, Цикл (уменьшение A на 1 пока не 0) переход на 3 байта назад, т.е. на 4-й байт)

Первый цикл выполнится N1 paз (если N1 - 0 то 256 paз) и обнулит B, после чего программа перейдет к выполнению второго цикла, который выполнит декремент А, сравнит с «0» и перейдет по адресу S-7. т.е. «само на себя» и еще 3 байта назад, т.е. на 4 байт программы, где начинается предыдущий цикл. Следовательно, программа зациклена и будет выполняться долгое время

Количество циклов равно: N = 1+1+2*N1+2*N2+2*N2*256

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

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

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

16-разрядный компаратор непрерывно сравнивает значение TCNTn со значением регистра порога сравнения (OCRnx).Если значение TCNT равно OCRnx, то компаратор формирует сигнал совпадения .Следующий за совпадением такт ЦПУ устанавливает флаг сравнения (OCFnx).Если бит OCIEnx=1, то установка флага сравнения приведет к генерации прерывания по результату сравнения. Флаг OCFnx автоматически сбрасывается после перехода на вектор обработки прерывания. Альтернативно флаг OCFnx сбрасывается программно, если записать в него лог. 1.Сигнал совпадения используется формирователем выходного сигнала, результирующая форма которого зависит от выбранного режима работы таймера и режима формирования импульсов. Сигналы Верхний и Нижний предел исп-ся формирователем импульсов для отработки особых случаев задания экстремальных значений в некоторых режимах работы. Если задан любой из 12 режимов ШИМ, то OCRnx содержит двойную буферизацию, которая синхронизирует обновление регистра порога сравнения OCRnx по достижении верхнего или нижнего предела счета. Эта синхронизация предотвращает возможность возникновения несимметричных ШИМ импульсов нечетной длины. OCRnx считывается напрямую, а не через временный регистр старшего байта. Запись регистров OCRnx происходит через временный регистр, т.к. все 16 разрядов участвуют в сравнении непрерывно. Первым необходимо записать старший байт. Если выполняется запись младшего байта то параллельно копируется содержимое временного регистра в старшие 8 разрядов буферного регистра OCRnx или регистра порога, тем самым обновляя все 16 разрядов за один такт ЦПУ

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

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

Таймер-счетчик содержит блок захвата, который запоминает состояние счетчика при возникновении внешнего события, тем самым определяя время его возникновения. В качестве события/событий выступает внешний сигнал, подключенный к выводу ICPn. Для таймера-счетчика 1 альтернативно может использоваться аналоговый компаратор в качестве источника внешнего события. Если на входе захвата (ICPn) или альтернативно на выходе аналогового компаратора (ACO) возникает изменение логического уровня (событие), которое соответствует установкам детектора фронта, то выполняется захват состояния таймера. При этом 16-разр. значение содержимого таймера (TCNTn) помещается в регистр захвата (ICRn).Флаг захвата (ICFn) устанавливается на том же такте ЦПУ, на котором произошло копирование значения TCNTn в ICRn. Установка бита TICIEn =1 разрешает прерывание по установке флага захвата. Флаг ICFn автоматически сбрасывается при переходе на вектор прерывания. Альтернативно флаг ICFn сбрасывается программно, если записать в него лог. 1. Считывание 16-разр. значения регистра захвата (ICRn) выполняется чтением сначала младшего байта (ICRnL), а затем старшего байта (ICRnH). При выполнении команды чтения младшего байта значение старшего байта автоматически копируется во временный регистр. Если ЦПУ выполняет команду чтения регистра ICRnH, то фактически считывается содержимое временного регистра. Запись в регистр ICRn возможна только в том случае, если битами задания режима работы таймера выбран режим, в котором значение регистра ICRn задает верхний предел счета. В этом случае необходимо выполнить соответствующую установку бит режима работы (WGMn3:0), а только затем выполнить запись значения верхнего предела в регистр ICRn. Запись 16-разр. значения в регистр ICRn выполняется путем записи сначала старшего байта в ICRnH, а только затем младшего байта в ICRnL.