LIST P=12F508
#INCLUDE
__CONFIG _CP_ON&_WDT_OFF&_MCLRE_ON&_IntRC_OSC CBLOCK 07H
COUNTA
COUNTB
GPIO_SHADOW
ENDC
ORG 00h
NOP
GOTO MAIN
TESTB BTFSC COUNTB,0
GOTO S
BSF COUNTA,0
RETLW 0
S BCF COUNTA,0
RETLW 0
DELAY10MS
MOVLW 0DH
MOVWF 0AH
LOOP1 MOVLW 0FFH
MOVWF 0BH
LOOP2 DECFSZ 0BH
GOTO LOOP2
DECFSZ 0AH
GOTO LOOP1
RETLW 0
DELAY3S
MOVLW 0FH
MOVWF 0CH
LOOP4 MOVLW 0FFH
MOVWF 0DH
LOOP5 MOVLW 0FFH
MOVWF 0EH
LOOP6 DECFSZ 0EH
GOTO LOOP6
DECFSZ 0DH
GOTO LOOP5
DECFSZ 0CH
GOTO LOOP4
RETLW 0
OUTPUT1
BSF GPIO_SHADOW,2
BSF GPIO_SHADOW,1
BSF GPIO_SHADOW,0
MOVF GPIO_SHADOW,w
MOVWF GPIO
RETLW 0
MAIN MOVLW 38h
TRIS 6
MOVLW 80h
OPTION
CLRF COUNTA
BSF COUNTB,0
LOOP BTFSC GPIO,4
GOTO S2
BTFSC GPIO,5
GOTO S1
CALL TESTB
BCF GPIO_SHADOW,2
BCF GPIO_SHADOW,1
BCF GPIO_SHADOW,0
MOVF GPIO_SHADOW,w
MOVWF GPIO
GOTO LOOP
S1 CALL DELAY10MS
CALL TESTB
CALL OUTPUT1
GOTO LOOP
S2 CALL DELAY10MS
BTFSC GPIO,5
GOTO S3
BTFSC COUNTA,0
GOTO S4
BSF GPIO_SHADOW,2
BCF GPIO_SHADOW,1
BCF GPIO_SHADOW,0
MOVF GPIO_SHADOW,w
MOVWF GPIO
BCF COUNTB,0
CALL DELAY3S
GOTO LOOP
S3 CALL DELAY10MS
CALL TESTB
LOOP3 CALL OUTPUT1
BTFSC GPIO,5
GOTO LOOP3
BTFSC GPIO,4
GOTO LOOP3
GOTO LOOP
S4 BCF GPIO_SHADOW,2
BSF GPIO_SHADOW,1
BCF GPIO_SHADOW,0
MOVF GPIO_SHADOW,w
MOVWF GPIO
BSF COUNTB,0
CALL DELAY3S
GOTO LOOP
END