목록Univ/AVR atmega128 (34)
ITGenerations
// --타이머 ----//source 13//normal 모드 /*#include #include static unsigned char pattern[3]={0xFE, 0xFD, 0xFB}; ISR(TIMER0_OVF_vect)// 타이머 오버플로우형식 0, 2 선택 가능 {// 타이머 카운터 레지스터 static int index=0;static char n_enter=0;TCNT0=100;// 타이머 초기값 매번 설정, 값 기록 n_enter++;if(n_enter==50){n_enter=3;PORTA=pattern[index++];if(index==3) index=0;}} int main(){DDRA=0xFF;PORTA=0xFF;TCCR0=0x00;//타이머/카운터 제어 레지스터 0, 2// 선택..
//source 12// 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가// 완전한 코드, 채터링 문제 해결 /*#include #include #include #define DEBOUNCING_DELAY 20void msec_delay(int n);static unsigned char pattern[3]={0xFE, 0xFD, 0xFB}; ISR(INT0_vect){ static int i=0;if(++i==3) i=0;PORTA=pattern[i];msec_delay(DEBOUNCING_DELAY);while(~PIND&0x01);msec_delay(DEBOUNCING_DELAY);EIFR=(1
// source 11// 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가//불완전한 코드= 채터링 문제가여전히 존재// 딜레이 함수를 이용하여 채터링 문제 해결하려했으나 #include #include #include #define DEBOUNCING_DELAY 20void msec_delay(int n);static unsigned char pattern[3]={0xFE, 0xFD, 0xFB}; ISR(INT0_vect){ static int i=0;if(++i==3) i=0;PORTA=pattern[i];msec_delay(DEBOUNCING_DELAY);while(~PIND&0x01);msec_delay(DEBOUNCING_DELAY);//채터링 문제 완전 해결된 거 아님 } int..
// source 10// 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가//불완전한 코드 #include #include #include #define DEBOUNCING_DELAY 20void msec_delay(int n);static unsigned char pattern[3]={0xFE, 0xFD, 0xFB}; ISR(INT0_vect){ static int i=0;if(++i==3) i=0;PORTA=pattern[i];//아직 채터링 문제 존재 } int main(){DDRA=0xFF;DDRD=0x00;SFIOR &=~(1
// source 9// 스위치 수정 과정, 스태틱함수 추가, 인터럽트 라이브러리 추가//불완전한 코드/*#include #include #include #define DEBOUNCING_DELAY 20void msec_delay(int n);static unsigned char pattern[3]={0xFE, 0xFD, 0xFB}; ISR(INT0_vect){ int i=0;if(++i==3) i=0;PORTA=pattern[i];// 1 번만 이동 } int main(){DDRA=0xFF;DDRD=0x00;SFIOR &=~(1