;Program: dvojbajtová časová smyčka
;nižší bajt registr TM_L a vyšší bajt registr TM_H
;*******************************************************************************
 LIST P = 16F84, R = DEC
 #INCLUDE <P16F84.INC>
;------------------------------------------------------------------------------- 
 __CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;*******************************************************************************
RAM     EQU     H'0C'
;-------------------------------------------------------------------------------
TM_L    EQU     RAM
TM_H    EQU     RAM+1
;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
        ORG     0
        GOTO    START
;*******************************************************************************
SMYC    MOVLW   H'86'
        MOVWF   TM_L            ;zadání nižšího batju do registru TM_L
        MOVLW   H'13'
        MOVWF   TM_H            ;zadání vyššího bajtu do registru TM_H
        NOP                     ;časové vyrovnání
        NOP
        NOP
        NOP
        
SMC     MOVF    TM_L,F
        BTFSS   STATUS,Z        ;je nižší bajt roven nule?
        GOTO    SMC_1           ;ne,jdi na návěští SMC_1
        MOVF    TM_H,F          ;ano
        BTFSC   STATUS,Z        ;je vyšší bajt roven nule?
        GOTO    SMC_2           ;ano,jdi na návěští SMC_2
        DECF    TM_H,F          ;ne,odečti od vyššího bajtu jednu
SMC_3   DECF    TM_L,F          ;odečti od nižšího bajtu jednu
        GOTO    SMC             ;a znova dokola
        
SMC_1   NOP                     ;časová vyrovnávka a skok na návěští SMC_3
        GOTO    SMC_3 
        
SMC_2   NOP                     ;časová vyrovnávka a návrat
        RETURN
;*******************************************************************************                                
START   CALL    SMYC
        NOP
        END
