| SHIFTOUT Example | Syntax |
' -------------------------------------------------------------------------
' Program Description
' -------------------------------------------------------------------------
'
' Transfers a counter value to eight LEDs using a 74HC595 shift register.
'
' A SpeedMult value of 10 is used to bump the SHIFTOUT clock speed to
' ~830 kBit/sec (well within 74x595 limits and 4 MHz SX clock).
' -------------------------------------------------------------------------
' Device Settings
' -------------------------------------------------------------------------
DEVICE SX28, OSC4MHZ, TURBO, STACKX, OPTIONX
FREQ 4_000_000
ID "SHIFTOUT"
' -------------------------------------------------------------------------
' IO Pins
' -------------------------------------------------------------------------
Dpin VAR RA.0 ' shift data
Cpin VAR RA.1 ' shift clock
Latch VAR RA.2 ' latch outputs
' -------------------------------------------------------------------------
' Variables
' -------------------------------------------------------------------------
counter VAR Word ' counter to display
tmpB1 VAR Byte
' =========================================================================
PROGRAM Start
' =========================================================================
' -------------------------------------------------------------------------
' Subroutine Declarations
' -------------------------------------------------------------------------
PUT_595 SUB 1, 2 ' allow byte or word
' -------------------------------------------------------------------------
' Program Code
' -------------------------------------------------------------------------
Start:
DO
FOR counter = 0 TO 255 ' loop through all values
PUT_595 counter ' transfer counter to 595
PAUSE 100 ' wait 1/10 second
NEXT
LOOP
' -------------------------------------------------------------------------
' Subroutine Code
' -------------------------------------------------------------------------
' Use: PUT_595 value
' -- moves LSB of 'value' (can be byte or word) to 74HC595
PUT_595:
tmpB1 = __PARAM1 ' save LSB of value
SHIFTOUT Dpin, Cpin, MSBFIRST, tmpB1, 10 ' send the bits
PULSOUT Latch, 1 ' transfer to outputs
RETURN