;Использование прерываний от ноги INT1 и от таймера 1 ;по приходу прерывания с ноги загорается второй светодиод, ;запускается 16-битный счётчик ;переполнение счётчика происходит через примерно 11 секунд ;по прерыванию переполнения счётчика снова загорается светодиод 1 .include "2313def.inc" .def status=r0 .def temp=r24 .def timer=r25 .def led1=r16 .def led2=r17 .def led3=r18 .def led4=r19 .def cnt1=r20 .def cnt2=r21 .def cnt3=r22 .def onoff=r23 ;****************************************************************** .org 0 rjmp reset ;RESET handler .org INT1addr rjmp inta ;INT1 handler .org OVF1addr rjmp timer ;TIMER1 overflow handler inta: in status, SREG ; out PORTB, led2 ;light LED2 ldi temp, $00 ;T/C disconnect from output pin out TCCR1A, temp ; ldi temp, 0b00000101;set CK/1024 out TCCR1B, temp ; ldi temp, $00 ; out TCNT1L, temp ; out TCNT1H, temp ; ldi temp, 0b10000000;enable interrupt from timer1 out TIMSK, temp ; out SREG, status ; reti ; timer: in status, SREG ; out PORTB, led1 ; out SREG, status ; reti ; reset: ldi led1,low(RAMEND) ;$DF out SPL,led1 ldi led1,$FF out DDRB,led1 ; set portb as outputs ldi led1, $01 ;LED1 code ldi led2, $02 ; ldi led3, $04 ; ldi led4, $08 ; ldi temp, $80 ;enable interrupt from INT1 out GIMSK, temp ; ldi temp, $00 ; out MCUCR, temp ; sei; out PORTB, led1 ; endprg: rjmp endprg ret