메뉴 바로가기
서브메뉴 바로가기
본문 바로가기
답변 감사드립니다.
그런데 제가 지금 쓰는 소스는 단순한 소스라서 codevision에서 avrstudio로 바꾼다고 해도 바꿀만한곳이 없어보이는데요.. 혹시 이 소스에서 변경해야 할 부분이 있다면 지적해 주시면 감사합니다.
#include <mega128.h>
void _delay_ms(unsigned int m){ unsigned int i,j; for(i=0;i<m;i++) for(j=0;j<2500;j++); /* 스텝모터의 펄스 크기값 */ }void rotation(){ unsigned int j=1; PORTB = 0x60; _delay_ms(j); PORTB = 0x20; _delay_ms(j); PORTB = 0x30; _delay_ms(j); PORTB = 0x10; _delay_ms(j); PORTB = 0x90; _delay_ms(j); PORTB = 0x80; _delay_ms(j); PORTB = 0xC0; _delay_ms(j); PORTB = 0x40; _delay_ms(j); /* 스텝모터 정방향으로 회전 하기 위한 위상값 */ }void rerotation(){ unsigned int j=1; PORTB = 0x40; _delay_ms(j); PORTB = 0xC0; _delay_ms(j); PORTB = 0x80; _delay_ms(j); PORTB = 0x90; _delay_ms(j); PORTB = 0x10; _delay_ms(j); PORTB = 0x30; _delay_ms(j); PORTB = 0x20; _delay_ms(j); PORTB = 0x60; _delay_ms(j); /* 스텝모터 역방향으로 회전 하기 위한 위상값 */}
void main(void){ unsigned int r=0; DDRB = 0xFF; DDRD = 0x00; DDRF = 0X00; PORTB = 0x00; PORTD = 0X00; PORTF = 0X00;
_delay_ms(100); while(1) {
if((PIND & 0X04)==4||(PINF & 0X02)==2) /* OPEN 스위가 눌리거나 적외선 센서에 물체가 감지되면 */ { while((PIND & 0X08)==0) { rotation(); r++; /* OPEN 스위치가 눌린후 STOP 스위치가 눌릴때 까지 스텝모터 회전수 카운팅 */ } _delay_ms(1000); /* 문이 열린후 대기 시간 */ while(r>0 ) { r--; rerotation(); /* 카운팅한 스텝모터 회전수를 역방향으로 회전하여 문을 닫음 */ } } }}
여기에 파일을 끌어 놓거나 왼쪽의 버튼을 클릭하세요.
파일 용량 제한 : 0MB (허용 확장자 : *.*)
업로드 중... (0%)
답변 감사드립니다.
그런데 제가 지금 쓰는 소스는 단순한 소스라서 codevision에서 avrstudio로 바꾼다고 해도 바꿀만한곳이 없어보이는데요.. 혹시 이 소스에서 변경해야 할 부분이 있다면 지적해 주시면 감사합니다.
#include <mega128.h>
void _delay_ms(unsigned int m)
{
unsigned int i,j;
for(i=0;i<m;i++)
for(j=0;j<2500;j++); /* 스텝모터의 펄스 크기값 */
}
void rotation()
{ unsigned int j=1;
PORTB = 0x60;
_delay_ms(j);
PORTB = 0x20;
_delay_ms(j);
PORTB = 0x30;
_delay_ms(j);
PORTB = 0x10;
_delay_ms(j);
PORTB = 0x90;
_delay_ms(j);
PORTB = 0x80;
_delay_ms(j);
PORTB = 0xC0;
_delay_ms(j);
PORTB = 0x40;
_delay_ms(j); /* 스텝모터 정방향으로 회전 하기 위한 위상값 */
}
void rerotation()
{ unsigned int j=1;
PORTB = 0x40;
_delay_ms(j);
PORTB = 0xC0;
_delay_ms(j);
PORTB = 0x80;
_delay_ms(j);
PORTB = 0x90;
_delay_ms(j);
PORTB = 0x10;
_delay_ms(j);
PORTB = 0x30;
_delay_ms(j);
PORTB = 0x20;
_delay_ms(j);
PORTB = 0x60;
_delay_ms(j); /* 스텝모터 역방향으로 회전 하기 위한 위상값 */
}
void main(void)
{
unsigned int r=0;
DDRB = 0xFF;
DDRD = 0x00;
DDRF = 0X00;
PORTB = 0x00;
PORTD = 0X00;
PORTF = 0X00;
_delay_ms(100);
while(1)
{
if((PIND & 0X04)==4||(PINF & 0X02)==2)
/* OPEN 스위가 눌리거나 적외선 센서에 물체가 감지되면 */
{
while((PIND & 0X08)==0)
{
rotation();
r++;
/* OPEN 스위치가 눌린후 STOP 스위치가 눌릴때 까지 스텝모터 회전수 카운팅 */
}
_delay_ms(1000); /* 문이 열린후 대기 시간 */
while(r>0 )
{
r--;
rerotation();
/* 카운팅한 스텝모터 회전수를 역방향으로 회전하여 문을 닫음 */
}
}
}
}