Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка для НЭК.doc
Скачиваний:
11
Добавлен:
27.03.2015
Размер:
893.95 Кб
Скачать

Лабораторная работа №7 «Работа с таймерами и прерываниями»

Цель работы. Изучить систему прерываний микроконтроллера.

Подробная информация о системе прерываний и таймерах представлена в источнике [2], перед выполнением данной работы настоятельно рекомендуется изучить Главу 12 (стр 181) и Главу 6 (стр 72).

Задание к работе

  1. Изучить типы, конфигурацию и источники прерываний, ознакомиться с регистрами управления прерываниями.

  2. Открыть проект REACT_demo. Разобраться с правилами записи функций прерываний на языке Си в файле interrupt.с

  3. Ознакомиться с регистрами управления таймерами, изучить режимы работы таймеров.

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

Лабораторная работа №8 «Последовательный интерфейс uart»

Цель работы. Изучить работу асинхронного приемопередатчика UART.

Подробная информация о последовательном интерфейсе представлена в главе 11 (стр150) источника [2].

Задание к работе

  1. Изучить особенности последовательного интерфейса UART6.

  2. Открыть проект UART_demo. Разобраться с конфигурацией UART (файл init.c) правилами записи функций прерываний

  3. Ознакомиться с функциями управления последовательным интерфейсом UART_SendChar(), UART_GetChar(),UartSendString().

  4. Загрузить данную программу в микроконтроллер. Сконфигурировать микропереключатели следующим образом:

  1. Запустить программу терминала на компьютере и сконфигурировать его так, чтобы параметры совпадали с конфигурацией UART.

  2. Проанализировать выполнение программы

  3. Изменить программу так, чтобы передача данных производилась примерно один раз в секунду (реализовать при помощи таймера). Кроме температуры передавать номер измерения

Приложение №1!

Архитектура цпу

Регистры.

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

Регистры управления это специальные регистры, отвечающие за стековую память, последовательность выполнения программы и ее состояние. Регистры управления включают в себя программный счетчик (PC), слово состояния (PSW) и указатель стека (SP).

Программный счетчик (РС) - это 16-разрядный регистр, который содержит адрес выполняемой команды.

В нормальном состоянии после выполнения текущей команды РС автоматически увеличивается на величину равную длине выполняемой команды в байтах. После выполнения команды ветвления программный счетчик принимает значение непосредственно заданное в команде ветвления.

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

Слово состояния (PSW - Program status word) - это 8-разрядный регистр. Разряды слова состояния (флаги) могут сбрасываться или устанавливаться выполняемой командой. Содержимое слова состояния автоматически заносится в стек, когда генерируется запрос на прерывание или когда выполнена инструкция PUSH PSW. После выполнения команд RETI и POP PSW слово состояния автоматически восстанавливается значением, извлеченным из стека.

Активный сигнал RESET инициирует PSW значением 02H.

(1) Флаг разрешения прерывания (IE – Interrupt Enable)

Этот флаг контролирует подтверждение поступающих запросов прерывания.

При IE = 0 (состояние DI), все прерывания, кроме немаскируемых запрещены, в противном случае - разрешены. После выполнения команды DI или подтверждения запроса на прерывание флаг IE сбрасывается в 0 и устанавливается в 1 после выполнения команды EI.

(2) Флаг признака нуля (Z – zero)

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

этот флаг устанавливается равным 1, во всех других случаях 0.

(3) Флаги выбора блока регистров (RBS0 и RBS1)

Эти флаги используются в паре (2-битный флаг) и определяют активный блок регистров общего назначения. Выбор активного блока, который осуществляется командой SBL RBn, изменяющей значения флагов RBS0 и RBS1.

(4) Флаг вспомогательного переноса (AC – Auxiliary Carry)

Если в результате арифметической или логической операции происходит перенос из бита 3 или заем в бит 3, то значение этого флага устанавливается равным 1, во всех других случаях 0.

(5) Флаг изменения приоритета (ISP – In-Service Priority)

