#include __config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF) ;Enviromental Variables DELAY1 equ 0x20 DELAY2 equ 0x21 COUNT equ 0x22 TEMP equ 0x23 org 0x00 START: goto PORTS org 0x04 INCREASE: movwf TEMP movlw 0x02 incf COUNT,1 subwf COUNT,0 btfss STATUS,2 goto CONTINUE goto CLEAR DECREASE: movfw TEMP movlw 0x00 decf COUNT,1 addwf COUNT,0 btfss STATUS,2 goto CONTINUE goto CLEAR CLEAR: clrf COUNT movfw TEMP goto LOOP CONTINUE: movfw TEMP goto LOOP PORTS: bsf STATUS,RP0 ; select Register Page 1 movlw 0x00 ; Move the hex value of 0 to multi purpose register W movwf TRISC ; make IO PortC all output movlw 0x00 movwf TRISB movlw 0x03 movwf TRISA bcf STATUS,RP0 ; back to Register Page 0 clrf COUNT goto LOOP DELAY: decfsz DELAY1,1 goto DELAY movlw 0x64 movwf DELAY1 return LOOP: btfsc PORTA,0 goto INCREASE btfsc PORTA,1 goto DECREASE call CheckLevel movfw COUNT call TABLE; movwf PORTC goto LOOP CheckLevel: movlw 0x00 subwf COUNT,0 btfsc STATUS,2 call SLOW movlw 0x01 subwf COUNT,0 btfsc STATUS,2 call MEDIUM call FULL return FULL: bsf PORTB,4 return MEDIUM: bcf PORTB,4 call DELAY bsf PORTB,4 call DELAY bcf PORTB,4 return SLOW: bcf PORTB,4 call DELAY call DELAY call DELAY bsf PORTB,4 call DELAY bcf PORTB,4 return TABLE: addwf PCL retlw b'00000110' ;1 retlw b'01011011' ;2 retlw b'01001111' ;3 return end