#include "P18F4455.INC" ORG 0X0800 CBLOCK 0X00 VAR0 VAR1 SHIFT_REG ENDC ;;;;;; SETUP PORTD ;;;;;; CLRF PORTD MOVLW 0X03 MOVWF TRISD ;;;;;; SETUP PORTB ;;;;; MOVLW 0EH MOVWF ADCON1 CLRF TRISB CLRF SHIFT_REG BSF SHIFT_REG, 0 MOVFF SHIFT_REG, PORTB ;;;;;;;;;;;;;;;;;;;;;;;;; GOTO MAIN_PROGRAM ;;;;;;;;;;; BANK CLEAR FUNCTION ;;;;;;;;;; CLEAR_BANK0: LFSR FSR0, 100H CLEAR_LOOP: CLRF POSTINC0 BTFSS FSR0H,1 BRA CLEAR_LOOP RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; DELAY 1 MICRO ;;;;;;;;;;;;;;;; DELAY_1_MICRO: NOP RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;; DELAY 1 MILLISECCOND ;;;;;;;;; DELAY_1_MILLISEC: ; MOVLW 0FAH MOVWF VAR0 INNER_1_MILLISEC_DELAY: DCFSNZ VAR0,1 GOTO END_1_MILLI CALL DELAY_1_MICRO CALL DELAY_1_MICRO CALL DELAY_1_MICRO GOTO INNER_1_MILLISEC_DELAY END_1_MILLI: CALL DELAY_1_MICRO CALL DELAY_1_MICRO NOP RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;; DELAY 500 MILLISECCOND ;;;;;;;; DELAY_500_MILLISEC: MOVLW 0FAH MOVWF VAR1 INNER_500_MILLISEC_DELAY: DCFSNZ VAR1,1 GOTO END_500_MILLI MOVLW 0FAH CALL DELAY_1_MILLISEC MOVLW 0FAH CALL DELAY_1_MILLISEC GOTO INNER_500_MILLISEC_DELAY END_500_MILLI: MOVLW 0FAH CALL DELAY_1_MILLISEC MOVLW 0BBH CALL DELAY_1_MILLISEC CALL DELAY_1_MICRO NOP RETURN ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN_PROGRAM: ; CALL CLEAR_BANK0 CALL DELAY_500_MILLISEC BTG PORTD,2 RRNCF SHIFT_REG,1 MOVFF SHIFT_REG,PORTB GOTO MAIN_PROGRAM END