/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
 

 

 

Example 8