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

Методическое пособие 140

.pdf
Скачиваний:
2
Добавлен:
30.04.2022
Размер:
460.08 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Воронежский государственный технический университет»

Кафедра автоматизированных и вычислительных систем

МИКРОКОНТРОЛЛЕРЫ СЕМЕЙСТВА iMCS-51

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к выполнению лабораторных работ по дисциплине «Однокристальные микроконтроллеры»

для студентов направления 09.03.01 «Информатика и вычислительная техника» (профиль «Вычислительные машины, комплексы, системы и сети») заочной формы обучения

Воронеж 2018

УДК 681.325.5-181.48(07) ББК 32.97я7

Составитель канд. техн. наук, доц. Г. В. Петрухнова

Микроконтроллеры семейства iMCS-51: методические указания к выполнению лабораторных работ по дисциплине «Однокристальные микроконтроллеры» для студентов направления 09.03.01 «Информатика и вычислительная техника» (профиль «Вычислительные машины, комплексы, системы и сети») заочной формы обучения / ФГБОУ ВО «Воронежский государственный технический университет»; cост. Г. В. Петрухнова. Воронеж : Изд-во ВГТУ, 2018. 34 с.

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

Предназначены для студентов 4-го курса.

Методические указания подготовлены в электронном виде и содержатся в файле Методичка_МК_ВЕ51_бакалавры ЗО.pdf.

Ил. 3. Табл. 2. Библиогр.: 5 назв.

УДК 681.325.5-181.48(07) ББК 32.97я7

Рецензент – В. Ф. Барабанов, д-р техн. наук, проф. кафедры автоматизированных и вычислительных систем ВГТУ

Издается по решению учебно-методического совета Воронежского государственного технического университета

ВВЕДЕНИЕ

Большинство задач управления, реализуемых с помощью микроконтроллеров (МК), требуют исполнения их в режиме реального времени. Под этим понимается способность системы своевременно получать информацию о состоянии управляемого объекта, выполнять необходимые расчетные процедуры и выдавать управляющие воздействия в течение интервала времени, достаточного для желаемого изменения состояния объекта. Прерывание – это сигнал, сообщающий о наступлении како- го-либо события. Подсистема прерываний относится к стандартным средствам поддержки режима реального времени и обеспечивает своевременную реакцию МК на различные события, происходящие как внутри системы, так и вне ее.

Обработка прерываний в МК происходит в соответствии с общепринятыми методиками МПС. После принятия запроса на прерывание организуется переход к выполнению определенной прерывающей программы (обработчика прерываний). Запросы на прерывание могут поступать как от внешних подключенных к корпусу устройств, так и от источников, расположенных в различных внутренних модулях МК.

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

3

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

1. Особенности написания программ в среде Keil µVision

Язык программирования микроконтроллеров (МК) семейства iMCS-51 СИ51 удовлетворяет стандарту ANSI. СИ51 учитывает особенности построения аппаратуры этих микросхем. Программа на СИ51 должна начинаться с включения файла заголовка, в котором находится информация о портах ввода/вывода, специальных регистрах, управляющих битах и т. д., т. е. должны быть определены аппаратные ресурсы МК и даны их аббревиатуры. Имя файла заголовка зависит от среды программирования. В среде Keil µVision используем REG51.H.

При написании программы для микроконтроллера всегда необходимо видеть перед глазами принципиальную схему устройства, для которого пишется программа, так как схема и программа тесно связаны между собой и дополняют друг друга. Для иллюстрации этого воспользуемся схемой, приведённой на рис. 1.

К примеру, заставим светиться светодиод VD1. Светодиод светится только тогда, когда через него протекает ток. Для этого на шестом выводе порта P0 должен присутствовать нулевой потенциал.

Соответствующий программный модуль представлен ниже:

#include<REG51.h> void main(void)

{P0=0; //Зажигание светодиода while(1); //Бесконечный цикл

}

4

+5B.

Цепь Eсет.

Питание

Питание

Корпус

Корпус

 

 

XTAL1

VD1

 

 

0

 

 

 

1

+5B

 

XTAL2

2

 

 

3

 

 

 

 

 

 

R1

 

 

 

4

Ucc

 

 

5

 

RST

RESET

6

 

7

 

 

 

Uss

 

 

ALE

+U

 

 

PSEN

 

 

 

 

 

EA

0

 

 

 

1

Ucc

Uвык

Ucc1

2

 

 

Ucc2

3

 

 

4

 

 

 

Uss

 

 

5

 

 

Uss

6

 

 

 

7

 

 

 

R2

 

 

+U.

 

Рис. 1. Пример простейшей схемы устройства, построенного с использованием микроконтроллера

Эта программа содержит только один исполняемый оператор присваивания 'P0=0;', т. е. во все биты порта Р0 записываем нули. Следующий оператор “while(1);” обеспечивает зацикливание программы, которое было сделано для того, чтобы никакие действия больше не производились. В противном случае микроконтроллер перейдёт к следующей ячейке памяти и будет выполнять команды, которые не записывались. Обратите внимание, что язык программирования «знает», где находится порт P0. Эта информация содержится в строке

#include<REG51.h>.

5

Для работы с битами в СИ51 используются типы данных, приведенные в табл. 1.

 

 

 

 

 

Таблица 1

 

Типы данных для работы с битами

Типы данных

 

Размер

Область значений

 

Бит

 

Байт

 

 

 

 

 

 

bit

 

1

 

0

от 0 до 1

 

sbit

 

1

 

0

