Вычислительные комплексы и системы

Обработка информации, поступающей с двоичных датчиков. Модульное программирование систем управления. Построение микропроцессорной системы на базе вычислительных машин семейства MCS-51. Основные характеристики базовой модели микроконтроллеров MCS-51.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 22.10.2019
Размер файла 319,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

Муромский институт (филиал)

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

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых»

(МИ (филиал) ВлГУ)

ВЫЧИСЛИТЕЛЬНЫЕ КОМПЛЕКСЫ И СИСТЕМЫ

Методические указания по курсовому проектированию Текстовое электронное издание

вычислительный программирование микроконтроллер микропроцессорный

Кулигин М.Н.

Муром 2015

Реферат

Методические указания содержат варианты заданий, сведения о задачах и целях курсового проектирования, об основных требованиях, предъявляемых к содержанию и оформлению курсового проекта, а также справочную информацию и теоретический материал, необходимые для выполнения курсового проекта по дисциплине «Вычислительные комплексы и системы» для студентов направления 230100.62 «Информатика и вычислительная техника». Тематика курсового проектирования направлена на приобретение студентами знаний и навыков, необходимых для освоения специальных дисциплин.

Текстовое электронное издание

Минимальные системные требования:

Компьютер: процессор х86 с тактовой частотой 500 МГц и выше; ОЗУ 512 Мб; 5 Мб на жестком диске; видеокарта SVGA 1280x1024 High Color (32 bit); привод CD-ROM

Операционная система: Windows ХР/7/8

Программное обеспечение: Adobe Acrobat Reader версии 6 и старше.

  • Оглавление
  • Введение
    • 1. Тезническое задание на проектирование
    • 1.1 Схема алгоритма управления объектом
    • 1.2 Обработка информации, поступающей с двоичных датчиков Х1,...,X4, и выдача управляющего воздействия Y1
    • 1.3 Обработка сигналов X5, X6, X7 и выдача управляющих воздействий У2, У3 и У4
    • 1.4 Пульт управления
    • 2. Основные этапы разработки МПС
      • 2.1 Разработка аппаратных средств МПС
      • 2.2 Разработка программного обеспечения
        • 3. Оформление курсового проекта
          • 4. Краткие теоретические сведения
          • 4.1 Модульное программирование систем управления
          • 4.2 Прерывания
          • 4.2.1 Сохранение контекста при прерываниях
          • 4.2.2 Общие проблемы при использовании прерываний

5. Построение микропроцессорной системы на базе ОЭВМ семейства MCS-51

5.1 Основные характеристики базовой модели микроконтроллеров MCS-51

5.2 Назначение выводов микросхемы AT89C51

5.3 Карта памяти MCS-51

5.4. Выполнение команд в MCS-51

5.5 Таймер/счетчик MCS-51

5.6 Организация прерываний

5.7 Организация последовательного ввода/вывода

6. Примеры использования ОЭВМ семейства MCS-51

6.1 Ввод информации с клавиатуры

6.2 Пример организации п/п задержки на заданное время

Приложение 1

Библиографический список

Введение

Целью курсового проектирования является приобретение навыков разработки встраиваемых систем управления (СУ) на примере проектирования микропроцессорной системы для управления некоторым объектом.

Рис. 1 Обобщённая структурная схема системы управления

В состав типовой системы управления (контроллера) (рис. 1) входят:

- объект управления, содержащий собственно объект или процесс,

- исполнительные устройства и систему датчиков контролируемых параметров объекта;

- устройство сопряжения с объектом, обеспечивающее согласование сигналов (как управляющих, так и информационных) микроконтроллерной системы и объекта управления;

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

- цифровой регулятор (МПС управления).

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

Для описания систем автоматического управления (регулирования) обычно используется следующая структурная схема: (рис.2)

Рис. 2 Обобщенная структурная схема систем автоматического управления (регулирования) САУ (САР)

U - уставка (программно задаваемая величина); X - контролируемая величина (состояние объекта); E - невязка; Y - управляющий сигнал; G - внешние возмущения; П - программный задатчик (в частном случае оператор).

В процессе работы система автоматического регулирования (САР) сравнивает текущее значение измеряемой величины Х с заданием U (уставкой) и устраняет рассогласование Е (невязку ). Возмущающие воздействия G также устраняются регулятором. Например, при регулировании температуры в печи, уставкой U является требуемая температура воздуха, контролируемой величиной X - текущая температура, невязкой E является их разница, управляющей величиной Y является напряжение на теплонагревательном элементе (ТЭНе).

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

Основной задачей при построении САР является выбор и наладка регулятора, адекватного объекту управления. Кроме того, необходим подбор соответствующих измерительных преобразователей (датчиков). Для успешного решения этой задачи в первую очередь необходимо определить динамические свойства объекта управления.

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

В качестве основы для построения УС выбраны однокристальные микроЭВМ (см. Табл. 1).

Таблица 1

Тип ОЭВМ

Внутр. память данных (байт)

Внутр. память программ (байт)

Мах

Ft

(Мгц)

Число счет-

чиков

Число источ-в прерыв.

Напр.

питания

AT89C51-12AC

128

4K

12

2

6

5B- 20%

AT89C51-12AI

128

4K

12

2

6

5B- 20%

AT89C51-12AA

128

4K

12

2

6

5B- 20%

AT89C51-16AC

128

4K

16

2

6

5B- 20%

AT89C51-16AI

128

4K

16

2

6

5B- 20%

AT89C51-16AA

128

4K

16

2

6

5B- 20%

AT89C51-20AC

128

4K

20

2

6

5B- 20%

ADuC812

256

8K

12

3

6

5B- 20%

AT89C51-24AC

128

4K

24

2

6

5B- 20%

ADuC842

256

62K

16

5

6

5B- 20%

AT89LV51-12AC

128

4K

12

2

6

2.7- 6B

AT89LV51-12AI

128

4K

12

2

6

2.7- 6B

AT89C52-12AC

256

8K

12

3

8

5B- 20%

AT89C52-12AI

256

8K

12

3

8

5B- 20%

AT89C52-12AA

256

8K

12

3

8

5B- 20%

AT89C52-16AC

256

8K

16

3

8

5B- 20%

AT89C52-16AI

256

8K

16

3

8

5B- 20%

AT89C52-16AA

256

8K

16

3

8

5B - 20%

