Цецо, от C-то нищо не отбирам, но съм правил нещо подобно на твоята задача за AT89C2052 на асемблер, идеята е че съм направил масив от jump или goto или call -ове и карам program countera да скача направо на съответният call или jump или goto, пък то от своя страна си отива където трябва и така... на тромавия атмел направо хвърчеше :
можеш да си наредиш колкото искаш jump-а и да си ги адресираш чрез указател, за pic предполагам че ще е нещо такова
при втория пример трябва да внимаваш за изхода от функциите не трябва да е със return а със goto щото стека ще те върне пак в масива със функциите!