Program

back to home

 

'{$STAMP BS2}

'{$PBASIC 2.5}

 

i VAR Word

le VAR Bit

ri VAR Bit

 

adcBits VAR Word

adcBits1 VAR Word

 

INPUT 3

INPUT 4

 

le= IN3

ri= IN4

' -----[ Initialization ]--------------------------------------------------

 

CS PIN 8

CLK PIN 9

DataOutput PIN 10

 

CS1 PIN 5

CLK1 PIN 6

DataOutput1 PIN 7

 

DEBUG CLS 'Start display.

'DO

'GOSUB main

'GOSUB Calc_Volts

'GOSUB Display

'LOOP

' -----[ Subroutines ]-----------------------------------------------------

main:

GOSUB ADC_Data

  IF le=0 AND ri=0 THEN uturn

  PAUSE 30

  IF le=0 THEN left

  IF ri=0 THEN right

 

  IF ABS (adcBits1-adcBits) <= 50 THEN forward

  IF adcBits > adcBits1 THEN little_right

  IF adcBits < adcBits1 THEN little_left

  

forward:

 

  PULSOUT 12,850

  PULSOUT 13,850 'left

  PAUSE 30

 

GOTO main

 

little_right:

FOR i=0 TO 20

PULSOUT 12,900

PULSOUT 13,900

PAUSE 30

NEXT

GOTO main

 

little_left:

FOR i=0 TO 20

PULSOUT 13,900

PULSOUT 12,900

PAUSE 30

NEXT

GOTO main

 

left:

IF ri=0 THEN uturn

GOSUB back

 FOR i = 0 TO 60

  PULSOUT 12,500

  PULSOUT 13,500 'left

  PAUSE 30

NEXT

GOTO main

 

right:

IF le=0 THEN uturn

GOSUB back

 FOR i = 0 TO 60

    PULSOUT 12,1000

    PULSOUT 13,1000

    PAUSE 30

NEXT

GOTO main

 

uturn:

GOSUB back

  FOR i=0 TO 100

  PULSOUT 12,500

  PULSOUT 13,1000

  PAUSE 30

  NEXT

  GOTO main

 

back:

 FOR i = 0 TO 30

    PULSOUT 13,1000

    PULSOUT 12,500

    PAUSE 50

NEXT

RETURN

 

ADC_Data:

HIGH CS

HIGH CS1

LOW CS

LOW CS1

LOW CLK

LOW CLK1

PULSOUT CLK, 210

PULSOUT CLK1, 210

SHIFTIN DataOutput,CLK,MSBPOST,[adcBits\8]

SHIFTIN DataOutput1,CLK1,MSBPOST,[adcBits1\8]

RETURN

 

Calc_Volts:

RETURN

 

'Display:

 

'DEBUG HOME

'DEBUG "8-bit binary value:", BIN8 adcBits

'DEBUG CR,"Decimal value:", DEC3 adcBits

 

DEBUG CR,CR,CR,"8-bit binary value:", BIN8 adcBits1

DEBUG CR,"Decimal value:", DEC3 adcBits1

 

 

'RETURN