Translation Problem


Closed Thread
Results 1 to 9 of 9
  1. #1
    Join Date
    Apr 2007
    Posts
    5

    Default Translation Problem

    I translated the following PicBasic Code to ProBasic Pro. Could any one please check whether my translation is 100% correct since it does compile without an error but the actual circuit doesn't work. [The circuit does work with the code compiled from PicBasic].

    --------------------------------------------------------------------------
    'PicBasic
    symbol porta = 5
    symbol trisa = 133
    symbol portb = 6
    symbol trisb = 134
    poke trisa, 255
    poke trisb, 240
    start:
    peek portb, b0
    if bit4 = 0 then trigger
    goto start
    trigger:
    pause 500
    peek portb, b0
    if bit5 = 1 then send
    goto start
    send:
    peek porta, b0
    if bit4 = 1 then eleven
    poke portb, b0
    goto start
    eleven:
    if bit0 = 0 then ten
    poke portb, 11
    goto start
    ten:
    poke portb, 10
    goto start
    end
    --------------------------------------------------------------------------

    --------------------------------------------------------------------------
    'PicBasic Pro
    trisa = 255
    trisb = 240
    p var byte
    start:
    p = portb
    if p.4 = 0 then trigger
    goto start
    trigger:
    pause 500
    p = portb
    if p.5 = 1 then send
    goto start
    send:
    p = porta
    if p.4 = 1 then eleven
    portb = p
    goto start
    eleven:
    if p.0 = 0 then ten
    portb = 11
    goto start
    ten:
    portb = 10
    goto start
    end
    --------------------------------------------------------------------------

  2. #2
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Smile

    they sure look the same to me - are you using the same PIC?
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  3. #3
    Join Date
    Apr 2007
    Posts
    5


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by paul borgmeier View Post
    they sure look the same to me - are you using the same PIC?
    Yes, but I am not using any "Official Programmer". I made a very simple one from http://pic16f84.hit.bg [and I am using PIC16F84A from Microchip] Does that matter?

    Also, I just realised that I could have

    "p var byte" or "p var bit"

    but then the "p var bit" compiled with many errors. Why? Which one should I use. Even after reading the manual, I still don't really know. Please help.
    Last edited by cyh_fax; - 21st April 2007 at 09:16.

  4. #4
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by cyh_fax View Post
    I translated the following PicBasic Code to ProBasic Pro. Could any one please check whether my translation is 100% correct since it does compile without an error but the actual circuit doesn't work. [The circuit does work with the code compiled from PicBasic].

    --------------------------------------------------------------------------
    'PicBasic
    symbol porta = 5
    symbol trisa = 133
    symbol portb = 6
    symbol trisb = 134
    poke trisa, 255
    poke trisb, 240
    start:
    peek portb, b0
    if bit4 = 0 then trigger
    goto start
    trigger:
    pause 500
    peek portb, b0
    if bit5 = 1 then send
    goto start
    send:
    peek porta, b0
    if bit4 = 1 then eleven
    poke portb, b0
    goto start
    eleven:
    if bit0 = 0 then ten
    poke portb, 11
    goto start
    ten:
    poke portb, 10
    goto start
    end
    --------------------------------------------------------------------------

    --------------------------------------------------------------------------
    'PicBasic Pro
    trisa = 255
    trisb = 240
    p var byte
    start:
    p = portb
    if p.4 = 0 then trigger
    goto start
    trigger:
    pause 500
    p = portb
    if p.5 = 1 then send
    goto start
    send:
    p = porta
    if p.4 = 1 then eleven
    portb = p
    goto start
    eleven:
    if p.0 = 0 then ten
    portb = 11
    goto start
    ten:
    portb = 10
    goto start
    end
    --------------------------------------------------------------------------
    You might try:
    Code:
    trisa = 255
    trisb = 240
    p var byte
    
    start:
    p = portb
    if p.4 = 0 then goto trigger
    goto start
    
    trigger:
    pause 500
    p = portb
    if p.5 = 1 then goto send
    goto start
    
    send:
    p = porta
    if p.4 = 1 then goto eleven
    portb = p
    goto start
    
    eleven:
    if p.0 = 0 then goto ten
    portb = 11
    goto start
    
    ten:
    portb = 10
    goto start
    end
    I know some will object to goto's as sloppy, but if it works . .
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  5. #5
    jessey's Avatar
    jessey Guest


    Did you find this post helpful? Yes | No

    Default If - Then's instead of GOTO's

    Quote Originally Posted by Joe S. View Post
    I know some will object to goto's as sloppy, but if it works . .
    Why not set a variable bit, say A to equal 0 then use "IF A = 0 THEN Start", then don't use the bit variable for nothing else. Thats what I do instead of using GOTO's and the IF - THEN's only uses 2 words. Good approach I think, if your not really tight for code space.

    jessey

  6. #6
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Smile

    Quote Originally Posted by cyh_fax View Post
    Also, I just realised that I could have

    "p var byte" or "p var bit"

    but then the "p var bit" compiled with many errors. Why? Which one should I use. Even after reading the manual, I still don't really know. Please help.
    You want p var byte
    (B0 was a byte in your PBC version)

    if p where a bit, it could be "1" or "0"
    if p is a byte, it can be "%00000000" -"%11111111" ;(0-255)

    since you have stuff like "if p.4 = 0 then"
    you are asking if the 5th bit from the right is 0 (bit counting starts at 0). Since a bit only has one place and a byte has 8, you want a byte,

    Hi Joe,

    Thanks for chiming it - however, it is not clear to me what your version fixes or why one would want to add a goto when the IF command already "gotos"? Are you suggesting this to make it more readable?
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  7. #7
    Join Date
    Aug 2006
    Location
    Look, behind you.
    Posts
    2,818


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by paul borgmeier View Post
    Hi Joe,

    Thanks for chiming it - however, it is not clear to me what your version fixes or why one would want to add a goto when the IF command already "gotos"? Are you suggesting this to make it more readable?
    Hi Paul,
    Er, ah yes . . .
    the code looks convoluted with the label following THEN without a goto or gosub, I am sure it only looks that way to me. But as skimask might point out to me on page 80 of the little green book, at the top it really is ok. My Bad must sleep more and respond less . . .
    If you do not believe in MAGIC, Consider how currency has value simply by printing it, and is then traded for real assets.
    .
    Gold is the money of kings, silver is the money of gentlemen, barter is the money of peasants - but debt is the money of slaves
    .
    There simply is no "Happy Spam" If you do it you will disappear from this forum.

  8. #8
    Join Date
    Feb 2003
    Location
    Salt Lake City, Utah USA
    Posts
    517


    Did you find this post helpful? Yes | No

    Smile

    Quote Originally Posted by Joe S. View Post
    My Bad must sleep more and respond less . . .
    Actaully, I recommend you do the opposite - that is what I do and it seems to work (for me).
    Paul Borgmeier
    Salt Lake City, UT
    USA
    __________________

  9. #9
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Joe S. View Post
    But as skimask might point out to me on page 80 of the little green book, at the top it really is ok.
    I might....but I won't....'cause I know from experience that you're all over that....


    A shorter version:
    Code:
    trisa = 255 : trisb = 240 : p var byte
    start:
    if portb.4 = 0 then goto trigger
    goto start
    
    trigger:
    pause 500 : if portb.5 then goto send
    goto start
    
    send:
    if porta.4 = 1 then goto eleven
    portb = porta : goto start
    
    eleven:
    if porta.0 = 0 then goto ten
    portb = 11 : goto start
    
    ten:
    portb = 10 : goto start
    end

    But I wonder if the original poster didn't mean to use this:
    Code:
    trisa = $FF : trisb = $F0 : p var byte
    start:
    if portb.4 = %0 then goto trigger
    goto start
    
    trigger:
    pause 500 : if portb.5 = %1 then goto send
    goto start
    
    send:
    if porta.4 = %1 then goto eleven
    portb = porta : goto start
    
    eleven:
    if porta.0 = %0 then goto ten
    portb = %11 : goto start
    
    ten:
    portb = %10 : goto start
    end
    Notice the 'special' characters added...
    Last edited by skimask; - 23rd April 2007 at 16:27.

Similar Threads

  1. USART Problem , but don't know where, in pc? or in PIC?
    By precision in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 15th July 2007, 08:12
  2. PicBasic Pro Math Problem??
    By Glen65 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 5th March 2006, 04:36
  3. 1 slave 1 master 1 MAX232 1 problem ?
    By SuB-ZeRo in forum mel PIC BASIC Pro
    Replies: 19
    Last Post: - 31st July 2005, 22:59
  4. weird 12F629/675 problem
    By peterdeco1 in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 7th October 2004, 01:08
  5. PORTA.PinNo = 1 ' problem
    By frank small in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 6th May 2004, 14:30

Members who have read this thread : 1

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