[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: [avr-gcc-list] Bug? with switch statement
From: |
Hendrix, Jeff |
Subject: |
RE: [avr-gcc-list] Bug? with switch statement |
Date: |
Mon, 16 Dec 2002 09:33:28 -0700 |
I declared readPort as an unsigned and it worked fine.
Thanks for the help.
-jeff
-----Original Message-----
From: John Theofanopoulos [mailto:address@hidden
Sent: Friday, December 13, 2002 1:38 PM
To: address@hidden
Subject: RE: [avr-gcc-list] Bug? with switch statement
Try declaring your readPort as an unsigned char
John Theofanopoulos
-----Original Message-----
From: address@hidden [mailto:address@hidden
On Behalf Of Hendrix, Jeff
Sent: Friday, December 13, 2002 2:07 PM
To: address@hidden
Subject: [avr-gcc-list] Bug? with switch statement
I'm compiling the code below with 2002-06-25 release from avrfreaks. I
was originally testing this code on a mega128, the I tried in in avr
studio with the same results. I also tried compiling it to an 8515
target and still get the same results. What's happening is the switch
statement will only ever take the last case. To simulate this, you need
to turn on the high nibble on port C pins (to simulate the pullups), and
then turn off one of the bits in the high nibble. The only time it takes
one of the case paths is when bit 8 is off (0x70), all the other times
it just ignores the other cases. Anyone have any ideas?
thanks
-jeff
#include <io.h>
char ReadKeyPad(void)
{
char readPort = 0;
char curKey = 0;
// check ROW1
PORTC = 0xfe; // turn on pull ups and ground row 1
readPort = PINC&0xf0; // check just the high nibble
switch (readPort) {
case 0xe0: // key 1 held down
curKey = 1;
break;
case 0xd0: // key 2 held down
curKey = 2;
break;
case 0xb0: // key 3 held down
curKey = 3;
break;
case 0x70: // key 4 held down
curKey = 4;
break;
}
PORTC = 0;
return curKey;
}
int main(void)
{
char kp;
DDRC = 0x0f;
PORTC = 0x00;
while (1) {
kp = ReadKeyPad();
}
return 0;
}
avr-gcc-list at http://avr1.org
avr-gcc-list at http://avr1.org
avr-gcc-list at http://avr1.org
RE: [avr-gcc-list] Bug? with switch statement,
Hendrix, Jeff <=