LIST P=PIC16F887 INCLUDE P16F887.INC __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC OUT EQU 0x20 O89 EQU 0x21 BUF EQU 0x22 SUB EQU 0x23 T_S EQU 0x24 T_M EQU 0x25 T_H EQU 0x26 CNT EQU 0x27 ORG 0x00 GOTO MAIN ORG 0x04 GOTO TIMER0 MAIN BANKSEL ANSEL CLRF ANSEL CLRF ANSELH MOVLW 0x04 MOVWF OPTION_REG MOVLW 0xA0 MOVWF INTCON BANKSEL TRISA CLRF TRISA CLRF TRISB CLRF TRISC CLRF TRISD CLRF TRISE BSF TRISB,4 BSF TRISB,5 BSF TRISB,6 BANKSEL PORTA CLRF PORTA CLRF PORTB CLRF PORTC CLRF PORTD CLRF PORTE MOVLW D'00' MOVWF T_S MOVLW D'00' MOVWF T_M MOVLW D'00' MOVWF T_H MAIN_LOOP BTFSS PORTB,4 CALL M_SET BTFSS PORTB,5 CALL H_SET MOVF T_S,W SUBLW D'00' BTFSS STATUS,Z GOTO MAIN_LOOP MOVF T_M,W SUBLW D'55' BTFSS STATUS,Z GOTO MAIN_LOOP MOVF T_H,W SUBLW D'07' BTFSS STATUS,Z GOTO MAIN_LOOP ALARM BZ1 BSF PORTB,7 BCF PORTB,7 INCFSZ CNT,F GOTO BZ1 BZ2 BSF PORTB,7 BCF PORTB,7 INCFSZ CNT,F GOTO BZ2 BTFSS PORTB,6 GOTO MAIN_LOOP GOTO ALARM TIMER0 BCF INTCON,T0IF MIN_H MOVLW 0x01 MOVWF OUT MOVLW D'09' MOVWF SUB MIN_H_LOOP MOVF T_M,W SUBWF SUB,W MOVWF BUF BTFSC STATUS,C GOTO MIN_H_OUT MOVF SUB,W ADDLW D'10' MOVWF SUB RLF OUT,F GOTO MIN_H_LOOP MIN_H_OUT MOVF OUT,W MOVWF PORTA MIN_L MOVLW 0x00 MOVWF OUT MOVLW 0x02 MOVWF O89 MIN_L_O89 MOVF BUF,W SUBLW D'00' BTFSC STATUS,Z GOTO MIN_L_OUT RRF O89,F MOVF BUF,W SUBLW D'01' BTFSC STATUS,Z GOTO MIN_L_OUT MIN_L_O07 MOVLW 0x80 MOVWF OUT MOVLW 0x00 MOVWF O89 MOVLW D'02' MOVWF SUB MIN_L_LOOP MOVF BUF,W SUBWF SUB,W BTFSC STATUS,Z GOTO MIN_L_OUT INCF SUB,F RRF OUT,F GOTO MIN_L_LOOP MIN_L_OUT MOVF OUT,W MOVWF PORTD MOVF O89,W MOVWF PORTB HOU_H MOVLW 0x01 MOVWF OUT MOVLW D'09' MOVWF SUB HOU_H_LOOP MOVF T_H,W SUBWF SUB,W MOVWF BUF BTFSC STATUS,C GOTO HOU_H_OUT MOVF SUB,W ADDLW D'10' MOVWF SUB RLF OUT,F GOTO HOU_H_LOOP HOU_H_OUT MOVF OUT,W MOVWF PORTE HOU_L MOVLW 0x00 MOVWF OUT MOVLW 0x08 MOVWF O89 HOU_L_O89 MOVF BUF,W SUBLW D'00' BTFSC STATUS,Z GOTO HOU_L_OUT RRF O89,F MOVF BUF,W SUBLW D'01' BTFSC STATUS,Z GOTO HOU_L_OUT HOU_L_O07 MOVLW 0x80 MOVWF OUT MOVLW 0x00 MOVWF O89 MOVLW D'02' MOVWF SUB HOU_L_LOOP MOVF BUF,W SUBWF SUB,W BTFSC STATUS,Z GOTO HOU_L_OUT INCF SUB,F RRF OUT,F GOTO HOU_L_LOOP HOU_L_OUT MOVF OUT,W MOVWF PORTC MOVF O89,W IORWF PORTB S60 INCF T_S,F MOVF T_S,W SUBLW D'60' BTFSC STATUS,Z CALL M60 RETFIE M60 CLRF T_S INCF T_M,F MOVF T_M,W SUBLW D'60' BTFSC STATUS,Z CALL H24 RETURN H24 CLRF T_M INCF T_H,F MOVF T_H,W SUBLW D'24' BTFSC STATUS,Z CLRF T_H RETURN M_SET CALL TIMER0 RETURN H_SET CALL M60 CALL TIMER0 RETURN END