list P=16F628 include DELAY1 EQU 0x20 DELAY2 EQU 0x21 COMBYTE EQU 0x22 SECBYTE EQU 0x23 MIN_UNIT EQU 0X24 MIN_ZECI EQU 0x25 H_UNIT EQU 0x26 H_ZECI EQU 0x27 CONST_10 EQU 0X28 CONST_6 EQU 0X29 CONST_2 EQU 0X2A CONST_4 EQU 0x2B DELAY3 EQU 0x2C CLRF PORTA ;Initialize PORTA by setting output data latches MOVLW 0x07 ;Disable comparators and MOVWF CMCON ;pins for functioning as I/O BCF STATUS, RP1 BSF STATUS, RP0 ;Select Bank1 MOVLW 0x1F ;set pins MOVWF TRISA ;Set RA<4:0> as inputs ;TRISA<5> always read as ‘1’. ;TRISA<7:6> depend on oscillator mode MOVLW 0x00 ;set portb as outs MOVWF TRISB CLRF PORTB ;reset outs BCF STATUS, RP1 BCF STATUS, RP0 ;Select Bank0 MOVLW '*' MOVLW '*' MOVLW '*' MOVLW 'J' MOVLW 'a' MOVLW 'r' MOVLW '.' MOVLW 'C' MOVLW 'l' MOVLW 'o' MOVLW 'c' MOVLW 'k' MOVLW '.' MOVLW '2' MOVLW '0' MOVLW '1' MOVLW '6' MOVLW '.' MOVLW 'M' MOVLW 'a' MOVLW 'r' MOVLW 'i' MOVLW 'u' MOVLW 's' MOVLW '.' MOVLW 'T' MOVLW 'a' MOVLW 'c' MOVLW 'i' MOVLW 'u' MOVLW 'c' MOVLW '.' MOVLW '*' MOVLW '*' MOVLW '*' MOVLW 0x06 MOVWF MIN_UNIT MOVLW 0x01 MOVWF MIN_ZECI MOVLW 0x05 MOVWF H_UNIT MOVLW 0x01 MOVWF H_ZECI MOVLW 0x0A MOVWF CONST_10 MOVLW 0x06 MOVWF CONST_6 MOVLW 0x02 MOVWF CONST_2 MOVLW 0x04 MOVWF CONST_4 REPEAT BTFSC PORTA,0 CALL INCREMENT_TIME BTFSC PORTA,2 CALL INCREMENT_M BTFSC PORTA,1 CALL INCREMENT_H CALL PROC_AFISARE_COMPLETA GOTO REPEAT ;### PROC_AFISARE_COMPLETA ### PROC_AFISARE_COMPLETA MOVLW 0x0F MOVWF PORTB CALL SEL_D1 CALL AFISARE_MU MOVLW 0x0F MOVWF PORTB CALL SEL_D2 CALL AFISARE_MZ MOVLW 0x0F MOVWF PORTB CALL SEL_D3 CALL AFISARE_HU MOVLW 0x0F MOVWF PORTB CALL SEL_D4 CALL AFISARE_HZ RETURN ;### PROCEDURA INCREMENT_TIME INCREMENT_TIME INCF MIN_UNIT MOVFW CONST_10 SUBWF MIN_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_TIME MOVLW 0x00 MOVWF MIN_UNIT INCF MIN_ZECI MOVFW CONST_6 SUBWF MIN_ZECI,0 BTFSS STATUS,Z GOTO ENDINC_TIME MOVLW 0x00 MOVWF MIN_ZECI INCF H_UNIT MOVFW CONST_10 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_TIME MOVLW 0x00 MOVWF H_UNIT INCF H_ZECI ENDINC_TIME MOVFW CONST_2 SUBWF H_ZECI,0 BTFSS STATUS,Z GOTO ENDINC_TIME2 MOVFW CONST_4 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_TIME2 MOVLW 0x00 MOVWF H_UNIT MOVLW 0x00 MOVWF H_ZECI ENDINC_TIME2 CALL DELAY_DISP CALL DELAY_DISP CALL DELAY_DISP CALL DELAY_DISP CALL DELAY_DISP CALL DELAY_DISP RETURN ;### PROCEDURA INCREMENT_M ### INCREMENT_M INCF MIN_UNIT MOVFW CONST_10 SUBWF MIN_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_M MOVLW 0x00 MOVWF MIN_UNIT INCF MIN_ZECI MOVFW CONST_6 SUBWF MIN_ZECI,0 BTFSS STATUS,Z GOTO ENDINC_M MOVLW 0x00 MOVWF MIN_ZECI INCF H_UNIT MOVFW CONST_10 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_M MOVLW 0x00 MOVWF H_UNIT INCF H_ZECI ENDINC_M MOVFW CONST_2 SUBWF H_ZECI,0 BTFSS STATUS,Z GOTO ENDINC_M2 MOVFW CONST_4 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_M2 MOVLW 0x00 MOVWF H_UNIT MOVLW 0x00 MOVWF H_ZECI ENDINC_M2 CALL DELAY_DISP RETURN ;### PROCEDURA SEL_D1### SEL_D1 BCF PORTB,0 BSF PORTB,1 BSF PORTB,2 BSF PORTB,3 RETURN ;### PROCEDURA SEL_D2### SEL_D2 BSF PORTB,0 BCF PORTB,1 BSF PORTB,2 BSF PORTB,3 RETURN ;### PROCEDURA SEL_D3### SEL_D3 BSF PORTB,0 BSF PORTB,1 BCF PORTB,2 BSF PORTB,3 RETURN ;### PROCEDURA SEL_D4### SEL_D4 BSF PORTB,0 BSF PORTB,1 BSF PORTB,2 BCF PORTB,3 RETURN ;### PROCEDURA AFISARE_MU ### AFISARE_MU BTFSC MIN_UNIT,0 BSF PORTB,4 BTFSC MIN_UNIT,1 BSF PORTB,7 BTFSC MIN_UNIT,2 BSF PORTB,6 BTFSC MIN_UNIT,3 BSF PORTB,5 CALL DELAYSCURT RETURN ;### PROCEDURA AFISARE_MZ ### AFISARE_MZ BTFSC MIN_ZECI,0 BSF PORTB,4 BTFSC MIN_ZECI,1 BSF PORTB,7 BTFSC MIN_ZECI,2 BSF PORTB,6 BTFSC MIN_ZECI,3 BSF PORTB,5 CALL DELAYSCURT RETURN ;### PROCEDURA AFISARE_HU ### AFISARE_HU BTFSC H_UNIT,0 BSF PORTB,4 BTFSC H_UNIT,1 BSF PORTB,7 BTFSC H_UNIT,2 BSF PORTB,6 BTFSC H_UNIT,3 BSF PORTB,5 CALL DELAYSCURT RETURN ;### PROCEDURA AFISARE_HZ ### AFISARE_HZ BTFSC H_ZECI,0 BSF PORTB,4 BTFSC H_ZECI,1 BSF PORTB,7 BTFSC H_ZECI,2 BSF PORTB,6 BTFSC H_ZECI,3 BSF PORTB,5 CALL DELAYSCURT RETURN ;### PROCEDURA INCREMENT_H ### INCREMENT_H INCF H_UNIT MOVFW CONST_10 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_TIME21 MOVLW 0x00 MOVWF H_UNIT INCF H_ZECI ENDINC_TIME21 MOVFW CONST_2 SUBWF H_ZECI,0 BTFSS STATUS,Z GOTO ENDINC_TIME22 MOVFW CONST_4 SUBWF H_UNIT,0 BTFSS STATUS,Z GOTO ENDINC_TIME22 MOVLW 0x00 MOVWF H_UNIT MOVLW 0x00 MOVWF H_ZECI ENDINC_TIME22 CALL DELAY_DISP RETURN ;### PROCEDURA DELAY SCURT ### DELAYSCURT MOVLW 0x03 MOVWF DELAY1 CLRF DELAY2 Loop3 DECFSZ DELAY2,f GOTO Loop3 DECFSZ DELAY1,f GOTO Loop3 RETURN ;### PROCEDURA DELAY_DISP ### DELAY_DISP MOVLW 0x1A MOVWF DELAY3 LOOP31 CALL PROC_AFISARE_COMPLETA DECFSZ DELAY3,f GOTO LOOP31 RETURN end