> I tried running it in MPLAB's debugger, but the debugger runs > straight through the code, from top to bottom, and seems to be > ignoring any and all CALLs and GOTOs that are placed in it. Seems OK here > The watchlist updates none of the defined variables (EQUs) > that I can tell. At 4MHz, INCFSZ Rghtdsp is reached after 2.1 seconds and Watch shows the increment Just a few tips to make the code more readable (re note yesterday about labels being comments too) #define ones porta,0 #define tens porta,1 #define hundreds porta,2 and use eg BSF ONES instead of BSF PORTA,0 RAM definitions are correct for the F628 but may not be for other micros. CBLOCK is easier to use for absolute addressing CBLOCK 0X20 ;note only base address needs to be changed RghtDsp ;no addressing needed here, typos avoided LeftDsp CountW etc ENDC but you should be looking at relocatable code Also, at least use CLRF STATUS at the start to make sure RP0 and RP1 are 0 (bank0 is selected) Default register is F so ,F is not needed after instructions. Saves a little clutter. And makes it easier to spot ,W mistakes Resetting variables to 00 is a good habit. I've been caught by that. CLRF variable is another clutter-saver -- http://www.piclist.com hint: The list server can filter out subtopics (like ads or off topics) for you. See http://www.piclist.com/#topics