/
/
Системы охраны и сигнализации на основе микропроцессорного управления в настоящее время являются наиболее распространенным типом охранных устройств автомобилей. Причиной этому служит большая гибкость управления и лёгкая адаптация к внешним условиям благодаря возможности замены управляющей программы. При этом аппаратная часть систем охраны, выполняемая на основе микроконтроллера, является неизменяемой компонентой. В настоящее время в качестве микроконтроллеров систем охраны используются однокристальные микроконтроллеры фирм Intel, Atmel, MicroChip и др. В данном курсовом проекте в качестве ядра МПС используется микропроцессор Intel 80386.
1. Теоретические принципы разработки МПС охраны и сигнализации
микропроцессорный интерфейс сигнализация программа
Микропроцессорная система охраны и сигнализации содержит аппаратную часть, представленную микропроцессором, соединённым через интерфейсные схемы с датчиками и исполнительными устройствами, и программную часть, реализующую логику работы системы охраны и сигнализации. Управляющая программа включает в себя подпрограмму взаимодействия с датчиками и исполнительными устройствами и подпрограмму распознавания ситуации на основе логической обработки информации от датчиков. Основными исходными данными для проектирования и / или модернизации системы охраны и сигнализации являются перечень датчиков, их адреса в адресном пространстве микропроцессора, разрядность, способ подключения к МПС, протокол обмена данными. Основным средством для проектирования и отладки программной части является среда AFD. Датчики и радиобрелок системы охраны заменяются программным эмулятором.
Основные этапы разработки МПС охраны и сигнализации:
1. Выбор типа интерфейса для подключения датчиков и радиобрелка к МПС (интерфейс с общей шиной или интерфейс с изолированной шиной).
2. Определение режимов работы МПС, кодирование состояний.
3. Разработка графа и таблицы переходов состояний МПС.
4. Разработка аппаратного интерфейса МПС с датчиками и радиобрелком.
5. Разработка клавиатурного эмулятора датчика и эмулятора радиобрелка (при необходимости).
6. Выделение памяти для хранения текущих значений.
7. Кодирование состояний датчиков.
8. Разработка программ инициализации режимов работы МПС.
9. Разработка управляющих программ для всех режимов функционирования МПС.
10. Проведение тестовых испытаний.
Основными датчиками являются: контактные датчики закрытия дверей, капота, багажника; датчик включения зажигания; двухуровневый датчик удара, двухзонный датчик объёма, датчики обрыва питания, осадков и движения. Возможно также подключение дополнительных датчиков, вырабатывающих сигналы, аналогичные сигналам основных датчиков.
Опрос датчиков реализуется либо по прерыванию, либо программным методом. Анализ состояния датчиков осуществляется в конце каждого цикла опроса. Переход из одного режима работы МПС в другой осуществляется либо по сигналам от датчиков, либо по командам от радиобрелка. Логика функционирования МПС в каждом режиме определяется согласно типовой схеме работы системы охраны и сигнализации.
Блок управления МПС функционирует в одном из трех режимов:
охрана;
сброс;
тревога,
которые задаются нажатием назначенных для этих режимов кнопок.
При подаче питания микропроцессорная система охраны и сигнализации находится в режиме «сброс» до нажатия кнопки «Р» на радиобрелке. При нажатии на кнопку «Р» происходит переход в режим охраны, в котором система находится до тех пор, пока датчики в норме. При срабатывании какого-либо датчика либо группы датчиков система охраны переходит в режим тревоги и находится в этом режиме до нажатия кнопки «О», т.е. осуществления сброса с радиобрелка. На рисунке 1 изображён граф переходов состояний МПС.
Рисунок 1 - Граф переходов состояний МПС
В таблице 1 изображены переходы состояний МПС, крестиками указаны запрещённые переходы.
Таблица 1 - Таблица переходов состояний МПС
Сброс |
Охрана |
Тревога |
||
Сброс |
Подача питания |
Кнопка «Р» на радиобрелке |
||
Охрана |
Кнопка «О» на радиобрелке |
«Норма» датчиков |
«Не норма» датчиков |
|
Тревога |
Кнопка «О» на радиобрелке |
«Не норма» датчиков |
Выделение памяти для хранения признаков:
X BYTE
Y BYTE программный интерфейс с датчиками;
Z BYTE
R BYTE - байт для хранения кодов режимов.
Логика функционирования МПСО формализована следующими правилами:
1. Сигнал от контактного датчика «Тревога».
2. Обрыв питания «Тревога».
3. Высокий уровень сигнала от датчика осадков отключение первой зоны датчика объёма.
4. Низкий уровень сигнала от датчика осадков включение первой зоны датчика объёма.
5. Превышение порога удара или порога вторжения в охраняемый объём «Тревога».
В таблице 2 приведено кодирование состояний МПС в зависимости от управляющих команд с радиобрелка. Перевод МПС в режим «Тревога» посредством радиобрелка не предусмотрен.
Таблица 2 - Кодирование состояний МПС
Адрес байта для хранения состояния |
Состояние |
Клавиша радиобрелка |
Код состояния |
|
D |
Режим «Охрана» |
«Р» |
1 |
|
L |
Режим «Сброс» |
«О» |
2 |
|
G |
Режим «Тревога» |
- |
- |
3. Разработка аппаратного интерфейса МПС
При аппаратной реализации МПСО был использован микропроцессор Intel 8086. Основными элементами блока управления являются однокристальный микропроцессор (МП), и радиобрелок. Микропроцессор соединяется с датчиками через аппаратный интерфейс. Контакты разъёма интерфейса приведены в таблице 3.
Таблица 3 - Контакты разъёма аппаратного интерфейса МПС
Контакт |
Датчики |
|
1 |
Контактный. Дверь левая передняя. |
|
2 |
Контактный. Дверь правая передняя. |
|
3 |
Контактный. Дверь левая задняя. |
|
4 |
Контактный. Дверь правая задняя. |
|
5 |
Контактный. Капот. |
|
6 |
Контактный. Багажник. |
|
7 |
Датчик битого стекла. Дверь левая передняя. |
|
8 |
Датчик битого стекла. Дверь правая передняя. |
|
9 |
Датчик битого стекла. Дверь левая задняя. |
|
10 |
Датчик битого стекла. Дверь правая задняя. |
|
11 |
Датчик битого стекла. Капот. |
|
12 |
Датчик битого стекла. Багажник. |
|
13 |
Датчики удара (вибрации). Контакт №1. |
|
14 |
Датчики удара (вибрации). Контакт №2. |
|
15 |
Датчики удара (вибрации). Контакт №3. |
|
16 |
Датчик обрыва питания. |
|
17 |
Датчик осадков. |
|
18 |
Датчик движения. |
|
19 |
Первая зона датчика объема (внешняя). |
|
20 |
Первая зона датчика объема (внешняя). |
|
21 |
Первая зона датчика объема (внешняя). |
|
22 |
Вторая зона датчика объема (внутренняя). |
|
23 |
Вторая зона датчика объема (внутренняя). |
|
24 |
Вторая зона датчика объема (внутренняя). |
В таблице 4 описано подключение датчиков к интерфейсному разъёму. Для двоичных датчиков назначено по одной клавише программного эмулятора, нажатие которой соответствует срабатыванию определённого датчика. Для датчиков вибрации и объёма, имеющих несколько порогов срабатывания, выделен ряд клавиш программного эмулятора. Взаимодействие МПС с эмуляторами датчиков и клавиш радиобрелка осуществляется по интерфейсной схеме с общей шиной. В качестве портов ввода информации от датчиков используются ячейки памяти с указанными в таблице 4 адресами.
Таблица 4 - Перечень датчиков МПСО
Контакт разъёма |
Адрес байта памяти |
Номер бита |
Клавиша эмулятора датчика |
Команда чтения ячейки памяти |
|
1 |
X |
1 |
A |
mоv al, X |
|
2 |
2 |
S |
|||
3 |
3 |
D |
|||
4 |
4 |
F |
|||
5 |
5 |
G |
|||
6 |
6 |
H |
|||
7 |
7 |
Z |
|||
8 |
8 |
X |
|||
9 |
Y |
1 |
C |
mov al, Y |
|
10 |
2 |
V |
|||
11 |
3 |
B |
|||
12 |
4 |
N |
|||
13 |
5 |
QWE RTY UI |
|||
14 |
6 |
||||
15 |
7 |
||||
16 |
8 |
J |
|||
17 |
Z |
1 |
K |
mov al, Z |
|
18 |
2 |
L |
|||
19 |
3 |
q, w, e, r, t, y, u, i |
|||
20 |
4 |
||||
21 |
5 |
||||
22 |
6 |
1,2,3, 4,5,6, 7,8 |
|||
23 |
7 |
||||
24 |
8 |
Кодирование состояний трёхразрядного двухзонного датчика объёма приведено в таблице 5.
Таблица 5 - Кодировка состояний двухзонного датчика объёма
Контакты первой (внешней) зоны |
Клавиша эмулятора |
Контакты второй (внутренней) зоны |
||||||
19 |
20 |
21 |
1-я зона |
2-я зона |
22 |
23 |
24 |
|
0 |
0 |
0 |
q |
1 |
0 |
0 |
0 |
|
0 |
0 |
1 |
w |
2 |
0 |
0 |
1 |
|
0 |
1 |
0 |
e |
3 |
0 |
1 |
0 |
|
0 |
1 |
1 |
r |
4 |
0 |
1 |
1 |
|
1 |
0 |
0 |
t |
5 |
1 |
0 |
0 |
|
1 |
0 |
1 |
y |
6 |
1 |
0 |
1 |
|
1 |
1 |
0 |
u |
7 |
1 |
1 |
0 |
|
1 |
1 |
1 |
i |
8 |
1 |
1 |
1 |
Кодирование состояний трёхразрядного датчика удара (вибрации) приведено в таблице 6.
Таблица 6 - Кодировка состояний датчиков удара (вибрации)
Биты |
Клавиша |
|||
13 |
14 |
15 |
||
0 |
0 |
0 |
Q |
|
0 |
0 |
1 |
W |
|
0 |
1 |
0 |
E |
|
0 |
1 |
1 |
R |
|
1 |
0 |
0 |
T |
|
1 |
0 |
1 |
Y |
|
1 |
1 |
0 |
U |
|
1 |
1 |
1 |
I |
4. Разработка программного интерфейса
Для включения или отключения сигнализации необходимо подать сигнал от радиобрелка микропроцессорной системе. Клавиша «Р» переводит сигнализацию в режим охраны, а клавиша «О» - в режим сброса. Перевод осуществляется следующим образом.
Перевод в режимы охраны и сброса:
cmp InBuffer, 'O'
jnz R2
mov R, 1 ; Перевод в режим Сброс
ret
R2: cmp InBuffer, 'P'
jnz EndSensors
mov R, 2 ; Перевод в режим Охрана.
При этом если программа переводится в режим «Охрана», то в байт памяти по адресу R помещается цифра 1, если в режим «Сброс», то помещается цифра 2:
mov R, 1 ; Перевод в режим Сброс
mov R, 2 ; Перевод в режим Охрана.
На рисунке 2 изображена схема взаимодействия периферийных уст-ройств с центральным блоком.
Рисунок 2 - Схема взаимодействия периферийных устройств с центральным блоком
5. Разработка управляющих программ режимов МПСО
Режим «Сброс»
Переход в режим «Сброс» осуществляется после запуска программы или по нажатию клавиши «О». При этом в байт памяти по адресу R помещается число 1, опрос датчиков не производится. Схема перевода в режим «Сброс» изображена на рисунке 3.
Рисунок 3 - Схема перевода МПС в режим «Сброс»
Режим «Охрана»
При нажатии на клавишу «Р» происходит переход из режима «Сброс» в режим «Охрана», при этом в байт памяти по адресу R помещается шестнадцатеричная цифра 2, а на экран выводится сообщение «Охрана». В режиме «Охрана» производится опрос датчиков и клавиши «О». В случае нажатия клавиши «О» производится перевод МПСО в режим «Сброс». Пока клавиша «О» не нажата, производится циклический опрос всех датчиков. В случае получения сигнала от одного или нескольких датчиков МПСО анализирует полученные сигналы и при интерпретации их как вторжение на охраняемый объект, МПСО переходит в режим «Тревога». Схема работы в режиме «Охрана» изображена на рисунке 4.
Рисунок 4 - Схема работы МПС в режиме «Охрана»
Режим «Тревога»
При срабатывании в режиме охраны одного либо группы датчиков система сигнализации переходит в режим тревоги: на экран выводится слово «тревога!» и посылает сигнал beep. Причем этот режим работает до тех пор, пока владелец автомобиля не отключит его нажатием на клавишу «О», т.е. переведет систему в режим «сброс». Схема работы в режиме «Тревога» изображена на рисунке 5.
Рисунок 5 - Схема работы МПС в режиме «Тревога»
Опрос датчиков
Опрос датчиков осуществляется в порядке, описанном на рисунке 6.
mov al, X
and al, 00111110B
jnz ALARM
mov al, Y
and al, 01110000B
cmp al, 00110000B
jg ALARM
1-я зона датчика объема:
mov al, Z
and al, 00011100B
cmp al, 00010100B
jg ALARM
2-я зона датчика объема:
DAT2:
mov al, Z
and al, 11100000B
cmp al, 01000000B
jg ALARM
Рисунок 6 - Порядок опроса датчиков
Для опроса датчиков накладываем маски на регистры, в которые поступают данные от датчиков, и сравниваем их с необходимым признаком (срабатывание какого-либо датчика или превышение порога чувствительности), в случае совпадения с заданным признаком система переходит в режим тревоги. Причем 1-я зона датчика объема (внешняя) отключается в случае срабатывания датчика осадков.
6. Разработка специального программного обеспечения
386
model flat, stdcall
option casemap: none
include masm32includewindows.inc
include masm32includekernel32.inc
include masm32includeuser32.inc; здесь объявление MessageBox
include masm32includemasm32.inc
include masm32includedebug.inc
includelib masm32libkernel32.lib
includelib masm32libmasm32.lib
includelib masm32libdebug.lib
includelib masm32libuser32.lib; здесь API-функция MessageBox
data
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?
L byte «SBROS»
D byte «Protect»
G byte «ALARM»
dwFreq DWORD 100h; частота звука в герцах (от 25h до 7FFFh)
dwDuration DWORD 3E8h; продолжительность звука в миллисекундах (1 сек. = 3E8h)
code
start:
; - Определение дескрипторов -
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov OutHandle, eax
INVOKE GetStdHandle, STD_INPUT_HANDLE
mov InHandle, eax
; - Вывод на экран начального состония при запуске -
BEGIN:
mov eax, 000C0027h
INVOKE SetConsoleCursorPosition, OutHandle, eax ; установка курсора
INVOKE WriteConsole, OutHandle, offset L, lengthof L, offset BytesWritten, 0
invoke Beep, 900h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 950h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 530h, 3E8h/6
invoke Beep, 24h, 3E8h/8
invoke Beep, 100h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 200h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 400h, 3E8h/6
invoke Beep, 24h, 3E8h/32
; - Управляющий алгоритм -
Opros:
Call ReadSensors
; - Вывод на экран слова «Сброс»-
; - Проверка нажата ли клавиша «О»-
cmp R, 1
jne PROTECT
;-
mov eax, 000C0027h
INVOKE SetConsoleCursorPosition, OutHandle, eax ; установка курсора
INVOKE WriteConsole, OutHandle, offset L, lengthof L, offset BytesWritten, 0
mov X, 0
mov Y, 0
mov Z, 0
invoke Beep, 930h, 3E8h/6
invoke Beep, 24h, 3E8h/16
invoke Beep, 950h, 3E8h/6
jmp Opros
; - Вывод на экран слова «Protect»-
PROTECT:
mov eax, 000C0027h
INVOKE SetConsoleCursorPosition, OutHandle, eax ; установка курсора
INVOKE WriteConsole, OutHandle, offset D, lengthof D, offset BytesWritten, 0
invoke Beep, 130h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 150h, 3E8h/6
invoke Beep, 24h, 3E8h/32
invoke Beep, 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, X
and al, 00111110B
jnz ALARM
; проверка датчика удара P>3
mov al, Y
and al, 01110000B
cmp al, 00110000B
jg ALARM
; проверяем датчик осадков
mov al, Z
and al, 00000001B
jnz DAT2
; проверка датчиков объёма первого уровня P>5
mov al, Z
and al, 00011100B
cmp al, 00010100B
jg ALARM
; проверка датчиков объёма второго уровня P>2
DAT2:
mov al, Z
and al, 11100000B
cmp al, 01000000B
jg ALARM
jmp Opros
ALARM:
mov eax, 000C0027h
INVOKE SetConsoleCursorPosition, OutHandle, eax ; установка курсора
INVOKE WriteConsole, OutHandle, offset G, lengthof G, offset BytesWritten, 0
; - СИГНАЛ-
mov ecx, 0
mov ecx, 2h
Met:
invoke Beep, 900h, 3E8h/8
invoke Beep, 910h, 3E8h/16
invoke Beep, 920h, 3E8h/32
invoke Beep, 930h, 3E8h/64
invoke Beep, 940h, 3E8h/128
invoke Beep, 950h, 3E8h/264
invoke Beep, 960h, 3E8h/32
invoke Beep, 970h, 3E8h/32
invoke Beep, 980h, 3E8h/32
invoke Beep, 990h, 3E8h/32
invoke Beep, 1000h, 3E8h/32
invoke Beep, 1010h, 3E8h/32
invoke Beep, 1020h, 3E8h/32
invoke Beep, 1030h, 3E8h/32
invoke Beep, 1040h, 3E8h/32
invoke Beep, 1050h, 3E8h/32
invoke Beep, 1060h, 3E8h/32
invoke Beep, 1070h, 3E8h/32
invoke Beep, 1080h, 3E8h/32
invoke Beep, 1090h, 3E8h/32
invoke Beep, 1100h, 3E8h/32
invoke Beep, 900h, 3E8h/8
invoke Beep, 910h, 3E8h/16
invoke Beep, 920h, 3E8h/32
invoke Beep, 930h, 3E8h/64
invoke Beep, 940h, 3E8h/128
invoke Beep, 950h, 3E8h/264
invoke Beep, 960h, 3E8h/32
invoke Beep, 970h, 3E8h/32
invoke Beep, 980h, 3E8h/32
invoke Beep, 990h, 3E8h/32
invoke Beep, 1000h, 3E8h/32
invoke Beep, 1010h, 3E8h/32
invoke Beep, 1020h, 3E8h/32
invoke Beep, 1030h, 3E8h/32
invoke Beep, 1040h, 3E8h/32
invoke Beep, 1050h, 3E8h/32
invoke Beep, 1060h, 3E8h/32
invoke Beep, 1070h, 3E8h/32
invoke Beep, 1080h, 3E8h/32
invoke Beep, 1090h, 3E8h/32
invoke Beep, 1100h, 3E8h/32
invoke Beep, 900h, 3E8h/8
invoke Beep, 910h, 3E8h/16
invoke Beep, 920h, 3E8h/32
invoke Beep, 930h, 3E8h/64
invoke Beep, 940h, 3E8h/128
invoke Beep, 950h, 3E8h/264
invoke Beep, 960h, 3E8h/32
invoke Beep, 970h, 3E8h/32
invoke Beep, 980h, 3E8h/32
invoke Beep, 990h, 3E8h/32
invoke Beep, 1000h, 3E8h/32
invoke Beep, 1010h, 3E8h/32
invoke Beep, 1020h, 3E8h/32
invoke Beep, 1030h, 3E8h/32
invoke Beep, 1040h, 3E8h/32
invoke Beep, 1050h, 3E8h/32
invoke Beep, 1060h, 3E8h/32
invoke Beep, 1070h, 3E8h/32
invoke Beep, 1080h, 3E8h/32
invoke Beep, 1090h, 3E8h/32
invoke Beep, 1100h, 3E8h/32
invoke Beep, 900h, 3E8h/8
invoke Beep, 910h, 3E8h/16
invoke Beep, 920h, 3E8h/32
invoke Beep, 930h, 3E8h/64
invoke Beep, 940h, 3E8h/128
invoke Beep, 950h, 3E8h/264
invoke Beep, 960h, 3E8h/32
invoke Beep, 970h, 3E8h/32
invoke Beep, 980h, 3E8h/32
invoke Beep, 990h, 3E8h/32
invoke Beep, 1000h, 3E8h/32
invoke Beep, 1010h, 3E8h/32
invoke Beep, 1020h, 3E8h/32
invoke Beep, 1030h, 3E8h/32
invoke Beep, 1040h, 3E8h/32
invoke Beep, 1050h, 3E8h/32
invoke Beep, 1060h, 3E8h/32
invoke Beep, 1070h, 3E8h/32
invoke Beep, 1080h, 3E8h/32
invoke Beep, 1090h, 3E8h/32
invoke Beep, 1100h, 3E8h/32
invoke Beep, 900h, 3E8h/8
invoke Beep, 910h, 3E8h/16
invoke Beep, 920h, 3E8h/32
invoke Beep, 930h, 3E8h/64
invoke Beep, 940h, 3E8h/128
invoke Beep, 950h, 3E8h/264
invoke Beep, 960h, 3E8h/32
invoke Beep, 970h, 3E8h/32
invoke Beep, 980h, 3E8h/32
invoke Beep, 990h, 3E8h/32
invoke Beep, 1000h, 3E8h/32
invoke Beep, 1010h, 3E8h/32
invoke Beep, 1020h, 3E8h/32
invoke Beep, 1030h, 3E8h/32
invoke Beep, 1040h, 3E8h/32
invoke Beep, 1050h, 3E8h/32
invoke Beep, 1060h, 3E8h/32
invoke Beep, 1070h, 3E8h/32
invoke Beep, 1080h, 3E8h/32
invoke Beep, 1090h, 3E8h/32
invoke Beep, 1100h, 3E8h/32
mov R, 0
jmp Opros
; - Ввод одного символа без эха -
InputChar:
INVOKE GetConsoleMode, InHandle, offset Mode; сохранение флагов
INVOKE SetConsoleMode, InHandle, 0; отмена режима эхо-вывода
INVOKE ReadConsole, InHandle, offset InBuffer, 1, offset BytesRead, 0
INVOKE SetConsoleMode, InHandle, Mode ; восстановление режима
ret
; - Эмулятор датчиков -
ReadSensors:
Call InputChar
; - Контактные датчики -
cmp InBuffer, 'A'
jnz X1
or X, 00000001b
ret
X1: cmp InBuffer, 'S'
jnz X2
or X, 00000010b
ret
X2: cmp InBuffer, 'D'
jnz X3
or X, 00000100b
ret
X3: cmp InBuffer, 'F'
jnz X4
or X, 00001000b
ret
X4: cmp InBuffer, 'G'
jnz X5
or X, 00010000b
ret
X5: cmp InBuffer, 'H'
jnz X6
or X, 00100000b
ret
; - Датчики битого стекла -
X6: cmp InBuffer, 'Z'
jnz X7
or X, 01000000b
ret
X7: cmp InBuffer, 'X'
jnz Y0
or X, 10000000b
ret
Y0: cmp InBuffer, 'C'
jnz Y1
or Y, 00000001b
ret
Y1: cmp InBuffer, 'V'
jnz Y2
or Y, 00000010b
ret
Y2: cmp InBuffer, 'B'
jnz Y3
or Y, 00000100b
ret
Y3: cmp InBuffer, 'N'
jnz Y4
or Y, 00001000b
ret
; - Датчик удара -
Y4: cmp InBuffer, 'Q'
jnz Y5
and Y, 10001111b; Удар = 0
ret
Y5: cmp InBuffer, 'W'
jnz Y6
and Y, 10001111b
or Y, 00010000b; Удар = 1
ret
Y6: cmp InBuffer, 'E'
jnz Y7
and Y, 10001111b
or Y, 00100000b; Удар = 2
ret
Y7: cmp InBuffer, 'R'
jnz Y8
and Y, 10001111b
or Y, 00110000b; Удар = 3
ret
Y8: cmp InBuffer, 'T'
jnz Y9
and Y, 10001111b
or Y, 01000000b; Удар = 4
ret
Y9: cmp InBuffer, 'Y'
jnz Y10
and Y, 10001111b
or Y, 01010000b; Удар = 5
ret
Y10: cmp InBuffer, 'U'
jnz Y11
and Y, 10001111b
or Y, 01100000b; Удар = 6
ret
Y11: cmp InBuffer, 'I'
jnz Y12
or Y, 01110000b; Удар = 7
ret
; - Датчик обрыва питания -
Y12: cmp InBuffer, 'J'
jnz Z0
or Y, 10000000b
ret
; - Датчик осадков -
Z0: cmp InBuffer, 'K'
jnz Z1
or Z, 00000001b
ret
; - Датчик движения -
Z1: cmp InBuffer, 'L'
jnz Z2
or Z, 00000010b
ret
; - Внешняя зона датчика объёма -
Z2: cmp InBuffer, 'q'
jnz Z3
and Z, 11100011b; Уровень = 0
ret
Z3: cmp InBuffer, 'w'
jnz Z4
and Z, 11100011b
or Z, 00000100b; Уровень = 1
ret
Z4: cmp InBuffer, 'e'
jnz Z5
and Z, 11100011b
or Z, 00001000b; Уровень = 2
ret
Z5: cmp InBuffer, 'r'
jnz Z6
and Z, 11100011b
or Z, 00001100b; Уровень = 3
ret
Z6: cmp InBuffer, 't'
jnz Z7
and Z, 11100011b
or Z, 00010000b; Уровень = 4
ret
Z7: cmp InBuffer, 'y'
jnz Z8
and Z, 11100011b
or Z, 00010100b; Уровень = 5
ret
Z8: cmp InBuffer, 'u'
jnz Z9
and Z, 11100011b
or Z, 00011000b; Уровень = 6
ret
Z9: cmp InBuffer, 'i'
jnz Z10
or Z, 00011100b; Уровень = 7
ret
; - Внутренняя зона датчика объёма -
Z10: cmp InBuffer, '1'
jnz Z11
and Z, 00011111b; Уровень = 0
ret
Z11: cmp InBuffer, '2'
jnz Z12
and Z, 00011111b
or Z, 00100000b; Уровень = 1
ret
Z12: cmp InBuffer, '3'
jnz Z13
and Z, 00011111b
or Z, 01000000b; Уровень = 2
ret
Z13: cmp InBuffer, '4'
jnz Z14
and Z, 00011111b
or Z, 01100000b; Уровень = 3
ret
Z14: cmp InBuffer, '5'
jnz Z15
and Z, 00011111b
or Z, 10000000b; Уровень = 4
ret
Z15: cmp InBuffer, '6'
jnz Z16
and Z, 00011111b
or Z, 10100000b; Уровень = 5
ret
Z16: cmp InBuffer, '7'
jnz Z17
and Z, 00011111b
or Z, 11000000b; Уровень = 6
ret
Z17: cmp InBuffer, '8'
jnz R1
or Z, 11100000b; Уровень = 7
ret
; - Кнопки брелка -
R1: cmp InBuffer, 'O'
jnz R2
mov R, 1; Откл.
ret
R2: cmp InBuffer, 'P'
jnz EndSensors
mov R, 2; Охрана.
EndSensors:
ret
end start
Заключение
При выполнении курсового проекта на тему «Типовая микропроцессорная система охраны и сигнализации» была разработана МПС охраны и сигнализации на основе типового набора датчиков и исполнительных устройств в соответствии с выданным заданием. Особенностью управляющей программы является высокое быстродействие и малый размер занимаемой памяти. Необходимо подчеркнуть, что программа реализована с помощью 32 разрядной версии ассемблера в среде ассемблера MASM32.
Список литературы
микропроцессорный интерфейс сигнализация программа
1. Андрианов В.И. Охранные устройства для автомобилей. Справочное пособие: / Андрианов В.И., Соколов А.В. - М.: ООО «Фирма «Издательство АСТ»; СПб.: ООО «Издательство Полигон», 2002. - 320 с.
2. Асмаков С.В., Пахомов С.О. Железо 2009. КомпьютерПресс рекомендует. - СПб.: Питер, 2009. - 432 с.: ил.
3. Ирвин Кип. Язык ассемблера для процессоров Intel, 4-е издание.: Пер с англ. - М.: Издательский дом «Вильямс», 2005. - 912 с.: ил. - Парал. тит. англ.
4. Корнеев В.В., Киселёв А.В. Современные микропроцессоры. - 3-е изд., перераб. и доп. - СПб.: БХВ-Перербург, 2003. - 448 с.: ил.
5. Микропроцессорные системы: Учебное пособие для вузов по напр. «Информатика и вычислительная техника». / Под ред. Д.В. Пузанкова - СПб.: Политехника, 2002. - 935 с.
6. Организация ЭВМ. 5-е изд./ К. Хамахер, З. Вранешич, С. Заки. - СПб.: Питер; Киев: Издательская группа ИРМб 2003. - 848 с.: ил. - (Серия «Классика computer science»).
7. Пухальский Г.И. Проектирование микропроцессорных систем: Учебное пособие для вузов. - СПб.: Политехника, 2001. - 554 с.