Page 427 - 완) I MDP 프로젝트 작품 보고서(전체과 1학년)1.6
P. 427
do{ //최소 한번은 실행하고 종료하는 do_while문
switch(s_f){ //s_f의 값에 따라(카드의 종류에 따라서)
case 0 : for(i=0;i<750;i++){ //750번 반복(750*0.004=3초지연)
PORTA=0xfe;PORTB=fnd[1];delay_ms(1);//1을 출력
PORTA=0xfd;PORTB=fnd[2];delay_ms(1);//2를 출력
PORTA=0xfb;PORTB=fnd[3];delay_ms(1);//3을 출력
PORTA=0xf7;PORTB=fnd[4];delay_ms(1);PORTA=0xff;}
//4를 출력 후 FND 초기화.
break;
case 1 : for(i=0;i<1000;i++){//1000번 반복(1000*0.003=3초)
PORTA=0xfe;PORTB=fnd[1];delay_ms(1);//1을 출력
PORTA=0xfd;PORTB=fnd[2];delay_ms(1);//2를 출력
PORTA=0xfb;PORTB=fnd[3];delay_ms(1);PORTA=0xff;}
//3을 출력 후 FND 초기화.
break;
case 2 : for(i=0;i<1000;i++){ //1000번 반복(1000*0.003=3초)
PORTA=0xfe;PORTB=fnd[1];delay_ms(1);//1을 출력
PORTA=0xfd;PORTB=fnd[2];delay_ms(1);//2를 출력
PORTA=0xf7;PORTB=fnd[4];delay_ms(1);PORTA=0xff;}
//4를 출력 후 FND 초기화
break;}
}while(OPBT==0); //열리는 버튼이 눌려있다면 다시 지연
close(); }} // 지연이 끝난 후 문을 닫음.
void init(void){
PORTC=0x01; //처음에는 모터가 문을 여는 방향으로 동작.
DDRC=0xff; //C포트를 출력으로 사용(모터)
PORTA=0xff; //처음에는 TR드라이브 선택안함
DDRA=0x0f;//A포트의 하위비트를 출력으로 사용(TR드라이브)
PORTB=0xff;//처음에는 FND에 아무 값도 출력하지 않음
DDRB=0xff;//B포트를 출력으로 사용 (FND)
PORTF=0xf0;//처음 스위치의 값을 1로 둠(Normal_high 세팅)
DDRF=0x0f; //F포트의 상위비트를 입력으로 사용(스위치)
EIMSK=0x01; //외부인터럽트 0 사용
EICRA=0x03; //외부인터럽트 0을 상승엣지로 사용 (11)
인천전자마이스터고등학교
- 420 -