Этот флаг определяет порядок обработки маскируемых векторных прерываний. При ISP = 0 прерывания с низким приоритетом запрещены. Уровень приоритета задает регистр приоритета прерываний (PR). Подтверждения запросов на прерывание выполняются в соответствии с состоянием флага разрешения прерываний (IE)

Указатель стека (SP – stack pointer)

Указатель стека это 16-разрядный регистр, который содержит адрес вершины стека. Стек является частью адресного пространства микроконтроллера. В качестве стека может использоваться только встроенное высокоскоростное ОЗУ. Содержимое SP уменьшается перед записью (сохранением) данных в памяти стека и увеличивается после чтения (извлечение) данных из стека.

После активации сигнала RESET значение указателя стека становится неопределенным, поэтому после сброса и перед выполнением операций со стеком необходимо инициализировать указатель стека.

Регистры общего назначения

Регистры общего назначения (РОН) расположены в адресном пространстве памяти данных (FEE0H – FEFFH). Регистры РОН объединены в четыре блока, каждый из которых включает в себя восемь 8-разрядных регистров (X, A, C, B, E, D, L и H). Каждый регистр можно использовать как самостоятельный 8-разрядный регистр, или в составе 16-разрядной регистровой пары (AX, BC, DE и HL).

Регистры можно обозначать как функциональными именами (X, A, C, B, E, D, L, H, AX, BC, DE и HL), так и абсолютными (соответственно R0 – R7 и RP0 – RP3). Активный блок регистров определяется командой SEL RBn. При выполнении инструкций процессора только регистры активного блока могут быть использованы в качестве РОН операндов. Переключение между блоками РОН может повысить эффективность программы, если для обработки прерываний и обычного хода программы будут использованы разные блоки РОН.

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

Регистры специального назначения (SFRs – Special Function Registers) имеют аппаратно зафиксированные функции и располагаются в адресном пространстве FF00H – FFFFH (256 байт). С регистрами специального назначения можно производить операции передачи данных и операции битовых манипуляций точно так же, как и с регистрами общего назначения. Битовые поля каждого регистра специального назначения управляются различными (1-, 8-, 16-битными) командами манипуляции данных, в зависимости от типа регистра.

Адресация.

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

Адресация операндов

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

Неявная адресация

Этот вид доступа используется для адресации одного из РОН в качестве аккумулятора (А илиAX).

[Пример описания]

MULU X; Операция умножения двух 8-разрядных чисел, хранящихся в регистрах А и X, результат умножения записывается в регистровую пару АХ.

Регистровая адресация

Этот вид доступа используется для адресации регистров общего назначения (РОН) в качестве операндов. Выбор блока регистров общего назначения осуществляется путем установки флагов RBS0 и RBS1. Для адресации регистров общего назначения в теле инструкции указывается 3-х или 2-разрядный (для регистровой пары) код спецификации РОН.

[Пример описания]

MOV A, C; При этом r соответствует регистру C

INCW DE; При этом rp соответствует регистровой паре DE

Прямая адресация

Этот вид доступа использует адрес непосредственно заданный в теле команды для адресации данных, с которыми будут производиться манипуляции.

[Пример описания]

MOV A, !FE00H; При этом !addr16 соответствует FE00H

Короткая прямая адресация

Этот вид доступа использует 8-разрядное адресное смещение непосредственно заданное в теле команды для адресации данных, с которыми будут производиться манипуляции. Данный вид доступа применим к области памяти FE20H – FF1FH. В вышеуказанной области памяти располагаются ячейки высокоскоростного ОЗУ и регистры специального назначения в диапазонах FE20H – FEFFH и FF00H – FF1FH соответственно. Область памяти регистров SFR к которой применима короткая прямой адресация (FF00H – FF1FH) входит составной частью в адресное пространство, отведенное регистрам SFR. Наиболее часто используемые в программах порты, регистр таймера/счетчика событий, регистр-защелка таймера/счетчика располагаются в вышеуказанной области. Обращение к данным SFR регистрам происходит за минимально возможное время, при этом затраты программного кода также минимальны. Если при короткой прямой адресации младший байт адреса принадлежит диапазону от 20H до FFH, то разряд 8 эффективного адреса устанавливается равным 0. Если младший байт адреса принадлежит диапазону от 00H до 1FFH, то 8-й разряд эффективного адреса устанавливается равным 1.

