#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
В этой главе мы познакомили вас с концепциями операционных систем реального времени. Мы не хотели выбирать конкретные ОСРВ и затем рассматривать их работу. Вместо этого, мы сосредоточились на концепциях, связанных с самими ОСРВ и на ключевых вопросах их применения. Мы рассмотрели терминологию ОСРВ, структуры данных, алгоритмы планирования и затруднения, встречающиеся при разработке этих систем.
1. Barrett S. F, D. J. Pack, С Straley, L. Sircin, and G. Janack. «Real-Time Operating Systems: A Visual Simulator.» Paper presented at the annual meeting of the American Society for Engineering Educations, June 2004.
2. Ganssle, J. «Writing a Real-Time Operating System-Part I: A Multitasking Event Scheduler for the HD64180.» Circuit Cellar Ink (January/February 1989): 41–51.
3. Ganssle, J. «Writing a Real-Time Operating System-Part II: Memory Management and Applications for the HD64180.» Circuit Cellar Ink (March/April 1989): 30–33.
4. Ganssle, J. «An OS in a CAN.» Embedded Systems Programming (January 1994): 1–6. ImageCraft Creations, Inc. «ICC12, ImageCraft С Compiler and Development Environment for Motorola HC12.» 2001.
5. Korsch, J. F., and L. J. Garrett. Data Structures, Algorithms, and Program Style Using С. Boston: PWS-Kent Publishing Company, 1988.
6. Labrosse, J. J. Micro C/OS-II The Real-Time Kernel, 2nd ed. Lawrence, KS: CMP Books, 2002.
7. Lafore, R. The Waite Group's Microsoft С Programming for the PC, 2nd ed. Carmel, IN, Howard W. Sams and Company, 1990.
8. Laplante, P. Real-Time Systems Design and Analysis: An Engineer's Handbook. New York: IEEE Computer Society Press, 1993.
9. Miller, G. H. Microcomputer Engineering, 2nd ed. Englewood Cliffs, NJ: Pearson Education, 1998.
10. Moore, R. How to Use a Real-time Multitasking Kernels in Embedded Systems, Costa Mesa, CA: Micro Digital Associates, 2001.
11. Motorola Inc. «68HC12 M68EVB912B32 Evaluation Board User's Manual.» Motorola Document 68EVB912B32 UM/D, 1997.
12. Motorola Inc. «HC12 M68HC12B Family Advance Information.» Motorola Document M68HC12B/D, 2000.
13. Pack, D. J., and S. F. Barrett. 68HC12 Microcontroller: Theory and Applications. Upper Saddle River, NJ: Prentice Hall, 2002.
Основные
1. Что такое — ОСРВ?
2. Что называется задачей в системах реального времени?
3. Что такое контекст задачи? Приведите конкретные примеры содержимого контекста задачи.
4. Опишите действия, которые ОСРВ должен выполнить относительно задачи.
Читать дальше