Смекни!
smekni.com

Автомобильная сигнализация (стр. 2 из 2)

4. Программирование микроконтроллера Intel 8051 на языке ассемблера: Методические указания к лабораторной работе №3 по курсу “ Цифровые устройства и микропроцессоры”/ Добряк В.А., Рагозин В.К.. Екатеринбург: УГТУ, 1999. 26 с.

5. Взаимодействие микроконтроллера Intel 8051 с объектами управления: Методические указания к лабораторной работе №4 по курсу “ Цифровые устройства и микропроцессоры”/Добряк. В.А. Екатеринбург: Изд-во УГТУ, 2001. 24 с.

Приложение 1. Схема электрическая принципиальная


Приложение. Программа устройства на языке 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 ; сигналовсиреной

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

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

BLOCKING: SETBP0.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: JBP2.5,IGN_KAPOT ; переход к IGN_KAPOT, если датчик ; багажника не срабатывает

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

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

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

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

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

JMP LABELB;

IGN_DOOR: JB FDOOR,CHECK_ALARM ;

DOOR: JB P2.6,CHECK_ALARM ;

INC OVER_D;

JMP LABELB;

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

LIGHT_DIOD: MOVR4,#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:CLRP0.0 ; разблокирование стартера

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

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

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

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

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

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

CALL DELAY;

CALL SIGNAL11 ;

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

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

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

MOVR0,#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 ; если воздействие было

SETBFKAPOT ; 5 раз

SET_FDOOR: CJNE OVER_D,#5,SET_FALARM ;

SETB FDOOR ;

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

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

JNBP2.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; конец