AT89C52-20AC

256

8K

20

3

8

5B- 20%

AT89C52-20AI

256

8K

20

3

8

5B -20%

AT89C52-24AC

256

8K

24

3

8

5B -20%

1. Техническое задание на проектирование

1.1 Схема алгоритма управления объектом

Размещено на http://www.allbest.ru/

Рис. 3 Схема алгоритма управления объектом

В УС реализуется алгоритм, представленный на рис.3.

Блоком 1 выполняется начальная установка системы: программирование БИС параллельного интерфейса, контроллера прерываний и др., засылка при необходимости в выходные каналы начальных значений управляющих воздействий и т.п.

Блоком 2 реализуется задача логического управления: прием информации с двоичных датчиков Х1,...,X4, вычисление значения булевой функции f(Х1,...,X4) в соответствии с заданным выражением (табл. 2) и выдача этого значения в качестве управляющего двоичного сигнала Y1 по соответствующему выходному каналу на ИМ.

Блоком 3 обеспечивается прием сигналов X5, X6, X7 с датчиков напряжения, их преобразование в цифровую форму, вычисление значений управляющих воздействий У2 - У4. При этом У2 и У3 являются двоичными сигналами, а У4 - напряжение, которое получается после преобразования цифрового кода в аналоговую форму.

Блоками 4 и 5 обеспечивается требуемое время цикла управления, приблизительно равное 0,5 с.

Блоком 6 реализуется или циклический режим управления или останов МПС в соответствии с командами, поступающими от оператора с ПУ.

1.2 Обработка информации, поступающей с двоичных датчиков Х1,...,X4, и выдача управляющего воздействия Y1

МПС опрашивает двоичные датчики и вычисляет булеву функцию f(Х1,...,X4) в соответствии с табл. 2. При единичном значении функции МПС вырабатывает выходной сигнал Y1=1 длительностью Т1.

Это означает, что через Т1 после выдачи единичного сигнала Y1 необходимо выработать нулевой сигнал Y1. Значение Т1 указано в табл. 2.

Таблица 2

№ Варианта

Функция Y1=f(X1,…,X4)

Т1,мс

1

X1+X2*X3+X4

10

2

X1*X2*X3+X4

20

3

X1*X2+X3*X4

100

4

X1(X4+X2*X3)

100

5

X1+X2+X3*X4

40

6

X1+(X2+X3)*X4

70

7

X1(X2+X3)+X4

50

8

X1+X2*X3*X4

120

9

X1+X2*(X3+X4)

15

10

(X1+X2+X3)*X4

25

11

X1*X2+(X3+X4)

150

12

X1*X3(X2+X4)

80

13

X1+X2+X3+X4

60

14

X1*X2*X3*X4

30

15

X1*(X2+X3+X4)

90

16

X1*(X2+X3)*X4

110

17

X1*X4(X2+X3)

140

18

(X1+X2)*X3*X4

70

19

(X1+X2)*X3+X4

20

20

X1*X2*(X3+X4)

120

21

Х1*Х3 + Х2+Х4

100

22

(Х1+Х2)*(Х3+Х4)

40

23

Х3+Х4*(Х2+Х1)

30

24

Х1*Х4*Х3+Х2

50

1.3 Обработка сигналов X5, X6, X7 и выдача управляющих воздействий У2, У3 и У4

Напряжения X5 и X6 преобразуются в цифровую форму с помощью АЦП. С выхода АЦП цифровые коды поступают на обработку. Код уставки «К» задается с ПУ оператором.

Вид реализуемой функции представлен в табл.3. Полученное значение функции Q2=F(N5,N6,K) сравнивается с константой Q0, хранящейся в ПЗУ. В зависимости от результатов сравнения (рис. 4) МПС вырабатывает двоичные управляющие воздействия Y2 или Y3 длительностью Т2 или Т3 соответственно.

Таблица 3

Номер варианта

Функция Q2=F(N5,N6,K)

T2,мс

T3,мс

1

Мин (N5,N6+K)

10

100

2

Макс (N5,N6+K)

20

120

3

N5+N6+K

10

60

4

Мин (N5,N6-K)

40

80

5

Макс (N5,N6-K)

30

90

6

N5+N6*K

20

100

7

Мин (N5,K-N6)

10

40

8

Макс (N5,K-N6)

60

60

9

N5+N6-K

80

90

10

Мин (N6,N5+K)

20

40

11

Макс (N6,N5+K)

10

70

12

N5-N6*K

30

50

13

Мин (N6,N5-K)

50

30

14

Макс (N6,N5-K)

60

110

15

N5-N6+K

70

160

16

Мин (N6,K-N5)

10

140

17

Макс (N6,K-N5)

60

100

18

N6+N5*K

40

90

19

Мин (N5+N6,K)

30

60

20

Макс (N5+N6,K)

60

30

21

N6-N5+K

80

40

22

Мин (N5-N6,K)

20

50

23

Макс (N5-N6,K)

40

80

Напряжение X7 преобразуется с помощью АЦП в цифровую форму N7, затем вычисляется функция Q4 = А0 + А1 N7, где А0 и А1 коэффициенты, хранящиеся в ПЗУ МПС.

Предполагается, что значения всех исходных величин меньше 1 и представляются в форме с фиксированной запятой. Значение коэффициента А1 равно 0,25 и 0,125 для нечетных и четных вариантов задания соответственно, а значение А0=0,17 для всех вариантов задания. Значение Q4 с помощью ЦАП преобразуется в напряжение Y4, которое далее поступает на исполнительный механизм (ИМ). Предполагается, что АЦП и ЦАП входят в состав ИУВВ. Погрешность обработки аналоговых сигналов не более 0.5%.

1.4 Пульт управления

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

1. Клавиатуру с числом клавиш 25, включая 16 клавиш шестнадцатеричного кода (0 - F) и три командные клавиши:

УСТАВКА (INSTALL), ВЫВОД (OUTPUT) и ОСТАНОВ (BREAK);

2. Кнопку СБРОС (RESET);

3. Светодиодные индикаторы для отображения сигналов X1,...,X4 и значения Q4 в десятичной системе счисления;

4. Узел аварийной сигнализации (для нечетных вариантов световой с частотой 2 Гц; для четных вариантов - звуковой с частотой 500 Гц).

1.5 Работа в режиме прерывания

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

От аварийного датчика:

а) включить на ПУ аварийную сигнализацию; б) выдать на индикацию значения сигналов Х1,...,X4;

в) записать в EEPROM текущие значения содержимого регистров микропроцессора г) перевести МПС в состояние ожидания. Выход МПС из состояния ожидания обеспечивается сигналом СБРОС.

От оператора: сигнал INT2 должен формироваться при нажатии на одну из клавиш УСТАВКА, ВЫВОД или ОСТАНОВ. Программная обработка прерывания INT2 должна включать:

а) опрос клавиатуры и определение кода нажатой клавиши;

б) ввод уставки последовательным нажатием клавиш 0 - F после нажатия клавиши УСТАВКА; в) вывод на световую индикацию значений X1,...X4 в случае нажатия клавиши ВЫВОД;

г) перевод системы в состояние ожидания в случае нажатия клавиши ОСТАНОВ.

2. Основные этапы разработки МПС

2.1 Разработка аппаратных средств МПС

Разработка аппаратных средств УС включает:

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

составление карты распределения адресного пространства памяти МПС под ОЗУ, ПЗУ, внешние и интерфейсные устройства т.п.;

разработку микропроцессорного модуля. В состав МПМ должны входить: микропроцессор, тактовый генератор, узел сброса МПС в начальное состояние (как при включении питания, так и от кнопки СБРОС), шинные формирователи или буферные регистры для обеспечения электрического сопряжения компонентов МПС и т.п.;

разработку модулей ПЗУ и ОЗУ, включая энергонезависимое ОЗУ. Емкость ПЗУ и ОЗУ (см. ниже) должна быть выбрана с запасом в 10-20 раз, учитывающим возможные изменения алгоритмов управления;

разработку ИУВВ, ПУ и КП. При разработке этих устройств могут быть использованы например микросхемы серий КР580, КР1810 и др. Временные интервалы для сигналов аварийной сигнализации могут быть реализованы с помощью таймера КР580ВИ53 (для вариантов 1-10), либо программным способом (для остальных вариантов). Построение АЦП и ЦАП может быть выполнено на микросхемах серий КР572, КР1108 и др. Особое внимание следует уделить расчету электрического сопряжения нестандартных элементов ИУВВ и ПУ;

расчет электрического сопряжения компонентов МПС (варианты 1-10 рассчитывают сопряжение адресных цепей, остальные варианты сопряжение цепей данных);

построение принципиальной электрической схемы МПС в целом.

2.2 Разработка программного обеспечения

В проекте необходимо разработать следующие алгоритмы и программные модули на языке Ассемблера:

инициализации МПС, т.е. установки режимов работы программируемых интерфейсных БИС;

логической обработки сигналов Х1,Х2,...,X4 и формирования управляющего сигнала Y1;

ввода напряжений X5 и X6 и формирования сигналов Y2, Y3;

ввода напряжения X7 и формирования сигнала Y4;

обработки сигналов прерывания;

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

3. Оформление курсового проекта

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

Пояснительная записка должна содержать:

титульный лист;

содержание с указанием страниц;

задание на курсовой проект;

введение с анализом технического задания;

основную часть, отражающую все этапы разработки МПС;

заключение, отражающее основные результаты проекта;

список использованной литературы.

Приблизительный объем пояснительной записки - 35-50 страниц формата А4 (210х297 мм).

Графическая часть курсового проекта должна содержать:

структурную схему МПС;

принципиальную электрическую схему МПС;

блок - схемы алгоритмов управления.

Пояснительная записка и графическая часть курсового проекта должны быть оформлены в соответствии с требованиями ЕСКД, в том числе ГОСТ 2.701-84, ГОСТ 2.710-81, ГОСТ 2.708-81, ГОСТ 2.743-82, и ЕСПД - ГОСТ 19.001-77, ГОСТ 19.002-80, ГОСТ 19.003-80.

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

4.1 Модульное программирование систем управления

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

Далее рассмотрим пример типичной модульной программы для СУ. В начале текста директивами EQU константам даются имена и присваиваются значения. Пользоваться именованными константами всегда предпочтительнее, чем указывать числовые значения непосредственно в исполняемых командах микропроцессора.

Например, константы и переменные:

CL0 EQU 98h ; младший байт начального значения для T/C 0

CH0 EQU BDh ; старший байт начального значения для T/C 0

CL1 EQU F0h ; младший байт начального значения для T/C 1

CH1 EQU D8h ; старший байт начального значения для T/C 1

OV1 EQU FFh ; флаг переполнения T/C 1

T EQU 50d ; задержка 0.5 с

Далее в программе выделяют память для переменных. Делают это теми же самыми директивами EQU, но в отличие от описаний константы задают не численные значения переменных, а адреса занимаемых ими ячеек памяти.

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

После включения питания (или подачи сигнала сброса) микроконтроллер начинает выполнять программу с нулевого адреса. По этому адресу обычно записывают команду безусловного перехода на действительную точку начала программы (в данном случае на метку START). Это необходимо потому, что аппаратные прерывания всегда передают управление по фиксированным адресам, расположенным в начале памяти программ (адреса векторов прерываний 0003h, 000Bh,..).

Находящиеся по этим адресам команды безусловного перехода на подпрограммы обслуживания соответствующих прерываний основная программа должна «обойти».

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

START: CALL INIT ; вызов подпрограммы инициализации

CYCLE: CALL INP_DIG ; ввод/вывод цифровых сигналов

CALL INP_ANL ; аналоговый ввод/вывод

CALL PAUSE ; задержка в 0,5с

………………………

SJMP CYCLE

Хороший стиль программирования требует, чтобы начальные значения были присвоены переменным в самом начале работы программы. В данном случае это делает подпрограмма INIT.

Раздел инициализации внешних устройств обычно выглядит как поочередный вызов подпрограмм, каждая из которых приводит в исходное состояние одно из них (АЦП, индикатор, клавишный пульт и т. п.) и может быть легко заменена при доработке и совершенствовании системы. Нередко эти же подпрограммы проверяют работоспособность устройств.