[Пример описания]

MOV FE30H, #50H; При этом saddr соответствует FE30H, в команде также указаны данные 50H

Адресация регистров специального назначения (SFR)

Этот вид доступа использует 8-разрядное адресное смещение непосредственно заданное в теле команды для адресации регистров специального назначения (SFR).Таким образом, происходит адресация к 240 байтам адресного пространства FF00H – FFCFH и FFE0H – FFFFH. Однако, при адресации некоторых регистров SFR (FF00H – FF1FH) может использоваться также короткая прямая адресация.

[Пример описания]

MOV PM0, A; При этом sfr соответствует регистру PM0

Косвенная регистровая адресация

При косвенной регистровой адресации происходит доступ к ячейке памяти, адресуемой регистровой парой, указанной в качестве операнда. Блок регистров определяется установленными флагами RBS0 и RBS1, в теле инструкции регистровая пара кодируется специальным кодом.

[Пример описания]

MOV A, [DE]; При этом DE осуществляет адресацию ячейки памяти

Базовая адресация

При базовой адресации происходит доступ к ячейке памяти, адрес которой получается в результате сложения содержимого регистровой пары HL и 8-разрядного смещения. Регистровая пара HL принадлежит блоку регистров, выбранному в соответствии с установленными флагами RBS0 и RBS1. Перенос из 16 бита, который может возникнуть в результате сложения, игнорируется. При использовании данного вида адресации может быть получен доступ к любой ячейке памяти, входящей в адресное пространство микроконтроллера.

[Пример описания]

MOV A, [HL+10H]; При этом byte соответствует значению 10H

Базовая индексная адресация

При базовой адресации происходит доступ к ячейке памяти, адрес которой получается в результате сложения содержимого регистровой пары HL и содержимого регистра С или B, указанного в команде. Регистровая пара HL, регистр С и В принадлежат блоку регистров, выбранному в соответствии с установленными флагами RBS0 и RBS1. Перенос из 16 бита, который может возникнуть в результате сложения, игнорируется. При использовании данного вида адресации может быть получен доступ к любой ячейке памяти, входящей в адресное пространство микроконтроллера.

[Пример описания]

MOV A, [HL+В]

Стековая адресация

При стековой адресации происходит доступ к ячейке памяти, адрес которой хранится в указателе стека (SP). Этот метод адресации используется при выполнении команд PUSH, POP, вызове подпрограмм и возврате из подпрограмм, а также при автоматическом сохранении/восстановлении регистра PSW при обработке прерываний. При стековой адресации доступ может осуществляться только к внутреннему высокоскоростному ОЗУ.

[Пример описания]

Команда PUSH DE

Приложение №2

Система Команд

В этой главе приведен перечень команд контроллеров серии 78К/0. Данный перечень является общим для устройств серии 78K/0.

Представление операндов и описание форматов команд

При написании программы на языке ассемблера большинство команд имеют операнды, записанные в определенном формате. Причем действия, выполняемые некоторыми командами, могут отличаться в зависимости от формы представления операндов данной команды. Некоторые символы (модификаторы) такие как #, !, $ и [] являются зарезервированными. Применение модификаторов следует трактовать следующим образом:

• # - Непосредственно заданные данные

• ! – Абсолютный адрес

• $ - Относительный адрес

• [] – Косвенный адрес

В командах подразумевающих непосредственное задание данных или адреса, следует использовать либо соответствующее числовое значение, либо метку. При использовании метки обязательно следует использовать какой-либо из модификаторов #, !, $ или [].

Перечень команд

[Команды 8-разрядной передачи данных]

MOV-Передача байта данных

XCH - Обмен байтами данных

[Команды 16-разрядной передачи данных]

