Чтение онлайн

на главную - закладки

Жанры

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С

Пак Дэниэл Дж.

Шрифт:

Алгоритм программы на UML для реализации этой функции представлен на рис. 8.24.

Рис. 8.24. Алгоритм UML для функции update_task_status

//******************************************************************

//имя файла: realtime.с

//авторы: Steve Barrett and Daniel Pack

//разработан: 1
июля, 2004

//последняя редакция: 1 июля, 2004

//******************************************************************

//включенные файлы ****************************************

#include <912b32.h>

//функции-прототипы****************************************

void initialize_ports(void); //инициализация портов

void initialize_LCD(void); //инициализация ЖКД

void putchars(unsigned char); //функция поддержки ЖКД - ввести символ

void putcommands(unsigned char); // функция поддержки ЖКД - ввести команду

void delay_5ms(void); //задержка на 5 мс

void delay_100us(void); //задержка на 100 мкс

void update_task_status(unsigned char task, char task_status);

//изменить состояние задачи

//глобальные переменные************************************************

//главная программа****************************************************

void main(void) {

 asm(" .area vectors(abs)\n" //inline assembly statement

" .org 0xFFF8\n" //initialize 68HC12 B32 reset vector

" .word 0x8000, 0x8000, 0x8000, 0x8000\n"

" .text");

 initialize_ports; //инициализировать порты

 initialize_LCD; // инициализировать ЖКД

 update_task_status(0x00, 'R') ; //изменить состояние задачи

}

//******************************************************************

//initialize_ports: provides initial configuration for I/O ports

//******************************************************************

void initialize_ports(void) {

 DDRA = 0xFF; //установить PORTA как выходной - управляющие линии

// демультиплексора

 DDRT = 0xFF; // установить PORTT как выходной - состояние задачи

 DDRB = 0xFF; // установить PORTB как выходной - порт данных для ЖКД

 CTDRDLC = 0xFF; //
установить PORT DLC как выходной - сигналы

//управления для ЖКД

 DDRP = 0x0F; // установить PORTP[3:0] как выходной, PORT[7:4] как

//входной - для клавиатуры

 PORTA = 0xFF; //установить для PORTA все линии декодера высокоомными (Hi-Z)

}

/****************************************************************/

/****************************************************************/

/*update_task_status: изменить состояние конкретной задачи */

/*в соответствии с допустимым переходом (рис. 8.14) */

/****************************************************************/

void update_task_status(unsigned char task, char task_status) {

 //установить состояние задачи на выходе порта T

 switch(task_status) {

 case 'D': //бездействие (D)

PORTT = 0x01;

break;

 case 'R': //готовность (R)

PORTT = 0x02;

break;

 case 'A': //активность (A)

PORTT = 0x04;

break;

 case'W': //ожидание (W)

PORTT = 0x08;

break;

 case 'S': // приостановка(S)

PORTT = 0x10;

break;

 case 'X': //восстановление (X)

PORTT = 0x20;

break;

 }

 PORTA = task & 0x7F; /*выбор задачи, активизируйте декодер */

 PORTA = 0xFF /*Высокоомный выход (Hi-Z) декодера */

}

/****************************************************************/

/****************************************************************/

8.11.Заключение по главе 8

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

8.12. Что еще почитать? 

Поделиться:
Популярные книги

Черный дембель. Часть 2

Федин Андрей Анатольевич
2. Черный дембель
Фантастика:
попаданцы
альтернативная история
4.25
рейтинг книги
Черный дембель. Часть 2

Кодекс Крови. Книга ХIV

Борзых М.
14. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХIV

Магия чистых душ 3

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Магия чистых душ 3

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Усадьба леди Анны

Ром Полина
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Усадьба леди Анны

Измена. Возвращение любви!

Леманн Анастасия
3. Измены
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Возвращение любви!

Два лика Ирэн

Ром Полина
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Два лика Ирэн

Опасная любовь командора

Муратова Ульяна
1. Проклятые луной
Фантастика:
фэнтези
5.00
рейтинг книги
Опасная любовь командора

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Мымра!

Фад Диана
1. Мымрики
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Мымра!

Таня Гроттер и магический контрабас

Емец Дмитрий Александрович
1. Таня Гроттер
Фантастика:
фэнтези
8.52
рейтинг книги
Таня Гроттер и магический контрабас

Имперский Курьер

Бо Вова
1. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Имперский Курьер

Страж. Тетралогия

Пехов Алексей Юрьевич
Страж
Фантастика:
фэнтези
9.11
рейтинг книги
Страж. Тетралогия

Сердце дракона. Танец с врагом

Серганова Татьяна
2. Танец с врагом
Любовные романы:
любовно-фантастические романы
5.25
рейтинг книги
Сердце дракона. Танец с врагом