로그인 회원가입 
              
상품검색상품검색 검색 
아이디  
비밀번호
보안접속 보안접속
회원가입
  아이디찾기
  비밀번호찾기
상품목록
  로봇
  마이크로프로세서보드
  제어모듈
  소프트웨어
  로봇부품
  무선/네트웍모듈
  전자부품
  개발장비
  모터제품
  카메라
  배터리
  과학상자
  전자도서
  하이테크 서보모터 무선조정기
  아카데미
  air plane
  r/c-car
  무선조종기
  파워,전원
  취미/퍼즐
  타미야
  팀로시
  후다바
  교시오
  자율결제
  전자용품
  전자키트
  가맹점용 교육자재
자유게시판
공지사항
뉴스/이벤트
이용안내 FAQ
상품 사용후기
자유게시판2
상품 Q&A
자료실
갤러리
로봇
추천기획전
전화: 02-875-5508
팩스: 02-875-5517
운영시간
  09:00~17:00
주문 : 상시 24시간
 
현재위치: > 게시판 > 자료실
자료실
자료실입니다.


찾기
제목 초음파센서모듈테스트소스 0  추천하기
작성자 대표 관리자 작성일 2005-12-03 02:27:19 조회수 587
   
   #include <mega103.h>  
#include <delay.h>
#include <lcd.h>
#include <stdio.h>  

//#define FIRST_ADC_INPUT 0
//#define LAST_ADC_INPUT 0
#define ADC_VREF_TYPE 0x00

void c_sensor() ;  
void ir_sensor_check();
void ir_sensor_off();

int flag=1;
int obstacle_flag = 0; 
int temp1,temp2;
//unsigned int adc_data[LAST_ADC_INPUT-FIRST_ADC_INPUT+1];     

// Alphanumeric LCD Module functions
#asm
   .equ __lcd_port=0x1B
#endasm   
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input|ADC_VREF_TYPE;
ADCSR.6=1;
while (ADCSR.4==0);
ADCSR.4=1;
return ADCW;
}

/*
// ADC interrupt service routine
// with auto input scanning
#pragma savereg-
interrupt [ADC_INT] void adc_isr(void)
{
#asm
    push r26
    push r27
    push r30
    push r31
    in   r30,sreg
    push r30
#endasm
register static unsigned char input_index=0;
// Read the ADC conversion result
adc_data[input_index]=ADCW;
// Select next ADC input
if (++input_index>(LAST_ADC_INPUT-FIRST_ADC_INPUT))
   input_index=0;
ADMUX=input_index+FIRST_ADC_INPUT|ADC_VREF_TYPE;
// Start the next ADC conversion
ADCSR.6=1;
#asm
    pop  r30
    out  sreg,r30
    pop  r31
    pop  r30
    pop  r27
    pop  r26
#endasm
}  */
#pragma savereg+


// External Interrupt 4 service routine
interrupt [EXT_INT4] void ext_int4_isr(void)
{
  temp1= TCNT0;
  if(temp1<= 50){      //0x4c(76);2m,  50;30cm     
       obstacle_flag = 4;  // 4:left set 
//       lcd_clear();                     
//    lcd_gotoxy(0,0);
//    lcd_putsf("Left Obstacle");   
//    delay_ms(2000);   
    }
}
                 
 
// External Interrupt 5 service routine
interrupt [EXT_INT5] void ext_int5_isr(void)

    temp2 = TCNT0;
   if(temp2 <= 50) {   
    obstacle_flag = 5;  // 5:"right"  set  
//     lcd_clear();            
//    lcd_gotoxy(0,0);
//    lcd_putsf("Right Obstacle");   
//    delay_ms(2000);   
    }     
}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Reinitialize Timer's 1 value
TCNT0=0x29;
// Place your code here
  //{
   PORTE.2=1;
   PORTE.3=1;
   delay_us(12);
   PORTE.2=0;
   PORTE.3=0;
  // }

}

// Declare your global variables here

unsigned int adc_data1;
unsigned int adc_data2;


