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

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

Читать книгу Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С, Стивен Барретт . Жанр: Программирование.
Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Название: Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
ISBN: -
Год: -
Дата добавления: 3 июль 2019
Количество просмотров: 162
(18+) Внимание! Книга может содержать контент только для совершеннолетних. Для несовершеннолетних просмотр данного контента СТРОГО ЗАПРЕЩЕН! Если в книге присутствует наличие пропаганды ЛГБТ и другого, запрещенного контента - просьба написать на почту для удаления материала.
Читать онлайн

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

Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - читать онлайн , автор Стивен Барретт
В книге последовательно рассматриваются все этапы создания встраиваемых систем на микроконтроллерах с применением современных технологий проектирования. Задумав эту книгу, авторы поставили перед собой задачу научить читателя искусству создания реальных устройств управления на однокристальных микроконтроллерах. Издание содержит материал, охватывающий все вопросы проектирования, включает множество заданий для самостоятельной работы, примеры программирования, примеры аппаратных решений и эксперименты по исследованию работы различных подсистем микроконтроллеров. Данная книга является прекрасным учебным пособием для студентов старших курсов технических университетов, которые предполагают связать свою профессиональную деятельность с проектированием и внедрением встраиваемых микропроцессорных систем. Книга также будет полезна разработчикам радиоэлектронной аппаратуры на микроконтроллерах.
Перейти на страницу:

Таблица 7.1. Правила фаззификации, позволяющие преобразовать входные переменные в выходные

Мы использовали общий метод минимакса, показанный на рис. 7.34, чтобы получить значения членства для выходных переменных. То есть наибольшее из значений членства входных функций отображается в соответствующей выходной функции. Если после применения всех правил, и выходная функция имеет более одного значения, то для выходной функции выбирается наименьшее значение. Для дефаззификации выходного значения, все выходные функции и соответствующие значения членства используются, чтобы вычислить центральное выходное значение. Полученные значения выходных функций функций (показанные на оси X рис. 7.33), умножаются на значения членства, вычисленные по девяти правилам, результаты складываются и сумма делится на число членов. Конечное числовое значение и соответствующее сообщение распечатано на экране ЖК дисплее, чтобы сообщить пользователю состояние сеанса. Таким образом, для каждого сеанса, ЖК дисплей высвечивает три числа, характеризующих три типа активности вторжения: атаки на интерактивные сеансы туннелирования, атаки с помощью скриптов и внедрение видео и аудио потоков.

Рис. 7.34. Процедуры передачи членства оценивают, используя метод Минимакса

7.6.6. Обсуждение проекта

В последнее время среди различных систем обнаружения вторжения наибольший интерес проявляется к системе обнаружения атак на туннелирование HTTP. Основной причиной такого внимания служит широкое распространение трафика HTTP в Internet. Большинство брандмейстеров не выполняет обширных проверок, чтобы проверить все атаки на туннелирование HTTP. Такие проверки весьма трудоемки, поскольку трафик HTTP составляет наибольшую часть приходящего и уходящего трафика для любой большой организации.

Микроконтроллерная система может взять на себя часть функций системы обнаружения вторжения, связанных с атаками на туннелирование HTTP. Система использует свойства сессии, чтобы проверить данные трафика Internet, которые составляют сессию Internet — программные связи между двумя компьютерами для передачи данных. Хорошим примером сессии является набор адреса сети в браузере. Ваш компьютер запрашивает сессию у ведущего компьютера, который содержит страницу сети, которая вам необходима. Как только вы закрываете веб-сайт и переходите к другому сайту, вы закрываете одну сессию и запускаете другую.

7.6.7. Программный код

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

// Файл: micro.с

// Функция программы: Устанавливает шесть IDS оценок членства и создает

// оценку опасности вторжения

// Авторы: Даниэль Пак, Барри Муллинз, Стив Барретт

// Дата создания: 17 июня 2004

// Установки: Program=0x1000, Data=0x3000, Stack=0x4000

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

