Grounded
Here is LanC using loops and no bitbanging you can send serial data to the pic in the form of hex numbers and it will try these commands on the camera.
like 5e
Code:@ 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 word Bits var byte pause 2000 Serial_data: Serin2 portb.3,84,[value] counter = 0 pause 20 if value =" " then goto serial_data If value =$5C THEN gosub wakeup serout2 portb.4,84,[value] gosub Send_command goto Serial_data Send_command: 'This section converts the hex value stored in the vairable value gosub command_byte 'to the eight bits of data and sends the correct High Low commands gosub sync_bit 'needed to control the LanC device. For Bits = 0 to 7 Command_bit = value.0[Bits] if command_bit = 1 then low portb.2 else input portb.2 endif pauseus 80 next counter = counter + 1 if counter = 3 then return goto Send_command 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 80 '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 Wakeup: low portb.2 'This wakes camera up for short period to accept commands pause 500 input portb.2 pause 100 Return




Bookmarks