<div>오늘 질문만 많이 올려서 죄송해요..</div> <div> </div> <div>구동하는데 2가지가 안되므로 메인문을 2개를 사용하고싶은데... 하나의 프로젝트에 2개지 c파일을 사용하여 동작하는 형태입니다... </div> <div> </div> <div>어떤 방식으로 하는건지 알려주세요 ㅜㅜ</div> <div> </div> <div>- 처음 메인분 - </div> <div>#include <avr/io.h> //16MHz<br>#define F_CPU 16000000UL // 16 MHz<br>#include <util/delay.h><br>#include"ATmega128_v20m.h"<br>#define DEBOUNCING_DELAY 20<br><br>void RC_Motor(int angle){ // angle : -90도 ~ +90도<br>int i;<br>if(angle<-90)angle=-90;<br>if(angle> 90)angle= 90;<br>i=(angle)*18 + 3000;<br>OCR3A=i; //PB5<br>OCR3B=i; //PB6<br>}<br>int angle=0;<br><br><br>int main(void){<br><br>DDRB=0x00;<br>PORTB=0x00;<br>PORTE = 0x00;<br>//RC서보모터<br>DDRE=0x18; // PB5,6 out<br>TCCR3A=0xAA; // FAST PWM<br>TCCR3B=0x1A; // 8분주=0.5usec<br>OCR3A=3000; // 1500usec=0도<br>OCR3B=3000; // 1500usec=0도<br>ICR3=47999; // 0.5usec*48000=24000usec=41.67Hz<br><br>while(1){<br><br>/* RC_Motor(-90); _delay_ms(6000);<br>RC_Motor( 0); _delay_ms(6000);<br>RC_Motor( 90); _delay_ms(6000);<br>RC_Motor( 0); _delay_ms(6000); */<br><br>if((PINB&0x01)==0){ <br>if(angle>-90){<br>angle--;<br><br>RC_Motor(angle); ;<br>}<br>}<br>if((PINB&0x02)==0){ <br>if(angle< 0){<br>angle ++;<br><br>RC_Motor(angle); ;<br>}<br>}<br><br>if((PINB&0x04)==0){ <br>if(angle > 0){<br>angle --;<br><br>RC_Motor(angle); ;<br>}<br>}<br>if((PINB&0x08)==0){ <br>if(angle<90){<br>angle++;<br><br>RC_Motor(angle); ;<br>}<br>}<br>_delay_ms(10);<br><br>}<br>} </div> <div> </div> <div> </div> <div> </div> <div>-- 2번째 메인문 -- </div> <div> </div> <div>#include<avr/io.h><br><br>#include<util/delay.h><br><br>#include"ATmega128_v20m.h"<br><br>#define DEBOUNCING_DELAY 20<br><br>#define F_CPU 16000000UL // 16 MHz<br><br>void RC_Motor(int angle){ // angle : -90도 ~ +90도<br>int i;<br>if(angle<-90)angle=-90;<br>if(angle> 90)angle= 90;<br>i=(angle)*18 + 3000;<br>OCR3A=i; //PB5<br>OCR3B=i; //PB6<br>}<br><br>int angle=0;<br><br><br>void msec_delay(int n);<br><br>char pattern1[3] = {1,2,3};<br>char pattern2[2] = {2,1};<br>char pattern3[3] = {3,2,1};<br>char pattern4[2] = {1,2};<br>char pattern5[2] = {3,2};<br>char pattern6[3] = {1,2,3};<br>char pattern7[2] = {2,3};<br>char pattern8[2] = {0x11, 0x10};<br><br>int x,z;<br>int floor =1;<br>int y=8;<br>int main()<br>{<br>PORTB = 0x00;<br>DDRB=0xf0;<br>PORTE = 0x00;<br>//RC서보모터<br>DDRE=0x18; // PE 3,4 out 서보모터 연결 핀<br>TCCR3A=0xAA; // FAST PWM<br>TCCR3B=0x1A; // 8분주=0.5usec<br>OCR3A=3000; // 1500usec=0도<br>OCR3B=3000; // 1500usec=0도<br>ICR3=47999; // 0.5usec*48000=24000usec=41.67Hz<br><br>PORTD = 0xff;<br>DDRD = 0xf0;<br><br>MCU_initialize();<br>Delay_ms(50);<br>LCD_initialize();<br><br><br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br><br>while(1)<br>{<br><br>if((PINB&0x01)==0){ <br>if(angle>-90){<br>angle--;<br><br>RC_Motor(angle); ;<br>}<br>}<br>if((PINB&0x02)==0){ <br>if(angle< 0){<br>angle ++;<br><br>RC_Motor(angle); ;<br>}<br>}<br><br>if((PINB&0x04)==0){ <br>if(angle > 0){<br>angle --;<br><br>RC_Motor(angle); ;<br>}<br>}<br>if((PINB&0x08)==0){ <br>if(angle<80){<br>angle++;<br><br>RC_Motor(angle); ;<br>}<br>}<br>_delay_ms(10);<br><br><br>if((PIND&0x01)==0)<br>{<br>if(floor==1)<br>{<br>PORTB=0x10;<br>}<br><br>else if(floor==2) //2층에서 1층으로 갈 때<br>{<br>x=0;<br>LCD_string(0xc3, "1");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1)<br>{<br>LCD_string(0x88, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern2[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x85, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern2[x]);<br>if(x==2)break;<br><br>} //<br><br>LCD_initialize();<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 1;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br><br>else if (floor==3) //3층에서 1층으로 갈 때<br>{<br>x=0;<br>LCD_string(0xc3, "1");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1){<br>Delay_ms(500);<br>LCD_string(0x88, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern3[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x86, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern3[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x84, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern3[x]);<br>Delay_ms(1000);<br><br>if(x==2)break; //<br><br>}<br>LCD_initialize();<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 1;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br>}<br><br>else if((PIND&0x02)==0)<br>{<br>if(floor==2)<br>{<br>PORTB=0x20;<br>}<br><br>else if(floor==1) //1층에서 2층으로 갈 때<br>{<br>x=0;<br>LCD_string(0xc5, "2");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1)<br>{<br>LCD_string(0x88, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern4[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x8b, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern4[x]);<br>if(x==2)break;<br><br>} <br>LCD_initialize(); //<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 2;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br><br>else if (floor==3) //3층에서 2층으로 갈 때<br>{ <br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br><br>x=0;<br>LCD_string(0xc5, "2");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1)<br>{<br>LCD_string(0x88, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern5[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x85, "<");<br>LCD_command(0xc7);<br>LCD_2d(pattern5[x]);<br>if(x==2)break;<br><br>} // <br>LCD_initialize();<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 2;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br><br>}<br><br>else if((PIND&0x04)==0)<br>{<br>if(floor==3)<br>{<br>PORTB=0x40;<br>}<br><br>else if(floor==1) //1층에서 3층으로 갈 때<br>{<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br><br>x=0;<br>LCD_string(0xc8, "3");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1){<br>Delay_ms(500);<br>LCD_string(0x88, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern1[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x8a, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern1[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x8c, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern1[x]);<br>Delay_ms(1000);<br><br>if(x==2)break; //<br><br>}<br>LCD_initialize();<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 3;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br><br>else if (floor==2) //2층에서 3층으로 갈 때<br>{ <br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br><br>x=0;<br>LCD_string(0xc8, "3");<br>while(PIND&0x08);<br>LCD_string(0xc3, "CLOSE DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br><br>while(1)<br>{<br>LCD_string(0x88, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern7[x]);<br>Delay_ms(1000);<br>x=x+1;<br>LCD_string(0x8b, ">");<br>LCD_command(0xc7);<br>LCD_2d(pattern7[x]);<br>if(x==2)break;<br><br>} // <br>LCD_initialize();<br>LCD_string(0xc3, "OPEN DOOR");<br>Delay_ms(1000);<br>LCD_initialize();<br>floor = 3;<br>LCD_command(0x83);<br>LCD_2d(floor);<br>LCD_string(0x85, "Floor");<br>}<br><br>}<br><br><br>}<br>} </div> <div> </div> <div>이렇게 2가지 동작을 하나의 프로젝트에서 구현하고 싶은데 섞어 넣으면 컴파일 오류는 없지만 동작을 하나만 해요..ㅜ.ㅠ </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.