Group - ungroup of commands


Closed Thread
Results 1 to 16 of 16

Hybrid View

  1. #1
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Thank You !
    Unfortunately, my code it's a little ... special and this procedure dont work ...
    My code :
    Code:
    Main:
    ;reading buttons on line 2    
        Portb.0 = 0
        TrisA.1 = 1
        pause 10
        status_3 = PortA & 011100
        Portb.0 = 1
        TrisA.1 = 0
        select case status_3
                    case 12
                    Gosub Starting  ; this is "header"
                    Gosub Sursa     ; ths is "body"
                    case 20
                    Gosub Starting  ; this is "header"
                    Gosub VolUp     ; this is "body", composed by Adresa + VolUp
                    case 24
                    Gosub Starting
                    Gosub VolDn 
        end select                       
    Goto main
    
    STARTING:
    PORTB.4 = 0
    pauseus 8400
    PORTB.4 = 1
    pauseus 4200
    Return
    
    ADRESA:
        For i = 0 to 7
        lookup2 i, [a,a,a,a,b,b,b,a], j
        PORTB.4 = 0
        PauseUs 526
        PORTB.4 = 1
        PauseUs j
        next i 
    Return
    
    VolUp:
    GOSUB ADRESA
        for i = 0 to 7
        lookup2 i, [b,b,a,b,b,b,b,a], j
        PORTB.4 = 0
        PauseUs 526
        PORTB.4 = 1
        PauseUs j
        next i
    Pause 12    
    Return
    Last edited by fratello; - 4th May 2012 at 16:49.

  2. #2
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,604


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Why wouldn't Jersons procedure work with that code? You just need to think about how it works and APPLY it to your program...


    Code:
    case 12
      Gosub Starting  ; this is "header"
      While (PortA & %00011100) = 12
        Gosub Sursa     ; ths is "body"
      Wend
    OR, if you want to be SURE to send 'body' atleast one time.
    Code:
    case 12
      Gosub Starting  ; this is "header"
      Gosub Sursa
      While (PortA & %00011100) = 12
        Gosub Sursa     ; ths is "body"
      Wend
    Also, since you're always sending the header you could move that to outside of the Select Case structure. Send 'header' then select which 'body' to send. That'll save a couple of GOSUBS.

    /Henrik.

  3. #3
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Still don't work...
    First try:
    Code:
    ;reading buttons on line 2    
        Portb.0 = 0
        TrisA.1 = 1
        pause 10
        status_3 = PortA & %00011100
        Portb.0 = 1
        TrisA.1 = 0
        select case status_3
                     case 20
                     gosub starting
                     While (PortA & %00011100) = 20
                     Gosub VolUp
                     wend
         end select 
    Goto Main
    the "code" generated is ... totally inadequate (picture 1).

    Second try :
    Code:
    ;reading buttons on line 2    
        Portb.0 = 0
        TrisA.1 = 1
        pause 10
        status_3 = PortA & %00011100
        Portb.0 = 1
        TrisA.1 = 0
        select case status_3
                     case 20
                     gosub Starting
                     Gosub VolUp
                     While (PortA & %00011100) = 20
                     Gosub VolUp
                     wend
         end select                       
    Goto main
    the "code" generated is ...full, with "header" at any VolUp command ! (picture 2).
    What do I do wrong ?
    Attached Images Attached Images   

  4. #4
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,604


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Hi,
    One possible cause is that when you read PortA inside the WHILE-WEND loop PortA.1 is not read properly since you make it an output before entering the loop. If you're going to read the pins they need to be inputs.

    /Henrik.

  5. #5
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Wherever I put this code (While (PortA & %00011100) = 20 : Wend) the result are always the same : full command is sending.

    Recap :
    - if I push button for VolUp (case 20) I need to send this code : Starting (heading) , followed by VolUp command (body). If the VolUp it still pressed, while the button is pressed, only body must be sending ;
    - the next time I press VolUp, the whole process must be repeated : Starting, followed by body while buton is pressed ...

    Maybe instead of (While (PortA & %00011100) = 20 : Wend) I must use another command ... but I dont realise which one ...

  6. #6
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Bingo ?!
    Code:
    ;reading buttons on line 2    
        Portb.0 = 0
        TrisA.1 = 1
        pause 10
        status_3 = PortA & %00011100
    ;    Portb.0 = 1
    ;    TrisA.1 = 0
        select case status_3
                    case 20
                    gosub starting
                    while (PortA & %00011100) = 20
                    gosub volup
                    wend
        end select                       
        Portb.0 = 1 ; I've moved these here
        TrisA.1 = 0  ;   "  "
    Goto main
    I think You are right again, Mr. Henrik ! I will made hardware test and post the results ! Thanks ! Regards !

  7. #7
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    The code posted earlier ...
    Code:
    ;reading buttons on line 2         
    Portb.0 = 0     
    TrisA.1 = 1     
    pause 10     
    status_3 = PortA & 011100     
          select case status_3                 
          case 20                 
          gosub starting                 
                 while (PortA & 011100) = 20                 
                        gosub volup                 
                 wend     
          end select                            
    Portb.0 = 1      
    TrisA.1 = 0   
    Goto main
    Work verry, verry fine !!!
    Thank You, Mr.Henrik !!!
    Last edited by fratello; - 9th May 2012 at 13:01.

  8. #8
    Join Date
    Dec 2008
    Location
    Ploiesti, ROMANIA
    Posts
    582


    Did you find this post helpful? Yes | No

    Default Re: Group - ungroup of commands

    Mr.Henrik, I need Your advice, again ...
    I make some "experiments" with my specific matrix ... searching for best solution.
    I use the code from previous post, with good results.
    But now I need to have a little different function of buttons.
    I need to have portb.x = 1 while correspondent button.x is pressed.
    I don't understand why the code don't work proper ...
    Code:
    @ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _BODEN_ON & _LVP_OFF 
    include "alldigital.pbp"
       Define   OSC 4           ' 4MHz 
       CMCON = 7                ' Disable on-chip comparator, PORTA in digital mode
    
    
    TRISA = %00011100           ; coloane la RA2, 3, 4 ; randuri la RA1, 0 ,7 
    PORTA = %00011100
    PORTB = %00000000
    TRISB = %00000000
    
    status_1 VAR BYTE
    
    Main:
    ;reading buttons on row 1
    PortA.0 = 0
    TrisA.1 = 1
    pause 10
    status_1 = PortA & %00011100
    ;    PortA.0 = 1
    ;    TrisA.1 = 0
    select case status_1
                    
    case 12
      while status_1 = 12
      portb.1 = 1
      wend
      portb.2 = 0 
    
    case 20
      while status_1 = 20
      portb.2 = 1
      wend
      portb.2 = 0
                    
    case 24
      while status_1 = 24
      portb.3 = 1
      wend
      portb.3 = 0
        
    end select
    PortA.0 = 1
    TrisA.1 = 0
    
    Goto main
    I KNOW I made some mistakes, but I DONT KNOW where ... Please, can You help me ?! Thank You so much !
    Attached Images Attached Images  

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