;==========================Шапка программы=========================
            LIST        P=16F84A
            #include    P16F84A.INC
            __CONFIG    03FF5H       ; code protect_off&Pover up taimer_on&WDTE_on&XT_on
;==================================================================
Reg_1       EQU         0Ch
Reg_2       EQU         0Dh
Reg_3       EQU         0Eh
TimeH       EQU         0Fh
TimeHL      EQU         10h
TimeL       EQU         11h
F           EQU         1
            org         0
;==============================================================
; подготовка
           ; bcf         TRISA,RA1   ; установка PORTA на вход
            bsf         STATUS,5    ; переход в банк 1                
            movlw       .2
            movwf       TRISA
            clrf        TRISB       ; сброс 
            bcf         STATUS,5    ; переход в банк 0
            clrf        PORTB       ; очистка порта
            goto        start
;==============================================================
start       clrwdt
            movlw       .170       ;включение портов через 1
            movwf       PORTB
            call        pause1
            call        pause1     ; задержка 1 секунда
;отслеживание нажатия кнопки    
metka1      clrwdt
            btfss       PORTA,1     ;ПРОВЕРКА НОЖКИ PORT 1
            goto        metka1      ;ЕСЛИ КНОПКА НАЖАТА - ЦИКЛ,ЕСЛИ не НАЖАТА ТО ПРОПУСКАЕМ ПЕРЕХОД
r           clrwdt
            movlw       .255
            movwf       PORTB       ;ВКЛЮЧЕНИЕ ВСЕХ ПОРТОВ
            call        pause2
            clrwdt
            movlw       .85
            movwf       PORTB
            call        pause2      ; ПЕРЕХОД В ПП PAUSE ЗАДЕРЖКА ВКЛЮЧЕНИЯ 2 СЕК
;================================================================
            movlw       .11        ;ПОДПРОГРАММА МИГАНИЯ ПРОТИВ 
            movwf       TimeL       ;ЧАСОВОЙ СТРЕЛКИ
            movlw       .16
            movwf       PORTB
m2          clrwdt
            rlf         PORTB,1     ;здвиг в лево на 1
            call        pause1      ; задержка на 0.5 сек
            decfsz      TimeL, F    ; задержка 3 секунды
            goto        m2          ;вопрос? будет ли правильным пп паузы вынести в 
            clrwdt                  ;отдельную ПП, а переход из мигания по часовой в против
            btfss       PORTA,1     ; проверяем нажата ли кнопка,если отжата, то переходим в ПП metka1, если нет, идем дальше
            goto        metka1
;======================================================================
            movlw       .11        ;ПОДПРОГРАММА МИГАНИЯ ПО 
            movwf       TimeL       ;ЧАСОВОЙ СТРЕЛКИ
            movwf       PORTB            ;movwf       TimeH
m3          clrwdt
            rrf         PORTB,1     ;здвиг в право на 1
            call        pause1         ; задержка на 0.5 сек
            decfsz      TimeL, F
            goto        m3
            clrwdt
            btfsc       PORTA,1
            goto        metka1
;===========================бегуший огонек============================
            movlw       .11        ;ПОДПРОГРАММА МИГАНИЯ ПО 2 светодиода 
            movwf       TimeL
            movlw       .3          ; запись в аккумулятор 
            movwf       PORTB       ; перенос из аккумулятора в порт
m4          clrwdt
            rrf         PORTB,1     ;здвиг в право на 1
            call        pause1 
            decfsz      TimeL, F
            goto        m4
            btfss       PORTA,1
            nop
            goto        metka1
;=========================бегущая тень==================================
            movlw       .11        ;ПОДПРОГРАММА МИГАНИЯ ПО 2светодиода
            movwf       TimeL
            movlw       .192          ; запись в аккумулятор 
            movwf       PORTB       ; перенос из аккумулятора в порт
m5          clrwdt
            rlf         PORTB,1     ;здвиг в право на 1
            call        pause1 
            decfsz      TimeL, F
            goto        m5
            btfss       PORTA,1
            nop
            goto        metka1
;=============================PAUSE 1 0.5sec==============================
pause1      movlw       .126
            movwf       Reg_1
            movlw       .137
            movwf       Reg_2
            movlw       .3
            movwf       Reg_3
wr1         decfsz      Reg_1, F
            goto        wr1
            clrwdt
            decfsz      Reg_2, F
            goto        wr1
            decfsz      Reg_3, F
            goto        wr1
            return
;=========================PAUSE 2 2 sec====================================
pause2      movlw       .255
            movwf       Reg_1
            movlw       .34
            movwf       Reg_2
            movlw       .11
            movwf       Reg_3
wr2         decfsz      Reg_1, F
            goto        wr2
            clrwdt
            decfsz      Reg_2, F
            goto        wr2
            decfsz      Reg_3, F
            goto        wr2
            nop
            nop
            return
;=========================================================================
            end