This code should help you with your problem The delay between number increments is determined by 'timer' and will depend on the crystal frequency you choose. The 7 seg display needs to be a common cathode type. If you only have a common anode type then invert the display data. ie xorlw 0xff I haven't tested the code, but it should work Regards Tony list p=16c84,c=140 ; processor type errorlevel 1, -(305) ; ; status equ 3h rp0 equ 5h portb equ 6h trisb equ 86h intcon equ 0bh rtif equ 2h optionreg equ 81h ; counter equ 0ch timer equ 0dh ; org 0h ; program start bsf status,rp0 ; initialise clrf trisb movlw 7h ; prescale = 1:256 movwf optionreg bcf status,rp0 clrf portb clrf counter movlw d'15' movwf timer bcf intcon,rtif ; loop btfss intcon,rtif ; wait for RTCC overflow goto loop ; bcf intcon,rtif decfsz timer ; wait 15 overflow periods goto loop ; movlw d'15' ; reset timer movwf timer ; movf counter,w call display ; get 7 seg data movwf portb incf counter movlw d'10' ; test for overflow xorwf counter,w btfsc status,z clrf counter ; clear counter goto loop ; ; 7 Seg data ; display addwf pcl retlw b'00111111' retlw b'00000110' retlw b'01011011' retlw b'01001111' retlw b'01100110' retlw b'01101101' retlw b'01111101' retlw b'00000111' retlw b'01111111' retlw b'01101111' ; ; end Just when I thought I knew it all, I learned that I didn't.