BASIC4MCU | AVR | ADC | ATmega128 코드비젼 ADC 8채널 --> UART 송신 및 수신 전송 포멧
페이지 정보
작성자 master 작성일2018-04-26 10:59 조회4,170회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-04-26 오전 11:59:58// 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=103; UCSR0B=0x18; // 9600 // to 128ADCSRA=0xE7;while(1);for(i=0;i<8;i++){ ADMUX=0x40+i; delay_ms(1); ad_buf=ADCW; multi_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 PORTUCSR0B=0x08; UBRR0L=103; // to PCUCSR1B=0x90; UBRR1L=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
조회수 4,170등록된 댓글이 없습니다.