c언어 도와주세요...
초롱
#includeavr/io.h
#includeavr/iom128.h
#includeutil/delay.h
const unsigned char list[8] = {0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE, 0xFF};
int main(void)
{
int Led_count = 0xFF;
DDRB = 0;
DDRA = 0x00;
DDRC = 0xFF;
PORTA = 0x00;
PORTC = 0x00;while(1)
{
if(PINB == 0xFE)
{
PORTA = 0x01;
PORTC = list[Led_count];
Led_count = Led_count + 1;
if(Led_count = 8) Led_count = 0;
}
else if(PINB == 0xFD)
{
PORTA = 0x02;
PORTC = list[Led_count];
if (Led_count == 0) Led_count = 8;
Led_count = Led_count - 1;
}
else
{
PORTA = 0x03;
PORTC = 0xFF;
}
_delay_ms(1000);
}
}여기서 스위치(PINB)를 누를떄 스위치는 2갭니다.. 1번을 누르게되ㅕㄴ LED가 오른쪽으로쉬프트됩니다.. 그리고 다시 왼쪽스위치를 누르게되잖아요그렆초기화되고 LED가 첫번째부터 시작해야되는데
오른쪽에서 꺼졌떤 부분부터 시작되네요 어떻게해야될까요
버튼 2개중
첫번쨰 버튼 누를시 1 2 3 4 5 6 7 8 오른쪽 쉬프트
그런데 두번쨰 버튼 누를시 1 2 3 4 5 6 7 8 중 첫번쨰가 3에서 꺼졌으ㅕㄴ
8 7 6 5 4 3 2 1 쉬프트가아닌 3 2 1 8 7 6 5 이렇게 쉬프트가 되요
-
난초 2023-11-14
이전 모드를 기억했다가 모드가 바뀐 경우 Led_count를 0으로 리셋. 하면 어떨까요?
초기화 되는 부분이 없잖아요