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

Автор работы: Пользователь скрыл имя, 11 Сентября 2014 в 11:59, лабораторная работа

Краткое описание

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

Содержание

Введение 5
1 Анализ технического задания 6
1.1 Общий анализ объекта проектирования и предлагаемой структурной схемы системы передачи данных 6
1.2 Описание метода передачи/приема и особенностей обработки данных. Разработка функциональной схемы системы передачи данных и обоснование использования линий портов ввода/вывода 6
1.3 Расчет временных задержек и временных параметров интерфейса 8
1.4 Расчет загружаемых констант предделителя и таймера для формирования необходимой скорости передачи 9
2 Разработка алгоритмического обеспечения системы передачи 11
2.1 Выводы по разделу 14
3 Разработка, трансляция и отладка программного обеспечения 15
3.1 Выводы по разделу 18
4 Оценка качества программного обеспечения 19
4.1 Цикломатическое число Маккейба 20
4.2 Метрика “подсчет точек пересечения” 22
4.3 Оценка сложности и надежности ПС по окончании кодирования 22
4.4 Метрики сложности потока данных 25
4.5 Метрика стилистики и понятности программ 26
4.6 Оценка надежности программы и прогнозирование отказов на ранних этапах разработки 26
Заключение 28
Список использованных источников 29

Прикрепленные файлы: 1 файл

Микропроцессоры.doc

— 699.00 Кб (Скачать документ)

 

  1. Разработка алгоритмического обеспечения системы передачи

Алгоритм работы передатчика микропроцессорной системы передачи данных начинается с программирования режима работы портов, указания начального адреса программы и стека. Далее происходит защита от дребезга при нажатии и при отпускании, и преобразование прочитанных кодов из портов Р2 и Р3 в удобный для последующей обработки вид. После выполнения подпрограммы ошибки происходит переход в начало программы.

 

 

 

Рисунок 2.1 – Алгоритм работы приёмника

Продолжение рисунка 2.1

 

    1. Выводы по разделу

На данном этапе была представлена блок схема программы, это дает возможность поэтапно просмотреть формирование работы передатчика и преступить к созданию программы на языке Assembler.

 

  1. Разработка, трансляция и отладка программного обеспечения

;**********ПРИЁМНИК**********

;Физический протокол: асинхронный

;Метод обнаружения ошибки:нечетность

;Метод вывода:замещение

;Тип нагрузки:светодиоды

;

;***** Область данных *****

;

fo .EQU 7000000  ;тактовая частота, Гц

W .EQU 9600  ;скорость передачи, бит/с

Ter .EQU 8  ;время звучания сигнала ошибки, с

Fer .EQU 2400  ;частота звучания сигнала ошибки, Гц

NN .EQU Ter*2*Fer ;постоянная цикла ошибки

Per .EQU 1  ;константа предделителя ошибки

Ver .EQU fo/16*Fer ;константа счетчика ошибки

Warm .EQU 11110000b 

Port0 .EQU r0  ;короткий адрес порта 0

Port2 .EQU r2  ;короткий адрес порта 2

Port3 .EQU r3  ;короткий адрес порта 3

Stak .EQU 3fh  ;адрес верхушки стека

Start .EQU r15  ;флаг холодного/теплого старта

Para .EQU rr12  ;инициализация пары регистров

buf .equ r13

cod .equ r14  

N .equ r15

;

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

;

;

;***** Основная программа *****

;

.ORG 0ch  ;адрес загрузки программы

;

cp Start,#Warm ;анализ "холодного" старта

jr eq,Start  ;переход, если "теплый"

;

;***** Системная инициализация *****

;

ld P01M,#00000100b ;порт Р0 - на вывод, стек внутренний

clr P2M                 ;порт Р2 - на вывод

ld P3M,#00000001b ;порт Р3 - режим работы - двухтактный

ld Port2,#01111111b ;выключение нагрузки

ld Port0,#00000111b 

ld SPL,#Stak  ;инициализация стека

ld Start,#0F0h                ;инициализация флага "теплого" старта

;

;***** Анализ линии связи *****

;

WaitT1:

wdt

cp N,#0h  ;все биты приняты

jr eq,ActivUstr ;если да, переходим на ActivUstr

 

wdt   ;запуск/сброс сторожевого таймера

 

ld buf,IRQ  ;считаем регистр прерывания

and buf,#20h ;выделяем прерывание IRQ5

cp buf,#0h

