| LOOKUP Example | Syntax |
' -------------------------------------------------------------------------
' Program Description
' -------------------------------------------------------------------------
'
' Uses LOOKUP to transfer a single digit value to a 7-segment LED.
' -------------------------------------------------------------------------
' Device Settings
' -------------------------------------------------------------------------
DEVICE SX28, OSC4MHZ, TURBO, STACKX, OPTIONX
FREQ 4_000_000
ID "LOOKUP"
' -------------------------------------------------------------------------
' IO Pins
' -------------------------------------------------------------------------
LEDs VAR RB ' 7-segment display
TRIS_LEDs VAR TRIS_B
' -------------------------------------------------------------------------
' Variables
' -------------------------------------------------------------------------
value VAR Byte ' digit to display
tmpB1 VAR Byte ' subroutine parameter
' =========================================================================
PROGRAM Start
' =========================================================================
' -------------------------------------------------------------------------
' Subroutine Declarations
' -------------------------------------------------------------------------
PUT_DIGIT SUB 1
' -------------------------------------------------------------------------
' Program Code
' -------------------------------------------------------------------------
Start:
TRIS_LEDs = %00000000 ' make LEDs outputs
Main:
DO
FOR value = 0 TO 16 ' demo values (last invalid)
LEDs = PUT_DIGIT value ' update the display
PAUSE 1000 ' pause one second
NEXT
LOOP
' -------------------------------------------------------------------------
' Subroutine Code
' -------------------------------------------------------------------------
' Use: destination = PUT_DIGIT value
' -- converts number in 'value' to 7-segment digit pattern
' and places it in 'destination'
PUT_DIGIT:
tmpB1 = __PARAM1 ' copy value
IF tmpB1 < $A THEN
' decimal
LOOKUP tmpB1, $3F,$06,$5B,$4F,$66,$6D,$7D,$07,$7F,$67, tmpB1
ELSE
IF tmpB1 < $10 THEN
' hex
tmpB1 = tmpB1 - 10 ' adjust for LOOKUP
LOOKUP tmpB1, $77,$7C,$39,$5E,$79,$71, tmpB1
ELSE
tmpB1 = %01000000 ' display dash
ENDIF
ENDIF
RETURN tmpB1