Работоспособная такая схемка в теории?
Вот код,в avr_studio вроде все работает
И конечно, tiny13, а не tyny
Раздел: AVR
Вот код,в avr_studio вроде все работает
.include "tn13def.inc" ;используем ATtiny13
.cseg
;===таблица векторов прерываний===
.org $000
rjmp Reset
.org $003 ;прерывание по переполнению таймера Т0
rjmp TIMER0_OVF
.org $005 ;прерывание от аналогово компаратора
rjmp ANA_COMP
;===Обработчики прерываний===
TIMER0_OVF:
ldi r17,0x01
out TIMSK0,r17;запрет прерываний от таймера
reti
ANA_COMP:
brtc PC+2;переход если T=0
brts PC+6;переход если T=1
ldi r16,(1<<4)|(1<<3)
out PORTB,r16 ;вывести 1 на PB3 и PB4
rcall wait_2_sec ;вызов подпрограммы задержки 3-5 сек
set
reti
ldi r16,(0<<4)|(0<<3)
out PORTB,r16 ;вывести 0 на PB3 и PB4
rcall wait_2_sec;вызов подпрограммы задержки 3-5 сек
clt
reti
Reset:
ldi r16,low(RAMEND)
out SPL,r16
ldi r16,(1<<4)|(1<<3)|(0<<1)|(0<<0)
out DDRB,r16 ;порт B3,B4-выходы,B0,B1-входы
clt ;сбросить флаг Т
ldi r16,(1<<3)|(1<<1)|(1<<0)
out ACSR,r16 ;разрешение прерывания от компаратора при изм. рез-та на выходе с 0 на 1
ldi r16,(1<<5)|(0<<4)|(0<<3)
out MCUCR,r16 ;разрешение перехода в режим Idle
sei;глобальное разрешение прерываний
;===Главный цикл===
main:
sleep
rjmp main
;===Подпрограмма задержки===
wait_2_sec:
ldi r17,0x00
out TCCR0A,r17
ldi r16,0x02
out TIMSK0,r16
ldi r16,0x05
out TCCR0B,r16 ;таймер работает в режиме normal, clk/1024
out TCNT0,r17
sei
sbrc r17,0 ;
ret
rjmp PC-2
И конечно, tiny13, а не tyny
Раздел: AVR