Далее большинство управляющих программ входит в бесконечно повторяющийся основной цикл, выполнение которого приостанавливается только для обработки прерываний (это связано с отсутствием в микроконтроллерах операционных систем). Цикл состоит из подпрограмм опроса клавиатуры и других датчиков, проверки флагов, выставляемых подпрограммами обработки прерываний (например, флага истечения заданного интервала времени или окончания работы АЦП), обработки поступившей информации в соответствии с заданным алгоритмом управления, вывода управляющих воздействий на исполнительные механизмы, вывода информации о состоянии технологического процесса на индикаторы. Выход из основного цикла обычно предусматривается только в аварийных ситуациях, например, если для ликвидации последствий сбоя необходимо построить инициализацию переменных и ВУ, а также при обработке прерываний.

Таким образом, программа, построенная по модульному принципу, представляет собой набор подпрограмм. Если во вновь разрабатываемой СУ применена, например, иная клавиатура, достаточно будет изменить подпрограмму клавиатуры. Для того чтобы такая замена была простой, следует выработать и всегда соблюдать определенные правила. Подпрограммы, по возможности, должны сохранять содержимое всех регистров контроллера, получать исходные данные и выдавать результаты работы в одних и тех же регистрах и ячейках памяти, пользоваться одной и той же кодировкой символов и т.п.

Вовсе не обязательно записывать все необходимые подпрограммы в текстовый файл основной программы. Отлаженные и неоднократно использованные в разных программах модули могут находиться в отдельных файлах и подключаться к основной программе директивами INCLUDE. Каждый включаемый файл может содержать одну или несколько подпрограмм. При этом способе имена переменных, констант и меток во всех используемых модулях не должны повторяться.

Далее приведён пример программы, которую можно использовать при курсовом проектировании.

; Программа шаблон, организации точных задержек в 1мс и 1 сек

; Частота процессора F =12 Mhz

; Делитель таймера для получения задержки в 1 мс

; THCONST EQU 0FCh

; TLCONST EQU 1Fh

; Режим работы таймеров

; TMODC EQU #11h

; Т/C0 ведет отсчеты равные 1 ms

; Приоритет прерывания от TMR0 наивысший

; Т/C1 здесь для теста (можно использовать для других задач)

Org 0000h ; Вектор сброса

sjmp Start

Org 0003h ; Вектор внешнего прерывания Int0

reti

Org 000bh ; Вектор прерывания TMR0

ljmp Timer0H

Org 0013h ; Вектор внешнего прерывания Int1

reti

Org 001bh ; Вектор прерывания TMR1

ljmp Timer1H

Org 0023h ; Вектор прерывания последовательного порта

reti

Org 0030h ; начало программы

Start:

; Предстартовые настройки

mov SP, #30h ; Настроить указатель стека

mov P2, #1h ; инициализация порта P2

acall LoadTMR0 ; Загрузить делитель TMR0 (Для частоты чипа F)

mov Th1, #80h ; Начальное значение делителя TMR1

setb PT0 ; Повышаем приоритет прерывания от TMR0

mov IE, #8Ah ; Разрешить прерывание от TMR0 и TMR1

mov TMOD, #11h ; Оба таймера работают в режиме 1

setb tr0 ; Запуск TMR0

setb tr1 ; Запуск TMR1

acall ClrBanks

mov R0, #10h ; Для теста

; Здесь основной цикл программы

MainCyc: ; <---------- ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ

; place some code here

sjmp MainCyc ; <---------- ОСНОВНОЙ ЦИКЛ ПРОГРАММЫ

; Очистка всех банков регистров

ClrBanks:

mov R0, #20h

ClrL0:

mov @R0, #0

djnz R0, ClrL0

mov R0, #0h

ret

; Обработчик прерывания от TMR0

; Работает с регистровым банком 1 (RS0 = 1, RS1 = 0)

Timer0H:

push PSW

mov PSW, #8h ; Устанавливаем RS0, сбрасываем все остальное

acall LoadTMR0

; Здесь выполняем то, что требуется выполнить раз в 1 мс

; <Код>

acall CheckSCT

jnc ExitTMR0

; Здесь выполняем то, что требуется выполнить раз в 1 сек.

; Для теста "бегущий огонь" порт P2

mov A, R0

jnz ok

mov R0, #7

ok:

mov A, R0

rl A

mov R0, A

mov P2, A

ExitTMR0:

pop PSW

reti

; Загрузка делителя в таймер TMR0

LoadTMR0:

mov TH0, #0FCh

mov TL0, #1Fh

ret

; Проверяет дополнительный делитель на 1000

; --> Нет параметров

; <-- C=1 каждый 1000-й вызов, иначе C=0

CheckSCT:

mov A, R7

add A, #1h

mov R7, A

mov A, R6

addc A, #0h

mov R6, A

; константа 1000 = 3E8h

; проверяем старшую часть

subb A, #3h

jz TestLow

clr C

ret

; затем младшую

TestLow:

mov A, R7

subb A, #E8h

jz DoSetC

clr C

ret

DoSetC:

mov R6, #0

mov R7, #0

setb C

ret

; Обработчик прерывания от TMR1

; Работает с регистровым банком 2 (RS0 = 0, RS1 = 1)

Timer1H:

push PSW

mov PSW, #10h ; Устанавливаем RS1, сбрасываем все остальное

cpl P0.2

pop PSW

reti

; Счетчик секунд, TMR

; **************************************************

; Область подпрограмм

End

4.2 Прерывания

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

4.2.1 Сохранение контекста при прерываниях

При использовании в программе механизма прерываний необходимо учитывать следующий очень важный момент. Большинство прерываний генерируются и, следовательно, забирают и возвращают управление для своего обслуживания в случайные с точки зрения основной программы моменты. Основная программа в общем случае «не знает», что ее выполнение чем-то прерывалось. Между тем, при выполнении подпрограммы обработки прерывания специальные регистры, которые в ней используются, заполняются новыми значениями, а текущие на момент поступления прерывания значения этих регистров портятся. Таким образом, при возврате управления обратно в основную программу ее выполнение продолжится с прежнего адреса, но с измененным содержимым части специальных регистров. Легко понять, что изменение значения, например, регистра PSW в случайный момент случайным образом приведет, скорее всего, к неправильному выполнению основной программы и непредсказуемым результатам. Чтобы избежать возникновения такой ситуации, необходимо принимать специальные меры, которые называются регистровая защита или сохранение контекста.

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

INTER_HANDLER: ; начало подпрограммы обслуживания прерывания

PUSH ACC ; Сохранение аккумулятора в стеке

PUSH PSW ; Сохранение регистра статуса в стеке