void main(void)
{
// Declare your local variables here


// Input/Output Ports initialization
// Port A
PORTA=0x00;   // init value 1:high 0:low
DDRA=0x00;    // direction 1:out 0:in

// Port B
PORTB=0x00;
DDRB=0x00;

// Port D
PORTD=0x00;
DDRD=0x00;

// PORTD=0x00;    //0xff
// DDRD=0x30;   // IR censor 사용시

// Port E
PORTE=0x00;
DDRE=0xff;     //0x0C

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 3.906 kHz
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x07;  //MCK/1024
ASSR =0x00;
TCNT0=0x29;  //init count value
OCR0 =0x00;
//TCCR0=0x07;
//ASSR=0x00;
//TCNT0=0x29;
//OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;



// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
// INT3: Off
// INT4: On
// INT4 Mode: Falling Edge
// INT5: On
// INT5 Mode: Falling Edge
// INT6: Off
// INT7: Off
EIMSK=0x30;
EICR=0x0A;
EIFR=0x30;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
// Analog Comparator Output: Off
ACSR=0x80;

// ADC initialization
// ADC Clock frequency: 125.000 kHz
//ADMUX=FIRST_ADC_INPUT|ADC_VREF_TYPE;
//ADCSR=0xCD;

// LCD module initialization
lcd_init(16);

// Global enable interrupts
#asm("sei")

while (1)
      {
                c_sensor();  
// ir_sensor_check();  
// ir_sensor_off();  
               // delay_ms(50); 
      }
}   

/*
void ir_sensor_off()
{
       ADCSR = 0x4d;         // ADC  OFF 
       PORTD.4 = 0;
       PORTD.5 = 0;   
          if (adc_data[0] > 0x290) {   // 300:20cm 
          lcd_clear();
          lcd_gotoxy(0,0);
          lcd_putsf("No working");
          }
} */

void ir_sensor_check()
{
    char sbuf[20];

     
          PORTD.4 = 1;
    PORTD.5 = 1;   
          delay_ms(2);         
         
          PORTD.4 = 0;
          PORTD.5 = 0;
          delay_us(175);  
                         
    adc_data1 = read_adc(0);
//    adc_data2 = read_adc(1);
         
          lcd_gotoxy(0,1);                                // LCD 위줄 왼쪽으로 이동
    sprintf(sbuf,"ADC0=%u",adc_data1);
          lcd_puts(sbuf);                                  // LCD에 sbuf 문자열 표시
}





/* void ir_sensor()
{
char sbuf[20];     
    PORTD.4 = 1;
          delay_ms(2);
          PORTD.4 = 0;
          delay_us(175);
          lcd_gotoxy(0,0);                                // LCD 위줄 왼쪽으로 이동
          sprintf(sbuf,"ADC0=%u(%03X)",adc_data[0],adc_data[0]);
          lcd_puts(sbuf);                                  // LCD에 sbuf 문자열 표시
}  */


void c_sensor()

     lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("No"); 
if  (obstacle_flag == 4){   
     lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("confirm Left ");
    }   
if   (obstacle_flag == 5){    
     lcd_clear();
    lcd_gotoxy(0,0);
    lcd_putsf("confirm Right");
    }  
obstacle_flag = 0;    

}
댓글달기
이름 비밀번호

0 / 0 byte(한글 0자, 영문/숫자 0자)
★점수주기 : 1 2 3 4 5
* 왼쪽의 문자를 공백없이 입력하세요.(대소문자구분)
첨부파일
비밀번호 * 수정 및 삭제하려면 비밀번호를 입력하세요.
답변
수정
  스팸신고 스팸해제
글쓰기
 
이전글 파워개미소스
다음글 컴파스모듈1
 
 
| 회사소개 | 이용약관 | 개인정보취급방침 | 이용안내
Copyright ⓒ 2010 로보플라자인포 All rights reserved.
전화 : 02-875-5508 FAX : 02-875-5517
Contact robotplaza@manfix.com for more information.
법인명(상호):주식회사 목련 주소:10254 경기도 고양시 일산동구 지영로147번길 81-18 (지영동) 나동
사업자 등록번호 안내 [117-81-90610] / 통신판매업 신고 신고예정
개인정보보호책임자 :박경희(robotplaza@manfix.co.kr) / 대표자(성명):박경희
cafe24