BASIC4MCU | ♧ AVR | ◆mega128x | ATmega128 코드비젼 ADC 1채널 --> UART 송신 및 수신 전송 포멧
페이지 정보
작성자 master 작성일2018-03-14 18:34 조회2,307회 댓글0건본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-03-14 오후 6:35:43// by Ok-Hyun Park//===============ADC 1채널 송신===============#include <mega128.h>#include <delay.h>//void TX0_CH(char ch){ while(!(UCSR0A&0x20)); UDR0=ch; } // 송신 1바이트//void multi_tx(unsigned int adc){unsigned int i;i=0x8000|((adc<<1)&0x0700)|(adc&0x7F);TX0_CH(i>>8); // 상위바이트 먼저 전송TX0_CH(i&0xFF); // 하위바이트 나중 전송}//void main(){int i,ad_val;UBRR0L=103; UCSR0B=0x18; // 9600ADCSRA=0xE7;while(1){ADMUX=0x40; delay_ms(1); ad_val=ADCW; // ADMUX=0;<==PF0,ADC0multi_tx(ad_val);}}//===============ADC 1채널 수신===============#include <mega128.h>#include <delay.h>#include <stdio.h>//int adc_value=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;c=UDR1;if(c&0x80){ adc_value=(adc_value&0x007F)|((int)(c&7)<<7); } // 비트7=1이면, 상위바이트else { adc_value=(adc_value&0x0380)|c; flag=1; } // 비트7=0이면, 하위바이트}//void main(void){char str[30];DDRA=0xFF; // LED PORTUCSR0B=0x08; UBRR0L=103; // PCUCSR1B=0x90; UBRR1L=103; // 128#asm("sei")while(1){if(flag){ flag=0; sprintf(str,"%03d\r\n",adc_value); TX0_STR(str); }}}
128(ADC 1채널) ---> 128 ---> PC 전송 예제입니다.
댓글 0
조회수 2,307등록된 댓글이 없습니다.