ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
4 декабря
144635 Топик полностью
leon_ (15.01.2009 12:18, просмотров: 196) ответил Evgeny_CD на Скачайте и расскажите нам! Интересно.
Попробовал компильнуть их пример Timer1_Interrupt. Вот как выглядит lst обработчика и вопросы по нему: 1. Зачем сохранялись R30, R31? 2. Почему не сохранялся используемый R16? Timer1Overflow_ISR: PUSH R30 PUSH R31 PUSH R27 IN R27, SREG PUSH R27 ; void Timer1Overflow_ISR() org IVT_ADDR_TIMER1_OVF { ; if (counter >= _THRESHOLD) { LDS R16, _counter+0 CPI R16, 10 BRLO L_Timer1Overflow_ISR0 L__Timer1Overflow_ISR5: ; PORTB = ~PORTB; // toggle PORTB IN R16, PORTB COM R16 OUT PORTB, R16 ; counter = 0; // reset counter LDI R27, 0 STS _counter+0, R27 ; } RJMP L_Timer1Overflow_ISR1 L_Timer1Overflow_ISR0: ; counter++; // increment counter LDS R16, _counter+0 SUBI R16, 255 STS _counter+0, R16 L_Timer1Overflow_ISR1: ; } L_endTimer1Overflow_ISR: POP R27 OUT SREG, R27 POP R27 POP R31 POP R30 RETI