This updated has been tested using 4mhz and 10mhz and the timing was changed from 80mS to 60mS. It has been tested without pulldown resistors
although not looked at with a scope. Three resistors is all thats needed to interface with a camera two each 2k resistors from lanc line to pins portb.1 and portb.2 with a 10k to 20k pulldown from portb.1 to ground. program will wait 5 minutes and take a 10 second video turn off for 5 minutes wake and take a 10 second video ON and ON.
Turn camera on, then power pic after 5 seconds pic will power down camera and in 5 minutes will wake an make a video, you get the idea.


Code:
 'Testing Sony LanC control of video camera          [email protected]                        SCS Saturday August 29, 2009
 'Sending commands is LSB first example hex 22, %00100010 you send the far right zero first then the one then three zeros
 'and a one then two more zeros. The Lanc port is held in the high state by the camera, Pulling the pin low is a 1
 'I used input command to keep the line in its high state at 5vdc, and low to pull the line low for a 1. So again
 'using the hex 22 example %00100010, input,low,input,input,input,low,input,input.
                     

@ DEVICE PIC16F84,HS_OSC,WDT_OFF,PWRT_ON,PROTECT_OFF
DEFINE OSC 10

   command_bit var   bit 
   syncbit     var   byte
   syncbyte    var   word
   counter     var   byte
   value       var   byte
   Bits        var   byte
   Time        var   byte


pause 5000
Goto start

      Sync_byte:                       'Sync_byte looks for the inter_frame gap 5.4mS to 7mS at the end of every 
   syncbyte = 0                        'frame tranmissions and just before the start of the next frame
   while syncbyte < 700
   pulsin portb.1, 1, syncbyte
   wend
   Return

      Sync_bit:                        'Sync_Bit looks for the start_bit of each frame this is used 
   syncbit = 0                         'in sending the second byte of a command
   while syncbit < 9
   pulsin portb.1, 0, syncbit
   wend
      Return
   
      Command_byte:                    'tell camera that a command is to follow normal commands
      gosub sync_byte
   pauseus 60                          'pause for camera's start bit to finish
   input portb.2                       'first byte to send (LSB 1ST)Hex 18 %0001,1000
   pauseus 312
   low portb.2
   pauseus 208
   input portb.2
   pauseus 312
   input portb.2                       'Stop bits set high
         Return

         Start:
      
   counter = 0
   gosub Power_off
   pause 2000
   gosub DelayTime
   counter = 0
   gosub Wakeup
   gosub Power_on
   pause 500
   counter = 0
   gosub Record_on
   pause 10000
   counter = 0
   gosub Record_on
   pause 500
   goto Start

      Power_off:
      gosub Command_byte   
      gosub sync_bit
   input portb.2                       'Power off command #5E (LSB 1ST) %0101,1110
   pauseus 104          
   low portb.2
   pauseus 416
   input portb.2
   pauseus 104
   low portb.2
   pauseus 104
   input portb.2
   pauseus 104
   input portb.2                       'Stop bits set high
      counter = counter + 1
      if counter = 3 then Return              
      goto Power_off
   
      Power_on:
      gosub Command_byte
      gosub Sync_bit                     
   input portb.2                       'Turn camera on from sleep mode
   pauseus 208                         'Power on Command 5C (LSB 1ST) %0101,1100
   low portb.2
   pauseus 312
   input portb.2
   pauseus 104
   low portb.2
   pauseus 104
   input portb.2
   pauseus 208
   input portb.2                       'Stop bits set high
      counter = counter + 1
      if counter = 3 then Return
      goto Power_on

      Record_on:
      gosub Command_byte
      gosub Sync_bit                     
   low portb.2                         'Start Recording
   pauseus 208                         'Record On 33 (LSB 1ST) %0011,0011
   input portb.2
   pauseus 208
   low portb.2
   pauseus 208
   input portb.2
   pauseus 208
   input portb.2                       'Stop bits set high
      counter = counter + 1
      if counter = 3 then Return
      goto Record_on
  
         DelayTime:                    'Sets delay time in minutes
   For Time = 0 to 4                   'How many one minute delays
   pause 60000                         'One minute delay time
         Next Time
         Return

         Wakeup:
   low portb.2                         'This wakes camera up for short period to accept commands
   pause 500
   input portb.2
'   pause 100
         Return