Приложение. Программа устройства на языке Assembler




 

BEGIN: JMP START; переход к программе START

USING 0; выбор 0 банка регистров

ORG 30H; директива размещения программы с адреса; 30H

SEG_FLAG SEGMENT DATA BITADDRESSABLE; объявляем сегмент перемещаемый; внутрь битовой адресуемой памяти; данных

SEG_PROG SEGMENT CODE; объявляем сегмент перемещаемый в; пространство кода программы

OVER_K SET R5; назначаем символические

OVER_D SET R6; имена регистрам

OVER_B SET R7; R5,R6,R7

RSEG SEG_FLAG; выбор сегмента

FLAGS: DS 1; однобайтовая переменная (FLAGS)

FDOOR BIT FLAGS.0; флаг игнорирования (да(1) / нет(0)) датчика дверей

FBOX BIT FLAGS.1; -------------------- багажника

FKAPOT BIT FLAGS.2; ---------------------------------- капота

FMODE2 BIT FLAGS.3; флаг режима 2 (да(1)/нет(0))

FALARM BIT FLAGS.4; флаг попытки вторжения (да(1)/нет(0))

RSEG SEG_PROG; выбор сегмента

START:; установка начальных значений параметров

MOV FLAGS,#00H; сброс флагов

MOV P0,#00H; установка режимов портов

MOV P2,#0FFH;

MOV R0,#00H; обнуление регистров

MOV R1,#00H;

MOV R2,#00H;

MOV R3,#00H;

MOV R4,#00H;

MOV OVER_B,#00H;

MOV OVER_K,#00H;

MOV OVER_D,#00H;

CLR A; обнуление аккумулятора

WAIT: JB P2.0, WAIT; ждем сигнала постановки на охрану

JNB P2.4, SIGNAL3; переходим на метку SIGNAL3,

JNB P2.5, SIGNAL3; если открыты двери, капот

JNB P2.6, SIGNAL3; или багажник

JMP BLOCKING; переход к п/п блокировки

 

SIGNAL3: MOV R0,#3; программа

LOOP3: CALL SIGNAL1; реализации трех

CALL DELAY; сигналов сиреной

DJNZ R0, LOOP3; с последующим переходом

JMP BEGIN; в начало

 

SIGNAL5: MOV R0,#5; программа

LOOP5: CALL SIGNAL1; реализации пяти

CALL DELAY; сигналов сиреной

DJNZ R0, LOOP5; с последующим переходом

JMP GAUGE_L; к опросу датчиков GAUGE_L

BLOCKING: SETB P0.0; блокировка стартера

SETB P0.1; закрытие дверей

SETB P0.2; закрытие багажника

CALL SIGNAL11; сигнал сирены и габаритов - СИСТЕМА НА ОХРАНЕ!

 

GAUGE_L: JNB P2.2, SIGNAL5; 5 сигналов сирены, если сработал датчик; слабого удара

GAUGE_S: JNB P2.3, LABELB; переход на метку LABELB, если; сработал датчик сильного удара

IGN_BOX: JB FBOX, IGN_KAPOT; переход к IGN_KAPOT, если датчик; багажника игнорируется

BOX: JB P2.5, IGN_KAPOT; переход к IGN_KAPOT, если датчик; багажника не срабатывает

INC OVER_B; если датчик багажника сработал, то +1 к; константе хранящей число срабатываний; этого датчика

JMP LABELB; переход на метку LABELB, включающую; сирену

IGN_KAPOT: JB FKAPOT, IGN_DOOR; 8 ниже следующих строк выполняют; аналогичную функцию,

KAPOT: JB P2.4, IGN_DOOR; как при опросе датчика багажника (выше),

INC OVER_K; только для датчиков капота и дверей!

JMP LABELB;

IGN_DOOR: JB FDOOR, CHECK_ALARM;

DOOR: JB P2.6, CHECK_ALARM;

INC OVER_D;

JMP LABELB;

 

CHECK_ALARM: JB FALARM, CHECK_MODE2; проверка на вторжение, если да, то; переходим на метку CHECK_MODE2

LIGHT_DIOD: MOV R4,#5; программа обеспечивающая мигание светодиода

D_CYCLE: CALL DELAY; мигание светодиода примерно

DJNZ R4, D_CYCLE; с интервалом в 1 секунду

