Help with serin, serout, Manchester encoding


Results 1 to 31 of 31

Threaded View

  1. #20
    Join Date
    Mar 2007
    Posts
    42


    Did you find this post helpful? Yes | No

    Default

    Would it matter if I used t2400 or n2400 in my code for serin/serout? I used n2400 in my code and everything is encoding and decoding correctly. I know this because the number at the receiver checks when I write the result into EEPROM and convert the hexadecimal to binary. Also, it seems like the receiver code does not go to the if statements at the end. For example, if I receive 1100 it serout something to pin 1. When I put a LED at pin 1 I don't see anything. Is there anyway I can fix it? Would I have to change my decoded message from hexadecimal to binary in order to allow me to manipulate the bits?

    'Transmitter Code
    'Transmitter Code
    Include "Modedefs.bas"
    main:
    v var byte : counter var byte : encoded var byte : v = %1100
    'Manchester encoding
    For counter = 0 to 3
    If v.0[counter]=0 Then
    encoded.0[counter*2]=0 : encoded.0[counter*2+1]=1 'If it is a zero make the first bit 0 and second bit 1
    Else
    encoded.0[counter*2]=1 : encoded.0[counter*2+1]=0 'If not then make first bit 1 and second bit 0
    EndIf
    Next counter : serout PORTB.0, n2400, [ $55 , $55 ,$aa , encoded ] 'send out code
    write 0, encoded
    High 1
    Pause 1000
    Low 1
    goto main


    'Receiver Code
    Include "Modedefs.bas"
    s var byte : B0 var byte : B1 var byte : 's is byte to be encoded, B0 and B1 is byte
    counter var byte : cnt55 var byte: 'counter is byte and cnt55 is byte
    encoded1 var byte : action var byte : alert var byte : B0=1 : B1=1
    'encoded1 word sized variable that holds encoded byte v, alert variable, action variable, B0 and B1 hardwired address
    s=0: encoded1=0
    main:
    cnt55 = 0 'counter for $55 is zero

    waitfor55:
    serin PORTB.0, t2400, encoded1 'take in data at pin 0 and place in encoded1
    if encoded1 = $55 then
    cnt55 = cnt55 + 1 '$55 read, increase cnt55 by 1
    if cnt55 = 2 then goto waitforaa 'if $55 occurs 3 times in a row check for $aa
    else
    goto main 'if not $55, reset counter at main and restart
    endif
    goto waitfor55

    waitforaa:
    serin PORTB.0, n2400, encoded1
    if encoded1 <> $aa then goto main 'restart, incorrect leader bit

    serin PORTB.0, n2400, encoded1 : serout PORTB.4, n2400, [encoded1] 'take in from pin 0 to encoded 1 output to pin 3 contens in encoded1
    write 0,encoded1
    High 7
    Pause 10000
    Low 7


    'Decoding
    For counter=0 to 3:s.0[counter]=encoded1.0[counter*2]:Next counter
    serout PORTB.3, n2400, [s] 'Ouptut decoded message
    write 1, s
    High 6
    Pause 10000
    Low 6

    'Tracking code
    If (s.2==0) & (s.3==0) Then 'if the code matches 00
    If (s.0==B0) & (s.1==B1) Then 'if the address matches then
    s.2=1: action = s.2: 'set the third bit to 1 and send it back
    alert = 0:
    serout PORTB.1, n2400, [s] 'output to pin 1 value in s
    Else
    s.2=0: action = s.2: 'do not change anything and send back
    alert = 0:
    serout PORTB.2, n2400, [s] 'output to pin 1 value in s
    Endif
    Endif

    'Tracking and Finding code
    If (s.2==0) & (s.3==1) Then 'if code matches 01 then
    If (s.0==B0) & (s.1==B1) Then 'If the address matches then
    s.2=1: action=s.2: 'set the third bit to 1 and send back
    alert=1:
    serout PORTB.6, n2400, [s]: 'output to pin 1 value in s
    High 2 'set alert to 1 and make pin 2 high.
    Else
    s.2=0: action=s.2: 'do not change anything and send back
    alert=0:
    serout PORTB.5, n2400, [s] 'output to pin 1 value in s
    Endif
    Endif
    Last edited by oneohthree; - 4th April 2007 at 06:49.

Similar Threads

  1. A Serial GLCD 128x64 Simple Project
    By Oldspring in forum Off Topic
    Replies: 0
    Last Post: - 8th March 2010, 20:58
  2. Serout to serial servo
    By azmax100 in forum mel PIC BASIC Pro
    Replies: 20
    Last Post: - 12th August 2009, 16:46
  3. PIC16f877 code crosses boundary @800h
    By inventosrl in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 6th April 2009, 22:03
  4. Advice-scrutiny for my serial controller
    By kevlar129bp in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 13th December 2008, 17:11
  5. SerIn and SerOut
    By Dwayne in forum FAQ - Frequently Asked Questions
    Replies: 0
    Last Post: - 21st July 2004, 15:54

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts