Code:
'****************************************************************
;
;Name : Code Example
'* Author : Charles Linquist
'* Date : 9/10/2011
'* Version :1.0
'* Notes : For the Forum
'****************************************************************
DEFINE OSC 40
DEFINE NO_CLRWDT 1
DEFINE _18F8723 1
DEFINE HSER_RCSTA 90H
DEFINE HSER_TXSTA 20H
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1
DEFINE LOADER_USED 1
TRISC = %10111111
MaxChars var byte
Inputstring var byte [12]
Timeout var word
X var byte
CharInput var byte
InputString_Len Var Byte
CMD VAR BYTE
MaxChars = 10
InputString_Len = MaxChars
Timeout = 9000
BS con 8
CR CON 13
LF CON 10
ESC CON 27
SP CON 32
topp:
Gosub GetCharInput
Gosub ConvertToUpper
Gosub Parseit
goto topp
;-------------------------------------------------------------------
GetCharInput:
HSEROUT [CR,LF,"Input ? "]
TextIn:
ArrayWrite InputString,[REP 0\MaxChars] ; zero out the string to start with
X = 0
TextIn2:
HSERIN Timeout,NoInput,[CharInput]
IF CharInput = CR Then Goto DoneInput
If CharInput = ESC THEN goto NoInput
IF CharInput = BS THEN
IF X = 0 THEN
Goto TextIn2
ELSE
HSEROUT [BS,SP,BS]
X = X - 1
InputString[x] = 0 ; zero out the backspaced char
GOTO TextIn2
ENDIF
ENDIF
InputString[X] = CharInput
HSEROUT [CharInput] ; Show what we got
IF X >= MaxChars then goto DoneInput
X = X + 1
GOTO TextIn2
DoneInput:
Return
NoInput:
ArrayWrite InputString,[REP 0\MaxChars] ; wipe everything
out
hserout [CR,LF,"No Input!",CR,LF]
Return
;------------------------------------------------------------------------------
ConvertToUpper:
For X = 0 to MaxChars
IF InputString[X] > 96 and INputString[X] < 123 then
InputString [X] = Inputstring[X] & %11011111
ENDIF
Next X
Return
;-----------------------------------------------------------------------------
Parseit:
Parse01: Cmd=01 : ARRAYREAD InputString,InputString_Len,Parse02,[WAIT("AGE")] : GOTO Foundit
Parse02: Cmd=02 : ARRAYREAD InputString,InputString_Len,Parse03,[WAIT("BIRTHDAY")] : GOTO Foundit
Parse03: Cmd=03 : ARRAYREAD InputString,InputString_Len,Parse04,[WAIT("CITY")] : GOTO Foundit
Parse04: Cmd=04 : ARRAYREAD InputString,InputString_Len,Parse05,[WAIT("STATE")] : GOTO Foundit
Parse05: Cmd=05 : ARRAYREAD InputString,InputString_Len,Parse06,[WAIT("COUNTRY")] : GOTO Foundit
Parse06:
Cmd=255
Foundit:
Select Case Cmd
Case 1
Hserout [CR,LF,"You typed 'AGE'",CR,Lf]
CASE 2
Hserout [CR,LF,"You typed 'BIRTHDAY'",CR,Lf]
CASE 3
HSEROUT [CR,LF,"You typed 'CITY'",CR,Lf]
CASE 4
HSEROUT [CR,LF,"You typed 'STATE'",CR,Lf]
CASE 5
HSEROUT [CR,LF,"You typed 'COUNTRY'",CR,Lf]
CASE ELSE
HSEROUT [CR,LF,"Invalid command",CR,LF]
END SELECT
RETURN
Bookmarks