목록Univ (103)
ITGenerations
// 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
// source 8// 스위치 누름뗌 부정확한거 수정과정 // 부정확함!!!// 내부 풀업 설정 #include #include #define PUD 2// 내부풀업설정 void msec_delay(int n);unsigned char pattern[3]={0xFE, 0xFD, 0xFB};int main(){int i=0;DDRA=0xFF;DDRD=0x00;SFIOR &= ~(1 bit=1 이면 풀업 불능 풀업저항/풀다운저항 각각 말 그대로 위로 아래로 당겨주는 저항.위는 vcc 아래는 gnd링크 참조 http://blog.naver.com/nkkh159/220509863314 -----------------------------------------------------------*/
//source 7// switch를 이용해 패턴 변경 /*#include #include unsigned char pattern[3]={0xFE, 0xFD, 0xFB};int main(){int i=0;DDRA=0xFF;DDRD=0x00; while(1){PORTA=pattern[i];while(!(~PIND&0x01));msec_delay(20);if(++i==3) i=0;PORTA= pattern[i];while(~PIND&0x01);msec_delay(20);}} void msec_delay(int n){for(;n>0; n--)_delay_ms(1);} // 주의 사항 저항이 반드시 10k 내외의 값인것만 사용해야됨 // 그렇지 않으면 스위치 작동 x*/
//source6// 도트매트릭스 A,B 각 줄에 순차적으로 실행#include #include void msec_delay(int n);void main(){DDRA=0xFF;DDRB=0xFF;int flag=1;while(1){msec_delay(100);if(flag==1)PORTB=0x01;elsePORTB=0x02; PORTA=0xFE;msec_delay(100); PORTA=0xFD;msec_delay(100); PORTA=0x0B;msec_delay(100); flag *= (-1); } } void msec_delay(int n){for(; n>0; n--){ _delay_ms(1);}}