;=======================================================
; Проект 04. Кнопка-триггер: нажал — включил, нажал — выключил
; PIC16F84A. Кнопка RA0, светодиод RB0
;=======================================================
        LIST    p=16F84A
        #include <p16f84a.inc>
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

        cblock  0x0C
        d1, d2
        endc

        ORG     0x000
        goto    Start

Start
        bsf     STATUS,RP0
        clrf    TRISB
        movlw   b'00011111'
        movwf   TRISA
        bcf     STATUS,RP0
        clrf    PORTB

Main
        btfsc   PORTA,0         ; ждём нажатия
        goto    Main
        call    Debounce
        btfsc   PORTA,0         ; ложное срабатывание?
        goto    Main

        movlw   b'00000001'     ; инвертируем состояние светодиода
        xorwf   PORTB,f

WaitRel
        btfss   PORTA,0         ; ждём отпускания
        goto    WaitRel
        call    Debounce
        goto    Main

Debounce
        movlw   .26
        movwf   d1
DB1     movlw   .255
        movwf   d2
DB2     decfsz  d2,f
        goto    DB2
        decfsz  d1,f
        goto    DB1
        return

        END
