;=======================================================
; Проект 10. Светофор (красный RB0, жёлтый RB1, зелёный RB2)
; PIC16F84A, 4 МГц
;=======================================================
        LIST    p=16F84A
        #include <p16f84a.inc>
        __CONFIG _XT_OSC & _WDT_OFF & _PWRTE_ON & _CP_OFF

        cblock  0x0C
        d1, d2, d3, blink
        endc

        ORG     0x000
        goto    Start

Start
        bsf     STATUS,RP0
        clrf    TRISB
        bcf     STATUS,RP0
        clrf    PORTB

Main
        movlw   b'00000001'     ; КРАСНЫЙ
        movwf   PORTB
        call    Delay5s

        movlw   b'00000011'     ; красный + жёлтый
        movwf   PORTB
        call    Delay1s

        movlw   b'00000100'     ; ЗЕЛЁНЫЙ
        movwf   PORTB
        call    Delay5s

        movlw   .6              ; зелёный мигает 3 раза
        movwf   blink
GrBlink
        movlw   b'00000100'
        xorwf   PORTB,f
        call    Delay500
        decfsz  blink,f
        goto    GrBlink

        movlw   b'00000010'     ; ЖЁЛТЫЙ
        movwf   PORTB
        call    Delay1s
        goto    Main

Delay5s
        movlw   .10
        movwf   d3
D5      call    Delay500
        decfsz  d3,f
        goto    D5
        return

Delay1s
        call    Delay500
        call    Delay500
        return

Delay500
        movlw   .255
        movwf   d1
DL1     movlw   .255
        movwf   d2
DL2     nop
        nop
        decfsz  d2,f
        goto    DL2
        decfsz  d1,f
        goto    DL1
        return

        END
