Лабораторная работа № 5. Оптимизация топологии                распределенной системы сбора и регистрации данных 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа № 5. Оптимизация топологии                распределенной системы сбора и регистрации данных



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

 

Теоретическая часть

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

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

       , , ,                              (5.1)

где k 1, k 2, k 3, b 1, b 2, b 3 - стоимостные коэффициенты;

li – расстояние на местности между источником данных d i из множества D и средством обработки s 1 из множества S.

От выбора координат средства обработки (xq, yq) зависят суммарные затраты на каналы связи РСОД.

В основе используемой в работе программы лежит алгоритм определения местоположения средств обработки данных РСОД как точки равновесия векторов сил, имитирующих частные целевые функции затрат на каналы передачи данных от некоторого множества источников данных до средства обработки (СОД). Каждый источник данных (ИД) характеризуется частной целевой функцией, определяемой вектором силы, направленным от СОД к источнику данных. Значение модуля силы определяется выбранной функцией затрат от расстояния (5.1). Сила, приложенная к средству обработки со стороны некоторого источника данных, перемещает СОД в направлении к данному ИД, чтобы уменьшить расстояние и, соответственно, сократить затраты на организацию данного канала связи. В процессе итерационного поиска координаты СОД изменяются под воздействием результирующей силы со стороны всех источников данных. Результирующая сила определяется по следующей формуле:

,                    (5.2)

где -сила действующая со стороны i -го источника данных.

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

На рисунке 5.1 представлен порядок определения местоположения СОД для трех источников данных. На рисунке приняты следующие обозначения: di - источники данных,   fi - вектора частных целевых функций, ri – векторная сумма (i +1)-го количества векторов fi (i =1, N).

 

а)                                б)                           в)                           г)

а) построение механической модели точки равновесия синергетической системы;      б) первый шаг алгоритма поиска координат точки равновесия;

в) второй шаг; г) конечный шаг алгоритма

Рисунок 5.1 –Порядок поиска координат точки равновесия модели РСОД

 

В процессе итерационного поиска точки равновесия координаты СОД изменяются под воздействием результирующей силы со стороны всех ИД.Как видно из рисунка, после перемещения СОД по направлению результирующего вектора r 2 на значение dx, его модуль  уменьшился. На последнем шаге итерации представлен результат, где модуль вектора r 2 равен нулю.

 

Описание программы

 

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

На рисунке 5.2 представлено главное окно программы.

 

Рисунок 5.2- Главное окно программы

 

Для начала работы с программой, пользователь должен выбрать карту местности, выполнив команду «Загрузить карту» из меню «Файл», и указать на ней расположение источников данных. Карта должна быть представлена рисунком формата bmp или jpeg. Масштаб карты определяет точность определения координат средства обработки данных с учетом частных целевых функций.

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

На рисунке 5.3 представлена экранная форма ввода характеристик частной целевой функции в программный модуль.

     
 

               а)                                                                    б)

а) выбор вида аналитической функции; б) выбор параметров функции

Рисунок 5.3 –Экранные формы ввода параметров аналитических функций

 

Программа позволяет определять координаты СОД в двух режимах: с использованием алгоритма, основанного на принципах синергетики (самоорганизации), и переборного. В нижней части окна показываются параметры расчета координат СОД: текущие координаты курсора, рассчитанные координаты средства обработки данных X, Y, длина результирующего вектора L, суммарные затраты Z, количество циклов выравнивания Nc, а также задаются шаг итерации и погрешность результирующего вектора.

 

Постановка задачи

1. Провести эксперименты с использованием программы для определения координат СОД для различных конфигураций размещения ИД переборным и самоорганизующимся алгоритмом.

2. Сделать анализ результатов экспериментов;

3. Сделать выводы по работе и составить отчет.

Варианты заданий представлены в таблице 5.1.

        Таблица 5.1 –Варианты заданий