#include <stdio.h>

#include "hcs12dp256.h"

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

//функции поддержки

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

// _HC12Setup: выключить сторожевой таймер COP

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

void _HC12Setup(void) {

 COPCTL = 0x00; // выключить сторожевой таймер COP

}

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

//delay: подпрограмма задержки

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

void delay(void) { //подпрограмма задержки

 volatile unsigned n, m;

 m = 10;

 do {

  n = 0;

  do {

   n--;

  } while(n);

  m--;

 } while(m);

}

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

// status_wait: время ожидания подпрограмма установки связи с ЖКД

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

void status_wait(void) { //время ожидания подпрограмма установки связи с ЖК дисплеем

 char temp = 0x00;

 DDRA = 0x00;

 PORTB = 0xF9;

 while ((temp & 0x03) != 0x03) {

  PORTB = 0xFF;

  temp = PORTA;

  PORTB = 0xF9;

 }

 PORTB = 0xFF;

 DDRA = 0xFF;

}

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

// command: пересылка команд на ЖК дисплей

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

void command(unsigned char n) { // пересылка команд на ЖК дисплей

 status_wait();

 PORTA = n;

 PORTB = 0xFF;

 PORTB = PORTB & 0xFA;

 PORTB = 0xFF;

}

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

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

//data: пересылка данных на ЖК дисплей

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

void data(unsigned char n) { // пересылка данных на ЖК дисплей

 status_wait();

 PORTA = n;

 PORTB = PORTB & 0xF2;

 PORTB = 0xFF;

}

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

// LCD_char: функция пересылки символа на ЖК дисплей

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

void LCD_char(unsigned char n) {

 // функция пересылки символа на ЖК дисплей

 data(n - 0x20);

 command(0xC0);

}

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

// newline: пересылка новой строки на ЖК дисплей

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

void newline(void) {

 // пересылка новой строки на ЖК дисплей

 int i;

 for (i=0; i<16; i++) LCD_char(' ');

}

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

// LCD_output: пересылка последовательности символов на ЖК дисплей

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

void LCD_output(char s[]) {

 // пересылка последовательности символов на ЖК дисплей

 int n = 0;

 while (s[n] != '') {

  LCD_char(s[n]);

  ++n;

 }

}

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

// Reset_cursor: возврат курсора

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

void Reset_cursor(void) { // возврат курсора

 data(0x00);

 data(0x10);

 command(0x24);

}

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

//Clearscreen: очистка экрана ЖКД

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

void Clearscreen(void) { // очистка экрана ЖКД

 int i,j;

 Reset_cursor();

 for (i=0; i<16; i++) for(j=0; j<16; j++) LCD_char(' ');

 Reset_cursor();

}

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

// Initlcd: инициализация ЖКД

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

void Initlcd(void) { // инициализация ЖКД

 PORTB = 0xEF; //принудительный сброс

 delay();

 PORTB = 0xFF; //все линии команд на высоком уровне

 status_wait();

 command(0x80); // установить режим текста

 data(0x00); // установить младший байт адреса текста (L)

 data(0x10); // установить младший байт адреса текста (H)

 command(0x40); //установить адрес команды текста

 data(0x10); //установить область текста

 data(0x00);

 command(0x41);

 command(0x94); //включить текстовый дисплей

 command(0xA7); //курсор 8×8 позиций

 Clearscreen();

 Reset_cursor();

}

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

// InitMes: начальное сообщение

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

void InitMes(void) { // начальное сообщение

 unsigned char k;

 for(k=0; k<3; k++) newline();

 LCD_output(" Portable HTTP");

 newline();

 LCD_output(" TAD System.");

 newline();

 LCD_output(" version 1.0");

}

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

// numdisplay: отображение чисел на ЖК дисплее

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

void numdisplay(char s) { //отображение чисел на ЖК дисплее

 char k;

 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,

Перейти на страницу:
Комментарии (0)