;=======================================================
; Проект 23. Счётчик импульсов (основа частотомера)
; ATmega8, 8 МГц. Вход импульсов — T0 (PD4)
; T0 считает внешние импульсы, результат за 1 с — на PB0..PB7
;=======================================================
.include "m8def.inc"
.def    temp = r16
.def    d1   = r17
.def    d2   = r18
.def    d3   = r19

.cseg
.org    0x0000
        rjmp    RESET

RESET:
        ldi     temp, low(RAMEND)
        out     SPL, temp
        ldi     temp, high(RAMEND)
        out     SPH, temp
        ldi     temp, 0xFF
        out     DDRB, temp              ; индикация
        cbi     DDRD, PD4               ; вход T0
        sbi     PORTD, PD4              ; подтяжка

        ldi     temp, (1<<CS02)|(1<<CS01)   ; тактирование от вывода T0, по спаду
        out     TCCR0, temp

MAIN:
        clr     temp
        out     TCNT0, temp             ; открываем окно счёта
        rcall   DELAY1S                 ; измерительный интервал
        in      temp, TCNT0             ; число импульсов за секунду
        out     PORTB, temp
        rjmp    MAIN

DELAY1S:
        ldi     d3, 41
C3:     ldi     d2, 255
C2:     ldi     d1, 255
C1:     dec     d1
        brne    C1
        dec     d2
        brne    C2
        dec     d3
        brne    C3
        ret