Номер варианта k b x 2 y 2 A x 3 y 3 N Dl
1 1 0.5 100 100 300 150 150 9 0.6
2 1,5 1 50 100 300 120 130 9 0.7
3 2 2.5 60 50 320 100 95 10 0.8
4 2 3 40 30 260 120 160 10 0.9
5 2.5 0 50 40 280 200 140 11 1.0
6 2.5 1 120 100 340 130 210 12 1.0
7 3 1.5 200 100 360 250 200 13 1.1
8 3.5 2 120 150 330 140 140 14 1.1
9 0.5 3 30 20 250 180 210 13 1.2
10 1 1.5 50 70 290 250 260 15 1.4
11 1 2 60 50 310 200 150 15 1.3
12 3 2 80 70 320 170 170 16 1.5
13 2.5 1.5 40 60 300 180 170 16 1.6
14 2.5 0.5 30 50 270 190 190 17 1.8
15 0.5 0.5 70 70 350 220 240 17 1.8
16 1.5 1.5 100 50 370 230 200 10 0.4

Порядок выполнения работы

1. Разместить на плоскости карты 2 источника данных с линейными частными целевыми функциями и координатами (100,100) и (400,100). Коэффициенты целевой функции k и b выбираются из таблицы 5.1 в соответствии с номером варианта. Определить расположение СОД двумя способами: перебором и синергетическим алгоритмом. Шаг итерации задать равным dx =1, а точность расчета координат точки равновесия dl =0.01. Записать параметры расчета координат средства обработки данных для обоих вариантов: координаты СОД (xs, ys), значения длины результирующего вектора L, затрат Z, количества итераций NC;

2. Изменить коэффициент k первого источника данных на значение 2∙ k. Произвести заново расчеты и записать результаты. Сравнить результаты для двух вариантов и сделать выводы;

3. Очистить плоскость карты от источников данных. Разместить на плоскости карты 4 точки по вершинам квадрата со стороной A и координатами левой верхней вершины (x 2, y 2). В качестве частной целевой функции выбрать линейную функцию с коэффициентами 2 и 1. Определить расположение СОД двумя способами, аналогично пункту 1 и записать результаты;

4. Для исходных данных пункта 3 выполнить 10 экспериментов по расчету координат СОД самоорганизующимся алгоритмом с шагами итерации: 1,3,5,7,9,11,13,15,17,19. Построить график зависимости количества итераций поиска точки равновесия от шага. Определить, как влияет шаг итерации dx на сходимость алгоритма и погрешность определения координат точки равновесия dl;

5. Для исходных данных пункта 3 и шага dx =1 выполнить 10 эксперимента с различными значениями заданной погрешности определения координат точки равновесия: 0.1, 0.6, 1.1, 1.6, 2.1, 2.6, 3.1, 3.6, 4.1, 4.6. Определить, как влияет значение заданной погрешности на количество итераций алгоритма;

6. Расположить случайным образом N источников данных и установить значение требуемой точности расчета координат d l. Произвести расчеты и записать результаты.

 

5.5 Контрольные вопросы

1. Какой обобщенный критерий оценки качества топологии РСОД использован в работе?

2. Опишите алгоритм поиска координат средств обработки данных РСОД, представленный в работе?

3. В чем суть частной целевой функции?

4. Как соотносятся результаты расчетов переборного и синергетического алгоритмов?

5. Как зависит количество итераций алгоритма от шага итерации? Как влияет значение шага итерации на точность и время поиска решения?

 

6 Лабораторная работа №6. Разработка программы для     микроконтроллера ADuC812  

 

Цель работы: приобрести навыки и умения по разработке и отладке программ для управляющих систем на основе микроконтроллера (МК) семейства MCS-51 при помощи стенда SDK1.1

 

6.1 Теоретическая часть

 

6.1.1 Характеристика стенда SDK 1.1

 

Учебный стенд SDK 1.1 предназначен для изучения архитектуры и методов проектирования систем на основе микроконтроллеров. Основой стенда является микроконтроллер ADuC812, ядро которого совместимо с 8051.

В состав стенда входят: МК ADuC812BS, внешняя E2PROM объемом 256 байт, клавиатура AK1604A-WWB, жидкокристаллический индикатор WH1602B-YGK-CP, часы реального времени PCF8583, 128Кб внешней SRAM, набор сигнальных светодиодов (8 шт.), DIP-переключатели (20 шт.).

В связи с тем, что на стенде установлено большое количество симуляторов сигналов для моделирования различных режимов обмена данными между внешними устройствами (ВУ) и микроконтроллером ADuC812, то их подключение осуществляется не через параллельные порты, а с помощью программируемой логической интегральной схемы MAX (ПЛИС).

