' ============================================================================== ' ' File...... cmm.bs2 ' Purpose... To monitor the CMM status. ' Author.... Wm. W Hubler jr ' E-mail.... whubler@as.arizona.edu ' Started... 04.05.05 ' Updated... ' ' {$STAMP BS2} ' {$PBASIC 2.5} ' ' ============================================================================== ' ------------------------------------------------------------------------------ ' Program Description ' ------------------------------------------------------------------------------ ' This program sits on the com port waiting for a command, and act in turn. ' ------------------------------------------------------------------------------ ' Revision History ' ------------------------------------------------------------------------------ ' v0.1 - initial beta ' ------------------------------------------------------------------------------ ' I/O Definitions ' ------------------------------------------------------------------------------ ScanLight PIN 0 ' LED connected to Pin 0 FinishedLight PIN 1 ' LED connected to Pin 1 ErrorLight PIN 2 ' LED connected to Pin 2 RxD CON 14 ' serial input - to INEX RxD TxD CON 15 ' serial output - to INEX TxD ' ------------------------------------------------------------------------------ ' Constants ' ------------------------------------------------------------------------------ DelayOn CON 1000 ' on-time time in milliseconds DelayOff CON 250 ' off-time in milliseconds DelayTime CON 200 On CON 1 Off CON 0 Baud96 CON 84 ' 9600-8-N-1, BS2/BS2e CMenu CON $FF ' show command menu CScan CON $F0 ' flash yellow CDone CON $F1 ' flash white CError CON $F2 ' flash red ' ------------------------------------------------------------------------------ ' Variables ' ------------------------------------------------------------------------------ cmd VAR Byte ' command from PC/terminal ' ------------------------------------------------------------------------------ ' EEPROM Data ' ------------------------------------------------------------------------------ ' ------------------------------------------------------------------------------ ' Initialization ' ------------------------------------------------------------------------------ Initialize: DIRS = %111 ' LED pins are outputs GOTO Show_Menu ' ------------------------------------------------------------------------------ ' Program Code ' ------------------------------------------------------------------------------ Main: cmd = 0 SERIN RxD, Baud96, [WAIT ("?"), HEX cmd] ' check for menu request IF (cmd = CMenu) THEN Show_Menu ' convert command for branching LOOKDOWN cmd, [CScan, CDone, CError], cmd ' branch to requested routine BRANCH cmd, [Flash_Yellow, Flash_White, Flash_Red] Bad_Command: SEROUT TxD, Baud96, ["Invalid Command: ", HEX2 cmd, CR] GOTO Main ' ------------------------------------------------------------------------------ ' Subroutines ' ------------------------------------------------------------------------------ Show_Menu: SEROUT TxD, Baud96, [CLS] SEROUT TxD, Baud96, ["========================", CR] SEROUT TxD, Baud96, [" CMM Monitor ", CR] SEROUT TxD, Baud96, ["========================", CR] SEROUT TxD, Baud96, ["?FF - Menu", CR] SEROUT TxD, Baud96, ["?F0 - Yellow", CR] SEROUT TxD, Baud96, ["?F1 - White", CR] SEROUT TxD, Baud96, ["?F2 - Red", CR] SEROUT TxD, Baud96, ["Please enter a command.", CR, CR] GOTO Main Flash_Yellow: FinishedLight = Off ErrorLight = Off ScanLight = On GOTO Main Flash_White: ScanLight = Off ErrorLight = Off FinishedLight = On GOTO Main Flash_Red: ScanLight = Off FinishedLight = Off ErrorLight = On