semaphore pic12f629


Closed Thread
Results 1 to 27 of 27

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mackrackit View Post
    That is doable. If GP4 is LOW, making GP0 or GP1 or GP2 High will make the connected LED light. The same for GP5.

    Being I do not know the sequence you want them to light here is an idea.

    Your code will have the "blinking" sequence with multiple pauses. The value of the pauses will be held in a variable. A button will connect to GP3 as an interrupt. Every time the button is pushed the variable will increase by the amount you want. Once the highest value is reached the variable will reset to the lowest.

    Code:
    "VARIABLES
    X VAR WORD:Y VAR WORD:Z VAR WORD
    
    ON INTERRUPT GOTO MYINT
    INTCON=%10001000
    IOC = %00001000
    '##############
    'YOUR SEQUENCE
    '##############
    DISABLE
    MYINT:
    IF GPIO.3 = 1 THEN
        X = X * 10
        Y = Y ???
        Z = Z  ???
        pause 100
    IF  X =>  ? THEN X  =  ??
    IF  Y =>  ? THEN Y  =  ??
    IF  Z =>  ? THEN Z  =  ??
    INTCON.1 = 0
    RESUME
    ENABLE
    Maybe something like that will work for you.
    Hello,

    This is a sequence that desire for the lights.
    Attached Images Attached Images  

  2. #2
    Join Date
    May 2008
    Location
    Italy
    Posts
    825


    Did you find this post helpful? Yes | No

    Default

    You can accomplish the result with only 3 output ports. Connect Red led A and Green led B from port one to ground; Green led A and Red led B from port one to + 5V (pay attention to the polarity). Yellow led A to port 2 and Yellow led B to port 3. When Port one is High the green/red leds (correctly polarized will lit) when port one will turn low you will switch on the second set of green/red leds.
    With port 2 and 3 you modulate the yellows.

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Leonardo View Post
    This is a sequence that desire for the lights.
    Are you sure about that sequence?

    Don't they normally go Green-Yellow-Red?
    DT

  4. #4


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Are you sure about that sequence?

    Don't they normally go Green-Yellow-Red?
    Darrel is the sequence .gif

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


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Leonardo View Post
    Darrel is the sequence .gif
    Yes, but it looks like it's backwards.

    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2968" />
    DT

  6. #6


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Yes, but it looks like it's backwards.

    <img src="http://www.picbasic.co.uk/forum/attachment.php?attachmentid=2968" />
    Darrel sequence can be changed later by now we can start the code to get an idea of the operation, which you suggest?.

    Thanks

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


    Did you find this post helpful? Yes | No

    Default

    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Last edited by Darrel Taylor; - 4th November 2008 at 03:24. Reason: added OSCCAL_1K
    DT

  8. #8
    Join Date
    Jul 2003
    Posts
    2,405


    Did you find this post helpful? Yes | No

    Smile Whew

    Pleeeeeeease don't install these traffic lights in Colorado.

    My wife thinks;

    Green = go
    Yellow = go really fast
    Red = stop if you can

    Would really screw up the natural order of things..;o}
    Regards,

    -Bruce
    tech at rentron.com
    http://www.rentron.com

  9. #9


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Darrel,

    You notice how it works.

    Thank you

  10. #10


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Hello friends,

    Upss was wrong with the sequence of lights here correct.

    Attached Images Attached Images  
    Last edited by Leonardo; - 5th November 2008 at 01:23.

  11. #11


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by Darrel Taylor View Post
    Well, ok.

    But I accept no responsibility for the resulting accidents.
    Code:
    @ device  INTOSCIO, WDT_OFF, PWRT_OFF, MCLR_OFF, PROTECT_OFF, CPD_OFF 
    DEFINE OSCCAL_1K 1
    
    Green         CON 5000             ; mS to show Green Light
    Yellow        CON 1000             ; mS to show Yellow Light
    Tcalibrate    CON 480              ; Adjust for loop timing accuracy
    ;---------------------
    Sequence      VAR BYTE             ; cycles through the 4 states
    TimeCount     VAR WORD             ; Counts down sequence time
    
    CMCON = 7                          ; Disable comparator
    GPIO   = %110000                   ; Start with all LED's off
    TRISIO = %001000                   ; Set LED ports to output
    
    ;---------------------------------------------------------------------------
    Main:
      FOR Sequence = 0 to 3
        LOOKUP2 Sequence,[ Green,  Yellow,  Green,  Yellow], TimeCount
        REPEAT                                                   ; Multiplex
          LOOKUP Sequence,[%100001,%100011,%100100,%100100],GPIO ;  Tr. Light #1
          PauseUS Tcalibrate
          LOOKUP Sequence,[%010100,%010100,%010001,%010011],GPIO ;  Tr. Light #2
          PauseUS Tcalibrate
          TimeCount = TimeCount - 1
        UNTIL TimeCount = 0
      NEXT  Sequence
    GOTO Main
    Hummm,

    The code works very well but I want to change the sequence of image.

    How can I change the code with this sequence.


Similar Threads

  1. pic12f629 EEPROM problem in MPLABSIM
    By nicholastyc in forum General
    Replies: 1
    Last Post: - 16th May 2008, 18:10
  2. PIC12F629 - OSCCAL LOST in combat
    By ewandeur in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 28th March 2007, 21:06
  3. Ultrasound with PIC12F629
    By ewandeur in forum mel PIC BASIC Pro
    Replies: 7
    Last Post: - 28th February 2007, 16:22
  4. PIC12F629, useing all I/O pins
    By Jcee324 in forum mel PIC BASIC Pro
    Replies: 16
    Last Post: - 7th December 2004, 11:05
  5. PIC12F629 or 8pin
    By andyf in forum mel PIC BASIC Pro
    Replies: 23
    Last Post: - 27th October 2004, 18:11

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