What am I doing wrong?


Closed Thread
Results 1 to 8 of 8

Hybrid View

  1. #1


    Did you find this post helpful? Yes | No

    Default

    I double checked everything with my Fluke my rows are on Portb. 1,Portb.2,and Portb.3 my columns are on Portb.4 - 7. I had everything setup like the orginal example on Bruce's site and it worked great but I wanted to use Portb.0 for my interrupt, thats when I moved everthing over one bit. It works, about eight functions work correctly but now I can send on two different buttons things like two decimal 7's or 5's , etc. instead of decimal 1-12. When I break the code down on paper to calculate what the output would be it concurs the same thing so thats why I was wondering how I could adjust the code, as far as I can see it has to do with the line "for row = 1 to 3" thats why I asked if 1 to 3 does refer to bit 1-3 in the variable row, and if so how can I compensate for three rows that are now shifted by one bit. I tried to see if ((row >> 1) *3) + (ncd (col ^$fe)) but about the same results.

    Thanks again.
    Last edited by tazntex; - 13th July 2010 at 00:32.

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


    Did you find this post helpful? Yes | No

    Default

    OK, now I think I see what you are doing. Me a little slower than normal today...

    Code:
    row = PORTB & %00001110
    Should isolate bit 1 ,2, and 3.
    Dave
    Always wear safety glasses while programming.

  3. #3


    Did you find this post helpful? Yes | No

    Default

    Well I tried that also, but that doesn't work either. I believe I mentioned earlier that I in my mind I was thinking since I moved the rows and columns over by one bit why don't I just create another variable such as:

    row1 = row >> 1

    then I could still use the same formula:

    key = (row * 3) + (NCD (col ^ $f)) ' (row * 3) because I have three rows and when I return the priority bit
    'of the columns after I flip the state of the bits ^$f that will tell me which
    ' column is actually the one being used at that moment of time as an output.

    But I tried it and still have not gained any ground.

    hmmm, back to the drawing board.

    Thanks again...

  4. #4


    Did you find this post helpful? Yes | No

    Default Update

    If I substitute this:

    if row = 1 && col.0 = 0 then key1 = 1
    if row = 1 && col.1 = 0 then key1 = 2
    if row = 1 && col.2 = 0 then key1 = 6
    if row = 1 && col.3 = 0 then key1 = 7
    if row = 2 && col.0 = 0 then key1 = 5
    if row = 2 && col.2 = 0 then key1 = 10
    if row = 2 && col.3 = 0 then key1 = 11
    if row = 3 && col.0 = 0 then key1 = 3
    if row = 3 && col.1 = 0 then key1 = 4
    if row = 3 && col.2 = 0 then key1 = 8
    if row = 3 && col.3 = 0 then key1 = 9

    for this:
    key = (row1 * 3) + (NCD (col ^ $f))

    everything works great but isn't there a simpler way?

    Thanks

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