BASIC4MCU | AVR | 타이머 | 타이머를 이용한 스톱워치
페이지 정보
작성자 키트 작성일2017-08-29 09:25 조회6,269회 댓글0건본문
#include <avr/io.h>#include <avr/interrupt.h>//volatile char SEG[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x07,0x7F,0x67,0x77,0x7C,0x39,0x5E,0x79,0x71,0x08,0x80};volatile char ms=0,sec=0,STOP=0,FndCnt=0;//ISR(TIMER1_COMPA_vect){ // 타이머1 A매치 인터럽트 10msecPORTG=0x0F; // FND_OFFif(STOP){ if(++ms>99){ ms=0; if(++sec>99)sec=0; } }if (FndCnt==0){ PORTE=SEG[ms %10]; PORTG=~8; }else if(FndCnt==1){ PORTE=SEG[ms /10]; PORTG=~4; }else if(FndCnt==2){ PORTE=SEG[sec%10]|0x80; PORTG=~2; }else { PORTE=SEG[sec/10]; PORTG=~1; }if(++FndCnt>3)FndCnt=0;}//ISR(INT0_vect){ STOP^=1; } // Stop/Resume 처리ISR(INT1_vect){ STOP=0; ms=sec=0; } //리셋//int main(){DDRE=0xFF; DDRG=0x0F;TCCR1B=0x0B; OCR1A=2499; TIMSK=0x10; // 16000000/64/2500=100Hz=10msec, A매치인터럽트EICRA=0xAA; EIFR=0x03; EIMSK=0x03;SREG=0x80;while(1){}}
댓글 0
조회수 6,269등록된 댓글이 없습니다.