Problem with WHILE - WEND


Closed Thread
Results 1 to 23 of 23

Hybrid View

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


    Did you find this post helpful? Yes | No

    Default

    Code:
    SpinHere:
        LOW RENCA
        LOW Eject
        While (FootSw=0) OR (Ready=0)    
              '
              '    Do your loop here
              '
              wend
        goto Spinhere
    Steve

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

  2. #2
    Join Date
    Jan 2006
    Location
    New Hampshire, USA
    Posts
    107


    Did you find this post helpful? Yes | No

    Default

    I have not explained my problem properly: I want a momentary switch closure (footsw) to cause the program to jump to a loop (freq. I don't want it to jump out of the loop when the switch opens.

  3. #3
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Talking Cookbook available ???

    Hi, Steve

    Keep cool ... keep cool ...

    Alain

    Hi,Russ

    Could you explain EXACTLY what you want to do ...

    I mean : the switch closure lead to jump into the loop, OK ... but what happens if switch released ??? stay in the loop ??? go where ??? do you test your switch continuously after jumping off the loop ??? or just once at the beginning of your program ???

    We're not at school ... no one will copy your project !!!!

    Problem written is half the solution ....

    Alain
    Last edited by Acetronics2; - 26th May 2006 at 15:17.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  4. #4
    Join Date
    Jan 2006
    Location
    New Hampshire, USA
    Posts
    107


    Did you find this post helpful? Yes | No

    Default

    I want a momentary switch closure to jump to a loop and stay there, regardless of further action by the switch. Perhaps an interrupt is what I need? I don't exactly know how to do that, but will experiment. I prefer to use portb.5 for interrupt input, the data sheet says the RBIF flag will be set regardless of the state of the INTCON enable bit?

  5. #5
    Join Date
    Jan 2006
    Location
    New Hampshire, USA
    Posts
    107


    Did you find this post helpful? Yes | No

    Default

    I tried this interrupt. READY is always low; when FOOTSW goes low, the freq loop runs but only as long as FOOTSW is low. When FOOTSW goes high, the clock stops; it will start again when FOOTSW goes low again. I don't understand this.

    'device: 16F627A master clear is on pin#4 (RA5)
    TRISA = %00010000 ' port A all outputs, except MCLR is input
    TRISB = %00111111 'PORT B ALL INPUT, EXCEPT 6 & 7 OUTPUT
    option_REG = %01111111 'enable weak pullups on port B
    FOOTSW var portb.5 'Foot switch OR CCREADY must be high
    READY var portb.4 'at start

    T var word
    J VAR WORD


    RENCA var portb.7 'FREQUENCY OUTPUT TO J1 PIN 13
    EJECT var portb.6 '100 mS PULSE TO J1 PIN 21

    START:
    WHILE READY = 0
    LOW RENCA : LOW EJECT
    on interrupt goto poo

    poo:
    T = 100 '1mS AT 4 mHZ

    freq:

    PULSOUT RENCA, T 'frequency should be 500 Hz (2mS period)
    PAUSEus T*7

    GOTO freq
    WEND
    end

  6. #6
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Wink little help

    Try ( to understand ) this ...

    'device: 16F627A master clear is on pin#4 (RA5)
    TRISA = %00010000 ' port A all outputs, except MCLR is input
    TRISB = %00111111 'PORT B ALL INPUT, EXCEPT 6 & 7 OUTPUT
    option_REG = %01111111 'enable weak pullups on port B
    FOOTSW var portb.5 'Foot switch OR CCREADY must be high
    READY var portb.4 'at start

    T var word
    J VAR WORD


    RENCA var portb.7 'FREQUENCY OUTPUT TO J1 PIN 13
    EJECT var portb.6 '100 mS PULSE TO J1 PIN 21
    on interrupt goto poo


    START:
    LOW RENCA : LOW EJECT

    WHILE READY = 0

    'zzzzzzzzzzzzzzzzzzzz ... waiting !!!
    WEND

    GOTO what to do if not ready ???


    DISABLE INTERRUPT
    poo:
    T = 1 '1mS AT 4 mHZ

    freq:

    TOGGLE RENCA
    PAUSE T 'frequency should be 500 Hz (2mS period)

    GOTO freq

    RESUME
    ENABLE INTERRUPT

    end

    NOTE : RESUME and ENABLE INTERRUPT are not compulsory here as program enters an endless loop ...

    Alain
    Last edited by Acetronics2; - 26th May 2006 at 16:57.
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

  7. #7
    Join Date
    May 2004
    Location
    NW France
    Posts
    3,653


    Did you find this post helpful? Yes | No

    Smile little MORE Help

    and now we're here :


    'device: 16F627A master clear is on pin#4 (RA5)
    TRISA = %00010000 ' port A all outputs, except MCLR is input
    PORTB = 0
    TRISB = %00111111 'PORT B ALL INPUT, EXCEPT 6 & 7 OUTPUT
    option_REG = %01111111 'enable weak pullups on port B

    INTCON = %10001000 ' Define the interrupt origin ....YESSSS

    FOOTSW var portb.5 'Foot switch OR CCREADY must be high
    READY var portb.4 'at start

    T var word
    J VAR WORD


    RENCA var portb.7 'FREQUENCY OUTPUT TO J1 PIN 13
    EJECT var portb.6 '100 mS PULSE TO J1 PIN 21

    on interrupt goto poo


    START:
    LOW RENCA : LOW EJECT

    WHILE READY = 0

    'zzzzzzzzzzzzzzzzzzzz ... waiting !!!
    WEND

    GOTO Start 'GOTO what to do if not ready ???




    DISABLE INTERRUPT

    poo:

    IF NOT FOOTSW THEN false 'we are looking for a Portb.5 interrupt ... not PortB.4 or else

    T = 1000 '1mS AT 4 mHZ ...........Note: 1000 for MPSIM, 1 for real

    freq:

    TOGGLE RENCA
    PAUSE T 'frequency should be 500 Hz (2mS period)

    GOTO freq

    false:

    RESUME
    ENABLE INTERRUPT

    end
    ************************************************** ***********************
    Why insist on using 32 Bits when you're not even able to deal with the first 8 ones ??? ehhhhhh ...
    ************************************************** ***********************
    IF there is the word "Problem" in your question ...
    certainly the answer is " RTFM " or " RTFDataSheet " !!!
    *****************************************

Similar Threads

  1. Can't read sequential addresses in external EEPROM
    By tjkelly in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 18th February 2010, 14:46
  2. HSEROUT and Commas, What? Help Me Understand
    By altech6983 in forum mel PIC BASIC Pro
    Replies: 4
    Last Post: - 20th July 2009, 19:12
  3. 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
  4. while wend problem
    By Russ Kincaid in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 19th March 2007, 02:53
  5. 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

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