Page 203 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 203
void servoMAG()
{
if (flagServo == 1)
{
//unsigned char i = 0;
DDRC = 0xFF; // PC 포트 출력
//tim0_cnt = 0; // 타이머/카운터0 오버플로우 횟수 리셋
//mot_pos = 0; // 모터 위치 0도
//change = 0; // 각도 변화 주기 리셋
// 타이머/카운터 0 인터럽트 주기
// 이론치 (256-238) x 8분주 x 1/16us = 9us, 실측치 약 10us
TIMSK = 0x01; // TOIE0 = '1';
TCCR0 = 0x02; // 일반모드, 프리스케일 = CK/8
TCNT0 = 238; // 타이머/카운터0 레지스터 초기값
SREG |= 0x80; // 전역 인터럽트 인에이블 비트 I 셋.
PORTC = 0x00; // 모터 High 출력
}
}
interrupt [EXT_INT0] void external_int0(void) //적외선 총에 맞았을 시 인터럽트 서비스 루틴
{
PORTG = ~PORTG;
count--; //count감소
BTcount--; //점수판 어플용 BTcount 감소
PORTF = count; //FND출력(with 7447)
UDR0 = BTcount; //점수판 어플에 BTcount 전송
delay_ms(1000); //1초 동안은 총의 공격을 받지 않도록 설정
EIFR = 0xff; //인터럽트의 플래그를 모두 0으로 초기화
}
- 196 -