Категории
Самые читаемые
onlinekniga.com » Компьютеры и Интернет » Программирование » Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 113 114 115 116 117 118 119 120 121 ... 150
Перейти на страницу:

 newline();

 k = s;

 s = s>>4;

 if (s > 0x08) data(s + 0x17);

 else data(s + 0x10);

 command(0xC0);

 k = k & 0x0F;

 if (k > 0x08) data(k + 0x17);

 else data(k + 0x10);

 command(0xC0);

}

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

// Секция данных - инициализация табличных данных

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

#pragma abs_address 0x3000

char BeP[12] = {0x00, 0x70, 0x00, 0x10,

 0x40, 0xC0, 0x10, 0x10,

 0x90, 0xFF, 0x10, 0x00};

char KeM[12] = {0x00, 0x70, 0x00, 0x10,

 0x40, 0xC0, 0x10, 0x10,

 0x90, 0xFF, 0x10, 0x00};

char OT[5] = {0x40, 0x60, 0x80, 0xA0, 0xC0};

char IMV[6] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

char OMV[5] = {0x00, 0x00, 0x00, 0x00, 0x00};

// правило

char rules[45] = {0x00,0x03,0xFE,0x06, 0xFE,

 0x00, 0x04, 0xFE, 0x07, 0xFE,

 0x00, 0x05, 0xFE, 0x08, 0xFE,

 0x01, 0x03, 0xFE, 0x07, 0xFE,

 0x01, 0x04, 0xFE, 0x08, 0xFE,

 0x01, 0x05, 0xFE, 0x09, 0xFE,

 0x02, 0x03, 0xFE, 0x08, 0xFE,

 0x02, 0x04, 0xFE, 0x09, 0xFE,

 0x02, 0x05, 0xFE, 0x0A, 0xFF};

char result[3] = (0x00, 0x00, 0x00};

#pragma end_abs_address

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

//Основная программа

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

void main(void) {

 int index;

 char temp = 0x00;

 /* определение интерактивного туннелирования */

 asm("LDX #$3000");

 asm("LDY #$301D");

 asm("LDAA $4000"); //оценка профиля поведения

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDAA $4001"); //оценка членства ключевых слов

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDY #$301D");

 asm("LDX #$3028");

 asm("LDAA #$FF"); //инициализация минимума и бита V

 asm("REV"); //применение правил фаззификации

 asm("LDX #$3018"); //дефаззификация

 asm("LDY #$3023");

 asm("LDAB #$05");

 asm("WAV");

 asm("EDIV");

 asm("TFR Y,D");

 asm("STAB $3055"); //сохранение результата

 PORTB = 0xff;

 DDRB = 0xff;

 delay2();

 PORTB = 0x7F; //проверка платы с использованием ЖКД

 delay2();

 PORTB = 0xFF;

 /*Определение туннелирования скриптов*/

 asm("LDX #$3000");

 asm("LDY #$301D");

 asm("LDAA $4002"); //оценка профиля поведения

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDAA #$PF"); //оценка членства ключевых слов

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDY #$301D");

 asm("$3028");

 asm("$4003"); //инициализация минимума и бита V

 asm("REV"); //применение правил фаззификации

 asm("LDX #$3018"); //дефаззификация

 asm("LDY #$3023");

 asm("LDAB #$05");

 asm("WAV");

 asm("EDIV");

 asm("TFR Y,D");

 asm("STAB $3056"); //сохранение результата

 PORTB = 0xff;

 DDRB = 0xff;

 delay2();

 PORTB = 0x7F; //проверка платы с использованием ЖКД

 delay2();

 PORTB = 0xFF;

 /*Проверка внедрения потоков*/

 asm("LDX #$3000");

 asm("LDY #$301D");

 asm("LDAA $4004"); //оценка профиля поведения

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDAA $4005"); //оценка членства для ключевых слов

 asm("MEM");

 asm("MEM");

 asm("MEM"); //фаззификация

 asm("LDY #$301D");

 asm("LDX #$3028");

 asm("LDAA $4003"); //инициализация минимума и бита V

 asm("REV"); //применение правил фаззификации

 asm("LDX #$3018"); //дефаззификация

 asm("LDY #$3023");

 asm("LDAB #$05");

 asm("WAV");

 asm("EDIV");

 asm("TFR Y,D");

 asm("STAB $3057"); //сохранение результата

 PORTB = 0xff;

 DDRB = 0xff;

 delay2();

 PORTB = 0x7F; //проверка платы с использованием ЖКД

 delay2();

 PORTB = 0xFF;

 //Конфигурация ЖКД

 DDRA = 0xFF;

 PORTB = 0xFF,

 Initlcd(); //Инициализация ЖКД

 InitMes(); //Инициализация сообщений

 delay2();

 Clearscreen(); //Очистить экран ЖКД

 Reset_cursor; //Возврат курсора ЖКД

 newline(); //Создать новую строку на ЖКД

 newline();

 LCD_Output("IA: ");

 numdisplay(result[0]);

 if (result[0] > 0xA0) //Вывести на дисплей предупреждение

  LCD_output(" High Alert");

 else if (result[0] > 0x60) LCD_output(" Med Alert");

 else LCD_output(" Low Alert");

 newline();

 LCD_output("SA: ");

 numdisplay(result[1]);

 if (result[0] > 0xA0) LCD_output(" High Alert");

 else if (result[1] > 0x60) LCD_output(" Med Alert");

 else LCD_output(" Low Alert");

 newline();

 LCD_output{"S: ");

 numdisplay(result[2]);

 if (result[2] > 0xA0) LCD_output(" High Alert");

 else if (result[0] > 0x60) LCD_output(" Med Alert");

 else LCD_output(" Low Alert");

}

