20160311-허도경-업무일지-펌웨어분석
2핀몰랙스를 꼽을땐 선의 색깔을 잘 확인하여 꼽아야 작동에 오류가 생기지 않는다.
------------------------------------------------------------------------------------------------------------------
DK128의 7Segnent 출력
34출력
#define DDRA (*((volatile unsigned char *)0x21))
#define PORTA (*((volatile unsigned char *)0x22))
#define PINA (*((volatile unsigned char *)0x20))
int main(void)
{
DDRA = 0XFF;
PORTA = 0X00;
volatile unsigned int uiCnt;
volatile unsigned int uiLoop;
uiCnt = 0;
while(1)
{
PORTA=((uiCnt/10)<<4)(uiCnt %10);
for(uiLoop = 0; 60000 > uiLoop; ++uiLoop);
++uiCnt
if(uiCnt>99)
{
uiCnt=0;
}
}
return 0;
}
0-99까지 반복
#define DDRA (*((volatile unsigned char *)0x21))
#define PORTA (*((volatile unsigned char *)0x22))
#define PINA (*((volatile unsigned char *)0x20))
int main(void)
{
volatile unsigned int uiCnt;
volatile unsigned int uiLoop;
uiCnt = 0;
DDRA = 0XFF;
PORTA = 0X00;
while(1)
{
PORTA = ((uiCnt/10)<<4)|(uiCnt%10);
for(uiLoop = 0; 60000 > uiLoop; ++uiLoop);
++uiCnt;
if(uiCnt>99)
{
uiCnt=0;
}
}
return 0;
}
DK128 LED 교차(->,<-)점등
D4~D11까지 순차적으로 점등되었다가 다시 하향시키기
#define DDRA (*((volatile unsigned char *)0x21))
#define PORTA (*((volatile unsigned char *)0x22))
#define PINA (*((volatile unsigned char *)0x20))
int main(void)
{
volatile unsigned int iLoop;
volatile int iDir;
volatile unsigned int uiPos;
DDRA = 0XFF;
PORTA = 0X00;
iDir = 1;
uiPos = 0;
while(1)
{
if(1==iDir)
{
PORTA = ~(1<<uiPos);
}
else
{
PORTA = ~(0X0080>>uiPos);
}
for(uiLoop = 0; 60000>uiLoop; ++uiLoop);
uiPos = uiPos+1;
if(7<uiPos)
{
iDir=iDir*-1
uiPos = 0;
}
}
return 0;
}
-----------------------------------------------------------------
Interrupt:하던 일을 잠시 중단-우리가 호출하는 함수X
Polling: 문재가생겼는지를 계속 지켜본다.
Interrup Sevice Routine: ISR