' ========================================================================= ' ' File....... TaskManager.BS2 ' Purpose.... ' Author..... Jon Williams -- Parallax, Inc. ' E-mail..... jwilliams@parallax.com ' Started.... ' Updated.... DD MMM YYYY ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ========================================================================= ' -----[ Program Description ]--------------------------------------------- ' -----[ Revision History ]------------------------------------------------ ' -----[ I/O Definitions ]------------------------------------------------- ' -----[ Constants ]------------------------------------------------------- Task0 CON 0 Task1 CON 1 Task2 CON 2 LastTask CON 2 ' -----[ Variables ]------------------------------------------------------- taskCtrl VAR Nib ' -----[ EEPROM Data ]----------------------------------------------------- ' -----[ Initialization ]-------------------------------------------------- Reset: ' -----[ Program Code ]---------------------------------------------------- Main: DO GOSUB Critical_Task ON taskCtrl GOSUB Do_Task0, Do_Task1, Do_Task1 IF (taskCtrl > LastTask) THEN ' trap error taskCtrl = Task0 ENDIF LOOP END ' -----[ Subroutines ]----------------------------------------------------- Critical_Task: ' software "interrupt" code here RETURN ' ------------------------------------------------------------------------- Do_Task0: ' task 0 code taskCtrl = Task1 ' point to next task RETURN ' ------------------------------------------------------------------------- Do_Task1: ' task 1 code taskCtrl = Task2 RETURN ' ------------------------------------------------------------------------- Do_Task2: ' task 2 code IF (condition) THEN ' conditionally select taskCtrl = Task0 ' next task ELSE taskCtrl = Task3 ENDIF RETURN