CPL P0.5;

CHECK_MODE2: JNB P2.1, LABELA; если происходит постановка в режим 2, то; переходим на метку LABELA

CLR FMODE2; сброс флага режима 2

MOV OVER_B,#00H; и констант

MOV OVER_K,#00H;

MOV OVER_D,#00H;

SETB P0.2; закрытие багажника на случай если включался; режим 2

JNB P2.0, GAUGE_L; если система не выключается, то переход к; опросу датчиков

JNB FALARM ,EXIT; если не было вторжения в процессе работы,; то переход на EXIT

CALL SIGNAL44; если было вторжение, то 4 сигнала сирены и; габаритов

ANTIBLOKING: CLR P0.0; разблокирование стартера

CLR P0.1; открытие дверей

CLR P0.2; открытие багажника

JMP BEGIN; переход в начало

 

LABELA: JB FMODE2, IGN_KAPOT; если режим 2 уже установлен, то переход; на IGN_KAPOT, если нет, то:

SETB FMODE2; уст. флага режима 2

CALL SIGNAL22; 2 сигнала сирены и габаритов при постановке в; режим 2

CALL DELAY;

CALL SIGNAL11;

CLR P0.2; открытие багажника

JMP IGN_KAPOT; переход к проверке датчиков

LABELB: SETB P0.3; включение сирены

MOV R0,#3; загрузка регистров для

LOOP1: MOV R4,#100; цикла в 60 секунд

LOOP0: JB P2.0, STOP_PULT; переход если сирена отключается с пульта

JB P0.6, STOP_VALET; переход если сирена отключается с Valet`а

CALL DELAY; задержка 0.2 секунды

CPL P0.4; мигание габаритов

DJNZ R4, LOOP0; внутренний цикл

DJNZ R0, LOOP1; внешний цикл

JMP SHUTDOWN; пропускаем 2 строки

STOP_PULT: CLR P2.0; сброс отключения с пульта

STOP_VALET: CLR P0.6; сброс отключения с Valet`а

SHUTDOWN: CLR P0.3; выключение сирены

CLR P0.4; выключение габаритов

CJNE OVER_B,#5, SET_FKAPOT; установка флагов для

SETB FBOX; игнорирования датчиков

SET_FKAPOT: CJNE OVER_K,#5, SET_FDOOR; если воздействие было

SETB FKAPOT; 5 раз

SET_FDOOR: CJNE OVER_D,#5, SET_FALARM;

SETB FDOOR;

SET_FALARM: SETB FALARM; запомнили БЫЛА ПОПЫТКА ВТОРЖЕНИЯ!!!

SETB P0.5; включаем светодиод на постоянное свечение

JNB P2.1, TO_IGN_KAPOT; переход если режим 2 на TO_IGN_KAPOT

JMP GAUGE_S; переход к опросу датчиков GAUGE_S

TO_IGN_KAPOT: JMP IGN_KAPOT; переход на IGN_KAPOT

 

SIGNAL11: SETB P0.3; вкл. сирены

SETB P0.4; вкл. габаритов

CALL DELAY; задержка 0.2 секунды

CLR P0.3; выкл. сирены

CLR P0.4; выкл. габаритов

RET; возврат

SIGNAL22: CALL SIGNAL11; 1 сигнал сирены и габаритами

CALL DELAY; задержка 0.2 секунды

CALL SIGNAL11; 1 сигнал сирены и габаритами

RET; возврат

SIGNAL44: CALL SIGNAL22; 2 сигнала сирены и габаритами

CALL DELAY; задерка 0.2 секунды

CALL SIGNAL22; 2 сигнала сирены и габаритами

RET; возврат

EXIT: CALL SIGNAL22; 2 сигнала сирены и габаритами

JMP BEGIN; переход в начало

SIGNAL1: SETB P0.3; вкл. сирены

CALL DELAY; задержка 0.2 секунды

CLR P0.3; выкл. сирены

RET; возврат

DELAY: MOV R3,#2; задержка приблизительно 0.2 секунды

CYCLE2: MOV R2,#200; с помощь вложенных циклов

CYCLE0: MOV R1,#248;

CYCLE1: DJNZ R1, CYCLE1;

NOP;

DJNZ R2, CYCLE0;

DJNZ R3, CYCLE2;

RET; возвраты

END; конец



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: