- •Отчет по курсовой работе
- •2. Структурная схема системы.
- •3. Реализация логической функции.
- •3.1. Метод с использованием условных переходов.
- •3.2. Метод с использованием булевых операций.
- •3.3. Табличный метод.
- •3.4. Сравнение методов.
- •4. Карта распределения адресных пространств.
- •4. Оценка характеристик работы системы.
3.1. Метод с использованием условных переходов.
Для заданной функции блок-схема одной итерации алгоритма расчета выглядит следующим образом:

Рис. 2. Блок-схема алгоритма на основе условных переходов.
В качестве комментариев в блок-схеме указаны названия соответствующих меток в программном коде для простоты сопоставления схемы и кода. Программный код для данного алгоритма приведен в листинге 1.
3.2. Метод с использованием булевых операций.
Данный метод представляет собой последовательное использование логических битовых операций над исходными данными. Программная реализация приведена в листинге 2.
3.3. Табличный метод.
Позволяет выдавать на выход заранее предопределенные в таблице данные. При этом входные данные являются адресом строки таблицы. Программная реализация приведена в листинге 3.
3.4. Сравнение методов.
В таблице 3 приведены достоинства и недостатки каждого метода.
Таблица 3.
|
Метод |
Достоинства |
Недостатки |
|
Условные переходы |
|
Тяжело реализовывать. Непостоянная скорость получения результата |
|
Булевы операции |
Прост в реализации |
|
|
Табличный метод |
Быстрый при большом количестве переменных |
Сложность реализации Низкая скорость при небольшом числе перемнных |
В таблице 4 приведены замеры времени выполнения одной итерации каждого алгоритма.
Таблица 4.
|
Метод |
Время выполнения |
|
Условные переходы |
11 – 20 мкс |
|
Булевы операции |
16 мкс |
|
Табличный метод |
10 мкс |
Вывод:
Самый быстрый метод в данных условиях – табличный. Кроме того, он имеет постоянную скорость выполнения одной итерации.
4. Карта распределения адресных пространств.
Память данных:
|
Адрес |
Значение |
|
0x20 |
Текущая нажатая клавиша на клавиатуре (FF – не нажата) |
|
0x21 |
Нажата новая клавиша: 0 – не нажата, 1 – можно считывать код клавиши, 2 – повторное считывание, игнорировать (клавиша зажата) |
|
0x22 |
Текущее набранное значение на клавиатуре (2 байта) |
|
0x23 |
Параметр K для работы с АЦП. |
|
0x24 |
Параметр U1 |
|
0x25 |
Параметр U2 |
|
0x26 |
Параметр T1 |
|
0x27 |
Параметр T2 |
|
0x28 |
Параметр T3 |
|
0x29 |
Timer 0 – код операции по переполнению (1 – установить y1 на 100 мкс, 2 – установить y23 на 120 мкс) |
|
0x2A |
Предыдущее значение Y1 |
|
0x2B |
Хранение Q |
|
0х2С |
Запрет работы двигателя (bool) |
|
0x2D |
Tmin – температура |
|
0x2E |
Tmax – температура |
|
0x2F |
Средняя температура |
|
0x30 |
Время работы первого насоса |
|
0x31 |
Время работы второго насоса |
|
0x32 |
Предыдущий статус насосов |
|
0x33 |
Счетчик числа переполнений Timer0 в режиме световой индикации |
Память программы:
|
0000h |
Стартовый код |
|
0003h |
Обработчик внешнего прерывания 0 |
|
000Bh |
Обработчик прерывания таймера 0 |
|
0013h |
Обработчик внешнего прерывания 1 |
|
0050h 0378h |
Код программы
|
Всего занято:
Памяти данных: 19 байт + 2 банка регистров (по 8 байт) + стек.
Памяти программы: 903 байта.
