Page 428 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 428
정보통신기기 프로젝트
SREG|=0x80; //인터럽트 허용
UCSR0A=0x00; //NFC 시리얼통신에 필요한 설정
UCSR0B=0x10; //NFC 시리얼통신에 필요한 설정
UCSR0C=0x06; //NFC 시리얼통신에 필요한 설정
UBRR0H=0x00; //NFC 시리얼통신에 필요한 설정
UBRR0L=103; //NFC 시리얼통신에 필요한 설정
TIMSK=0x01; //오버플로우 인터럽트 사용
TCCR0=0x07; //노말모드, 1024분주
TCNT0=0; //TCNT값이 0에서 시작함
}
void open(void){ //문을 여는 함수
one=1; //one 변수 1로 설정
PORTF=0xff; //스위치값 1으로 초기화.
timer=1; //타이머 온.(시간 잼)
ovfmode=0;//여는 동작중이라고 설정
PORTC=0x01;//모터 여는 방향으로 돌게 함.
}
void close(void){//문을 닫는 함수
ovfmode=1; //닫는 동작이라고 설정.
PORTC=0xfe;//모터 닫는 방향으로 돌게 함
PORTF=0xff;//스위치값 1으로 초기화
}
interrupt [TIM0_OVF] void timer0_OVF (void){ //T/C 오버플로우 발생시
TCNT0=0; //TCNT값 초기화
if(ovfmode==0){ //만약 ovfmode가 0인 경우(열리는 경우나 정지인 경우)
if(timer==1)check++;}//타이머가 켜져있다면 (열리는 경우) 체크1증가
else if(ovfmode==1){ //만약 ovfmode가 1인 경우(닫히는 경우)
if(timer==1){//타이머가 켜져있다면(완전히 닫히지 않은 경우)
kcehc++;//케흐 1증가
if(kcehc==check){//체크와 케흐가 같다면 (열린시간만큼 닫힌 경우)
fnddis=0;//fnd표시 변수 초기화
ovfmode=0;//ovfmode 초기화 (멈춘상태)
s_f=100;//s_f 초기화(나올 수 없는 값)
PORTC=0x00;//c포트 초기화(동작 x)
timer=0;//타이머 정지
PORTF=0xf0;//스위치 초기화
check=0;//체크 변수 초기화
kcehc=0;//케흐 변수 초기화
PORTD=0x00;//D포트 초기화
정보통신기기과
- 421 -