На ПЛИС реализованы регистры, к которым подключены ВУ устройства: светодиоды, звуковой излучатель, клавиатура, 16-разрядный параллельный порт, дисплей. Доступ к данным регистрам осуществляется аналогично, как внешней памяти, т.е. во время цикла обмена по линиям портов P 0 и P 2 передаются адрес регистра и непосредственно данные.

Все МК семейства MCS-51 имеют одинаковую базовую систему памяти:  внутреннюю память программ (Flash, EPROM или ROM - CODE), внутреннюю память данных – DATA, внешнюю память программ и/или данных (ВПП - CODE, ВПД – XDATA). На рисунке 6.1 приведена карта стандартного распределения памяти стенда. Flash -память ADuC812 равна 8КБ (0..1FFF). Внутренняя программная память может отсутствовать. В большинстве случаев ВПП, ВПД ограничены объемом 64KB (0..FFFF).

а)                                                         б)

а) внутренняя память данных; б) внутренняя память программ и внешняя память программ и данных

Рисунок 6.1 – Распределение памяти стенда SDK 1.1

 

 

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

Внутренняя память данных - DATA (256 байт) делится на две равные части. В младших 128 байтах (0..7F) располагаются 4 8- ми байтовых банков рабочих регистров – REG и область, в которой можно хранить однобитовые переменные – BDATA. Далее идет область памяти общего назначения, в которой программист размещает стек, переменные, массивы и другую оперативную информацию. Старшие 128 байтов (80..FF) являются регистрам специальных функций – SFR (Special Function Register). SFR по сути являются регистрами управления и данных многочисленной периферии МК.

Отладку и пробные пуски программ удобно вести с использованием совмещения ВПД + ВПП. Во флэш-памяти в этом случае располагается резидентный загрузчик пользовательской программы, а во внешнее ОЗУ загружается разрабатываемая пользовательская программа. Когда пользовательская программа окончательно написана и отлажена ее можно записать во флэш-память МК вместо резидентного загрузчика и/или во внешнее ПЗУ.

 

6.1.2 Разработка программного кода для стенда в среде Keil uVision

 

Интегрированная среда Keil uVision поддерживает все стадии разработки приложения: создание исходного файла на С или Ассемблере, трансляцию, исправление ошибок, линкование объектных файлов, тестирование приложения.

Для начала работы нужно создать новый проект. Для этого запустите интегрированную среду «Keil uVision». Обычно при запуске открывается предыдущий проект, поэтому закройте его из основного меню «Project | Close Project».

В основном меню выберите пункт «Project | New Project». Появится диалоговое окно «Create New Project». Перейдите в папку, где планируете сохранить проект.

Введите имя файла проекта, например, Lr1 затем кликните по кнопке «Сохранить». Откроется диалоговое окно «Select Device for Target».

Создадим в проекте основной ассемблерный рабочий файл с расширением *.a. Для этого из пункта основного меню «File | New» создадим текстовый файл с именем «Text1» по умолчанию и сохраним его командой «File | Save As» под именем Lr1.a. Теперь нужно добавить этот файл в проект. Для этого в левом окне на странице «Files» кликаем правой кнопкой сначала по «Source Group 1» и затем в диалоговом окне «Add Files to Group» выбираем файл «Lr1.a».

В результате слева во вкладке «Source Group1» появится файл Lr1.a и на экране будет показано содержимое файла. Далее нужно написать код программы на языке Ассемблера. Пример кода программы, который зажигает светодиоды стенда представлен в листинге программы 1.

 

Листинг 1. – Пример программы, управляющей светодиодами

Name Primer      ;название программы

DPP EQU 84h; адрес регистра, который определяет

;номер страницы внешней памяти

SV EQU 7    ; относительный адрес регистра светодиода

WriteSvet macro; макрос, который зажигает светодиоды в регистре r3 должно

;содержаться значение, которое будет отображаться на светодиодах

mov r0,DPP        ; сохраняем старое значение DPP

mov DPP,#8       ; выбираем 8 страницу внешний памяти

mov r1,#sv          ; помещаем в регистр r1 адрес светодиода,  

;который располагается на 8 странице

mov a,r3              ; в акуммулятор помещаем значение регистра r3

mov dph,#0        ; старшие разряды адресных линий устанавливаем в ноль

movx @r1,a        ; используя косвенную адресацию, помещаем во

;внешнюю память значение акуммулятора

