20160311_송찬호_펌웨어 분석
#define DDRA (*((volatile unsigned char *)0x21))
#define PINA (*((volatile unsigned char *)0x20))
#define PORTA (*((volatile unsigned char *)0x22))
int main(void)
{
volatile unsigned int uiCnt;
volatile unsigned int uiLoop;
DDRA=0xFF;//입력을 1로한다.
PORTA=(0x00);//출력은 0으로한다.
int iDir;//if문에 쓸 변수를 만든다.
iDir=1;
unsigned int uiPos;//PORTA에 쓸 변수를 만든다.
uiPos=0;
while(1)//반복 한다.
{
if(1==iDir)//iDir을 1로지정
{
PORTA=~(1<<uiPos);//이진수0000 0001의 반대기호(~)로인해
1111 1110이면 0이 uiPos 만큼 이동한다.
}
else //else는 if의 규정에 벗어난 값을 나타낼때의 값이다.
{
PORTA=~(0x0080>>uiPos);//0x80은 음수이다 (왜 음수 인지는 기억이안남)
그래서 0x0080한다.
반대의 이진수는0111 1111이다.
}
for(uiLoop=0; uiLoop<60000; ++uiLoop);
for(uiLoop=0; uiLoop<60000; ++uiLoop);
uiPos=uiPos+1;//위uiPos에 1씩 더하라
if(7 < uiPos)// 만약 uiPos가 1씩 더하는데 7보다 크면
곱한다는 함수이다.iDir은 -1이 되면 if문에 계
산이 안되므로 else문으로 이동하는대 이를 반복한
다.
{
iDir=iDir * -1;
uiPos=0;
}
}
return 0;
}
선연결방법 j15 1부터 8까지 j13의 PORTA의 포트 0포트 부터 포트7까지 차래 대로 연결 한다.