|
|
|
|
|
Таблица 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