회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
992 마이크로프로세서 HOT컴퓨터 특수문자는 어떻게 읽나요?14 아크마 4178 2012.01.29
991 마이크로프로세서 마이크로 마우스를 만들려고 하는데요1 후드티 345 2012.01.25
990 마이크로프로세서 HOTlcd시계 커는 소스입니다.. 해석좀 부탁 드려요 ~1 멜쉬 460 2012.01.17
989 마이크로프로세서 완전 초보에 문의 내용입니다.1 마목 300 2012.01.07
988 마이크로프로세서 HOTAVR과 ARM이 다른건 알지만..1 엘케인 534 2012.01.06
987 마이크로프로세서 HOTstm32 질문 김성진 1401 2011.12.27
986 마이크로프로세서 질문 있어요!2 띵띵꽁꽁 343 2011.12.18
985 마이크로프로세서 HOT프로테우스 7 새로운 부품(심볼)만드는 방법에 대한 질문입니다. 본능적으로 1494 2011.12.15
984 펌웨어 & 코딩언어 HOT-(C언어(함수호출)로 만든 크리스*마스*트리*프로그램)-1 리종순2 1460 2011.12.14
983 마이크로프로세서 HOTiar 초보자가 보고 따라할수 있는 메뉴얼 부탁 드립니다.1 멜쉬 745 2011.12.13
982 마이크로프로세서 HOTlabview로 제어하기1 본드3 1053 2011.12.13
981 마이크로프로세서 HOT적외선 센서를 이용한 모터 구동 질문드립니다.!!1 밥볍 1075 2011.12.08
980 마이크로프로세서 HOT초짜가 질문 하나 던져봅니다.1 띵띵꽁꽁 624 2011.12.08
979 마이크로프로세서 HOT적외선 센서를 이용한 모터구동 질문입니다.!! 고수님들 부탁드려요~ ㅜ 밥볍 848 2011.12.07
978 마이크로프로세서 HOTATtiny 개발킷 관련 나기 691 2011.12.07
977 마이크로프로세서 HOTkeil 어셈블리어로 시계제작중인데 질문좀!! 행복하길 615 2011.12.05
마이크로프로세서 HOT프로그램 빌드시에 에러하나가 자꾸 뜹니다 ㅜ도와주세요1 유동막걸리 867 2011.12.03
975 마이크로프로세서 HOT8051을 이용한 7segment시계1 skfajk 741 2011.12.02
974 마이크로프로세서 HOT잔상(pov)회로를 만들계획인데요1 림메 616 2011.12.01
973 마이크로프로세서 HOT안녕하세요 8051 어셈블리어 디지털 시계 소스좀 짜주세요ㅠ 조경민 1659 2011.11.30
Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 58 Next
  • 자기가 해야 할 일을 소년 시절에 찾아낸 사람은 행복하다.
    - 헤딘
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.