mov DPP,r0        ;восстанавливаем номер страницы внешней памяти

Endm              ; макрос закончен

cseg at 0             ; начало сегмента кода, который начинается с адреса 0

jmp start               ; переход на начало программы

org 2100h           ; дальнейший код будет располагаться по

;адресам, начиная с 2100h

using 0           ; используем нулевой банк ОЗУ

start:  

       mov r3,#0; устанавливаем первоначальное значение регистра r3

light:  

Pr_bt: jnb p3.2,pr_bt; цикл, который ожидает появления на

;2 линии порта p3 единицы

WriteSvet; зажигаем светодиоды

Inc r3        ; увеличиваем значение регистра r3

       mov r4,#3; реализуем задержку равную, примерно, 1 с

wait_1:      mov r5,#255; при помощи пустых циклов

wait_2:      mov r6,#255

wait_3:      DJNZ r6,wait_3

                   DJNZ r5,wait_2

                   DJNZ r4,wait_1                  

                   jmp light

end

 

Разработанная программ осуществляет циклический счет в двоичном коде от 0 до 255 и отображает его на светодиодах стенда. Разрешением счета является сигнал «1» на линии P 3.2 параллельного порта МК, который подключен к линии группы переключателей SW 3.

Директива CSEG (Code Segment) задает адрес (начало), с которого будут располагаться коды программы (по умолчанию с нулевого адреса). Команда «jmp start» осуществляет переход к адресу, с которого располагается в ОЗУ, разрабатываемая программа, и должна располагаться по адресу 0000h во внутренней флэш-памяти МК. Так как при включении или рестарте МК начинает свою работу именно с этого адреса 0000h.

Следующая директива ORG 2100h переопределяет начальный адрес следующего за ней кода программы.

Регистр светодиода находится по адресу 80007h. Для обращения к этому регистру необходимо выбрать 8 страницу, поместив число 8 в регистр DPP. Для записи комбинации, высвечиваемой на светодиодах, нужно использовать команду movx, которая осуществляет передачу данных во внешнюю память.

    Задержка реализуется при помощи пустых циклов. При расчете количества циклов необходимо исходить, что один цикл выполняется примерно за 3•10-6 с при тактовой частоте МК равной 12 МГц.

Для проверки наличия на линии P 3.2 единицы используется команда «jnb p3.2,pr_bt», которая осуществляет переход на метку pr_bt только в случае, когда контролируемый бит равен нулю.

Завершает программу «jump light», который организует бесконечный цикл. Разработчик должен учесть, что МК закончив выполнение программы, будет бесконтрольно выбирать неинициализированные байты из свободной области памяти и выполнять их. Это приведет либо к «зависанию», либо к перезагрузке системы, если МК снова доберется до нулевого адреса. В худшем случае, если последовательность таких байтов образует вредоносный код, то стенд может выйти из строя. Для решения этой проблемы можно, либо оформить программу в виде бесконечного цикла, либо записать в конце программы бесконечный цикл.

После этого скомпилируйте проект, выбрав команду «Project|Build target». Если в программе есть синтаксические ошибки, то о них будут выданы в окне сообщений с краткой их характеристикой и указанием номера строки.

Для загрузки программы в ОЗУ стенда загрузчиком используется файл формата «HEX-80». Необходимо указать данный формат в Keil uVision, выбрав команду «Project| Options for Target» и отметив на вкладке «Output» (рисунок 6.2).

 

Рисунок 6.2 –Выбор выходного формата файла

Настроить опции проекта, для чего выбрать вкладку «Target» и выставить параметры, как показано на рисунке 6.3.

 

Рисунок 6.3 – Параметры настройки проекта

 

 

Теперь, создайте загрузочный HEX-файл программы, для чего нажмите на кнопку в меню «Project | Build Target». Если трансляция и компоновка прошли успешно, то появится сообщение «0 Error(s)».

 

6.1.3 Загрузка приложения в SDK-1-1 при помощи инструментальной системы T167B

 

 Для подключения стенда SDK 1.1 к компьютеру осуществляется через интерфейс RS232c. Кабель подключается к разъему JDP 1 стенда и COM-порту компьютера. Далее подключите питание к стенду. На ЖК дисплее должна появиться надпись «HEX 202-01. Ожидание загрузки». Если на ЖК дисплее присутствует другая надпись при подаче питания или после нажатия кнопки «RESET», убедитесь, что переключатель 12 группы SW3 находится в состоянии «OFF».

Для загрузки программы в стенд используется программа t2.exe. Эта программа командной строки и для её запуска удобнее воспользоваться командным файлом. Создайте текстовый файл и сохраните его с расширением bat, например Load.bat.

В файле наберите следующий текст:

@echo off

t2 load.t2

Затем создайте текстовый файл load.t2 с текстом:

0x2100 0x0 addhexstart Lr1.hex                       

opencom1

loadhex Lr1.hex

0 term

bye

В первой строке 0x2100 адрес, начиная с которого будет загружено приложение. Во второй строке первая цифра 1 означает, что стенд подключен к COM1. Если стенд подключен к другому порту, то измените первую цифру на его номер. В третьей строке вместо Lr1.hex напишите имя файла, который вы создали. При этом нужно учесть, что в командном файле не используются полные пути к файлу, поэтому нужно убедиться, что все следующие файлы находятся в одной папке: t2.exe, load.bat, load.t2, Lr1.hex.

Дальше нужно перезагрузить стенд, нажатием кнопки RESET, и запустить командный файл load.bat. В результате программа загрузится в SDK 1.1 и микроконтроллер будет осуществлять счет на светодиодах.

 

6.2 Задание

 

Разработать программу для микроконтроллера ADuC812 в среде Keil uVision и протестировать на стенде SDK1.1.

Программа должна управлять 8 светодиодами и обрабатывать нажатие первого переключателя SW 3. На светодиодах должно отображаться в двоичном коде значении счетчика, который отсчитывает значения с интервалом в 1 секунду.

Переключатель 1 группы SW 3 осуществляет разрешение счета в пределах заданного диапазона (нулем или единицей в зависимости от варианта), начиная с минимального значения, и подключен к выводу P 3.2. При остановке счета необходимо отобразить на светодиодах значение младшего байта расширенного параллельного порта EXT_LO. Выводы порта EXT_LO подключены к переключателям с 5 по 12 группы SW 3

Регистр r 3 используется для хранения значения, которое будет отображаться на светодиодах.

Процедура WriteSvet осуществляет вывод значения регистра r 3 на светодиоды, а ReadPortLo – чтение младшего байта расширенного порта Ext _ LO.

Варианты заданий представлены в таблице 6.1, а расшифровка кодов – в таблице 6.2.

Таблица 6.1 – Варианты заданий

Вариант

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

Код диапазона счета

 

Код разрешения счета

 

1

2

1 2

3

4

5

6

1 2

1

+

 

+  

 

 

 

 

+  

2

+

 

+  

 

 

 

 

  +

3

+

 

  +

 

 

 

 

+  

4

+

 

  +

 

 

 

 

  +

5

+

 

   

+

 

 

 

+  

6

+

 

   

+

 

 

 

  +

7

+

 

   

 

+

 

 

+  

8

+

 

   

 

+

 

 

  +

9

+

 

   

 

 

+

 

+  

10

+

 

   

 

 

+

 

  +

11

+

 

   

 

 

 

+

+  

12

+

 

   

 

 

 

+

  +

13

 

+

+  

 

 

 

 

+  

14

 

+

+  

 

 

 

 

  +

15

 

+

  +

 

 

 

 

+  

16

 

+

  +

 

 

 

 

  +

17

 

+

   

+

 

 

 

+  

18

 

+

   

+

 

 

 

  +

19

 

+

   

 

+

 

 

+  

20

 

+

   

 

+

 

 

  +

 

Таблица 6.2 – Таблица расшифровки кодов задания

Код

Направление счета

Диапазон счета

Разрешение счета

min

max

1

Суммирующий

0

32 нулем

2

Вычитающий

4

64 единицей

3

 

8

128  

4

 

16

255  

5

 

4

128  

6

 

2

96  

 

6.3 Порядок выполнения работы

 

1. Создайте отдельную папку для нового проекта Keil uVision и новый проект;

2. Разработайте программу на языке Ассемблера 51. За основу можете взять программу, представленную в листинге 1.

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

CJNE Rn, #direct8, label                                                                     (6.1)

где Rn – регистр микроконтроллера;

# direct 8 – константа;

Label – метка.

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

If R3<>60 Then           CJNE R3,60, l1

       Inc r3                                 mov r3,#12

Else r3:=12;                          sjmp l2

                                           l1: inc r3

                                           l2:

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

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

Режим чтения или записи расширенного порта определяется младшим битом регистра ENA. Если он равен 1, то EXT_LO настроен на чтение данных МК из порта, иначе на запись. Регистры светодиодов, EXT_LO и ENA имеют адреса 80007h, 80002h и 80004h. Ниже приведен код, который выполняет чтение из EXT_LO в регистр микроконтроллера A:

ReadPortLo:

       mov r0,DPP; сохраняем предыдущее значение DPP

       mov DPP,#8; выбираем 8 страницу внешней памяти

       mov r1,#4; в r1 помещаем относительный адрес ENA

       mov dph,#0

       movx a,@r1; в акуммулятор A помещаем содержимое

 ;управляющего регистра ENA

       ANL A,#11111110b; обнуляем младший бит регистра A

       movx @r1,A; записываем содержимое A в регистр ENA

       mov r1,#2;в r1 помещаем относительный адрес EXT_LO

       movx a,@r1; считываем в A значение порта EXT_LO

       mov DPP,r0; восстанавливаем номер страницы

       ret ; выходим из процедуры

 

3. Выполните компиляцию проекта. Исправьте, если есть, синтаксические ошибки;

4. Выполните отладку программы. Для этого выберите команду «Debug| Start/Stop Debug Session». Можно выполнять программу в автоматическом или пошаговом режиме нажав соответственно кнопки F 5 и F 10.

В режиме отладки слева на экране показано содержимое основных регистров МК, счетчика команд, регистра флагов (рисунок 6.5).

 

Рисунок 6.5 – Режим отладки программы

 

При помощи меню «Peripherals» можно просматривать и вносить изменение в состояние интегрированной периферии микроконтроллера, например, изменять значение сигнала на выводах порта P 3.

     
 

Рисунок 6.6 – Изменение сигнала на выводах порта P 3

 

5. Выполните загрузку программы в стенд;

6. Оформите отчет по работе, сделайте выводы.

 

6.4 Контрольные вопросы

 

1. Какими возможностями обладает интегрированная среда Keil uVision?

2. Как организовать задержку во времени при выполнении программы?

3. К какому порту компьютера подключается стенд SDK 1.1?

4. 6. Как распределена память данных в микроконтроллере ADuC812?

5. Как распределена память программ в микроконтроллере ADuC812?

 

7 Лабораторная работа № 7. Разработка подсистемы                ввода-вывода и регистрации сигналов в режиме реального времени

 

Цель работы: приобрести навыки и умения по использованию таймеров и системы прерываний микроконтроллера ADuC812 для контроля и управления внешними объектами в режиме реального времени

 

7.1 Теоретическая часть

 

Для контроля и управления технологическими объектами часто требуется выполнять обработку данных в режиме реального времени. Для этого используются микроконтроллеры, которые характеризуется высокой надежностью и невысокой стоимостью. Для обеспечения работы в режиме реального времени в микроконтроллеры содержат таймеры и реализуют средства обеспечения системы прерываний. Рассмотрим принципы использования таймеров и прерываний на примере микроконтроллера ADuC812, модификации распространенного МК 8051.

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

Таймеры являются 16-разрядными и аппаратно реализованы как два 8-разрядных регистра TH x и TL x (x=0,1,2 соответственно для таймера 0, 1 и 2), которые могут программироваться отдельно. Все таймеры могут быть настроены на два режима работы: «таймера» и «счетчика».

В режиме «таймера» регистр увеличивается на 1 с частотой fk /12, где fk – частота МК, а в режиме «счетчика» - по перепаду на соответствующем входе T x (x=0,1,2 соответственно для таймера 0, 1 и 2).      

Для конфигурации и контроля таймеров используются 3 регистра специальных функций: TCON и TMOD для управления таймерами 0 и 1, T 2 CON для управления таймером 2.  Более подробную информацию смотрите в следующей литературе [10.2.7 ].

МК ADuC812 поддерживает 9 источников прерываний с 2 уровнями приоритета. Адреса векторов указаны в таблице 7.1.  Конфигурирование и контроль системы прерываний осуществляется через 3 SFR регистра: IE, IP, IE 2.



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 87; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.178.133 (0.372 с.)