Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Проектирование программной части




 

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

В соответствии с функционально модульной структурой процедура MAIN будет иметь вид:

MAIN()

{

ИНИЦИАЛИЗАЦИЯ СИСТЕМЫ();

РАЗРЕШЕНИЕ ОБЩЕГО ПРЕРЫВАНИЯ();

while (1)

{

ПРОВЕРКА ();

СБРОС WDT();

}

}

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

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

ИНИЦИАЛИЗАЦИЯ()

{

Установка портов на ввод/вывод и задание выходного вектора;

Настройка постоянного времени охранного таймера;

Настройка системы прерывания, разрешение отдельных прерываний;

}

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

Модульпроверкипроверяет состояние флага занятости индикатора. Если флаг не установлен, то запускается одна из процедур в выходном модуле. Эти процедуры содержатся в выходном модуле, такие как запись команды, запись данных и вывод информации на ЖКИ.

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

ПРОВЕРКА()

{

Если флаг занятости не установлен, то выполнить

{

ВЫХОДНОЙ (параметры);

}

}

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

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

ВХОДНОЙ()

{

Посылка команды

Вывод данных

}

Выходноймодуль устанавливает выходной вектор на выходной порт микроконтроллера. Данные сигналы управляют ЖКИ т.е. выводят информацию на индикатор.

ВЫХОДНОЙ

(параметры)

{

/* начало процедуры*/

Установка на порту выходного вектора;

}

/* возврат


 





Поделиться с друзьями:


Дата добавления: 2017-04-14; Мы поможем в написании ваших работ!; просмотров: 277 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Ваше время ограничено, не тратьте его, живя чужой жизнью © Стив Джобс
==> читать все изречения...

2264 - | 2207 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.