1) 지식 창고는 본인이 작성한 콘텐츠(팁/노하우/리소스/강좌 등)을 무료 혹은 가상화폐인 납포인트를 통해 공유하는 공간입니다.
2) 본인이 작성한 콘텐츠에 대해서만 지식 창고에 등록할 수 있으며, 저작권에 위배되는 콘텐츠는 사전경고 없이 삭제될 수 있습니다.
3) 콘텐츠 구매 및 첨부파일 다운로드는 회원그룹 '연구원' 이상 가능하오니, 경험치를 쌓아 진급한 후에 이용 부탁드립니다.
4) 무료 콘텐츠의 본문은 구매절차 없이 즉시 이용할 수 있으며, 판매 납포인트가 있는 콘텐츠는 구매 후 이용할 수 있습니다.
5) 콘텐츠 판매에 따른 납포인트 수익은 지정한 비율(50%)에 따라 판매자에게 지급하며, 납포인트 수익을 통해 진급을 빨리할 수 있습니다.
6) 구매 후 평가를 하면 구매 납포인트의 20%를 돌려 드립니다.
판매자 | 킬유21 | 판매 납포인트 | 무료 | 평점 | 0점 / 총 0명 참여 |
---|
/* 헤더 파일 위치 변경!! (AvrEdit3.6) <io.h> => <avr/io.h> , <interrupt.h> => <avr/interrupt.h> <sig-avr.h> => <avr/signal.h> ##Chaned Register Names## GIMSK -> GICR , MCUSR -> MCUCSR , UBRR -> UBRRL USR -> UCSRA , ADCSR -> ADCSRA */ #include <avr/io.h> #include <avr/signal.h> #include <avr/interrupt.h> volatile unsigned char stateFlag; // RUN => 'R' , STOP => 'S' void delay( int ); int main(void) { stateFlag = 'R'; unsigned char led = 1; // default led 1 unsigned char dFlag = 'L'; // default direction flag LEFT DDRC = 0xFF; DDRD = 0; // INTERRUPT INPUT PORT /* INT0 sense mode 의 결정 : rising edge */ // ISC01 : 1 , ISC00 : 0 => falling edge // ISC01 : 1 , ISC00 : 1 => rising edge MCUCR = (1 << ISC01) | (1 << ISC00); /* External interrupt mask 결정 */ // 90s8535 replace mega8535 (GIMSK -> GICR) GICR = (1 << INT0); // INT0 Enable !! sei(); // Grobal Interrupt Enable !! while(1) { PORTC = led; delay(16); // stateFlag 가 RUN 상태('R') 일 경우만 시프트 연산을 한다. if(stateFlag == 'R') { if(dFlag == 'L') led <<= 1; else led >>= 1; if(led == 0x80) dFlag = 'R'; else if(led == 1) dFlag = 'L'; } } return 0; } // INT0 External event 가 발생할때마다 RUN -> STOP -> RUN 을 번갈아가며 바뀐다. SIGNAL(SIG_INTERRUPT0) { stateFlag = ((stateFlag == 'R') ? 'S' : 'R'); } void delay(int n) { int i, j; for(i=0; i<n; i++) for(j=0; j<20000; j++) ; }