Типовая микропроцессорная система охраны и сигнализации

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

ествляется в порядке, описанном на рисунке 6.

 

 

 

mov al, Xal, 00111110B

jnz ALARM

 

 

 

al, Y

and al, 01110000B

cmp al, 00110000BALARM

 

 

1-я зона датчика объема:

mov al, Zal, 00011100B al, 00010100B

jg ALARM

2-я зона датчика объема:

DAT2:al, Zal, 11100000B al, 01000000B

jg ALARM

Рисунок 6 - Порядок опроса датчиков

Для опроса датчиков накладываем маски на регистры, в которые поступают данные от датчиков, и сравниваем их с необходимым признаком (срабатывание какого-либо датчика или превышение порога чувствительности), в случае совпадения с заданным признаком система переходит в режим тревоги. Причем 1-я зона датчика объема (внешняя) отключается в случае срабатывания датчика осадков.

 

6. Разработка специального программного обеспечения

 

 

model flat, stdcall

option casemap: none

\masm32\include\windows.inc\masm32\include\kernel32.inc\masm32\include\user32.inc; здесь объявление MessageBox\masm32\include\masm32.inc\masm32\include\debug.inc

\masm32\lib\kernel32.lib\masm32\lib\masm32.lib\masm32\lib\debug.lib\masm32\lib\user32.lib; здесь API-функция MessageBox

 

X byte 0; 8-пиновый разъём 1

Y byte 0; 8-пиновый разъём 2

Z byte 0; 8-пиновый разъём 3

R byte 1; кнопки брелка (сброс-1, охрана-2)

OutHandle DWORD 0; дескриптор стандартного устройства вывода

InHandle DWORD 0; дескриптор стандартного устройства ввода

BytesWritten DWORD?; число выведенных байтов

BytesRead DWORD?; число введённых байтов

InBuffer BYTE?; однобайтовый буфер ввода

Mode DWORD? ; режим работы клавиатуры

M byte?byte SBROSbyte Protectbyte ALARM DWORD 100h; частота звука в герцах (от 25h до 7FFFh)

dwDuration DWORD 3E8h; продолжительность звука в миллисекундах (1 сек. = 3E8h)

:

; - Определение дескрипторов -GetStdHandle, STD_OUTPUT_HANDLEOutHandle, eaxGetStdHandle, STD_INPUT_HANDLEInHandle, eax

; - Вывод на экран начального состония при запуске -

BEGIN:eax, 000C0027hSetConsoleCursorPosition, OutHandle, eax; установка курсораWriteConsole, OutHandle, offset L, lengthof L, offset BytesWritten, 0Beep, 900h, 3E8h/6Beep, 24h, 3E8h/32Beep, 950h, 3E8h/6Beep, 24h, 3E8h/32Beep, 530h, 3E8h/6Beep, 24h, 3E8h/8

Beep, 100h, 3E8h/6Beep, 24h, 3E8h/32Beep, 200h, 3E8h/6Beep, 24h, 3E8h/32Beep, 400h, 3E8h/6Beep, 24h, 3E8h/32

 

; - Управляющий алгоритм -

Opros:

Call ReadSensors

; - Вывод на экран слова Сброс-

; - Проверка нажата ли клавиша О-

cmp R, 1PROTECT

;-eax, 000C0027hSetConsoleCursorPosition, OutHandle, eax; установка курсораWriteConsole, OutHandle, offset L, lengthof L, offset BytesWritten, 0X, 0Y, 0Z, 0Beep, 930h, 3E8h/6Beep, 24h, 3E8h/16Beep, 950h, 3E8h/6

Opros

; - Вывод на экран слова Protect-

PROTECT:eax, 000C0027hSetConsoleCursorPosition, OutHandle, eax; установка курсораWriteConsole, OutHandle, offset D, lengthof D, offset BytesWritten, 0Beep, 130h, 3E8h/6Beep, 24h, 3E8h/32Beep, 150h, 3E8h/6Beep, 24h, 3E8h/32Beep, 70h, 3E8h/6

; invoke Beep, 24h, 3E8h/8

; invoke Beep, 250h, 3E8h/6

; invoke Beep, 24h, 3E8h/32

; invoke Beep, 300h, 3E8h/6

; invoke Beep, 24h, 3E8h/32

; invoke Beep, 200h, 3E8h/6

; invoke Beep, 24h, 3E8h/32

 

; - ОПРОС ДАТЧИКОВ-

 

Oprosd:

; проверка датчиков передних дверей, капота и багажника

mov al, Xal, 00111110B ALARM

 

; проверка датчика удара P>3

mov al, Yal, 01110000Bal, 00110000BALARM

 

; проверяем датчик осадковal, Zal, 00000001B DAT2

 

; проверка датчиков объёма первого уровня P>5

mov al, Zal, 00011100B al, 00010100B

jg ALARM

 

; проверка датчиков объёма второго уровня P>2

DAT2:al, Zal, 11100000Bal, 01000000BALARM

Opros

:eax, 000C0027hSetConsoleCursorPosition, OutHandle, eax; установка курсораWriteConsole, OutHandle, offset G, lengthof G, offset BytesWritten, 0

 

; -СИГНАЛ-

