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  -
   422   423   424   425   426   427   428   429   430   431   432