Автор работы: Пользователь скрыл имя, 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
Разработка алгоритмического обеспечения системы передачи
Алгоритм работы передатчика микропроцессорной системы передачи данных начинается с программирования режима работы портов, указания начального адреса программы и стека. Далее происходит защита от дребезга при нажатии и при отпускании, и преобразование прочитанных кодов из портов Р2 и Р3 в удобный для последующей обработки вид. После выполнения подпрограммы ошибки происходит переход в начало программы.
Рисунок 2.1 – Алгоритм работы приёмника
Продолжение рисунка 2.1
На данном этапе была представлена блок схема программы, это дает возможность поэтапно просмотреть формирование работы передатчика и преступить к созданию программы на языке Assembler.
Разработка, трансляция и отладка программного обеспечения
;**********ПРИЁМНИК**********
;Физический протокол: асинхронный
;Метод обнаружения ошибки:
;Метод вывода:замещение
;Тип нагрузки:светодиоды
;
;***** Область данных *****
;
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
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
В разделе приведено краткое описание процесса разработки программного обеспечения на основе рекомендованных специализированных средств.
Оценка качества программного обеспечения
Раздел охватывает комплексную обобщенную первичную оценку разработанной программы с целью определения базовых показателей, позволяющих провести дальнейшую оптимизацию на последующих этапах жизненного цикла программного обеспечения.
В качестве основных моделей расчета используется:
− модель Маккейба (цикломатическое число);
− модель подсчета точек пересечения.
− количество операторов в программе;
− метрика Холстеда;
− метрика Джилба.
− спен (число обращений к данных внутри программных модулей);
− метрика Чепина;
− метрика стилистики и понятности программ.
− простая и модифицированная модели Холстеда;
− параметрическая модель
− интенсивность отказов
− вероятность безотказной работы.
Программу представляют в виде управляющего ориентированного графа G=(W,E), где W - вершины, соответствующие операторам, а Е - дуги, соответствующие переходам. В дуге (u,v) вершина v является исходной, а u - конечной. Маккейбом предложено метрикой сложности считать цикломатическую сложность графа программы, характеризующую трудоемкость тестирования программы. Для вычисления цикломатического числа Маккейба применяется формула:
(4.1) | ||
где |
e – число дуг ориентированного графа G; w – число вершин; p – число компонентов связности графа |
Число компонентов связности графа можно рассматривать как количество дуг, которые необходимо добавить для преобразования графа в сильно-связный. Сильносвязным называется граф, любые две вершины которого взаимно достижимы. Для графов корректных программ, т.е. графов, не имеющих недостижимых от точки входа участков и “висячих” точек входа и выхода, сильносвязный граф, как правило, получается путем замыкания дугой вершины, обозначающей конец программы, на вершину, обозначающую точку входа в эту программу.
Разработанная программа представляет собой цикл, поэтому является сильносвязным графом (рисунок 4.1).
В соответствии с формулой (4.1) цикломатическое число Маккейба:
(4.2) |
Таким образом, цикломатическое число Маккейба показывает количество тестовых прогонов программы, необходимых для исчерпывающего тестирования по критерию “работает каждая ветвь”.
Рисунок 4.1 – Управляющий ориентированный граф
Метрика ориентирована на анализ программ, при создании которых использовалось неструктурное кодирование на таких языках, как язык ассемб-лера и фортран. Метрика оценивает сложность программы в зависимости от ме-стоположения управляющих переходов, от количества пересечений дуг управ-ляющего графа.
Количество точек пересечения дуг графа дает характеристику неструк-турированности программы. Из рисунка 4.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 следует, что
Следовательно,
(4.6) |
Метрики сложности потока данных оценивают сложность программ с точки зрения использования, конфигурации и размещения данных в программе. К этим инструментам относятся спен и метрика Чепина.
1. Спен
Определение спена основывается на определении числа обращений к данным внутри каждого программного модуля. Спен – это число утверждений, содержащих данный идентификатор, между его первым и последним появлением в тексте программы. Следовательно, идентификатор, появившийся k раз, имеет спен, равный k–1. Характеристикой программы является максимальный обнаруженный спен. Эта метрика характеризует сложность тестирования программы по исследуемому идентификатору. Если в программе обнаружен идентификатор, спен которого равен 100, тогда при построении трассы программы по этому идентификатору придется ввести тело программы, по крайней мере, 100 контролирующих утверждений, что усложняет тестирование и отладку.