ecx, 0ecx, 2h:Beep, 900h, 3E8h/8Beep, 910h, 3E8h/16Beep, 920h, 3E8h/32Beep, 930h, 3E8h/64Beep, 940h, 3E8h/128Beep, 950h, 3E8h/264Beep, 960h, 3E8h/32Beep, 970h, 3E8h/32Beep, 980h, 3E8h/32Beep, 990h, 3E8h/32Beep, 1000h, 3E8h/32Beep, 1010h, 3E8h/32Beep, 1020h, 3E8h/32Beep, 1030h, 3E8h/32Beep, 1040h, 3E8h/32Beep, 1050h, 3E8h/32Beep, 1060h, 3E8h/32Beep, 1070h, 3E8h/32Beep, 1080h, 3E8h/32Beep, 1090h, 3E8h/32Beep, 1100h, 3E8h/32

Beep, 900h, 3E8h/8Beep, 910h, 3E8h/16Beep, 920h, 3E8h/32Beep, 930h, 3E8h/64Beep, 940h, 3E8h/128Beep, 950h, 3E8h/264Beep, 960h, 3E8h/32Beep, 970h, 3E8h/32Beep, 980h, 3E8h/32Beep, 990h, 3E8h/32Beep, 1000h, 3E8h/32Beep, 1010h, 3E8h/32Beep, 1020h, 3E8h/32Beep, 1030h, 3E8h/32Beep, 1040h, 3E8h/32Beep, 1050h, 3E8h/32Beep, 1060h, 3E8h/32Beep, 1070h, 3E8h/32Beep, 1080h, 3E8h/32Beep, 1090h, 3E8h/32Beep, 1100h, 3E8h/32

Beep, 900h, 3E8h/8Beep, 910h, 3E8h/16Beep, 920h, 3E8h/32Beep, 930h, 3E8h/64Beep, 940h, 3E8h/128Beep, 950h, 3E8h/264Beep, 960h, 3E8h/32Beep, 970h, 3E8h/32Beep, 980h, 3E8h/32Beep, 990h, 3E8h/32Beep, 1000h, 3E8h/32Beep, 1010h, 3E8h/32Beep, 1020h, 3E8h/32Beep, 1030h, 3E8h/32Beep, 1040h, 3E8h/32Beep, 1050h, 3E8h/32Beep, 1060h, 3E8h/32Beep, 1070h, 3E8h/32Beep, 1080h, 3E8h/32Beep, 1090h, 3E8h/32Beep, 1100h, 3E8h/32

Beep, 900h, 3E8h/8Beep, 910h, 3E8h/16Beep, 920h, 3E8h/32Beep, 930h, 3E8h/64Beep, 940h, 3E8h/128Beep, 950h, 3E8h/264Beep, 960h, 3E8h/32Beep, 970h, 3E8h/32Beep, 980h, 3E8h/32Beep, 990h, 3E8h/32Beep, 1000h, 3E8h/32Beep, 1010h, 3E8h/32Beep, 1020h, 3E8h/32Beep, 1030h, 3E8h/32Beep, 1040h, 3E8h/32Beep, 1050h, 3E8h/32Beep, 1060h, 3E8h/32Beep, 1070h, 3E8h/32Beep, 1080h, 3E8h/32Beep, 1090h, 3E8h/32Beep, 1100h, 3E8h/32

Beep, 900h, 3E8h/8Beep, 910h, 3E8h/16Beep, 920h, 3E8h/32Beep, 930h, 3E8h/64Beep, 940h, 3E8h/128Beep, 950h, 3E8h/264Beep, 960h, 3E8h/32Beep, 970h, 3E8h/32Beep, 980h, 3E8h/32Beep, 990h, 3E8h/32Beep, 1000h, 3E8h/32Beep, 1010h, 3E8h/32Beep, 1020h, 3E8h/32Beep, 1030h, 3E8h/32Beep, 1040h, 3E8h/32Beep, 1050h, 3E8h/32Beep, 1060h, 3E8h/32Beep, 1070h, 3E8h/32Beep, 1080h, 3E8h/32Beep, 1090h, 3E8h/32Beep, 1100h, 3E8h/32 R, 0

jmp Opros

; - Ввод одного символа без эха -

 

InputChar:GetConsoleMode, InHandle, offset Mode; сохранение флаговSetConsoleMode, InHandle, 0; отмена режима эхо-выводаReadConsole, InHandle, offset InBuffer, 1, offset BytesRead, 0SetConsoleMode, InHandle, Mode; восстановление режима

; - Эмулятор датчиков -

 

ReadSensors:InputChar

; - Контактные датчики -InBuffer, AX1X, 00000001b: cmp InBuffer, SX2X, 00000010b: cmp InBuffer, DX3X, 00000100b: cmp InBuffer, FX4X, 00001000b: cmp InBuffer, GX5X, 00010000b: cmp InBuffer, HX6X, 00100000b

; - Датчики битого стекла -

X6: cmp InBuffer, Z

jnz X7X, 01000000b: cmp InBuffer, XY0X, 10000000b: cmp InBuffer, CY1Y, 00000001b: cmp InBuffer, VY2Y, 00000010b: cmp InBuffer, BY3Y, 00000100b: cmp InBuffer, NY4Y, 00001000b

; - Датчик удара -: cmp InBuffer, QY5Y, 10001111b; Удар = 0: cmp InBuffer, WY6Y, 10001111bY, 00010000b; Удар = 1: cmp InBuffer, EY7Y, 10001111bY, 00100000b; Удар = 2: cmp InBuffer, RY8Y, 10001111bY, 00110000b; Удар = 3: cmp InBuffer, TY9Y, 10001111bY, 01000000b; Удар = 4: cmp InBuffer, YY10Y, 10001111bY, 01010000b; Удар = 5: cmp InBuffer, UY11Y,