목록Univ (103)
ITGenerations
// source 23// 세븐세그먼트, 트랜지스터 사용 x/*#include #include static unsigned char SegTable[17] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F, 0x77, 0x7C, 0x58, 0x5E, 0x79, 0x71, 0x00}; int main(){unsigned char cnumber[2] = {4,3}; // 34 출력, 원래 코드//unsigned char cnumber[2] = {3,4}; // 변경코드 -> 34가 아니라 43이나온다. int j=0; DDRA = 0xFF;// 포트 A를 출력으로 설정DDRD |= 0xF0;// 포트 D의 상위니블을 출력으로 설정//DDRD |= ..
/source 14 #include #include ISR(TIMER0_COMP_vect){static int led=0;static char n_enter=0;n_enter++;if(n_enter==50){n_enter=0;if(led){led=0;PORTA=0x01;} else{led=1;PORTA=0x00;}}} int main(){DDRA=0xFF;DDRB=0xFF;PORTA=0xFF; TCCR0=(1
// --타이머 ----//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..