от 0 до 1

 

sfr

 

8

 

1

от 0 до 255

 

sfr16

 

16

 

2

от 0 до 65535

 

Типы данных, включенные в табл. 1, не описаны стандартом ANSI, поэтому к ним нельзя обращаться при помощи указателей.

Ключевое слово bit используется для объявления битовых переменных, например:

bit mb;

Ключевое слово sbit используется очень часто в программах iMCS-51 для доступа к отдельным битам. Например, для среды Keil µVision можно использовать следующий вариант:

sbit bit0=P1^0;

Ключевое слово sfr применяется очень часто в программах iMCS-51 для обращения к отдельным битам специальных регистров. Например, для среды Keil µVision возможны следующие варианты:

sfr P0=0x60; sfr TMOD=0x89;

Ключевые слова sbit, sfr используются для обращения к глобальным переменным.

6

Для примера заставим светиться светодиод VD1 в зависимости от состояния тумблера (см. рис. 1). Соответствующий программный модуль приведен ниже.

#include<reg51.h> sbit sv=P0^6; sbit t=P2^7;

void main(void)

{sv=t; //Зажигание светодиода в зависимости от //состояния тумблера

while(1); //Бесконечный цикл

}

Заметим, что светодиод, подключенный к шестому выводу порта Р0, будет светиться, если тумблер, подсоединенный к выводу 7 порта Р2, будет опущен.

2. Подсистема прерываний микроконтроллера семейства iMCS-51

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

Архитектура микроконтроллера iMCS-51 поддерживает двухуровневую приоритетную систему прерываний с пятью источниками запросов на обслуживание, каждый из которых имеет фиксированный вектор прерывания (стартовый адрес программы, обслуживающей прерывание).

Микроконтроллер iMCS-51 позволяет использовать 5 типов прерываний (два внешних прерывания, два прерывания таймеров и прерывание последовательного порта). Внешние прерывания инициируются сигналами на входах INT0 (вывод Р3.2) и INT1 (вывод Р3.3). В табл. 2 приведены перечень прерываний, их вектора и приоритеты.

7

 

 

Таблица 2

 

Вектора и приоритеты прерываний

Приоритет

Описание

Вектор пре-

 

прерывания

рывания

 

 

 

0

Внешнее прерывание INT0

0х003

 

1

Прерывание таймера 0

0х00B

 

2

Внешнее прерывание INT1

0х013

 

3

Прерывание таймера 1

0х01B

 

4

Прерывание последователь-

0х023

 

ного порта

 

 

 

 

Обработчик прерываний (или процедура обслуживания прерываний) — специальная процедура, вызываемая по прерыванию для выполнения его обработки.

Ключевое слово interrupt используется для объявления функции, с которой оно применяется, как обработчик прерывания. В среде Keil µVision после слова interrupt пишется приоритет прерывания в соответствии с табл. 2. Точки входа в обработчик прерывания для каждого источника прерываний аппаратно зафиксированы. По указанному адресу будет размещена первая команда обработчика прерывания. Как правило, такой командой является команда безусловного перехода в то место программы, где фактически располагается обработчик.

8

ЛАБОРАТОРНАЯ РАБОТА № 1

ОТРАБОТКА ВРЕМЕННЫХ ИНТЕРВАЛОВ. ТАЙМЕРЫ/СЧЕТЧИКИ МК iMCS-51

Цель работы: изучение основ синхронизации процессов на базе однокристальных микроконтроллеров.

Краткие теоретические сведения

Один из методов измерения частоты базируется на том, что берется один период исследуемого сигнала и подсчитывается количество импульсов другого сигнала, которые проходят за этот период. При этом период следования таких импульсов должен быть заранее известен и быть меньше периода измеряемого сигнала как минимум на два порядка. Сказанное иллюстрирует рис. 2.

Рис. 2. Измерение частоты методом подсчета импульсов

Реализуем изложенную выше методику измерения частоты сигнала, используя аппаратно-программные средства МК iMCS-51.

Частота кварцевого резонатора составляет 12 МГц. Устройство управления формирует машинный цикл, составляющий 12 периодов сигнала кварцевого резонатора. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды МК выполняются за один

9

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

Для того чтобы подсчитать, за сколько машинных циклов выполняется фрагмент программы, необходимо получить листинг, в котором каждый оператор программы, написанной на СИ51, представлен последовательностью команд ассемблера. Для этих целей в среде Keil μVision в режиме отладки необходимо использовать опцию View/Disassembly Window. Чтобы отработать определенный временной интервал, необходимо написать программную задержку и определить, за сколько машинных циклов она выполняется, воспользовавшись уравнением

Fr / (12 · c · n) = 1 / t,

где Fr – частота кварцевого резонатора, Fr = 12 МГц;

c – число машинных циклов, за которое выполняется фрагмент программы, реализующий задержку;

n – число, показывающее, сколько раз необходимо повторить фрагмент программы, реализующий задержку, чтобы выработать заданный временной интервал;

t – величина заданного временного интервала, реализующего задержку.

Отработать определенный временной интервал можно также, используя прерывания от таймера. В МК iMCS-51 имеются два программируемых 16-битных таймера/счетчика (T/C0

иT/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий. Каждый из них состоит из двух 8-битных регистров TH0 (старший байт)

иTL0 (младший байт) для таймера 0 или TH1 (старший байт) и TL1 (младший байт) для таймера 1.

Врежиме таймера содержимое соответствующего регистра инкрементируется в каждом машинном цикле, т. е. через

10