jr  eq,WaitT1 ;если бит не установлен, то ждем 

and IRQ,#0DFh ;сброс прерывания

call BitIn

 

jp WaitT1  ;ожидаем завершение передачи

;***** Процедуры и функции *****

;

Err: ld ParaL,#LOW NN ;загрузка постоянной цикла ошибки

ld ParaL,#HIGH NN

ret

;*****Определение принятого кода*****

ActivUstr:

and TMR,#0F7h  ;запретить счёт

 

or cod,#80h

ld p0,#0FFh  ;выключаем активное устройство

ld p1,#0FFh  ;выключаем активное устройство

cp cod,#11100000b                ;код клавиши 0

jr ne, k1

ld p0,#11111110b                 ;включаем устройство 0

jp Fin

k1:

cp cod,#11000010b      ;код клавиши 1

jr ne, k2

ld p0,#11111101b     ;включаем устройство 1

jp Fin

k2:

cp cod,#11000100b      ;код клавиши 2

jr ne, k3

ld p0,#11111011b   ;включаем устройство 2

jp Fin

k3:

cp cod,#11100110b  ;код клавиши 3

jr ne, k4

ld p0,#11110111b   ;включаем устройство 3

jp Fin

k4:

cp cod,#11001000b  ;код клавиши 4

jr ne, k5

ld p0,#11101111b   ;включаем устройство 4

jp Fin

k5:

cp cod,#11101010b  ;код клавиши 5

jr ne, k6

ld p0,#11011111b   ;включаем устройство 5

jp Fin

k6:

cp cod,#11101100b  ;код клавиши 6

jr ne, k7

ld p0,#10111111b   ;включаем устройство 6

jp Fin

k7:

cp cod,#11001110b  ;код клавиши 7

jr ne, err

ld p0,#01111111b   ;включаем устройство 7

jp Fin

k8:

cp cod,#11010000b  ;код клавиши 8

jr ne, err

ld p1,#11111110b   ;включаем устройство 8

jp Fin

k9:

cp cod,#11010010b  ;код клавиши 9

jr ne, err

ld p1,#11111101b   ;включаем устройство 9

jp Fin

err:

jp  Fin

 

Fin:

jp Start   

 

;*****Приём одного бита*****

BitIn: 

push RP

 

ld buf,P2  ;чтение порта Р2

 

and buf,#1h  ;маскирование

cp buf,#0h  ;если 0 то переход на установку 0 

jr  eq,SetZero

 

cp N,#7h  ;если это первый бит, значит передача еще не началась

jr  eq,BitInExit  ;выход

 

rrc cod  ;сдвигаем код вправо

or cod,#40h ;установка 7 бита в 1

jp NextBit

SetZero:   

rrc cod  ;сдвигаем код вправо

and cod,#0BFh ;установка 7 бита в 0

NextBit:

and cod,#3Fh

dec N  ;декремент счётчика битов

BitInExit:

pop RP

ret

 

.end

 

    1. Выводы по разделу

В разделе приведено краткое описание процесса разработки программного обеспечения на основе рекомендованных специализированных средств.

 

  1. Оценка качества программного обеспечения

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

В качестве основных моделей расчета используется:

  1. Метрики сложности потока управления программ:

− модель Маккейба (цикломатическое число);

− модель подсчета точек пересечения.

  1. Метрики размера программ:

− количество операторов в программе;

− метрика Холстеда;

− метрика Джилба.

  1. Метрики сложности потока данных и стилистики программы:

− спен (число обращений к данных внутри программных модулей);

− метрика Чепина;

− метрика стилистики и понятности программ.

  1. Метрики оценки надежности программ и прогнозирования отказов на ранних этапах разработки сложности потока данных и стилистики программы:

− простая и модифицированная модели Холстеда;

− параметрическая модель

− интенсивность отказов

− вероятность безотказной работы.

    1. Цикломатическое число Маккейба

 

Программу представляют в виде управляющего ориентированного графа G=(W,E), где W - вершины, соответствующие операторам, а Е - дуги, соответствующие переходам. В дуге (u,v) вершина v является исходной, а u - конечной. Маккейбом предложено метрикой сложности считать цикломатическую сложность графа программы, характеризующую трудоемкость тестирования программы. Для вычисления цикломатического числа Маккейба применяется формула:

(4.1)

где

e – число дуг ориентированного  графа G;

w – число вершин;   

p – число компонентов связности  графа


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

