Whers is the typo'


Closed Thread
Results 1 to 8 of 8

Hybrid View

  1. #1
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Then break it back down to PortD only...and build 'er back up...
    Just do a 'blinky' on all pins on PortD...
    Code:
    DEFINE OSC 4
    @ DEVICE pic16f877a, CPD_OFF
    @ DEVICE pic16f877a, PROTECT_OFF
    @ DEVICE pic16f877a, WRT_OFF
    CLEAR : ADCON1=7 : INTCON=0 : B0 var byte : trisd = 0
    main: b0 = b0 + 1 : portd = b0 : goto main
    You should see each Port D pin flashing at exactly half the frequency of the pin before it. If it's flashing too fast, throw a bit of a pause in the main loop. At least that'll take any questions about PortD out the window...

  2. #2
    Join Date
    Nov 2007
    Location
    Lake Villa Il.
    Posts
    40


    Did you find this post helpful? Yes | No

    Default

    Hello Joe,
    I did try your suggestion and it still will not work.
    Please see the following code IT DOES WORK
    My 'kids are off raising thier own. My Wife's (I call her 'Da BOSS, BOSS) eyes glossed over in about 2 minutes, she says huh?
    I do thank you for your thoughts and suggestions.

    Terry, K9HA

    '************************************************* ***************
    '
    ' * * * System Defines * * *
    '
    '
    @ DEVICE pic16f877a, CPD_OFF

    @ DEVICE pic16f877a, PROTECT_OFF
    @ DEVICE pic16f877a, WRT_OFF
    DEFINE OSC 4
    'DEVICE pic16f877a,
    'ADCON1=7 ' sETS pORTS AS ALL DIGITAL( I HOPE)
    '????????????????????????????????????????????????? ????????????
    '
    INTCON=0 'I Think this turns off ALL INTERUPTS FOR PORTB????
    '
    '????????????????????????????????????????????????? ?????????????

    '
    '************************************************* ***************
    '
    ' Variable Descritptions:
    '
    ' NAME # bits location I/O Description
    ' Type 1 PortD0 IN LOW for TRUE
    ' HIGH for COMPLEMENTARY
    ' PortC.7 1 Program BIT VAR BIT
    '
    '************************************************* ***************
    '
    ' * * * VARIABLE DECLARATIONS * * *
    '
    B0 var byte 'Used in subroutine to generate LED Segment data
    B1 var byte 'Used in subroutine to generate LED Segment data
    'Type var BIT 'PortD.0
    'tYPE = PortD.0

    '
    '************************************************* ***************
    ' DEVICE SET-UP
    '




    CLEAR ' Is this the proper place to put this?

    '
    PortB=%11111111 ' ALL BIT PRELOADED TO 1. Known condition.
    '
    TRISB=%11111111 ' ALL 8 BITS SET AS INPUT: HOEVER ONLY LOWER 4 REALLY USED.
    ' ' *** GROUND BITS 4-7 ***
    PortC=%11111111 'ALL BITS preloaded as HIGH (LED DISPLAY IS OFF), BIT 7 as HIGH
    '
    TRISC=%00000000 'ALL BITS SET AS OUTPUT ( BITS 0-6: LED SEGMENTS 1-7
    TRISE.4=0 'tURNS OFF PARALLEL/SLAVE PORT FUNCTION FOR PORT D

    loop:
    B0=PORTB

    'For B1 = 0 To 15 ' Count from 0 to 15 "F"
    'B0 = B1 ' Pass the count to the conversion subroutine
    Gosub bin2seg ' Convert to segment value
    Poke PortC, B0 ' Put segment values out to LED
    PauseUS 1 ' Display it for 1 second
    Poke PortC, $FF ' Turn off PortC
    PAUSEUS 1
    'Next B1 ' Do next
    Goto loop ' Do it forever

    ' Convert binary number in B0 to segments for LED
    bin2seg: Lookup B0,[$40,$79,$24,$30,$19,$12,$02,$78,$00,$18,$88,$83,$C 6,$A1,$86,$8E],B0
    Return
    END
    ' CLEAN COMPILE 121 WORDS USED 10/04/2008 09:15:00 PM
    '
    ' Yippie, IT WORKS!!




    THIS does read a BCD switch

  3. #3
    Join Date
    Nov 2007
    Location
    Lake Villa Il.
    Posts
    40


    Did you find this post helpful? Yes | No

    Default

    Skimask,
    The desired end result is to use 4 bits on Port B as input, Port C as output to drive the display, and 1 bit on Port D as input to tell the difference between True and Complimentary encoded switches, rotary encoders.

    TNX,
    Terry

  4. #4
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Ok, I smell what your cooking now...
    One, ok, two suggestions.
    Don't need to use Poke. Just use PortC = $FF or whatever instead to assign a value to a port.
    Also, when running at 4Mhz, the minimum pauseus possible is 24us as stated in the PBP manual, so anything less than 24 will get you 24 anyways. If you actually want a 1us pause, you might try a @ NOP instead.

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


    Did you find this post helpful? Yes | No

    Default

    Hi Terry,
    If you are only using 4 port b pins as inputs I would make the rest outputs and set low and use pulldowns just to avoid that port being made available to stray signals.IMHO I did an BCD with lookup a while back using a 12f675.
    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.

  6. #6
    Join Date
    Nov 2007
    Location
    Chicago
    Posts
    5


    Did you find this post helpful? Yes | No

    Default Maybe nothing

    Sneaky,
    Maybe it's nothing, but I see a space between the $c and 6 in the code below. Seems like this would cause a compile error but I haven't tried it.

    ' Convert binary number in B0 to segments for LED
    bin2seg: Lookup B0,[$40,$79,$24,$30,$19,$12,$02,$78,$00,$18,$88,$83,$C 6,$A1,$86,$8E],B0
    Return
    END

Similar Threads

  1. PIC16F877A - Timer0 won't interrupt
    By WishMaster^ in forum mel PIC BASIC Pro
    Replies: 19
    Last Post: - 25th April 2007, 08:25
  2. Crystalfontz LCD
    By jman12 in forum mel PIC BASIC Pro
    Replies: 9
    Last Post: - 9th February 2007, 15:04
  3. Bit variables... typo?
    By Tomexx in forum mel PIC BASIC Pro
    Replies: 6
    Last Post: - 29th November 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