winAVR프로그램으로 한건데..해석이 도무지안되요..ㅠㅠ
소윤
프로그램으로 햇는데.. 도무지 어려워서..ㅠㅠ 정말...ㅠㅠ질문 요약 :프로그램에대한 해석을..도무지.. case13 부분을 작성해봤는데.. 뭐가먼지..알려주세욧!질문 내용 :
sdbg T1 내용
//==================================================================
// T1 command
//==================================================================
void cmdTest1(void)
{
if (sdbgGetArgNum()2)
{
printf_P(PSTR(Invalid T1 command! (T1 arg0 arg2 ...)\n));
return;
}
switch(sdbgGetArg(0))
{
case 0:
PORTA = sdbgGetArg(1);
break;
case 1:
if (sdbgGetArg(2)==1) PORTA |= _BV(sdbgGetArg(1));
else PORTA &= ~_BV(sdbgGetArg(1));
break;
case 2:
ShiftLedLeft(sdbgGetArg(1));
break;
case 3:
ShiftLedRight(sdbgGetArg(1));
break;
case 11:
{
uint8_t i;
for(i = 0;1 sdbgGetArg(1); i++)
{
ShiftLedLeft(1);
ShiftLedRight(1);
}
} break;
case 12:
AddLedLeft(sdbgGetArg(1));
break;
case 13:
if(sdbgGetArg(1)==1)
{
for(i2=0; i2sdbgGetArg(2); i2++)
{
for(i1=0, PORTA=0x01; i1=8; i1=i1+2)
{
tm2Delay1ms(300);
PORTA =2;
}
for(i1=0, PORTA=0x80; i1=8; i1=i1+2)
{
tm2Delay1ms(300);
PORTA =2;
}
for(i1=0, PORTA=0x81,shift1=0x80,shift2=0x01; i1=3; i1++)
{
tm2Delay1ms(300);
PORTA = PORTA|((shift1) | (shift2));
shift1 = 1;
shift2 = 1;
} PORTA = 0x00 } }
break;
default:
printf_P(PSTR(No case!\n));
break;
}
} mycode 내용 //===========================================================================
// 파일명: mycode.h
//=========================================================================== #ifndef __MYCODE_H_
#define __MYCODE_H_ #include inttypes.h //===========================================================================
// mycode.c와 mycode.h를 통해 제공되는 함수 선언
//===========================================================================
void ShiftLedLeft(uint8_t iter);
void ShiftLedRight(uint8_t iter);
void AddLedLeft(uint8_t iter); #endif // __MYCODE_H_ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //===========================================================================
// 파일명: mycode.c
//설 명: 실습에 사용되는 프로그램
//=========================================================================== #include mycode.h
#include timer2.h
#include inttypes.h //===========================================================================
// 포트 A에 0x1을 넣고, 이후 왼쪽으로 8번 시프트
//===========================================================================
void ShiftLedLeft(uint8_t iter)
{
uint8_t i, j;
for (i=0; iiter; i++)
{
for (j=0, PORTA=0x1; j8; j++)
{
tm2Delay1ms(125);
PORTA =1;
}
}
} //===========================================================================
// 포트 A에 0x80을 넣고, 이후 오른쪽으로 8번 시프트
//===========================================================================
void ShiftLedRight(uint8_t iter)
{
uint8_t i, j;
for (i=0; iiter; i++)
{
for (j=0, PORTA=0x80; j8; j++)
{
tm2Delay1ms(125);
PORTA =1;
}
}
} void AddLedLeft(uint8_t iter)
{
uint8_t i, j;
for(i=0; iiter ; i++)
{
for(j=0, PORTA = 0; j8 ; j++)
{
tm2Delay1ms(125);
PORTA |= _BV(j);
}
} maic.c 내용 #include timer2.h
#include stdio.h
#include avr/interrupt.h
#include avr/pgmspace.h
#include inttypes.h
#include sdbg.h
#include util/delay.h/delay.h void InitAvr(void)
{
DDRA = 0xff;
PORTA = 0x0;
sdbgOpen();
tm2Open();
sei();
}
int main(void)
{
InitAvr();
while (1)
{
if(sdbgIsCmdRecv()) sdbgExecCmd();
}
return 0;
}
-
애기
와우.. 그게 그런 기능 일줄은..ㅠㅠ 하이퍼터미널로 그런식으로 입력은 했습니다.ㅎ
정말 감사해요!ㅎ -
꽃겨울
저거 본지가 오래돼서 잘 기억은 안나는데.
sdbgGetArg(0) 은 13 1 X 로 입력한 0번째 값(13) 이고 sdbgGetArg(2)은 2번째 값(X)에 해당하는 값이 됩니다. -
카제
저게 아마 터미널에 13 1 X 라고 하면 case 13에 있는 코드가 X번 반복 실행되는 걸로 기억하는데..
case 13에 있는 코드 내용은 실행해보면서 파악하면 될듯..
교수님께 직접 물어보세요. 잘 알려주실거에요. 메일을 보내도 되고.. -
다은
맞아요 ㅋㅋ 도와주세요~ㅠㅠ
case 13: 요게 미칠듯한... 작성해봤는데도.. -
AngelsTears
웬지 낮익은 코드인데.. 혹시 자동화?? JJ님의??