PIC 18C Microcontoller Program Flow Method

Unlimited computed goto (or table lookup)

Bob Ammerman [rammerman at prodigy.net] of RAm Systems says

The PIC18Cxx2 chips contain quite a few nice new features. One of the neatest is programmable access to the stack. This feature allows many powerful tricks.

Notes:

  1. this code has _NOT_ been tested!
  2. all multi-byte values are little-endian
  3. I assume the code space never exceeds 16 bits worth (which it never will on the 242, 252, 442 or 452 chips).
Unlimited computed goto (or table lookup)
   Allows tables aligned on any boundary, of any size that will
   fit in memory.

 CBLOCK
   GOTOARG:2 ; Table index
 ENDC

 mov?? GOTOARG  ; setup argument
 rcall comp_goto
 retlw xxx
 retlw xxx
 .
 .
 retlw xxx

comp_goto:
 movf GOTOARG,W,A ; get lsbits of argument
 addwf TOSL,F,A
 movf GOTOARG+1,W,A ; get msbits of argument
 addwfc TOSH,F,A
 return

Note: Alternatively 'comp_goto' could itself compute the value to be added
to TOSx instead of setting it up before hand.

Note: GOTOARG should be even!