 
        
        Разработка схем и программ на основе микроконтроллера К1816ВЕ51. методические указания к выполнению лабораторных работ по дисциплине «Микропроцессорные системы». Петрухнова Г.В
.pdf 
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Воронежский государственный технический университет»
Кафедра автоматизированных и вычислительных систем
РАЗРАБОТКА СХЕМ И ПРОГРАММ НА ОСНОВЕ МИКРОКОНТРОЛЛЕРА К1816ВЕ51
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторных работ по дисциплине «Микропроцессорные системы»
для студентов направления 09.03.01 «Информатика и вычислительная техника» (профиль «Вычислительные машины, комплексы, системы и сети») заочной формы обучения
Воронеж 2018
УДК 681.325.5-181.4(07) ББК 32.97я7
Составитель канд. техн. наук, доц. Г. В. Петрухнова
Разработка схем и программ на основе микроконтроллера К1816ВЕ51: методические указания к выполнению лабораторных работ по дисциплине «Микропроцессорные системы» для студентов направления 09.03.01 «Информатика и вычислительная техника» (профиль «Вычислительные машины, комплексы, системы и сети») заочной формы обучения / ФГБОУ ВО «Воронежский государственный технический университет»; cост. Г. В. Петрухнова. Воронеж : Изд-во ВГТУ, 2018. 39 с.
В методических указаниях приведены необходимые сведения для выполнения лабораторных работ, посвященных изучению архитектуры и возможностей микроконтроллеров семейства ВЕ51.
Предназначены для студентов 3-го курса.
Методические указания подготовлены в электронном виде и содержатся в файле Методичка_МПС_ВЕ51_ЗО.pdf.
Ил. 2. Табл. 3. Библиогр.: 5 назв.
УДК 681.325.5-181.4(07) ББК 32.97я7
Рецензент – В. Ф. Барабанов, д-р техн. наук, проф. кафедры автоматизированных и вычислительных систем ВГТУ
Издается по решению учебно-методического совета Воронежского государственного технического университета
ВВЕДЕНИЕ
В состав семейства ВЕ51 (iMCS 8051) входит целый ряд микросхем – от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства имеют гарвардскую архитектуру и позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Они работают с одной и той же системой команд. Большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерацией ножек для корпуса). Различные микросхемы семейства ВЕ51 в основном различаются только регистрами специального назначения (в том числе и количеством портов ввода/вывода) и реализацией памяти. Это позволяет использовать для разработанного устройства микросхемы разных фирм-производителей (таких как
Intel, Dallas, Atmel, Philips и т. д.) без переделки принципиаль-
ной схемы устройства и программы. Архитектура микроконтроллеров рассмотрена на примере микросхемы К1816ВЕ51. Корпус кристалла и его структурная схема представлены в прил. 1, управляющие регистры – в прил. 2.
ЛАБОРАТОРНАЯ РАБОТА № 1
ПОРТЫ ВВОДА/ВЫВОДА ОДНОКРИСТАЛЬНОГО МИКРОКОНТРОЛЛЕРА ВЕ51
Цель работы: изучение основ программирования микроконтроллера (МК) ВЕ51 на языке СИ51.
Домашнее задание к выполнению лабораторной работы № 1
1.Изучите архитектуру однокристального микроконтроллера ВЕ51.
2.Изучите структуру и назначение портов ввода/вывода МК ВЕ51.
3
Краткие теоретические сведения
Язык программирования СИ51 удовлетворяет стандарту ANSI CИ и предназначен для получения компактных и быстродействующих программ для микроконтроллеров семейства MCS-51. Он учитывает особенности построения аппаратуры этих микросхем. Язык СИ51 обеспечивает гибкость программирования на широко известном языке CИ, при скорости работы и компактности, сравнимой с программами, написанными на языке программирования ассемблер.
Программа на СИ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>.
Для работы с битами в СИ51 используются типы данных, приведенные в табл. 1.
5
| 
 | 
 | 
 | 
 | 
 | Таблица 1 | |
| 
 | Типы данных для работы с битами | |||||
| Типы данных | 
 | Размер | Область значений | 
 | ||
| Бит | 
 | Байт | 
 | |||
| 
 | 
 | 
 | 
 | 
 | ||
| bit | 
 | 1 | 
 | 0 | от 0 до 1 | 
 | 
| sbit | 
 | 1 | 
 | 0 | от 0 до 1 | 
 | 
| sfr | 
 | 8 | 
 | 1 | от 0 до 255 | 
 | 
| sfr16 | 
 | 16 | 
 | 2 | от 0 до 65535 | 
 | 
