DDRB = 0xFF; // 포트 B 출력핀으로 지정 DDRD = 0x00; // 포트 D 입력핀으로 지정 DDRF = 0X00; // 포트 F 입력핀으로 지정
PORTB = 0x00; // 포트 B 초기화 PORTD = 0X00; // 포트 D 초기화 PORTF = 0X00; // 포트 F 초기화
_delay_ms(100);
while(1) { // OPEN 스위가 눌리거나 적외선 센서에 물체가 감지되면 ( 포트D와 F에 값이 들어오면) if((PIND & 0X04)==4||(PINF & 0X02)==2) { while((PIND & 0X08)==0) { // OPEN 스위치가 눌린후 STOP 스위치가 눌릴때 까지 스텝모터 회전수 카운팅이 됨 // _delay_ms의 내부함수를 통해 I값을 상승시키고 그것을 받아 r값을 세고 있는다. // D포트에 신호가 들어와서 (PIND & 0X08)==8이 되면 이 while구문은 실행이 되지 // 않고 그동안 r값이 상승하엿기 때문에 아래 while구문이 실행되고 된다. rotation(); r++; } // 문이 열린후 대기 시간 _delay_ms(2000); // 카운팅한 r값이 0이 될 때까지 스텝모터 회전수를 역방향으로 회전하여 문을 닫음 while(r>0 ) { r--; rerotation(); } } } }
DDRB = 0xFF; // 포트 B 출력핀으로 지정 DDRD = 0x00; // 포트 D 입력핀으로 지정 DDRF = 0X00; // 포트 F 입력핀으로 지정
PORTB = 0x00; // 포트 B 초기화 PORTD = 0X00; // 포트 D 초기화 PORTF = 0X00; // 포트 F 초기화
_delay_ms(100);
while(1) { // OPEN 스위가 눌리거나 적외선 센서에 물체가 감지되면 ( 포트D와 F에 값이 들어오면) if((SENSER) || (OPEN) { while(STOP) { // OPEN 스위치가 눌린후 STOP 스위치가 눌릴때 까지 스텝모터 회전수 카운팅이 됨 // _delay_ms의 내부함수를 통해 I값을 상승시키고 그것을 받아 r값을 세고 있는다. // D포트에 신호가 들어와서 (PIND & 0X08)==8이 되면 이 while구문은 실행이 되지 // 않고 그동안 r값이 상승하엿기 때문에 아래 while구문이 실행되고 된다. rotation(); r++; } // 문이 열린후 대기 시간 2초 _delay_ms(2000); // 카운팅한 r값이 0이 될 때까지 스텝모터 회전수를 역방향으로 회전하여 문을 닫음 while(r>0 ) { r--; rerotation(); } } } }
위코드를 아래 코드로 수정해봤는데 for문을 제대로 옮겼는지 define으로 정의하는게 제대로 한건지좀 봐주실수 있으세요 ?감사합니다.