void PIO_Ext02(void);
void Delayms(unsigned int ms) //딜레이 함수..
{
volatile unsigned int count, countmax = (MASTERCLOCK / 10000) * ms;
for(count = 0; count < countmax; count++);
}
void PIO_Ext01(void)
{
static unsigned int i=0;
unsigned int status;
status=PIO_ISR;
if(status == (unsigned int)0x00000100)
{
if(i==0)
i =1;
else if(i&0x80)
return;
else
i|=i<<1;
PIO_SODR=i;
}
else if(status ==(unsigned int)0x00000200)
{
if(i==0)
return;
else
i =i>>1;
PIO_CODR=0xFF;
PIO_SODR=i;
}
}
void PIO_Ext02(void)
{
unsigned int i;
for(i=1; i<=3; i++)
{
PIO_SODR=0x000000ff;
Delayms(300);
PIO_CODR=0x000000ff;
Delayms(300);
}
}
int main(void){
PMC_PCER = (unsigned int)1<<2;
PIO_PER = 0x00000FFF; //병렬 I/O포트로 사용 설정 디폴트로 I/O포트로 사용 하도록 되어 있다.
PIO_PUER=0x300;
PIO_ODR = 0x300; //출력 버퍼 금지 레지스터 설정
Delayms(50);
PIO_OER = 0x00000FFF;
PIO_IFER=0x00000700; //글리치 필터 사용
PIO_IER=0x00000700; //인터럽트 인애이블 레지스터
AIC_IDCR=(unsigned int)1<<2; //마스크 설정
AIC_SVR[2]=(unsigned int)PIO_Ext01; //인터럼트 함수 설정
AIC_SMR[2]=5; //
AIC_ICCR=(unsigned int)1<<2; //
AIC_IECR=(unsigned int)1<<2; //마스크 해지
while(1);
return 0;
} // End Main....
'About 프로그래밍!!! > ARM' 카테고리의 다른 글
[ARM]통신 인터럽트 (0) | 2010.07.01 |
---|---|
[ARM]통신 (0) | 2010.06.29 |
[ARM]인터럽트 확인.(초기화) (0) | 2010.06.28 |
[ARM]인터럽트(그냥) (0) | 2010.06.28 |
[ARM]풀업저항, 풀다운저항. (0) | 2010.06.28 |