Syntax

' -------------------------------------------------------------------------
' Program Description
' -------------------------------------------------------------------------
'
' Variable-rate LED blinker.  Puts PAUSE into a subroutine for greatest
' flexibility and program space conservation.

' -------------------------------------------------------------------------
' Device Settings
' -------------------------------------------------------------------------

DEVICE          SX28, OSC4MHZ, TURBO, STACKX, OPTIONX
FREQ            4_000_000
ID		"PAUSE"

' -------------------------------------------------------------------------
' IO Pins
' -------------------------------------------------------------------------

Led             VAR     RB.0

' -------------------------------------------------------------------------
' Variables
' -------------------------------------------------------------------------

idx             VAR     Byte                    ' loop counter
timing          VAR     Word
tmpW1           VAR     Word                    ' for subroutines

' =========================================================================
  PROGRAM Start
' =========================================================================

' -------------------------------------------------------------------------
' Subroutine Declarations
' -------------------------------------------------------------------------

DELAY           SUB     1, 2                    ' delay in milliseconds

' -------------------------------------------------------------------------
' Program Code
' -------------------------------------------------------------------------

Start:
  DO
    FOR idx = 1 TO 10                           ' loop 1 to 10
      HIGH Led                                  ' LED on
      timing = 50 * idx                         ' calculate on timing
      DELAY timing                              ' pause 50 to 500 ms
      LOW Led                                   ' LED off
      timing = 50 * idx
      DELAY timing
    NEXT
  LOOP

' -------------------------------------------------------------------------
' Subroutine Code
' -------------------------------------------------------------------------

' Use: DELAY ms
' -- 'ms' is delay in milliseconds, 1 - 65535

DELAY:
  IF __PARAMCNT = 1 THEN
    tmpW1 = __PARAM1                            ' save byte value
  ELSE
    tmpW1 = __WPARAM12                          ' save word value
  ENDIF
  PAUSE tmpW1 
  RETURN