Типы данных, включенные в табл. 1, не описаны стандартом ANSI, поэтому к ним нельзя обращаться при помощи указателей. Обращение к битам зависит от среды программирования. В среде Keil µVision — описание требуется.
Ключевое слово bit используется для объявления битовых переменных, смысл которых обычно ясен из названия. Например:
bit mb;
Ключевое слово sbit используется очень часто в программах ВЕ51 для доступа к отдельным битам. Например, для среды Keil µVision можно использовать следующий вариант:
sbit bit0=P1^0;
Ключевое слово sfr применяется очень часто в программах ВЕ51 для обращения к отдельным битам специальных регистров. Например, для среды Keil µVision возможны следующие варианты:
sfr P0=0x60; sfr TMOD=0x89;
6
Ключевые слова sbit, sfr используются для обращения к глобальным переменным.
Для примера заставим светиться светодиод VD1 в зависимости от состояния тумблера (см. рис.1). Соответствующий программный модуль приведен ниже.
#include<reg51.h> sbit sv=P0^6; sbit t=P2^7;
void main(void)
{sv=t; //Зажигание светодиода в зависимости от //состояния тумблера
while(1); //Бесконечный цикл
}
Заметим, что светодиод, подключенный к шестому выводу порта Р0, будет светиться, если тумблер, подсоединенный к выводу 7 порта Р2, будет опущен.
Задание 1. Проверьте работу рассмотренной выше программы.
Задание 2. Разработайте структуру МПС на базе МК ВЕ51 и напишите программу, обеспечивающую реализацию заданной преподавателем последовательности свечения 8 светодиодов в бесконечном режиме.
Задание 3. Разработайте структуру МПС (прил. 3) на базе МК ВЕ51 и напишите программу, обеспечивающую:
– ввод восьмибитного двоичного кода с тумблерного регистра;
– выдачу двоично-десятичного кода на семисегментные индикаторы.
7
Контрольные вопросы
1.Сколько портов ввода/вывода содержит МК ВЕ51?
2.Какое специальное назначение имеют порт Р0 и порт Р2 МК ВЕ51?
3.Каково функциональное назначение порта Р3?
4.Как обратиться к разряду порта на языке СИ51?
5.Как вывести число в порт МК ВЕ51?
6.Какие операции можно осуществлять над содержимым портов ввода/вывода ВЕ51?
7.Где реализованы порты ввода/вывода ВЕ51?
8.Что такое «принцип наложения сред» и с какой целью он используется в архитектуре однокристальных контроллеров?
Домашнее задание к выполнению лабораторной работы № 2
1.Составьте отчет по результатам выполнения лабораторной работы № 1. Отчет должен содержать функциональные схемы разработанных МПС и соответствующие программные модули согласно заданиям 1, 2.
2.Изучите подсистему внешних прерываний ВЕ51.
8
ЛАБОРАТОРНАЯ РАБОТА № 2
СИСТЕМА ВНЕШНИХ ПРЕРЫВАНИЙ МК ВЕ51
Цель работы: изучение основ организации и программирования подсистемы внешних прерываний в микропроцессорных системах на базе однокристальных микроконтроллеров семейства ВЕ51.
Краткие теоретические сведения
Прерывание — это сигнал, сообщающий о наступлении какого-либо события. Внешние прерывания — это такие прерывания, которые обрабатываются вследствие возникновения некоторых событий на определённой ножке порта микроконтроллера. Подсистема прерываний относится к стандартным средствам поддержки режима реального времени и обеспечивает своевременную реакцию микроконтроллера на различные события, которые могут происходить как внутри системы, так и вне ее.
Архитектура микроконтроллера ВЕ51 поддерживает двухуровневую приоритетную систему прерываний с пятью источниками запросов на обслуживание, каждый из которых имеет фиксированный вектор прерывания (стартовый адрес программы, обслуживающей прерывание).
Микроконтроллер ВЕ51 позволяет использовать 5 типов прерываний (два внешних прерывания, два прерывания таймеров и прерывание последовательного порта). Внешние прерывания инициируются сигналами на входах INT0 (вывод Р3.2) и INT1 (вывод Р3.3). В табл. 2 приведены перечень прерываний, их вектора и приоритеты.
9
| 
 | 
 | Таблица 2 | |
| 
 | Вектора и приоритеты прерываний | ||
| Приоритет | Описание | Вектор пре- | 
 | 
| прерывания | рывания | 
 | |
| 
 | 
 | ||
| 0 | Внешнее прерывание INT0 | 0х003 | 
 | 
| 1 | Прерывание таймера 0 | 0х00B | 
 | 
| 2 | Внешнее прерывание INT1 | 0х013 | 
 | 
| 3 | Прерывание таймера 1 | 0х01B | 
 | 
| 4 | Прерывание последователь- | 0х023 | 
 | 
| ного порта | 
 | ||
| 
 | 
 | 
 | |
Обработчик прерываний (или процедура обслуживания прерываний) – специальная процедура, вызываемая по прерыванию для выполнения его обработки. Ключевое слово interrupt используется для объявления функции, с которой оно применяется как обработчик прерывания. В среде Keil µVision после слова interrupt пишется приоритет прерывания в соответствии с табл. 3. Точки входа в обработчик прерывания аппаратно зафиксированы для каждого источника прерываний (вектор прерывания в табл. 3). По указанному адресу будет размещена первая команда обработчика прерывания. Обычно такой командой является безусловный переход в то место программы, где фактически располагается обработчик.
| 
 | 
 | Таблица 3 | |
| 
 | Вектора и приоритеты прерываний | ||
| Приоритет | Описание | Вектор пре- | 
 | 
| прерывания | рывания | 
 | |
| 
 | 
 | ||
| 0 | Внешнее прерывание INT0 | 0х003 | 
 | 
| 1 | Прерывание таймера 0 | 0х00B | 
 | 
| 2 | Внешнее прерывание INT1 | 0х013 | 
 | 
| 3 | Прерывание таймера 1 | 0х01B | 
 | 
| 4 | Прерывание последователь- | 0х023 | 
 | 
| ного порта | 
 | ||
| 
 | 
 | 
 | |
10