MOVW - Передача слова данных

XCHW Обмен словами данных

[Математические и логические операции над 8-разрядными данными]

ADD Байтовое арифметическое сложение

ADDC Байтовое арифметическое сложение с учетом переноса

SUB Байтовое арифметическое вычитание

SUBC Байтовое арифметическое вычитание с учетом переноса

AND Операция логическое И

OR Операция логическое ИЛИ

XOR Операция исключающее ИЛИ

CMP Операция сравнения байтов

[Математические операции над 16-разрядными данными]

ADDW Арифметическое сложение слов

SUBW Арифметическое вычитание слов

CMPW Сравнение слов данных

[Команды умножения/деления]

MULU Умножение данных без учета знака

DIVUW Деление данных без учета знака

[Команды инкремента / декремента]

INC Инкремент (увеличение на единицу) байта данных

DEC Декремент (уменьшение на единицу) байта данных

INCW Инкремент (увеличение на единицу) слова данных

DECW Декремент (уменьшение на единицу) слова данных

[Команды циклического сдвига]

ROR Циклический сдвиг байта данных вправо

ROL Циклический сдвиг байта данных влево

RORC Циклический сдвиг байта данных вправо через флаг CY

ROLC Циклический сдвиг байта данных влево через флаг CY

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

ROL4 Циклический сдвиг байта данных влево на 4 разряда

[Команды десятичной коррекции]

ADJBA Десятичная коррекция результата сложения

ADJBS Десятичная коррекция результата вычитания

[Команды манипуляции с битами данных]

MOV1 Передача бита данных

AND1 1-битная операция логическое И

OR1 1-битная операция логическое ИЛИ

XOR1 1-битная операция исключающее ИЛИ

SET1 Установка одного разряда в 1

CLR1 Сброс одного разряда в 0

NOT1 Инвертирование одного разряд (Флага переноса)

[Команды вызова подпрограмм и возвращения из подпрограмм]

CALL Вызов подпрограммы (по 16-разрядному непосредственно заданному адресу)

CALLF Вызов подпрограммы (по 11-разрядному непосредственно заданному адресу)

CALLT Вызов подпрограммы (по адресу заданному в таблице)

BRK Команда программного векторного прерывания

RET Возврат из подпрограммы

RETI Возврат из программы обработки прерывания

RETB Возврат из программы векторного прерывания

[Команды работы со стеком]

PUSH Поместить данные в стек

POP Извлечение данных из стека

MOVW SP, scr Операции обмена данными с регистром указателя стека

MOVW AX, SP

[Команда безусловного перехода]

BR Команда безусловного перехода

[Команды условного перехода]

BС Команда условного перехода (CY = 1)

BNС Команда условного перехода (CY = 0)

BZ Команда условного перехода (Z = 1)

BNZ Команда условного перехода (Z = 0)

BT Команда условного перехода в зависимости от значения разряда (разряд = 1)

BF Команда условного перехода в зависимости от значения разряда (разряд = 0)

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

бита (Byte Data Bit = 1)

DBNZ Команда организации цикла

[Дополнительные команды управления]

SEL RBn Выбор активного блока регистров

NOP Нет операции (пустая операция)

EI Разрешение прерывания

DI Запрещение прерывания

HALT Включение режима HALT

STOP Включение режима STOP

Список используемой литературы

  1. Е. П. Угрюмов «Цифровая схемотехника», С-Петербург, 2004

  2. Горюнов Г.В., Шестакова А.В. Руководство пользователя. 78K0S/KA1+ 8-разрядные однокристальные микроконтроллеры. Руководство пользователя ООО «Элтех»2006

  3. Горюнов Г.В. Руководство пользователя Серия K/0 Система команд микроконтроллеров серии 78K/0 ООО «Элтех»2006

  4. User’s Manual K_Line - Taste it!–2 Demonstration Kit for the K_Line Family

  5. 78K IAR C/C++ Compiler Reference Guide for NEC Electronics’ 78K0 and 78K0S Microcontroller Subfamilies

2