;=======================================================
; Проект 23. Счётчик импульсов (основа частотомера)
; PIC16F84A, 4 МГц. Вход импульсов — RA4/T0CKI
; TMR0 работает счётчиком внешних импульсов,
; результат за 1 секунду выводится на светодиоды RB0..RB7
;=======================================================
        LIST    p=16F84A
        #include <p16f84a.inc>
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

        cblock  0x0C
        d1, d2, d3
        endc

        ORG     0x000
        goto    Start

Start
        bsf     STATUS,RP0
        clrf    TRISB           ; индикация — выходы
        movlw   b'00110000'     ; RA4 — вход
        movwf   TRISA
        movlw   b'00101000'     ; TMR0 от RA4/T0CKI, по спаду, без предделителя
        movwf   OPTION_REG
        bcf     STATUS,RP0

Main
        clrf    TMR0            ; открываем окно счёта
        call    Delay1s         ; измерительный интервал 1 секунда
        movf    TMR0,w          ; сколько импульсов насчитали
        movwf   PORTB           ; выводим код на светодиоды
        goto    Main

;--- измерительное окно ровно 1 секунда ---
Delay1s
        movlw   .5
        movwf   d3
S1      movlw   .255
        movwf   d1
S2      movlw   .255
        movwf   d2
S3      nop
        nop
        decfsz  d2,f
        goto    S3
        decfsz  d1,f
        goto    S2
        decfsz  d3,f
        goto    S1
        return

        END
