Code Compatibility Issue


Closed Thread
Results 1 to 22 of 22

Hybrid View

  1. #1
    Join Date
    Feb 2006
    Posts
    20


    Did you find this post helpful? Yes | No

    Default

    Here's the code:

    TRISA = 0
    TRISB = 2
    CMCON = 7
    ADCON1 = %00001111
    ADCON0 = 0

    symbol Off_1 = PortA.0
    Symbol On_1 = PortA.1

    symbol Off_2 = PortA.2
    symbol On_2 = PortA.3

    Symbol Speaker = PortA.4

    SYMBOL Ground_1 = PortB.0
    SYMBOL Positive_1 = PortB.1
    symbol Lame_1 = PortB.2

    symbol Ground_2 = PortB.3
    Symbol Positive_2 = PortB.4
    Symbol Lame_2 = PortB.5

    SYMBOL Switch = PortA.5
    symbol LED_1 = PortB.6
    Symbol LED_2 = PortB.7


    Positive_Ground_1 var bit
    Ground_Lame_1 var bit
    Positive_Lame_1 var bit
    Positive_Bell_1 var bit

    Positive_Ground_2 var bit
    Ground_Lame_2 var bit
    Positive_Lame_2 var bit
    Positive_Bell_2 var bit

    PG1_Count var byte
    PG2_Count var byte
    PL1_Count var byte
    PL2_Count var byte
    Cal var byte
    Lockout var Word
    Lockout_Cal var word

    On1_Flag var bit
    Off1_Flag var bit
    On2_Flag var bit
    Off2_Flag var bit

    let cal = 18
    let lockout_cal = 373

    '''''''''''''
    high on_1
    pause 500
    low on_1
    high off_1
    pause 500
    low off_1
    high off_2
    pause 500
    low off_2
    high on_2
    pause 500
    low on_2
    '''''''''''''''

    input lame_1
    INPUT LAME_2
    Foil:
    input positive_1
    input positive_2
    input ground_1
    input ground_2
    high positive_1
    let positive_ground_1 = Ground_1
    let positive_lame_1 = lame_2
    let positive_bell_1 = ground_2
    low positive_1

    input positive_1
    input positive_2
    input ground_1
    input ground_2
    high positive_2
    let positive_ground_2 = ground_2
    let positive_lame_2 = lame_1
    let positive_bell_2 = ground_1
    low positive_2
    input positive_2
    high ground_1
    let ground_lame_1 = lame_1
    low ground_1

    INPUT GROUND_1
    high ground_2
    let ground_lame_2 = lame_2
    low ground_2

    if positive_ground_1 = 0 and positive_bell_1 = 0 then
    let pg1_count = pg1_count + 1
    else
    let pg1_count = 0
    endif

    if positive_ground_2 = 0 and positive_bell_2 = 0 then
    let pg2_count = pg2_count + 1
    else
    let pg2_count = 0
    endif

    if positive_lame_1 = 1 AND POSITIVE_GROUND_1 = 0 then
    let pl1_count = pl1_count + 1
    else
    let pl1_count = 0
    endif

    if positive_lame_2 = 1 AND POSITIVE_GROUND_2 = 0 then
    let pl2_count = pl2_count + 1
    else
    let pl2_count = 0
    endif


    if pl1_count => cal then
    high on_1
    let on1_flag = 1
    endif

    if pl2_count => caL then
    high on_2
    let on2_flag = 1
    endif

    if pg1_count => cal AND PL1_COUNT < CAL then
    high off_1
    let off1_flag = 1
    endif

    if pg2_count => cal AND PL2_COUNT < CAL then
    high off_2
    let off2_flag = 1
    endif

    LET LED_1 = GROUND_LAME_1
    LET LED_2 = GROUND_LAME_2

    if On1_flag = 1 or off2_flag = 1 or on2_flag = 1 or off1_flag = 1 then
    let lockout = lockout + 1
    else
    let lockout = 0
    endif


    if lockout => lockout_cal then
    pause 2000
    low on_1
    low on_2
    low off_1
    low off_2
    let on1_flag = 0
    let on2_flag = 0
    let off1_flag = 0
    let off2_flag = 0
    endif
    goto foil

    end

  2. #2
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    See the PBP manual, section 4.7...(may as well look at section 5.40 while you're at it)...

    trisa=0:trisb=2:cmcon=7:adcon1=15:adcon0=0:Off_1 var PortA.0:On_1 var PortA.1:Off_2 var PortA.2:On_2 var PortA.3:Speaker var PortA.4:Ground_1 var PortB.0:Positive_1 var PortB.1:Lame_1 var PortB.2
    Ground_2 var PortB.3:Positive_2 var PortB.4:Lame_2 var PortB.5:Switch var PortA.5:LED_1 var PortB.6:LED_2 var PortB.7:Positive_Ground_1 var bit:Ground_Lame_1 var bit:Positive_Lame_1 var bit
    Positive_Bell_1 var bit:Positive_Ground_2 var bit:Ground_Lame_2 var bit:Positive_Lame_2 var bit:Positive_Bell_2 var bit:PG1_Count var byte:PG2_Count var byte:PL1_Count var byte:PL2_Count var byte
    Cal var byte:Lockout var Word:Lockout_Cal var word:On1_Flag var bit:Off1_Flag var bit:On2_Flag var bit:Off2_Flag var bit:cal=18:lockout_cal=373:high on_1: pause 500:low on_1:high off_1: pause 500
    low off_1:high off_2: pause 500:low off_2:high on_2: pause 500:low on_2:input lame_1:INPUT LAME_2
    Foil:
    input positive_1:input positive_2:input ground_1:input ground_2:high positive_1: positive_ground_1=Ground_1: positive_lame_1=lame_2: positive_bell_1=ground_2:low positive_1:input positive_1
    input positive_2:input ground_1:input ground_2:high positive_2: positive_ground_2=ground_2: positive_lame_2=lame_1: positive_bell_2=ground_1:low positive_2:input positive_2:high ground_1
    ground_lame_1=lame_1:low ground_1:iNPUT GROUND_1:high ground_2:ground_lame_2=lame_2:low ground_2
    if positive_ground_1 = 0 and positive_bell_1 = 0 then
    pg1_count = pg1_count + 1
    else
    pg1_count = 0
    endif
    if positive_ground_2 = 0 and positive_bell_2 = 0 then
    pg2_count = pg2_count + 1
    else
    pg2_count = 0
    endif
    if positive_lame_1 = 1 AND POSITIVE_GROUND_1 = 0 then
    pl1_count = pl1_count + 1
    else
    pl1_count = 0
    endif
    if positive_lame_2 = 1 AND POSITIVE_GROUND_2 = 0 then
    pl2_count = pl2_count + 1
    else
    pl2_count = 0
    endif
    if pl1_count => cal then
    high on_1 : on1_flag = 1
    endif
    if pl2_count => caL then
    high on_2 : on2_flag = 1
    endif
    if pg1_count => cal AND PL1_COUNT < CAL then
    high off_1 : off1_flag = 1
    endif
    if pg2_count => cal AND PL2_COUNT < CAL then
    high off_2 : let off2_flag = 1
    endif
    LED_1 = GROUND_LAME_1 : LED_2 = GROUND_LAME_2
    if On1_flag = 1 or off2_flag = 1 or on2_flag = 1 or off1_flag = 1 then
    lockout = lockout + 1
    else
    lockout = 0
    endif
    if lockout => lockout_cal then
    pause 2000 : low on_1 : low on_2 : low off_1 : low off_2 : on1_flag = 0 : on2_flag = 0 : off1_flag = 0 : off2_flag = 0
    endif
    goto foil
    end
    Last edited by skimask; - 6th July 2007 at 03:59.

  3. #3
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Is anyone supposed to be able to actually read that?

    Everyone's got a "Colon", and they all stink.
    <br>
    DT

  4. #4
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Talking

    <table><td></td><td></td><td></td></table>
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Is anyone supposed to be able to actually read that?
    Everyone's got a "Colon", and they all stink.
    <br>
    It's exactly the same code, except for the changes/fixes...you know it, I know it, the guy that wrote it knows it and should be able to read his own stuff....and you don't have to scroll thru 17 pages of stuff to get to the end...

  6. #6
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    It's exactly the same code, except for the changes/fixes...
    Ha, It's exactly the same. Except EVERYTHING'S different.

    You've changed the SYMBOL's to VAR's, removed the LET's and changed a binary number to decimal. And while the program now looks completely different. After compiling, the HEX file will be byte for byte identical to the original code. No changes. No fixes.

    you know it, I know it, the guy that wrote it knows it and should be able to read his own stuff....and you don't have to scroll thru 17 pages of stuff to get to the end...
    Since it doesn't look anything like the original program, the "guy that wrote it" now has to spend probably several hours searching colon by colon, trying to find what it was that you changed. (took me an hour)

    And won't he be pissed after doing all that, only to find out that it doesn't make any difference. Because it's exactly the same program, just written with different words, and a really bad format.

    There's no way to follow the flow of the program. You can't see any type of structure. It's just a bunch of lines of code. Very long lines at that. My guess is that you have a Wide screen monitor and make the code fit a maximized window, all the way across the screen. For anyone with a normal sized screen, they're now scrolling left and right, instead of up and down. And when viewing in a browser, it all wraps around and you can't find where one line ends and the next one begins.

    And one last problem ... There's no room for comments.
    Come back to that program in 6 months, and you're going to need some laxitives for those Colon's.

    On a scale of 1-10, I'd give this formatting a 9 for the the best way to NOT write your program.
    <br>
    DT

  7. #7
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Ha, It's exactly the same. Except EVERYTHING'S different.
    And I come back to reading the manual once again...

    You've changed the SYMBOL's to VAR's, removed the LET's and changed a binary number to decimal. And while the program now looks completely different. After compiling, the HEX file will be byte for byte identical to the original code. No changes. No fixes.
    The manual says 'Symbol can only be used to alias a variable, not to create it'. As far as the LET and SYMBOL, I referenced both of those at the beginning of the post... No changes, no fixes? I'm wondering...

    Since it doesn't look anything like the original program, the "guy that wrote it" now has to spend probably several hours searching colon by colon, trying to find what it was that you changed. (took me an hour)
    Huh...I'm fairly handy with an 'Enter' key, and maybe a little bit of the 'Delete' key. Only took me about a couple of minutes or so to get one command per line. And again, the guy should be able to recognize what's where in the first place.

    And won't he be pissed after doing all that, only to find out that it doesn't make any difference.
    Maybe so, but maybe he'll learn a bit of something here and there and fix his own problem.

    There's no way to follow the flow of the program. You can't see any type of structure. It's just a bunch of lines of code. Very long lines at that. My guess is that you have a Wide screen monitor and make the code fit a maximized window, all the way across the screen. For anyone with a normal sized screen, they're now scrolling left and right, instead of up and down.
    Could be... I run 16 x 12, turned 90 degrees. And who's to say what's normal? What does your newspaper, comic book, any other book look like? I'll bet if you put a page from one of those across your screen, it would fit a lot better if the screen was rotated about 90 degree, left or right... If anything, I'd say the way 'normal' people use a monitor is 'abnormal' compared to the way people have been reading printed material for years.

    And one last problem ... There's no room for comments. Come back to that program in 6 months, and you're going to need some laxitives for those Colon's.
    True...but I won't be coming back to it.

    On a scale of 1-10, I'd give this formatting a 9 for the the best way to NOT write your program.
    I think what you really mean is that you'd give this formatting a 9 for the best way NOT to write YOUR program.
    However, I'd give this formatting a 10 for the BEST way to write MY program.
    Last edited by skimask; - 6th July 2007 at 16:02.

  8. #8
    Join Date
    Apr 2006
    Location
    New Hampshire USA
    Posts
    298


    Did you find this post helpful? Yes | No

    Smile No comment....

    I use “find and replace” to “de-colon-ize” the code and flip it from a big horizontal file to a big vertical file.

    Two problems, have to watch for wanted colons like labels, and the vertical code still has no comments.

    -Adam-
    Ohm it's not just a good idea... it's the LAW !

  9. #9
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    The manual says 'Symbol can only be used to alias a variable, not to create it'.
    The only uses of SYMBOL in the original program was as an ALIAS. So nothing disagrees with the manual.

    And LET is shown in the manual as a valid statement. (although optional)
    Huh...I'm fairly handy with an 'Enter' key, and maybe a little bit of the 'Delete' key. Only took me about a couple of minutes or so to get one command per line.
    So to read your re-formatted program, we have to re-format it again???
    <br>
    DT

  10. #10
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Just another jab with a pointy object ...
    Quote Originally Posted by skimask View Post
    See the PBP manual, section 4.7...(may as well look at section 5.40 while you're at it)...
    <table><tr><td align="center">From my "Little Green Book"<br>
    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1840&stc=1&d=118385203 7"></td><td align="center">From the online PDF<br>
    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=1841&stc=1&d=118385204 5">
    </td></tr></table>

    P.S. Glad to hear it Alfred. <img src="http://www.picbasic.co.uk/forum/images/icons/icon14.gif">
    <br><br>
    Attached Images Attached Images   
    DT

  11. #11
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Just another jab with a pointy object ...
    Great...now I've got to figure out which manual is the latest version.
    I know I used to have 2 or 3 PBP manuals laying around, I'm down to one now, Copyright 2004 inside the front cover. Not sure if that's the latest version or not...

  12. #12
    Join Date
    Jul 2003
    Location
    Colorado Springs
    Posts
    4,959


    Did you find this post helpful? Yes | No

    Default

    Well actually, that one was from a 2002 manual. (I think I'll throw that one away)
    I have another one (2005) that has 5.40 as {LET}

    But since you can't really know which version someone might have.
    It might be a good idea to include the Title of the section along with the number.

    Just a thought.
    <br>
    DT

Similar Threads

  1. How much code space do PBP statements use.
    By Darrel Taylor in forum Code Examples
    Replies: 5
    Last Post: - 13th February 2009, 21:31
  2. Loop with two motor and 2 sensors
    By MrRoboto in forum mel PIC BASIC
    Replies: 4
    Last Post: - 8th December 2008, 23:40
  3. Making Program Code Space your playground...
    By Melanie in forum Code Examples
    Replies: 15
    Last Post: - 19th July 2008, 08:26
  4. Code Issue - select case or 'if' issue - not sure why
    By jamie_s in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 7th October 2007, 08:52
  5. Code Issue? - Pin Labels
    By jamie_s in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 12th July 2006, 16:28

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