회원가입 ID/PW 찾기
AA

avr studio 4 에서 빌드를 하는데 자꾸 에러하나가 뜹니다 ㅜ;

 

오류내용은

../uuju87.c:2:20: fatal error: my_def.h: No such file or directory
compilation terminated.
make: *** [uuju87.o] 오류 1
Build failed with 1 errors and 0 warnings...

 

이런식인데요 .. 툴체인을 사용안하고 avr+winavr 조합으로 빌드를 돌려봐도 안되네요 ..

가스센서를 이용해서 반응을 lcd,led,부저로 출력하는 프로그램인데

소스좀 봐주시면 감사하겠습니다 ;;

 

소스내용

 

------------------------------------------------------------------------------------

 

#include<avr/io.h>
#include "my_def.h"


void busy_check(void);
void LCD_init(void);
void msec_delay(u16);
void cmd_write(u08);
void data_write(u08);
void string_out(u08, u08, u08 []);
void LCD_2d1(float number);
//void LCD_4hex(unsigned int number);


u16 i;
u08 temp;


/*void msec_delay(u16 msec)
{
 while(msec--)
 {
  for(u16 i=0;i<4000;i++);     
 };
}*/


void busy_check(void)
{
 
 PORTC &= 0xfe;                //rs = 0
 
 PORTC |= 0x02;                //r/w = 1
 
 PORTC |= 0x04;                //e = 1
 DDRD &=0x7f;                  //input
 do{
  temp = PIND;
  }while(temp & 0x80);
 PORTC &= 0xf8;                //rs,r/w,e = 0
 DDRD |=0x80;                  //output
}

 

void cmd_write(u08 cmd)
{
  busy_check();
  PORTC &= 0xfb;               // rs 0
  PORTC &= 0xfd;               //r/w = 0
  PORTC |= 0x04;               // e = 1
 
  PORTD = cmd&0xf0;            //상위4비트 출력
  PORTC &= 0xfb;
  PORTC |= 0x04;
 
  PORTD = (cmd<<4)&0xf0;      //하위4비트 출력
  PORTC &= 0xfb;              // e = 0
  PORTC |= 0x04;              // e = 1
 
  PORTC |= 0x02;              // r/w = 1
  msec_delay(50);
}

 

void data_write(u08 dat)
{
  busy_check();
  PORTC |= 0x01;
  PORTC &= 0xfd;
  PORTC |= 0x04;
 
  PORTD = dat&0xf0;
  PORTC &= 0xfb;
  PORTC |= 0x04;
 
  PORTD = (dat<<4)&0xf0;
 
  PORTC &= 0xfb;
  PORTC |= 0x02;
  msec_delay(50);
}


void string_out(u08 i, u08 j, u08 str[16])   //문자열 출력 함수
{
 if(i == 0)
  cmd_write(0x80+j);         //address 설정  
 else if(i == 1)
  cmd_write(0xc0+j);         //address 설정
 while(*str != '\0'){
  data_write(*str);
  str++;
  }

 

void LCD_2d1(float number)
{
 unsigned int i, j;
 j=(int)(number*100.+0.5);
 i=j/1000;
 data_write(i+'0');
 data_write('.');
 j=j%1000;
 i=j/100;
 data_write(i+'0');
 j=j%100;
 i=j/10;
 data_write(i+'0');

}

 

void LCD_init(void)
{
  DDRD = 0xf0;                  
  DDRC = 0x0f;        
 
  cmd_write(0x28);     // interface set : 4bit
  msec_delay(50);
  cmd_write(0x28);     // interface set : 4bit
  msec_delay(50);
 
  cmd_write(0x08);     // display on/off control
  msec_delay(50);
 
  cmd_write(0x06);      //LCD ENTRY MODE SET  : shift off
  cmd_write(0x01);      //Entry display Clear, Cursor return to home
  msec_delay(100);
 }


#include <avr/io.h>
#include <avr/interrupt.h>
#include "my_def.h"
#define COUNT_SELECT (65535 - CPU_CLOCK/1000)  // for 1 msec

void init_system_clock(void);

//Atmega8 - one 16 bit timer/counter & two 8 bit timer/counter
u16 msec;
u08 mmsec, csec, dsec, sec, min, hour, day, month, year;
u08 msec_flag, csec_flag, dsec_flag, sec_flag, min_flag; //flag

void init_system_clock(void)
{
 TCCR1A = 0x00; // PWM Disable
 TCCR1B = 0x01; // no prescaling
// TCCR1B = 0x02; // 1/8 orescaling(14,745,600/8=1, 843, 200hz)
 TCNT1 = COUNT_SELECT;
 TIMSK = 0x04; // enable overflow interrupt
 
 msec = mmsec = csec = dsec = sec = min = 0;
 
 msec_flag = csec_flag = dsec_flag = sec_flag = min_flag = 0;

SIGNAL(SIG_OVERFLOW1) //OVERFLOW INTERRUPT SERVICE
{
 msec++;
 msec_flag = 1;
 if(msec == 1000) msec = 0;
 mmsec++;
 
 TCNT1 = COUNT_SELECT;
 
 if(mmsec == 10) {
  csec++;
  csec_flag = 1;
  mmsec = 0;
  
  if(csec == 10) {
   dsec++;
   dsec_flag = 1;
   csec = 0;
   
   if(dsec == 10) {
    sec++;
    sec_flag = 1;
    dsec = 0;
    msec = 0;
    
    if(sec == 60) {
     min++;
     min_flag = 1;
     sec = 0;
     
     if(min ==60) {
      hour++;
      min = 0;
      
     
     };
    };
   };
  };
 };
}

#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include "my_def.h"

void init_adc(u08);

extern u08 dsec_flag;

u16 adc;

void init_adc(u08 adc_ch)
{
 ADMUX = adc_ch;          //기준전압, ADC선택
 ADCSRA = 0xef;          //A/D 컨버터 동작허용, 시작, 프리러닝모드,인터럽트 허용
}

SIGNAL(SIG_ADC)              //인터럽트 서비스 루틴(A/D컨버전 완료시 인터럽트 발생)
{
 adc = ADCW;              //변환값 ADC변수에 저장
}

#include <avr/io.h>
#include <avr/interrupt.h>
#include "my_def.h"

int main(void);
void init(void);
void msec_delay(u16);
void do_gas(void);


#define BUTTON1 0x01                      //버턴입력포트 설정
#define BUTTON1_READ PIND & BUTTON1

 


extern void init_adc(u08);
extern void init_system_clock(void);

//// LCD /////
extern void busy_check(void);
extern void LCD_init(void);
extern void cmd_write(u08);
extern void data_write(u08);
extern void string_out(u08, u08, u08 []);
extern void LCD_2d1(float);
//extern void LCD_4hex(u08);


//////Timer/////////////
extern u16 msec;
extern u08 mmsec, csec, dsec, sec, min, hour, day, month, year;
extern u08 msec_flag, csec_flag, dsec_flag, sec_flag, min_flag; // flag

 

u08 cpu_id;
u16 adc;
u16 i;
u08 temp;


int main(void)
{  
    init();
    string_out(0,1,"Alchol Test");
 string_out(1,1,"Alram OFF");
    msec_delay(1000);
 
 cmd_write(0x0c); //display on
 
   while(1)
 {
  do_gas();
 }
}

void do_gas(void)
{
 u16 alchol;
 
 float fadc=0;
 float d_alchol=0;
 float sum=0;
  
   if(!(BUTTON1_READ))
 {
 
 while(1)
  
  
  { 
  
  if(sec==3)
   
   {
    PORTB= 0x10;
    msec_delay(2000);
    PORTB = 0x00;
    msec_delay(2000);
    
    alchol = adc;
    fadc = alchol;
    d_alchol = (fadc);   
    
    cmd_write(0x8c);           //LCD Address 지정

    sum = (fadc/1000);   
    LCD_2d1(sum);             //ADC값 LCD 표시

    msec_delay(100);
    
    string_out(0,1,"ready to       ");
    string_out(1,1,"Testing....      ");
    msec_delay(50000);  
    //msec_delay(50000);
    //msec_delay(50000);
    
    
    //msec_delay(50000);
    
   
    if( alchol >= 200)
    {
      PORTB =0x04;        //RED LED ON
      //PORTC |= 0x08;      // BUZZ ON
        string_out(0,1,"Detecting:");
     string_out(1,1,"Non Passing!");
     msec_delay(1000) ;
     
     sec=0;
     
     PORTB= 0x14;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     PORTB= 0x14;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(5000);
     
     
           
    }
    else if(alchol >= 150)
    {
     PORTB=0x02;   // YELLOW LED ON
     msec_delay(1000);
     string_out(0,1,"Detecting:");
     string_out(1,1,"Caution!!   ");
     
        sec_flag=0;
     
     PORTB= 0x12;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     PORTB = 0x12;
     msec_delay(2000);
     PORTB = 0x00;
     msec_delay(2000);
     
    
    }
    else
    {
           //Green LED ON
     string_out(0,1,"Detecting:");
     string_out(1,1,"you can go home");
     msec_delay(1000);  
     
     sec_flag=0;
     
PORTB =0x01;
     msec_delay(2000);
    }
   }
        }
   }
}

void msec_delay(u16 msec)
{
    while(msec--) {
  for(u16 i=0;i<10000;i++);
 };
}

void init(void)
{

 DDRC = 0x0f;                        // set Port_C to Output
 DDRD |= 0xf0;                        // set Port_D to Output
 PORTD &= 0x01;
 
 DDRF = 0x00;
 
 DDRB = 0x1f;                        // set Port_B to Output
 
 msec_delay(10);   // dummy delay for stable
 
 
 init_system_clock();
 LCD_init();
 
 init_adc(5);
 msec_delay(1000);
 
 sei();
}

댓글 1
  • No Profile

    my_def.h  를 못찾고 있네요

     

      AVRstudio 좌측에 보면 header file 부분 우 클릭후  add 후 my_def.h 파일을 찾아서 넣어주면 될듯하네요

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
848 마이크로프로세서 질문 있어요!2 띵띵꽁꽁 348 2011.12.18
847 마이크로프로세서 HOT프로테우스 7 새로운 부품(심볼)만드는 방법에 대한 질문입니다. 본능적으로 1509 2011.12.15
846 마이크로프로세서 HOTiar 초보자가 보고 따라할수 있는 메뉴얼 부탁 드립니다.1 멜쉬 756 2011.12.13
845 마이크로프로세서 HOTlabview로 제어하기1 본드3 1064 2011.12.13
844 마이크로프로세서 HOT적외선 센서를 이용한 모터 구동 질문드립니다.!!1 밥볍 1078 2011.12.08
843 마이크로프로세서 HOT초짜가 질문 하나 던져봅니다.1 띵띵꽁꽁 628 2011.12.08
842 마이크로프로세서 HOT적외선 센서를 이용한 모터구동 질문입니다.!! 고수님들 부탁드려요~ ㅜ 밥볍 855 2011.12.07
841 마이크로프로세서 HOTATtiny 개발킷 관련 나기 695 2011.12.07
840 마이크로프로세서 HOTkeil 어셈블리어로 시계제작중인데 질문좀!! 행복하길 624 2011.12.05
마이크로프로세서 HOT프로그램 빌드시에 에러하나가 자꾸 뜹니다 ㅜ도와주세요1 유동막걸리 872 2011.12.03
838 마이크로프로세서 HOT8051을 이용한 7segment시계1 skfajk 748 2011.12.02
837 마이크로프로세서 HOT잔상(pov)회로를 만들계획인데요1 림메 630 2011.12.01
836 마이크로프로세서 HOT안녕하세요 8051 어셈블리어 디지털 시계 소스좀 짜주세요ㅠ 조경민 1666 2011.11.30
835 마이크로프로세서 HOT오토캐드에서 작성한 회로도를... 땜쟁이야 1571 2011.11.22
834 마이크로프로세서 HOTinterrupt 사용법에 대해서 궁금한 점 있습니다. 해오 890 2011.11.21
833 마이크로프로세서 HOT1초마다 교대로 문자 출력하는 소스인데 안되서요 ㅠ1 허브명수 1174 2011.11.21
832 마이크로프로세서 HOT안녕하세요. 픽 두번쨰로 접한 초보입니다. 여쭈고 싶은게 있어서요 거덜러미 1033 2011.11.20
831 마이크로프로세서 HOT데이터 입력에 관한 질문입니다. 드미트리 894 2011.11.18
830 마이크로프로세서 HOTpid제어를 통해서 도립진자를 만드려는데 좀 힘드네요ㅜ 도와주세요ㅜ 매실한잔 1486 2011.11.14
829 마이크로프로세서 HOTled 제어하는데... 실마리온 1010 2011.11.14
Prev 1 ... 3 4 5 6 7 8 9 10 11 12 ... 50 Next
  • 일은 인류를 사로잡는 모든 질환과 비참을 치료해 주는 주요한 치료제이다.
    - 칼라일
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.