♧ AVR > ATmega128 코드비젼 ADC 8채널 --> UART 송신 및 수신 전송 포멧

인기검색어 > 아두이노 센서 ATMEGA128

최신글 질문게시판 동영상강좌 가입하기

▼ BASIC4MCU 후원업체 신제품 정보 ▼

▲ BASIC4MCU 후원업체 신제품 정보 ▲

BASIC4MCU > ♧ AVR

◆mega128x | ATmega128 코드비젼 ADC 8채널 --> UART 송신 및 수신 전송 포멧

페이지 정보

작성자 master 작성일18-03-14 18:38 조회1,945회 댓글0건

본문

 

// DateTime : 2018-03-14 오후 6:39:21
// by Ok-Hyun Park
//===============ADC 8채널 송신===============
#include <mega128.h
#include <delay.h>
//
void TX0_CH(char ch){ while(!(UCSR0A&0x20)); UDR0=ch; } // 송신 1바이트
//
void multi_tx(int ch,unsigned int adc){
  unsigned int i;
  i=0x8000|(ch<<12)|((adc<<1)&0x0700)|(adc&0x7F);
  TX0_CH(i>>8);
  TX0_CH(i&0xFF);
}
//
void main(){
  int i,ad_buf;
  UBRR0L=103UCSR0B=0x18// 9600 // to 128
  ADCSRA=0xE7;
  while(1);
    for(i=0;i<8;i++){ ADMUX=0x40+idelay_ms(1); ad_buf=ADCWmulti_tx(i,ad_buf); }
    delay_ms(1000);
  }
}
//===============ADC 8채널 수신===============
#include <mega128.h>
#include <delay.h>
#include <stdio.h>
//
int tp,adc_value[8]=0;
//char RX0_char(void){ while(!(UCSR0A&0x80)); return UDR0; }
void TX0_char(char c){ while(!(UCSR0A&0x20)); UDR0=c; }
void TX0_STR(char *s){ while(*s)TX0_char(*s++); }
//
interrupt[USART1_RXC]void usart1_rx_isr(void){
  char c,ch;
  c=UDR1;
  if(c&0x80){ // 비트7=1이면, 상위바이트
    tp=(tp&0x007F)|((int)(c&0x7F)<<7);
  }
  else// 비트7=0이면, 하위바이트 
    tp=(tp&0x0380)|c;
    ch=tp>>12;             // 채널
    adc_value[ch]=tp&0x3F// 배열에 저장
    if(ch==7)flag=1;
  }
}
//
void main(void){
  char i,str[30];
  DDRA=0xFF;   // LED PORT
  UCSR0B=0x08UBRR0L=103// to PC
  UCSR1B=0x90UBRR1L=103// from 128
  #asm("sei")
  while(1){
    if(flag){ flag=0;
      for(i=0;i<8;i++){ sprintf(str,"%03d,",adc_value[i]); TX0_STR(str); } TX0_STR("%d\r\n");
    }
  }
}
//
128(ADC 8채널) ---> 128 ---> PC 전송 예제입니다.

댓글 : 0

조회수 : 1,945

등록된 댓글이 없습니다.

게시물 검색

♧ AVR 목록

게시물 검색


Privacy Policy
MCU BASIC ⓒ 2017
PC버전