'========================================================== ' ' PicStic4 PicBasic Pro Demo for using FREQ, TOTALIZER, and ' I-Button using the PASS call ' '========================================================== ' Include "MODEDEFS.BAS" B0 var byte 'TEMPORARY STORAGE B1 var byte 'TEMPORARY STORAGE B2 var W1.byte0 'LSByte OF A 16-bit VALUE B3 var W1.byte1 'MSByte OF A 16-bit VALUE B10 var byte B11 var byte B12 var byte B13 var byte B14 var byte B15 var byte B16 var byte B17 var byte B19 var byte 'COMMAND [FOR PASS] B20 var byte 'LSB OF PARAMETER [FOR PASS] B21 var byte 'MSB OF PARAMETER [FOR PASS] W1 var word ' START: B0=0 START1: lookup B0,["Choose Demo:",13,10,"1 Frequency",13,10,"2 Totalizer",13,10,"3 I-Buttons",13,10,0],B1 if B1=0 then START2 SEROUT 7,N9600,[B1] B0=B0+1 goto START1 START2: SERIN 6,N9600,B1 if B1<49 or B1>51 then START B1=B1-49 branch B1,[DOFREQ,DOTOT,DOI] DOFREQ: B19=3 : B20=8 : B21=0 : REM SET CONFIGURATION TO FREQ gosub PS4 DOFREQ1:B0=0 DOFREQ2:lookup B0,["Any key for frequency",13,10,0],B1 if B1=0 then DOFREQ3 SEROUT 7,N9600,[B1] B0=B0+1 goto DOFREQ2 DOFREQ3:SERIN 6,N9600,B0 DOFREQ4:B19=17 : B20=0 : B21=0 : REM READ A PERIOD gosub PS4 DOFREQ5:B2=B20 : B3=B21 if W1>655 then DOFREQ6 W1=12500/W1*10 : REM FREQUENCY = [12500/PERIOD]*10 goto DOFREQ7 DOFREQ6:W1=W1/10 : W1=12500/W1 : REM FREQUENCY = 12500/[PERIOD/10] DOFREQ7:SEROUT 7,N9600,[#W1," Hz",13,10] goto DOFREQ1 DOTOT: B19=3 : B20=0 : B21=2 : REM SET CONFIGURATION TO TOTALIZER gosub PS4 DOTOT1: B19=18 : B20=10 : B21=0 : REM SET DEBOUNCE TIME [10mS] gosub PS4 DOTOT2: B19=20 : B20=0 : B21=0 : REM CLEAR THE TOTALIZER gosub PS4 DOTOT3: B0=0 DOTOT4: lookup B0,["Any key to read/clear Totalizer",13,10,0],B1 if B1=0 then DOTOT5 SEROUT 7,N9600,[B1] B0=B0+1 goto DOTOT4 DOTOT5: SERIN 6,N9600,B0 DOTOT6: B19=19 : B20=0 : B21=0 : REM READ THE TOTALIZER gosub PS4 DOTOT7: B2=B20 : B3=B21 SEROUT 7,N9600,[#W1," counts",13,10] goto DOTOT2 DOI: B19=3 : B20=0 : B21=1 : REM SET CONFIGURATION TO TOUCH MEMORY gosub PS4 DOI1: for B0=1 to 8 DOI2: B19=23 : B20=B0 : B21=0 : REM READ TOUCH MEMORY [2 of 8 bytes] gosub PS4 IF B20>8 THEN DOI1 branch B0,[I1,I1,I2,I3,I4,I5,I6,I7,I8] I1: B10=B21 : goto DOI3 I2: B11=B21 : goto DOI3 I3: B12=B21 : goto DOI3 I4: B13=B21 : goto DOI3 I5: B14=B21 : goto DOI3 I6: B15=B21 : goto DOI3 I7: B16=B21 : goto DOI3 I8: B17=B21 : goto DOI3 DOI3: next B0 B0=B17 : gosub PHEX B0=B16 : gosub PHEX B0=B15 : gosub PHEX B0=B14 : gosub PHEX B0=B13 : gosub PHEX B0=B12 : gosub PHEX B0=B11 : gosub PHEX B0=B10 : gosub PHEX SEROUT 7,N9600,[13,10] goto DOI1 PHEX: B1=B0/16 : B1=B1+48 if B1<57 then PHEX1 B1=B1+7 PHEX1: B0=B0//16 : B0=B0+48 if B0<57 then PHEX2 B0=B0+7 PHEX2: SEROUT 7,N9600,[B1,B0,32] return PS4: call PASS if B19<>0 or B20<>0 or B21<>0 then PS41 SEROUT 7,N9600,["Comm Error-",#B19,13,10] PS41: return