… ; Тело подпрограммы обслуживания прерывания

POP PSW ; Восстановление регистра статуса из стека

POP ACC ; Восстановление аккумулятора из стока

RETI ; Возврат из прерывания в основную программу

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

1. Регистр слова состояния PSW

2. регистр-указатель данных DPH/DPL

3. Аккумулятор АСС

4. Регистр В

5. Регистры R0...R7 текущего регистрового банка.

Хорошим стилем программирования является использование в основной программе одного регистрового банка R0...R7, а в подпрограммах обработки прерываний - других банков. В этом случае регистры R0...R7 нет необходимости включать в сохраняемый контекст.

4.2.2 Общие проблемы при использовании прерываний

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

Если в вашей программе используются прерывания и вам не удается добиться ее правильной работы, то при анализе причин такой ситуации рекомендуется обращать внимание на следующие моменты:

Сохранение контекста. Удостоверьтесь, что все регистры, используемые основной программой и подпрограммами обслуживания прерываний, входят в состав сохраняемого контекста. Ошибки выполнения программы, являющиеся следствием порчи содержимого регистров из-за прерываний, проявляются в виде нестабильной работы всей программы в целом, сбоев ее выполнения в случайные моменты без видимых причин. Всегда практикуйте сохранение контекста.

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

Недопустимость использования инструкции RET вместо RETI. Возврат из прерывания всегда должен завершаться выполнением инструкции RETI. Использование вместо нее инструкции RET приведет к некорректному возврату из прерывания, последствием чего станет невозможность его повторных вызовов. Внешне это будет проявляться как останов выполнения управляющей программы.

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

5. Построение микропроцессорной системы на базе ОЭВМ семейства MCS-51
5.1 Основные характеристики базовой модели микроконтроллеров MCS-51
Базовой моделью семейства микроконтроллеров MCS-51 и основой для всех последующих модификаций является микроконтроллер I-8051 первого поколения. Его основные характеристики следующие:
1) центральный восьмиразрядный процессор;
2) память программ объемом 4 Кбайт;
3) память данных объемом 128 байт;
4) четыре восьмиразрядных программируемых канала ввода-вывода;
5) два 16-битовых многорежимных таймера/счетчика;
6) систему прерываний с пятью векторами и двумя уровнями;
7) последовательный интерфейс;
8) тактовый генератор.
Система команд MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта. (Полный список команд и описание их действия приведен в Приложении).

Кроме того, базовый вариант MCS-51 имеет:

- 32 РОН, отображаемых на память;

- 128 определяемых пользователем программно-управляемых флагов;

- 21 регистр специальных функций.

РОН и определяемые пользователем программно-управляемые флаги расположены в адресном пространстве внутреннего ОЗУ данных. Регистры специальных функций (SFR, SPECIAL FUNCTION REGISTERS) с указанием их адресов приведены в табл.4.

Аккумулятор АСС - регистр аккумулятора. Команды, предназначенные для работы с аккумулятором, используют мнемонику "А", например, MOV A, Р2. Мнемоника "АСС" используется, к примеру, при побитовой адресации аккумулятора. Так, символическое имя пятого бита аккумулятора при использовании ассемблера ASM51 будет следующим: АСС.5.

Регистр В используется во время операций умножения и деления. Для других инструкций регистр В может рассматриваться как дополнительный сверхоперативный регистр.

Регистр PSW - регистр состояния программы. Содержит информацию о состоянии программы.

Буфер последовательного порта SBUF представляет собой два отдельных регистра: буфер передатчика и буфер приемника. Когда данные записываются в SBUF, они поступают в буфер передатчика, причем запись байта в SBUF автоматически инициирует его передачу через последовательный порт. Когда данные читаются из SBUF, они выбираются из буфера приемника.

Таблица 4

Обозначение

Наименование

Адрес

* АСС

Аккумулятор

0Е0Н

* В

Регистр В

0F0H

* PSW

Регистр состояния программы

0D0H

SP

Указатель стека

81Н

DPTR

Указатель данных. 2 байта:

DPL

Младший байт

82Н

DPH

Старший байт

83Н

* Р0

Порт 0

80Н

* Р1

Порт 1

90Н

* Р2

Порт 2

0А0Н

* РЗ

Порт 3

0В0Н

* IP

Регистр приоритетов прерываний

0В8Н

* IE

Регистр разрешения прерываний

0А8Н

TMOD

Регистр режимов таймера/счетчика

89Н

* TCON

Регистр управления таймера/счетчика

88Н

TH0

Таймер/счетчик 0. Старший байт

8СН

TL0

Таймер/счетчик 0. Младший байт

8АН

TH1

Таймер/счетчик 1. Старший байт

8DH

TL1

Таймер/счетчик 1. Младший байт

8ВН

* SCON

Управление последовательным портом

98Н

SBUF

Буфер последовательного порта

99Н

PCON

Управление потреблением

87Н

* -- регистры, допускающие побитовую адресацию

Указатель стека SP - 8-битовый регистр, содержимое которого инкрементируется перед записью данных в стек при выполнении команд PUSH и CALL. При начальном сбросе указатель стека устанавливается в 07Н, а область стека в ОЗУ данных начинается с адреса 08Н. При необходимости путем переопределения указателя стека область стека может быть расположена в любом месте внутреннего ОЗУ данных ОЭВМ.

Указатель данных DPTR состоит из старшего байта (DPH) и младшего байта (DPL). Содержит 16-битовый адрес внешней памяти. Может использоваться как 16-битовый регистр или как два независимых восьмибитовых регистра.

Порт 0 - Порт З. Регистрами специальных функций Р0, PI, P2, РЗ являются регистры - "защелки" соответственно портов Р0, PI, P2, РЗ.

Регистры таймера. Регистровые пары (TH0, TL0) и (TH1, TL1) образуют 16-битовые счетные регистры соответственно таймера/счетчика 0 и таймера/счетчика 1.

Регистры управления. Регистры специальных функций IP, IE, TMOD, TCON, SCON и PCON содержат биты управления и биты состояния системы прерываний, таймеров/счетчиков и последовательного порта.

