12f675_fuse_about_to_blow!


Closed Thread
Results 1 to 40 of 929

Hybrid View

  1. #1
    Join Date
    Nov 2003
    Location
    Wellton, U.S.A.
    Posts
    5,924


    Did you find this post helpful? Yes | No

    Default

    In the Math Operators section of the manual take a look at SHIFT and the Btiwise Operators.

    The idea is..
    From Henrik
    To display a "2" you need to set bits 0, 1, 3, 4 and 6 (%01011011 or 91)
    You will have to connect the display so that part is on one port and part on another. half and half...
    Take the lower 4 bits in the case of #2 (1011) and send them to the display with Port1.
    Take the upper 4 bits (0101) and send that to the display with Port2.

    Think of Port1 as being 0-3
    Port2 as 4-7

    Presto... a whole Port...0-7
    Dave
    Always wear safety glasses while programming.

  2. #2
    Join Date
    Feb 2010
    Location
    I live in the UK
    Posts
    562


    Did you find this post helpful? Yes | No

    Default

    Well plenty to think about today. Maybe a little consolidation from me, drum those basics into my mind (I still have plenty to learn here).

    I see what you're saying regards splitting port1 & port1 to drive the display.

    Absolutely fascinating stuff though, I think I'm hooked and I've only managed to flash a few LED's.

    Again many thanks to you all.

    Dave

  3. #3
    Join Date
    Feb 2010
    Location
    I live in the UK
    Posts
    562


    Did you find this post helpful? Yes | No

    Default

    Hi everyone. I've been working on a program below which is a modification of Henrik's look up table program. I know if you had a PIC with an eight bit wide output you could store the output words in the lookup table and then drive a seven segment display directly as Henrik explained.

    So I thought I'd try and load a lookup table to blink an LED (D0) 3 times using a for-next-loop (I've never used a for-next-loop before). It works except after three cycles it doesn't stop. I read up that after the loop has finished it then moves on down to the next instruction, so I've added STOP / END. IF i = 4 then STOP. None of these work and when any of these lines are added the program only cycles once.

    The only thing I can think of is that the 12F683 doesn't support LOOKUP tables.

    Any ideas please? Dave

    ANSEL = %00000000 'disable analog select so ports work as digital i/o
    CMCON0 = %00000111 'Disable analog comparators
    TRISIO = %11001111 'Set GPIO.4&5 to input
    GPIO = %00000000 ' set all outputs low

    i VAR BYTE

    START
    Main:
    pause 500 'pause 500 mili-secs
    For i = 1 to 3 ' loop count variable (value i) also number of times to loop.
    LOOKUP i, [ 223, 223, 223] ,GPIO '223 = %11011111 D0 switches on (GPIO.4)
    Pause 500 'pause 500 mili-secs
    LOW GPIO.4 ' DO switches off
    Next i ' loop again. ONE is added to count i and prog jumps to FOR

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


    Did you find this post helpful? Yes | No

    Post

    Hi,

    I read "somewhere" a program might end by the " END " directive, or loop to a known label in the program...

    Alain
    ************************************************** ***********************
    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 " !!!
    *****************************************

  5. #5
    Join Date
    May 2007
    Posts
    604


    Did you find this post helpful? Yes | No

    Default

    Dave, use <code> tags and format your code - makes it easier to read.
    Code:
    ANSEL  = %00000000 'disable analog select so ports work as digital i/o
    CMCON0 = %00000111 'Disable analog comparators
    TRISIO = %11001111 'Set GPIO.4&5 to input
    GPIO   = %00000000 ' set all outputs low
    
    i VAR BYTE
    
    START
    Main:
    pause 500          'pause 500 mili-secs
    For i = 1 to 3     ' loop count variable (value i) also number of times to loop.
      LOOKUP i, [ 223, 223, 223] ,GPIO      '223 = %11011111 D0 switches on (GPIO.4)
      Pause 500        'pause 500 mili-secs
      LOW GPIO.4       ' DO switches off
    Next i             ' loop again. ONE is added to count i and prog jumps to FOR

  6. #6
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default

    Hi Dave,
    Two things.... First as you figured out and as Alain also pointed out you will need an END after the loop or the PIC will wonder off to never never land eventually starting over (I think). Second, you need another PAUSE in there or you will not see the LED blink. It will get turned on then 500ms later it will get turned off and then on again almost instantly as the loop goes back to the beginning. I guess that's what you were trying with the PAUSE right after Main but remeber that the loop starts over at the FOR statement.
    Code:
    Main:
    pause 500          'pause 500 mili-secs
    For i = 1 to 3     ' loop count variable (value i) also number of times to loop.
      LOOKUP i, [ 223, 223, 223] ,GPIO      '223 = %11011111 D0 switches on (GPIO.4)
      Pause 500        'pause 500 mili-secs
      LOW GPIO.4       ' DO switches off
      Pause 500
    Next i
    END

  7. #7
    Join Date
    Feb 2010
    Location
    I live in the UK
    Posts
    562


    Did you find this post helpful? Yes | No

    Default

    Henrik you are a star.....!

    So I was pretty close then? I guess we wouldn't want to be flying in an aeroplane with any PIC'S in it I'd programmed just yet though...

    Right, I'm off for some for-next-loop practice.

    Cheers: Dave

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