Студопедия

Главная страница Случайная страница

Разделы сайта

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






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






 

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

// Файл: 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]! = '\0') {

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& #215; 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,

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");

}

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

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.