'**************************************************************** '* Name : Ledshift5.BAS * '* Author : Henry Schouwstra * '* Notice : Copyright (c) 2008 HES * '* : All Rights Reserved * '* Date : 6-1-2008 * '* Version : 1.0 * '* Notes : Een tool/tutorial om een UAA2022 shiftregister + * '* : 16 leds driver aan te sturen. * '**************************************************************** ; Eerste projekt, Cylon eye - 5 leds van rechts naar links en vv DEVICE 16F628A CONFIG HS_OSC, WDT_OFF, PWRTE_ON, LVP_OFF, MCLRE_OFF XTAL 20 ALL_DIGITAL TRUE SYMBOL Data_In = PORTA.0 ;DI van de UAA2022 SYMBOL ChipSelect = PORTA.1 ;/CS van de UAA2022 ;0 voordat de neergaande flank van /CLK komt ;1 pas >1us na de opgaande flank van /CLK SYMBOL Clock = PORTA.2 ;/CLK van de UAA2022, shift op positieve flank DIM Teller AS BYTE DIM Teller2 AS BYTE DIM Teller3 AS BYTE DIM BitFlag AS BYTE DIM LedData[16] AS BYTE DIM CylonData[16] AS BYTE CLEAR ;Wis alle RAM geheugen PORTA=%00000000 TRISA=%11111000 GOSUB ClearArray WHILE 1=1 ;5 led's aan, rest uit. FOR Teller3 = 1 TO 12 FOR Teller2 = 1 TO 16 LedData[Teller2]=LREAD Cylon_Data +(16*(Teller3-1))+(Teller2-1) NEXT GOSUB FillArray DELAYMS 10 NEXT DELAYMS 125 FOR Teller3 = 11 TO 1 STEP -1 FOR Teller2 = 1 TO 16 LedData[Teller2]=LREAD Cylon_Data +(16*(Teller3-1))+(Teller2 - 1) NEXT GOSUB FillArray DELAYMS 10 NEXT DELAYMS 750 WEND END ClearArray: ;Wis het schuifregister ;alle 16 bits in het schuifregister op 0 FOR Teller = 1 TO 16 LedData[Teller]=0 NEXT FillArray: ;stuur de array naar het schuifregister FOR Teller = 1 TO 16 ChipSelect=0 Clock=0 Data_In=LedData[Teller] Clock=1 ;DI wordt ingeklokt ChipSelect=1 NEXT RETURN END Cylon_Data: LDATA 1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0 LDATA 0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0 LDATA 0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0 LDATA 0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0 LDATA 0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0 LDATA 0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0 LDATA 0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0 LDATA 0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0 LDATA 0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0 LDATA 0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0 LDATA 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0 LDATA 0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1