Важнейшей отличительной чертой архитектуры семейства MCS-51 является то, что АЛУ может наряду с выполнением операций над 8-разрядными типами данных манипулировать одноразрядными данными. Отдельные программно-доступные биты могут быть установлены, сброшены или заменены их дополнением, могут пересылаться, проверяться и использоваться в логических вычислениях. Тогда как поддержка простых типов данных (при существующей тенденции к увеличению длины слова) может с первого взгляда показаться шагом назад, это качество делает микроконтроллеры семейства MCS-51 особенно удобными для применений, связанных с логической обработкой сигналов и управления двухпозиционными переключателями.

5.2 Назначение выводов микросхемы AT89C51
- GND - потенциал общего провода («земли»);
- Vсс - основное напряжение питания +5В;
- XTAL1, ХTAL2 - выводы для подключения кварцевого резонатора;
- RST - вход общего сброса микроЭВМ;
- PSEN - разрешение внешней памяти программ; выдается только при обращении к ПЗУ;
- ALE - строб адреса внешней памяти;
- ЕА - отключение внутренней программной памяти;
- через порт 0 (в мультиплексном режиме) выводится младший байт адреса, а также выдается и принимается в микроконтроллер байт данных при работе с внешней памятью программ/данных;
- через порт 2 выводится байт старший байт адреса внешней памяти программ и данных;
- порт 1 предназначен для задания младшего байта адреса при программировании и проверке ПЗУ микросхемы.
- порт 3 имеет следующие альтернативные функции:
Р3.7 - строб чтения из внешней памяти данных (Read Data for External Memory, );
P3.6 - строб записи во внешнюю память данных (Write Data for External Memory, );
P3.5 - внешний вход T/C1 (Timer/Counter 1 External Input, T1);
P3.4 - внешний вход T/C0 (Timer/Counter 0 External Input, T0);
P3.3 - вход внешнего прерывания 1 (External Interrupt 1 Input Pin, );
P3.2 - вход внешнего прерывания 0 (External Interrupt 0 Input Pin, );
P3.1 - выход данных передатчика последовательного порта (Serial Port Transmit Pin, TxD);
P3.0 - вход данных передатчика последовательного порта (Serial Port Receive Pin, RxD).
Рис. 5 Условное графическое обозначение микросхемы AT89C51

Рис. 6 Схема микропроцессорного блока

5.3 Карта памяти MCS-51

Вся серия MCS-51 имеет гарвардскую архитектуру, то есть раздельные адресные пространства памяти программ и данных. Структура адресного пространства ОЭВМ MCS-51 представлена на рис. 8.

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

Рис. 7 Пространство памяти ОЭВМ

Память программ доступна только по чтению. ОЭВМ не имеют команд и управляющих сигналов, предназначенных для записи в память программ. Память программ имеет байтовую организацию и общий объем до 64К. При выборке из внешней памяти программ всегда используется 16-ти битовый адрес, младший байт которого выдается через порт Р0, а старший байт - через порт Р2 ОЭВМ. Байт из внешней памяти программ вводится в ОЭВМ через порт Р0, который в этом случае используется как шина адреса /данных в режиме мультиплексирования. Объем внутренней (резидентной) памяти программ, располагаемой на кристалле AT89C51, имеет объем 4К (базовый кристалл). Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА:

- EA=Vcc (напряжение питания) - доступ к внутреннему ПЗУ;

- EA=Vss (потенциал земли) - доступ к внешнему ПЗУ.

