Повідомлення від Прога_asm
;************************************************* **************
;* Proekt:"Alarm_5", имеет "память" о сработке,
;* режим ожидания ,светодиод горит посстоянно,датчик заблокирован
;* пауза задержки при выходе = 45 Сек.
;* Время задержки на вход = 4,5 сек
;* Время звучания сирены 1 цикл= 45 сек.
;* количество циклов не лимитировано
;* сработка индицируется мерцанием светодиода 0,2с.скважность=2
;* индикация режима охраны 0.2с скважность=5
;* chip: ATtiny13
;* Frequensy - 128/8 kHz (external RC-Oscillator).
;************************************************* **************
.include "tn13def.inc"
;------------------- Назначаем имена выводам микроконтроллера и регистрам
.equ Light =0 ;PB0 Light Output
.equ Alarm =1 ;PB1 Alarm Output
.equ SW =3 ;PB3 I nput sensor
.equ Led =4 ;PB4 Output Led
.def temp =r16 ;r16 temprary register
;************************************************* **************
.cseg ;Выбираем сегмент памяти ;
.org 0
rjmp Reset
;------------------- инициализация ---------------------------
Reset: ldi temp,RAMEND ;инициализация стека ;
out SPL,temp
;------------------ inicializaciya PORTB -----------------
ldi temp,0b11110111
out DDRB,temp ;конфигурация вх,вых.
;Нпзначаеем PВ3 входом,остальные выходами. ;
Com temp ;Инвертируем содержимое temp
out PORTB,temp ;Включаем подтяжку на PВ3
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<
; Главный программный цикл
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>
sbi PORTB,Light ;включаем Свет,(внешний светодиодный фонарь)
sbi PORTB,Led ;Индицируем -режим задержки на выход
rjmp TTT
; Задержка по выходу = 45 Sek.
main: sbis PINB,SW ;Опрашиваем датчик,разомкнуты ли контакты.
rjmp nnn
;----------------------------------------------------------------------------
rcall delay ; Формирование задержки на вход (1,125сек * 4 = 4,5 сек)
rcall delay
rcall delay
rcall delay
;------------------------------------------------------------------------------
wt: sbi PORTB,Alarm ;если сработал датчик,включается сирена
Set ;Устанавливаем флаг Т,как признак срабатывания сирены
;------------------------------------------------------------------------------
TTT: rcall delay4 ;формирование времени зажержки на выход и
rcall delay4
rcall delay4 ;время звучания сирены = 45 Sek.(delay4 по 3раза )
;-------------------------------------------------------------------------------
cbi PORTB,Light ;Гасим внешний светодиодный фонарь подсветки.
nnn : brbs 6,vvv ; Если флаг Т установлен(когда проходит 1 цикл)
rcall delay ;время свечения индикатора " Led "
vvv: rcall delay2 ; Если была сработка сирены,
; индикатор переходит на 2-й - режим мерцания-Led
sbi PORTB,Led ;зажигаем светодиод - * - Led
rcall delay2 ; длительность свечения * Led,
;скважность=5 , (1-й - режим мерцания-Led)
out PORTB,temp ; гашение индикации,окончание одного цикла.
rjmp main ;переход к началу программы ожидания
;----- Время погасания "Led" Т= 1,125сек.----------
delay: ldi XL,Low (4500)
ldi XH,high (4500)
del: sbiw XL,1
brne del
ret
;----- Время импульса длительности горения "Led" Т=0,2 сек -----
delay2: ldi XL,Low (800)
ldi XH,high (800)
mm: sbiw XL,1
brne mm
ret
;----- формирование задержки интервалом T = 15 Sek. -----------
delay4: ldi XL,Low (60000)
ldi XH,high (60000)
del_: sbiw XL,1
brne del_
ret
;************************************************* **************
|