'really simple SPI routine symbol resetA = output7 ;output symbol ssA = output5 ;output symbol sclkA = output4 ;output symbol misoA = input0 ;input symbol mosiA = output6 ; output symbol drdyA = input1 symbol mainser = output2 sertxd("starting...") main: pause 100 high ssA 'low ssA low ssA '*****SENSOR A BEGIN********************************* findz: w0=0 'y-axis w1=0 'x-axis w2=0 'z-axis w3=0 low SCLKA low resetA high resetA ;pulse the reset line to start a new command low resetA low MOSIA ;*********clock out the command byte of %01100011 -z-axis, 256/div high SCLKA ;bit 1 low SCLKA high SCLKA ;bit 2 low SCLKA high mosiA high SCLKA ;bit 3 low SCLKA high SCLKA ;bit 4 low SCLKA low mosiA high SCLKA ;bit 5 low SCLKA ; high SCLKA ;bit 6 low SCLKA high MOSIA high SCLKA ;bit 7 low SCLKA high SCLKA ;bit 8 low SCLKA ;************************************* Holdz: IF DRDYA = 0 THEN Holdz 'Wait for DRDY to go HIGH bit15=misoA ;read in bit15 HIGH SCLKA LOW SCLKA bit14=misoA ;read in bit14 HIGH SCLKA LOW SCLKA bit13=misoA ;read in bit13 HIGH SCLKA LOW SCLKA bit12=misoA ;read in bit12 HIGH SCLKA LOW SCLKA bit11=misoA ;read in bit11 HIGH SCLKA LOW SCLKA bit10=misoA ;read in bit10 HIGH SCLKA LOW SCLKA bit9=misoA ;read in bit9 HIGH SCLKA LOW SCLKA bit8=misoA ;read in bit8 HIGH SCLKA LOW SCLKA bit7=misoA ;read in bit7 HIGH SCLKA LOW SCLKA bit6=misoA ;read in bit6 HIGH SCLKA LOW SCLKA bit5=misoA ;read in bit5 HIGH SCLKA LOW SCLKA bit4=misoA ;read in bit4 HIGH SCLKA LOW SCLKA bit3=misoA ;read in bit3 HIGH SCLKA LOW SCLKA bit2=misoA ;read in bit2 HIGH SCLKA LOW SCLKA bit1=misoA ;read in bit1 HIGH SCLKA LOW SCLKA bit0=misoA; read in bit0 HIGH SCLKA w2=w0 'w1 is the value of the z-axis findx: low SCLKA low resetA high resetA ;pulse the reset line to start a new command low resetA low MOSIA ;*********clock out the command byte of %01100001 to read the X-axis high SCLKA ;bit 1 low SCLKA high SCLKA ;bit 2 low SCLKA high mosiA high SCLKA ;bit 3 low SCLKA high SCLKA ;bit 4 low SCLKA low mosiA high SCLKA ;bit 5 low SCLKA ; high SCLKA ;bit 6 low SCLKA high SCLKA ;bit 7 low SCLKA high MOSIA high SCLKA ;bit 8 low SCLKA ;************************************* Holdx: IF DRDYA= 0 THEN Holdx 'Wait for DRDY to go HIGH bit15=misoA ;read in bit15 HIGH SCLKA LOW SCLKA bit14=misoA ;read in bit14 HIGH SCLKA LOW SCLKA bit13=misoA ;read in bit13 HIGH SCLKA LOW SCLKA bit12=misoA ;read in bit12 HIGH SCLKA LOW SCLKA bit11=misoA ;read in bit11 HIGH SCLKA LOW SCLKA bit10=misoA ;read in bit10 HIGH SCLKA LOW SCLKA bit9=misoA ;read in bit9 HIGH SCLKA LOW SCLKA bit8=misoA ;read in bit8 HIGH SCLKA LOW SCLKA bit7=misoA ;read in bit7 HIGH SCLKA LOW SCLKA bit6=misoA ;read in bit6 HIGH SCLKA LOW SCLKA bit5=misoA ;read in bit5 HIGH SCLKA LOW SCLKA bit4=misoA ;read in bit4 HIGH SCLKA LOW SCLKA bit3=misoA ;read in bit3 HIGH SCLKA LOW SCLKA bit2=misoA ;read in bit2 HIGH SCLKA LOW SCLKA bit1=misoA ;read in bit1 HIGH SCLKA LOW SCLKA bit0=misoA; read in bit0 HIGH SCLKA w1=w0 'w0 is the value of the x-axis findy: low SCLKA low resetA high resetA ;pulse the reset line to start a new command low resetA low MOSIA ;*********clock out the command byte of %01100010 -find y-axis, 256/div high SCLKA ;bit 1 low SCLKA high SCLKA ;bit 2 low SCLKA high mosiA high SCLKA ;bit 3 low SCLKA high SCLKA ;bit 4 low SCLKA low mosiA high SCLKA ;bit 5 low SCLKA ; high SCLKA ;bit 6 low SCLKA high MOSIA high SCLKA ;bit 7 low SCLKA low MOSIA high SCLKA ;bit 8 low SCLKA ;************************************* Holdy: IF DRDYA = 0 THEN Holdy 'Wait for DRDY to go HIGH bit15=misoA ;read in bit15 HIGH SCLKA LOW SCLKA bit14=misoA ;read in bit14 HIGH SCLKA LOW SCLKA bit13=misoA ;read in bit13 HIGH SCLKA LOW SCLKA bit12=misoA ;read in bit12 HIGH SCLKA LOW SCLKA bit11=misoA ;read in bit11 HIGH SCLKA LOW SCLKA bit10=misoA ;read in bit10 HIGH SCLKA LOW SCLKA bit9=misoA ;read in bit9 HIGH SCLKA LOW SCLKA bit8=misoA ;read in bit8 HIGH SCLKA LOW SCLKA bit7=misoA ;read in bit7 HIGH SCLKA LOW SCLKA bit6=misoA ;read in bit6 HIGH SCLKA LOW SCLKA bit5=misoA ;read in bit5 HIGH SCLKA LOW SCLKA bit4=misoA ;read in bit4 HIGH SCLKA LOW SCLKA bit3=misoA ;read in bit3 HIGH SCLKA LOW SCLKA bit2=misoA ;read in bit2 HIGH SCLKA LOW SCLKA bit1=misoA ;read in bit1 HIGH SCLKA LOW SCLKA bit0=misoA; read in bit0 HIGH SCLKA sertxd("X:",#w1," Y:",#w0," Z:",#w2,CR,LF) serout mainser,N2400,(w1,w0,w2) '***** SENSOR A END ****************** 'w0=w0*w0 'w1=w1*w1 'w2=w2*w2 goto findz