//----------------------------------------------------------------------
//Example HJ08-08 Counter using Ckedge                                                         S215   08 1008
//----------------------------------------------------------------------
ubyte global g_obyt, g_polarity, g_mode, g_p1
include "S215XC_Std_func.bas"		//Include S215 standard functions in this program
//----------------------------------------------------------------------
proc ubyte Ckedge(ubyte v, ubyte pv)		//Check for leading and trailing edges
//v	Edge variable
//pv	Previous state of v
			
if (pv == 0) && (v == 1) then
  pv = 1
  return 1				//Leading edge
else
  if (pv == 1) && (v == 0) then
    pv = 0
    return 3			//Trailing edge
  else
    if (pv == 1) && (v == 1) then
      return 2			//High between edges
    else
      pv = 0
      return 0			//Low between edges
    endif
  endif
endif
endproc
//----------------------------------------------------------------------
proc main()

ubyte in0, previn0, ibyt, edgecondition, cnt  
Init()
previn0 = 0
cnt = 0
while 1==1 do
//****************
  ibyt = GetInBts()
  in0 = SelBit(ibyt,0)

  edgecondition = Ckedge(in0, previn0) 
  previn0 = in0
  if edgecondition==1 then	//Leading edge
    cnt = cnt + 1
  endif
 
  Outall(cnt)
//**************** 
done

endproc
//----------------------------------------------------------------------
