PIC 18C Microcontoller Program Flow Method

Function pointers (like in "C")

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).

 Function pointers (like in "C")

 CBLOCK
   FUNCPTR:2 ; Address of function to be called
 ENDC

 movlw low(funca)
 movwf FUNCPTR,A
 movlw high(funca)
 movwf FUNCPTR+1,A
 .
 .
 rcall call_func ; Calls funca
xxx: .
 .
 bra ..whereever..

call_func:
 push ; Make room on call stack
 movf    FUNCPTR,W,A
 movwf TOSL,A
 movf    FUNCPTR+1,W,A
 movwf TOSH,A
 return

funca:
 .
 .
 return   ; returns to "xxx:", above

Comments: