|
Дата: 29 Янв 2017 18:01:06
#
НАЗНАЧЕНИЕ
Данное устройство осуществляет контроль открытия дверей автомобиля.
В зависимости от комбинации открытия дверей издается в течении 1 минуты звуковой сигнал с интервалом в 20 секунд соответствующей своей комбинационной группе.
/*
Версия 1.
Звуковой индикатор открытия дверей.
Обрабатывает сигналы преступаемые от датчиков установленных в дверях автомобиля и выдает соответсвующий сигнал.
Если двери открыты, то сигнал выдается непрерывно в течение 1 минуты, далее пауза в 10 минут и повтор сигнала .
Комбинация звуковых сигналов:
Отрыта водительская дверь - один короткий звуковой сигнал пауза повтор
Открыта пассажирская дверь - два коротких звуковых сигнала пауза повтор
Открыта задняя дверь за пассажиром - три коротких звуковых сигнала пауза повтор
Открта задняя дверь за водителем - четыре коротких звуковых сигнала пауза повтор
Открыто две двери одновременно: Два длинных звуковых сигнала
Открыто три двери одновременно: Три длинных звуковых сигнала
Открыто четыре двери одновременно: Четыре длинных звуковых сигнала
PB2 - пассажирская дверь
PB1 -дверь водителя
PB0 -задняя дверь с стороны водителя
PB4 -задняя дверь с стороны водителя пассажира
PB3- выход звукового сигнала
PB1 PB2
CAR
PB3- output sound
*
***
*****
*
*
*
*
PB0 PB4
*/
.include "tn13adef.inc"
.list
.def tmp = r16; для разных переменных
.def tmp_a = r17; для счетчика 1 1 мин
.def tmp_c = r25; для счетчика 1 1 мин
.def tmp_b = r18; эталонная пауза
.def time_long = r19; для работы с длинными временами.
.def time_short =r20 ; для работы с длинными временами.
.def ch1 = R21; комбинация открытия дверей. Открыта одна дверь из четырех.
.def ch2 = R22; комбинация открытия дверей. Открыты две двери из четырех.
.def ch3 =R23; комбинация открытия дверей. Открыта три двери из четырех.
.def ch4 = R24; Открыты все двери
; КОНСТАНТЫ
.equ timer_1min = 0x02; время в течении которого подается звуковой сигнал о открытии двери
.
.cseg
.org 0
clr tmp
ldi tmp, low(RAMEND)
out SPL, tmp
ldi tmp, 0b00001000; PB3 -out
out DDRB, tmp
ldi tmp, 0b00010111
out PORTB, tmp
ldi tmp_a, timer_1min
start:
rcall sound_test; тестовый звуковой сигнал
start_1:
in tmp, PINB
; Открыта одна из дверь
cpi tmp, 1
breq sound1_1
cpi tmp, 2
breq sound1_2
cpi tmp, 4
breq sound1_3
cpi tmp, 6
breq sound1_4
; Открыто две двери
cpi tmp, 3
breq sound2_0
cpi tmp, 5
breq sound2_0
cpi tmp, 17
breq sound2_0
cpi tmp, 6
breq sound2_0
cpi tmp, 18
breq sound2_0
cpi tmp, 20
breq sound2_0
start_3:
; Открыто три двери
cpi tmp, 7
breq sound_3
cpi tmp, 22
breq sound_3
cpi tmp, 21
breq sound_3
start_2:
; Открыты 4 ре двери
cpi tmp, 23
breq sound4_0
rjmp start_1
sound4_0:
rjmp sound4
sound2_0:
rjmp sound2
sound_3:
rjmp sound3
;#################################################################################
; ЗВУКОВЫЕ СИГНАЛЫ ОТКРЫТИЯ ДВЕРЕЙ
;#################################################################################
; Открыта одна дверь
;#################################################################################
sound_test:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret
sound1_1:
rcall counter
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret
sound1_2:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret
sound1_3:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret
sound1_4:
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
sbi PORTB, 3
rcall pause
cbi PORTB, 3
rcall pause_long
ret
;#################################################################################
;ОТКРЫТО ДВЕ ДВЕРИ
;#################################################################################
sound2:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_3
;#################################################################################
;ОТКРЫТО ТРИ ДВЕРИ
;#################################################################################
sound3:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_2
;#################################################################################
;ОТКРЫТЫ ВСЕ ДВЕРИ
;#################################################################################
sound4:
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause
rcall pause
rcall pause
sbi PORTB, 3
rcall pause
rcall pause
rcall pause
cbi PORTB, 3
rcall pause_long
rjmp start_1
;################################################################################
;# Задержка перед повтором звукового сигнала
;################################################################################
pause_long:
ldi tmp_a, 0x03 ; 0xC8 =20sec
dec tmp_a
cpi tmp_a,0
breq end_long
rcall pause
rjmp pause_long
end_long:
ret
pause:
;################################################################################
;# Задержка 100 ms
;################################################################################
ldi tmp_b, 0x5F ; 190 = 200 mks 95 =100 mkS
d100ms_1: ; 1,057 ms
dec tmp_b
cpi tmp_b,0
breq end_d100ms
ldi tmp, 0xFF
d100ms_2:; 4.16 mks
dec tmp
cpi tmp,0
breq d100ms_1
rjmp d100ms_2
end_d100ms:
ret
;################################################################################
;# Задержка 10 МИНУТ
;################################################################################
pause_10min:
ldi tmp_a, timer_1min
st_10min:
dec tmp_a
cpi tmp_a, 0
breq end_10m
ldi tmp_c, 0x02
st_10m:
dec tmp_c
cpi tmp_c,0
breq st_10min
rjmp st_10m
end_10m:
rjmp start_1
;#########################################################################
; СЧЕТЧИКИ
;########################################################################
counter:
dec tmp_a
cpi tmp_a, 0
breq pause_10min
ret
|