Разработанная программа представляет собой цикл, поэтому является сильносвязным графом (рисунок 4.1).

В соответствии с формулой (4.1) цикломатическое число Маккейба:

(4.2)


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

 

 

 

 

Рисунок 4.1 – Управляющий ориентированный граф

 

    1. Метрика “подсчет точек пересечения”

 

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

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

 

    1. Оценка сложности и надежности ПС по окончании кодирования

Рассматриваемые метрики программ основаны на анализе исходных текстов программ и графов программ.

Метрики размера программ

1. Метрика Холстеда

Основу метрики Холстеда составляют четыре измеряемых характеристики программы:

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

n2 – число различающихся операндов  программы (словарь операндов);

N1 – общее число операторов  в программе;

N2 – общее число операндов  в программе.

Опираясь на эти характеристики, вводятся следующие оценки:

– словарь программы n = n1 + n2;        

– длина программы N = N1 + N2;        

– объем программы V = N*log2 (n).      

Для решения этой и ряда других задач понадобится статистическая информация о количестве операторов и операндов в программе – таблица 4.1.

 

 

Таблица 4.1 – Номенклатура и количество операторов и операндов в тексте программы

  Операторы

Операнды

№ п/п

Мнемоника

Количество

Объем, байт

Объем * кол-во,

байт

№ п/п

Мнемоника

Количество

1

ld

21

2

42

1

WaitT1

3

2

wdt

2

1

2

2

Start

4

3

cp

15

2

30

3

eq

5

4

jr

15

2

30

4

buf

6

5

clr

1

2

2

5

BitIn

4

6

jp

14

3

42

6

Err

5

7

ret

2

1

2

7

ParaL

2

8

pop

1

2

2

8

TMR

1

9

rrc

2

2

4

9

cod

16

10

dec

1

2

2

10

p0

9

11

and

3

2

6

11

p1

3

12

or

1

2

2

12

ne

10

13

call

1

3

3

13

Fin

12

14

push

1

2

2

14

RP

2

         

15

N

3

         

16

k1

2

         

17

k2

2

         

18

k3

2

         

19

k4

2

         

20

k5

2

         

21

k6

2

         

22

k7

2

         

23

k8

1

         

24

k9

1

         

25

SetZero

2

         

26

NextBit

2

 

Итого

80

 

171

 

Итого

105


 

 

 

 

 

Из таблицы 4.1 следует, что:

n1=14 – число различающихся операторов программы;

n2=26 – число различающихся операндов программы;

N1=80 – общее число операторов в программе;

N2=105 – общее число операндов в программе.

Следовательно,

словарь программы n = n1 + n2=14+26=40;

длина программы N = N1 + N2=80+105=185;

объем программы V = N×log2 (n)=185×log2 (40)=984.57;

объем использованной программной памяти, байт 171

объем использованной оперативной памяти, байт 40

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

(4.3)

(4.4)

где

VS ПЗУ = 512 – объем памяти программ микроконтроллера Z86Х02;

VS ОЗУ = 61 – объем памяти данных микроконтроллера Z86Х02.


2. Метрика Джилба

В метрике Джилба сложность программы определяется как насыщенность программы выражениями условного ветвления типа IF–THEN–ELSE. При этом вводятся следующие характеристики:

(4.5)

где

CL – количество операторов условия;

N1 –  общее число операторов  в программе;

cl – насыщенность программы  операторами условия (отношение  количества условных операторов к общему числу операторов в программе).


Из таблицы 4.1 следует, что

    1. CL=14 – количество операторов условного перехода jр, djnz;
    2. N1=80  – общее число операторов в программе.

Следовательно,

(4.6)


 

    1. Метрики сложности потока данных

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

1. Спен

Определение спена основывается на определении числа обращений к данным внутри каждого программного модуля. Спен – это число утверждений, содержащих данный идентификатор, между его первым и последним появлением в тексте программы. Следовательно, идентификатор, появившийся  k раз, имеет спен, равный k–1. Характеристикой программы является максимальный обнаруженный спен. Эта метрика характеризует сложность тестирования программы по исследуемому идентификатору. Если в программе обнаружен идентификатор, спен которого равен 100, тогда при построении трассы программы по этому идентификатору придется ввести тело программы, по крайней мере, 100 контролирующих утверждений, что усложняет тестирование и отладку.

Информация о работе Разработка структуры и программного обеспечения системы дистанционного управления техническим объектом по последовательному каналу свя