include "p16F877.INC" ;tells the assembler to include another source file
TIMREG EQU H'0020' ;tells the assembler that register 20 equals TIMREG
TIMREG1 EQU H'0021' ;setup new register 21 called timreg1
delval EQU H'00ff' ;delay time value 255
delval1 EQU H'00ff' ; " " " "
banksel TRISD ;change register bank
clrf PORTD ;make portd an output port
banksel PORTD ;change back to original bank
start movlw 0 ;move (mov) into the following literal(l) the value 0 into the w register
movwf PORTD ;clear leds on port d
loop
incf PORTD ;update the 7 segment display from table
call delay ;call delay subroutine
nop ;do nothing for one cycle
goto loop ;go back to instruction before the label loop
;
;+++++++++++++++++++++++++++++++++++++++SUBROUTINES+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
;
delay movlw delval ;load w with delay value
movwf TIMREG ;and put it into register
time call delay1 ;jump to subroutine delay 2 to further slow leds
decfsz TIMREG ;subtract one and skip next instruction if is zero
goto time ;go back and call another one off until 0
return ;return to call point
delay1 movlw delval1 ;load w with delay value
movwf TIMREG1 ;and put it into register
time1 decfsz TIMREG1 ;subtract one and skip next instruction if is zero
goto time1 ;go back and call another one off until 0
return ;return to call point
end