//====================================================================

7.6.8. Некоторые комментарии

Вы можете задать вопрос о необходимости иметь отдельную микроконтроллерную систему HTTP TAD. Почему бы просто не включить функцию системы HTTP TAD в состав стандартной системы обнаружения «злоумышленника»? Цель упражнения состоит в том, чтобы показать большие возможности МК HCS12 и использование их в ряде проектов. Конечно, система, описанная в этом разделе, может быть включена в состав большой системы обнаружения «злоумышленника». Одно из преимуществ создания отдельной системы — мобильность. Это обеспечивает администраторов защиты гибким инструментом, чтобы изменять одиночную переносную систему и проверять несколько модулей внутри сети. Материалы для более подробного изучения систем информационной защиты мы вынесли в раздел «Что еще прочесть» в конце главы.

7.7. Электронная версия игры в «15» 

7.7.1. Описание проекта

Наверное, вы когда-нибудь передвигали фишки игры в «пятнадцать», показанной на рис. 7.35. Этой игрой дети развлекаются дома, в летних лагерях и в поездках на заднем сиденье автомобиля. Мы были свидетелями перевода целого ряда игр с передвижением фишек в электронную форму. В этом разделе мы представляем электронную версию игры в «пятнадцать». Проект был создан Скоттом Льюисом в качестве работы для получения звания «senior project design» старшего программиста.

Рис. 7.35. Игра в «15»

Цель игры заключается в следующем: необходимо упорядочить данный произвольно расположенный набор из 15 пронумерованных фишек и одного пустого промежутка, расположив фишки в порядке возрастания номеров (рис. 7.36 внизу справа). Сделать это необходимо, многократно повторяя операцию передвижения одной из соседних фишек на пустое место.

Рис. 7.36. Игра в «15». Левое поле показывает произвольное начальное состояние фишек, а на правом приведена окончательная позиция, достижение которой является целью игры

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

Требования к системе для игры в «15» следующие:

1. Использовать микроконтроллер;

2. Позволить пользователю идентифицировать номер фишки с помощью устройства ввода данных;

3. Позволить пользователю перемещать выбранную фишку на пустое поле;

4. Отображать текущие расположения всех фишек.

7.7.2. Системы HCS12 используемые в проекте

Этот проект использует различные модули 68HC12, и интерфейс, связывающий их с несколькими переключателями и графическим ЖК дисплеем.

7.7.3. Основы теории

Система использует отладочную плату 68HC12B32EVB, графический ЖК дисплей AND 1391, ИС внешнего ОЗУ (RAM 6264) и внешнего ПЗУ (EPROM 27256), а также программируемую ИС (GAL16V8), набор кнопок и ИС триггера защелки 74HC373. На рис. 7.37 показана структурная схема игровой системы. Хотя мы могли бы использовать внутреннюю память 68HC12, но для расширения опыта читателя мы использовали внешнюю память и расширенный режим работы микроконтроллера. Для создания соответствующих сигналов управления и декодирования адреса памяти, мы использовали программируемую ИС GAL16V8, включив ее между микросхемами памяти и МК. Интегральная схема GAL16V8 программируется так, чтобы ОЗУ размещалось в адресном пространстве начиная с $2000 и заканчивая $3FFF, а программируемое ПЗУ — в ячейках памяти с адресами $4000…$7FFF. Как вы увидите, программа, представленная в этом разделе, запускается из ОЗУ. Разместив программу во внешнем ПЗУ, можно сделать систему автономной.

1 ... 113 114 115 116 117 118 119 120 121 ... 150
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт.
Комментарии