#include <util/delay.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/lcd4.h>
소스 파일을 아래와 같이 짯구요.win avr 환경에서 led와 스위치 연결하고 스위치를 눌를 때마다 led에 스위치에 해당하는 핀 번호 불이 들어 오도록 하는 소스 짜는중인데 핀이 5개이면 5!의 경우의 수를 스위치문에 써주면 되는거 아닌가요?프로그램 돌려도 실행이 이상하게 되네요...PING의 0,1,2,3을 눌르면 4개에 해당하는 LED에 불이 들어와야되는데 한개만 들어온다는지...수정좀 해주세요
int main ()
{
unsigned char buff;
DDRG= 0X00;
PORTG = 0XFF;
PORTD=0XFF;
DDRD=0XFF;
{
while(1)
{
buff = PING;
buff&= 0b00011111;
_delay_ms(100);
switch(buff)
{
case 0b00011110:
_delay_ms(100);
PORTD=0b11111110;
break;
case 0b00011101:
_delay_ms(100);
PORTD=0b11111101;
break;
case 0b00011011:
_delay_ms(100);
PORTD=0b11111011;
break;
case 0b00010111:
_delay_ms(100);
PORTD=0b11110111;
break;
case 0b00001111:
_delay_ms(100);
PORTD=0b11101111;
break;
case 0b00011100:
_delay_ms(100);
PORTD=0b11111100;
break;
case 0b00011010:
PORTD=0b11111010;
_delay_ms(100);
break;
case 0b00010110:
_delay_ms(100);
PORTD=0b11110110;
break;
case 0b00001110:
_delay_ms(100);
PORTD=0b11101110;
break;
case 0b00011001:
_delay_ms(100);
PORTD=0b11111001;
break;
case 0b00010101:
_delay_ms(100);
PORTD=0b11110101;
break;
case 0b00001101:
_delay_ms(100);
PORTD=0b11101101;
break;
case 0b00010011:
_delay_ms(100);
PORTD=0b00010011;
break;
case 0b00001011:
_delay_ms(100);
PORTD=0b11101011;
break;
case 0b00000111:
_delay_ms(100);
PORTD=0b11100111;
break;
case 0b00001010:
_delay_ms(100);
PORTD=0b00001010;
break;
case 0b00000110:
_delay_ms(100);
PORTD=0b00000110;
break;
case 0b00010000:
PORTD=0b00010000;
_delay_ms(100);
break;
case 0b00001000:
_delay_ms(100);
PORTD=0b00001000;
break;
case 0b00000100:
_delay_ms(100);
PORTD=0b00000100;
break;
case 0b00000010:
_delay_ms(100);
PORTD=0b00000010;
break;
case 0b00000001:
_delay_ms(100);
PORTD=0b00000001;
break;
case 0b11100000:
_delay_ms(100);
PORTD=0b11100000;
break;
case 0b00000111:
_delay_ms(100);
PORTD=0b00000111;
break;
default:
_delay_ms(100);
break;
}
}
}