/Pulses on inputs 1 to 4 are counted.
/When the count reaches 10 the corresponding output is turned on
/Input 8 is used to reset all the counts
/This has the same funtionality as Example 7 but uses a subroutine
Variables
u8 IPCounter[4]
u8 IPStatus[4]
u8 Status
u8 InputNumber
u8 Result
u8 Count
End
Start
Status=0
if Input1=1
Status=1
endif
InputNumber=0
call ProcessInput
Output1=Result
Status=0
if Input2=1
Status=1
endif
InputNumber=1
call ProcessInput
Output2=Result
Status=0
if Input3=1
Status=1
endif
InputNumber=2
call ProcessInput
Output3=Result
Status=0
if Input4=1
Status=1
endif
InputNumber=3
call ProcessInput
Output4=Result
if Input8=1
Count=0
for 4
IPCounter[Count]=0
Count=Count+1
endfor
endif
End
sub ProcessInput
if Status=1
if IPStatus[InputNumber]=0
IPCounter[InputNumber]=1+IPCounter[InputNumber]
IPStatus[InputNumber]=1
endif
else
IPStatus[InputNumber]=0
endif
Result=0
if IPCounter[InputNumber]>10
Result=1
endif
subend