Page 198 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 198
void main()
{
DDRA = 0xff; //PA는 모터 조정을 위해 사용
DDRB = 0xff; //PB는 적외선 총, 탱크 파괴 여부 확인 LED, 부저를 위해 사용
DDRF = 0xff; //PF는 FND 표시를 위해 사용
DDRG = 0xff; //PG는 모든 인터럽트 동작확인과 서보모터를 위해 사용
EIMSK = 0b00000011; //외부 인터럽트(INT0, INT1)허용
EICRA = 0b00001010; //INT0가 하강 엣지가 입력될 때 실행되는 것으로 설정
// 타이머/카운터 0 인터럽트 주기
// 이론치 (256-238) x 8분주 x 1/16us = 9us, 실측치 약 10us
TIMSK = 0x01; // TOIE0 = '1';
TCCR0 = 0x02; // 일반모드, 프리스케일 = CK/8
TCNT0 = 238; // 타이머/카운터0 레지스터 초기값
UCSR0A = 0x00;
UCSR0B = 0b10011000; //수신 인터럽트 허용, 수송신 기능 인에이블
UCSR0C = 0b00000110; //전송 데이터를 8비트로
UBRR0H = 0;
UBRR0L = 103; //BAUD RATE(보율)을 9600으로 맞춤(BT와 AVR의 통신 속도를 맞춤)
SREG |= 0x80; //모든 인터럽트 허용
PORTF = count; //FND에 점수 출력(with 7447)
UDR0 = BTcount; //블루투스를 이용해 APP으로 전송해줌
while (1)
{
PORTB.2 = 1;
BTrecive(); //BlueTooth 통신 함수
servoMAG(); //서보모터 가동 함수
IRsensor(); //적외선 총 맞은 횟수 확인 함수
MAGsensor(); //자기센서 확인 함수
- 191 -