Строб чтения внешнего ПЗУ - (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле.

Область нижних адресов памяти программ используется системой прерываний. Архитектура микросхемы AT89C51 обеспечивает поддержку пяти источников прерываний:

- двух внешних прерываний;

- двух прерываний от таймеров;

- прерывания от последовательного порта.

На рис. 9. изображено распределение адресов нижней области памяти программ.

Внутренняя память данных ОЭВМ состоит из двух областей: 128 байт оперативной памяти (ОЗУ) с адресами 0 - 7FН и области регистров специальных функций, занимающей адреса 80Н-FFН. Распределение пространства внутренней памяти данных показано на рис. 10. Физически внутреннее ОЗУ данных и область регистров специальных функций являются отдельными устройствами. Все ячейки внутреннего ОЗУ данных могут адресоваться с использованием прямой и косвенной адресации.

Рис. 8 Нижняя область памяти программ

Кроме того, внутреннее ОЗУ данных имеет следующие особенности. Младшие 32 байта внутреннего ОЗУ данных сгруппированы в четыре банка по восемь регистров в каждом (БАНК 0 - БАНК 3 на рис. 10). Команды программы могут обращаться к регистрам, используя их имена R0 - R7. Два бита PSW (указатели банка рабочих регистров RS0 и RS1) определяют, с регистрами какого банка производится манипуляция. Наличие такого механизма работы с ячейками ОЗУ позволяет экономить память программ, так как команды, работающие с регистрами R0-R7, короче команд, использующих прямую адресацию.

Рис. 9 Адресное пространство внутренней памяти данных

5.4 Выполнение команд в MCS-51

Устройство управления ОЭВМ формирует машинный цикл, длительность которого равна 12 периодам тактовой частоты внутреннего генератора. Машинный цикл делится на шесть состояний S1-S6 (рис. 11), причем каждое состоит из двух тактов Р1 и Р2.

Команды в MCS-51 выполняются либо за одни машинный цикл, либо за два машинных цикла. Только команды умножения и деления выполняются каждая за четыре цикла.

При выполнении команды выборки данных из внешней памяти данных с помощью команды MOVX А, @ DPTR (или MOVX @ DPTR, А) в первой половине первого машинного цикла осуществляется чтение кода операции команды MOVX. Во второй половине первого машинного цикла производится холостое считывание кода операции следующей команды.

Рис. 10 Примеры выполнения команд в MCS-51

А в первой половине второго машинного цикла в режиме чтения по сигналу считываются данные из внешней памяти или в режиме записи, по сигналу данные записываются во внешнюю память данных. Во втором машинном цикле во время действия сигнала или сигнал ALE не вырабатывается.

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

5.5 Таймер/счетчик MCS-51
В состав MCS-51 входят два 16-разрядных многорежимных таймера/счетчика. Регистры таймера/счетчика 0 обозначаются ТН0 и ТL0, а регистры таймера/счетчика 1 - ТН1 и ТL1. Каждая пара регистров независимо одна от другой может работать либо как таймер, либо как счетчик. Режим таймера используется для задания интервалов времени, а режим счетчика - для счета внешних событий (счет входных импульсов, поступающих на входы порта РЗ от внешнего источника).
С помощью таймера могут быть заданы интервалы времени в диапазоне от длительности выполнения одного машинного цикла до длительности выполнения 65536 циклов. При тактовой частоте внутреннего генератора 12 МГц диапазон изменения интервала времени таймера составляет 1 - 65536 мкс.
Формат слова TMOD
Таблица 5

Номер разряда

7 6 5 4

3 2 1 0

Обозначение разряда

GATE /C M1 М0

GATE /C M1 М0

Номер таймера

Таймер, счетчик 1

Таймер, счетчик 0

Максимальная частота входных сигналов для их счета в режиме счетчика составляет 1/24 тактовой частоты внутреннего генератора, что составляет - 500 кГц, если fт = 12 МГц.
Выбор режимов осуществляется с помощью регистра TMOD, а управление таймером/счетчиком - с помощью регистра TCON.
В таблице 4 приведен формат слова TMOD для задания режимов.
В таблице 5 приведен формат слова TCON для выбора значений разрядов управления таймером/счетчиком. Назначение младших четырех разрядов рассматривается в параграфе, в котором описывается организация прерывания.
Формат слова TCON
Таблица 6

Номер разряда

7 6 5 4

3 2 1 0

Обозначение разряда

TF1 TR1 TF0 TR0

IE1 IT1 IE0 IT0

Используются для организации прерываний

Выбор режимов работы таймера/счетчика 0 осуществляется с помощью установки в нуль или единицу разрядов 0-3 регистра TMOD, а таймера/счетчика 1 - с помощью разрядов 4-7.
Значение GATE (ТМОD.7 или ТМОD.3) служит для разрешения запуска таймера/счетчика. Если разряд GATE установлен в единицу, то таймер/счетчик запускается в том случае, когда на входах РЗ.З (для таймера/счетчика1) и P3.2 (для таймера/счетчика 0) порта Р3 поступает сигнал высокого уровня и значения разряда ТR1 (TR0) регистра TCON равно единице. Если разряд GATE установлен в нуль, то таймер/счетчик запускается в том случае, когда значение разряда ТR1 (TR0) установлено в единицу, а значение уровня сигнала на входе РЗ.З (Р3.2) может быть любым.
Значение /С (TMOD. 6 или TMOD.2) определяет работу в режиме таймера или счетчика. Если разряд Т/С установлен в единицу, то выбирается режим счетчика и внешние сигналы, предназначенные для счета, должны быть подключены к входам Р3.5 (Р3.4) порта РЗ. Если разряд /С установлен в нуль, то выбирается режим таймера и сигналы на вход таймера поступают от внутренних схем синхронизации.
С помощью разрядов М1 и М0 задаются четыре варианта загрузки регистров TH и TL и управления ими. Каждый из вариантов соответственно называется режимом 0, 1, 2 или 3.
Режим 0 устанавливается при значении разрядов М1=0 и М0=0. В этом режиме регистр ТL1 (ТL0) служит делителем частоты на 32. В регистр ТН1 (ТН0) предварительно загружается 8-разрядное начальное значение, с которого начинается счет. При переполнении регистра ТH1 (ТН0) в единицу устанавливается разряд ТF1 (TF0) регистра управления TCON. Признак ТF1 (TF0) может быть опрошен программно либо использован как источник прерывания от таймера/счетчика. Таким образом, могут быть заданы интервалы времени в диапазоне [100H-(ТН)]*ТМЦ*32, где ТМЦ - длительность машинного цикла или произведен счет внешних сигналов в диапазоне от 1 до 213.
Режим 1 устанавливается при значении разрядов М1=0 и М0=1. В режиме 1 таймер/счетчик работает как 16-ти разрядное устройство.
Старший байт начального 16-разрядного значения заносится в регистр ТН1 (ТН0), а младший байт - в регистр ТL1 (ТL0). Разряд ТF1 (TF0) устанавливается в единицу после переполнения 16-разрядного регистра, составленного из регистров ТН и TL.
Режим 2 устанавливается при значении разрядов М1=1 и М0=0. В режиме 2 таймер/счетчик является 8-разрядным и автоматически перезагружается при каждом переполнении. В этом режиме начальное значение загружается в регистр ТН1 (ТН0), которое переписывается в ТL1 (TL0) при каждом переполнении. Перезагрузка не меняет содержимое ТН1 (ТН0).
Режим 3 устанавливается при значении разрядов М1=1 и М0=1. В режиме 3 таймер/счетчик 1 и таймер/счетчик 0 работают по-разному. В этом случае таймер/счетчик 0 работает как 8-разрядный таймер с использованием регистра ТН0 и разряда переполнения ТF1 и как 8-разрядный счетчик с использованием регистра TL0 и разряда переполнения TF0. Запуск таймера 0 производится при установке в единицу разряда ТR1. Запуск счетчика 0 производится сигналами ТR0, GATE и .
Если таймер/счетчик 0 настроен на режим 3, то таймер/ счетчик 1 может быть использован в любом из режимов, но без анализа разряда переполнения. Запуск таймера/счетчика 1 в этом случае производится автоматически после загрузки слова в регистр TMOD. Когда таймер/счетчик 0 работает в режиме 3, таймер/счетчик 1 может быть использован, например, как генератор, задающий скорость передачи последовательного порта.
В качестве примера рассмотрим использование таймера 0 в режиме 2 для формирования импульса на выводе Р1.0 порта Р1.
Программа имеет следующий вид:
MOV TMOD, #02 ; установка режима 2 таймера/счетчика 0
MOV ТН0, #0FСН ; загрузка начального значения таймера
М2: SЕТВ ТСОN. 4 ; запуск таймера
СLR Р1.0 ; сброс в «0» разряда 0 порта Р1
M1: JNB TCON.5, M1 ; проверка переполнения регистра TH0
SETB P1.0 ; установка в единицу «1» разряда 0 порта P1
CLR TCON.5 ; сброс признака переполнения
JNB P1.1, M2 ; проверка состояния разряда 1 порта P1.
Первая команда программы загружает в регистр ТМОD слово, соответствующее режиму 2 таймера/счетчика (М1=1; М0=0). Разряд 2 регистра TMOD устанавливается в нуль, поскольку выбирается режим таймера. Разряд 3 также устанавливается в нуль, чтобы осуществлять запуск таймера программно, не используя управление по сигналу . Таймер/счетчик 1 не используется и поэтому остальные разряды регистра TM0 не определяются и в данном примере установлены в нули.
Вторая команда устанавливает регистр ТH0 в состоянии 0FCH, и, следовательно, при запуске таймера его переполнение наступит через 4 машинных цикла или через 4 мкс при длительности машинного цикла, равной 1 мкс.
Третья команда запускает таймер и с этого момента начинается отсчет длительности интервала, заданной в регистре ТН0.
С помощью четвертой команды СLR Р1.0 разряд Р1.0 порта Р1 устанавливается в нуль. При условии, что предварительно этот разряд был установлен в единицу. Например, после начальной установки при включении питания системы или после подачи сигнала СБРОС (RST).
При выполнении пятой команды осуществляется программная проверка признака переполнения TF0. Как только переполнение наступает, осуществляется переход к следующей команде SЕТВ, Р1.0, которая установит разряд Р1.0 порта Р1 в единицу. Таким образом, на выводе P1.0 сформируется импульс низкого уровня длительностью в 4 машинных цикла. Если потребуется повторить формирование импульса, то это может быть выполнено, если использовать проверку состояния разряда Р1.1 порта Р1. Если внешнее устройство (например, объект управления) сформирует на указанном выводе порта Р1 сигнал низкого уровня, то с помощью команды JNB Р1.1, М2 можно осуществить возврат на метку М2 и формирование импульса на выводе Р1.0 повторится. В этом случае необходимо сбрасывать признак переполнения ТF0 командой CLR TCON.5. Если на выводе Р1.1 окажется сигнал высокого уровня, то осуществится выход из цикла.
Указанная программа имеет один недостаток, заключающийся в том, что в течение всего времени формирования импульса необходимо проверять состояние признака ТF0 и процессор не может выполнять другие операции. Этот недостаток может быть преодолен, если использовать выход из цикла по прерыванию, возникающему при переполнении таймера. Организация прерываний рассматривается в следующем параграфе.
Укажем, что установка разряда GATE в единицу регистра TMOD позволяет организовать запуск таймера аппаратно по наличию высокого уровня на входе INT порта РЗ. В этом случае с помощью таймера может быть измерена длительность сигнала, поступающего на вход INT.
5.6 Организация прерываний
В ОЭВМ семейства MCS-51 могут быть обработаны сигналы от пяти источников прерываний: два по переполнению встроенных таймеров/счетчиков, два от внешних источников прерывания и один по состоянию последовательного порта. Прерывания от каждого из указанных источников могут быть независимо друг от друга разрешены или запрещены, причем каждому источнику может быть присвоен соответствующий приоритет. Источник с более высоким приоритетом может прервать программу обслуживания прерывания источника с более низким приоритетом.
Для контроля состояния признаков прерываний служат два регистра TCON и SCON. Форматы слов, загружаемых в регистры, приведены в таблице 6. Управление системой прерывания обеспечивается с помощью регистров IE и IP. Содержимое всех регистров может быть опрошено программно. Обработка прерываний от внешних источников осуществляется при поступлении сигналов на входы INT1 (INT0), причем формирование признака прерывания IE1 (IE0) в регистре TCON производится либо по уровню внешнего сигнала, либо по спадающему фронту внешнего сигнала. Выбор уровня или фронта обеспечивается соответствующей установкой разрядов IT1 (IT0) регистра TCON. Если разряды IT1 (IT0) установлены в единицу, то обеспечивается формирование признака прерывания по спадающему фронту сигнала, поступающего на вход порта P3. иначе - по уровню сигнала.
Таблица 7
Обозначение разрядов, необходимых для организации прерываний

Номер разряда

7

6

5

4

3

2

1

0

Регистр TCON

IE1

IT1

IE0

IT0

Регистр SCON

T1

R1

Регистр IE

ES

ET1

EX1

ET0

EX0

Регистр IP


Подобные документы

  • Структуры вычислительных машин и систем. Фон-неймановская архитектура, перспективные направления исследований. Аналоговые вычислительные машины: наличие и функциональные возможности программного обеспечения. Совокупность свойств систем для пользователя.

    курсовая работа [797,5 K], добавлен 05.11.2011

  • Вычислительные системы и программное обеспечение как важнейшие разделы информатики, условия перехода общества в информационную стадию развития. Развитие вычислительных систем и персональных компьютеров. Операционные системы и системы программирования.

    реферат [906,9 K], добавлен 18.01.2011

  • Обработка информации, поступающей с дискретных датчиков. Реализация с использованием команд условных переходов и битовых операций. Управление технологическим параметром в заданных пределах. Алгоритм гибкого управления объектом. Таблица портов и адресов.

    курсовая работа [5,5 M], добавлен 13.01.2015

  • Однопроцессорные вычислительные системы не справляются с решением военно-прикладных задач в реальном времени, поэтому для повышения производительности вычислительных систем военного назначения используются многопроцессорные вычислительные системы (МВС).

    реферат [70,1 K], добавлен 30.05.2008

  • Классификация ЭВМ: по принципу действия, этапам создания, назначению, размерам и функциональным возможностям. Основные виды электронно-вычислительных машин: суперЭВМ, большие ЭВМ, малые ЭВМ, МикроЭВМ, серверы.

    реферат [22,8 K], добавлен 15.03.2004

  • Использование объектно-ориентированного подхода для минимизации затрат в процессе продажи и обслуживания контрольно-кассовых машин. Детализация алгоритмической и логической реализации операций системы. Построение базовой модели и диаграммы деятельности.

    контрольная работа [381,8 K], добавлен 19.03.2015

  • Назначение и устройство микропроцессорной системы контроля. Описание функциональной схемы микропроцессорной системы контроля. Расчет статической характеристики канала измерения. Разработка алгоритма функционирования микропроцессорной системы контроля.

    курсовая работа [42,0 K], добавлен 30.08.2010

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

    контрольная работа [118,1 K], добавлен 02.06.2014

  • Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.

    курсовая работа [802,8 K], добавлен 04.03.2015

  • Основные преимущества модульного программирования. Выделение процедуры: ввода массива с консоли, вывода на экран массива, информации об авторе и условии решенной задачи до обработки и после обработки. Иерархия процедур, характеристика назначения модулей.

    реферат [2,3 M], добавлен 29.01.2016

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.