BASIC4MCU | AVR | ADC | ADC [8채널] 64번 평균화 작업
페이지 정보
작성자 키트 작성일2017-08-29 10:13 조회3,029회 댓글0건본문
#include <mega128.h>//void main(void){unsigned int i,ch,SUM,AVG[8];DDRA=0xFF;while(1){for(ch=0;ch<8;ch++){ADMUX=0x40|ch; SUM=0;for(i=0;i<64;i++){ ADCSRA=0xD7; while(!(ADCSRA&10)); SUM+=ADCW; }AVG[ch]=SUM>>6;}if(AVG[0]>=512)PORTA|=0x01; else PORTA&=~0x01; // ch0 2.5V 이상이면 ONif(AVG[1]>=512)PORTA|=0x02; else PORTA&=~0x02; // ch1 2.5V 이상이면 ONif(AVG[2]>=512)PORTA|=0x04; else PORTA&=~0x04; // ch2 2.5V 이상이면 ONif(AVG[3]>=512)PORTA|=0x08; else PORTA&=~0x08; // ch3 2.5V 이상이면 ONif(AVG[4]>=512)PORTA|=0x10; else PORTA&=~0x10; // ch4 2.5V 이상이면 ONif(AVG[5]>=512)PORTA|=0x20; else PORTA&=~0x20; // ch5 2.5V 이상이면 ONif(AVG[6]>=512)PORTA|=0x40; else PORTA&=~0x40; // ch6 2.5V 이상이면 ONif(AVG[7]>=512)PORTA|=0x80; else PORTA&=~0x80; // ch7 2.5V 이상이면 ON}}#include <avr/io.h>//int main(void){unsigned int i,ch,SUM,AVG[8];DDRA=0xFF;while(1){for(ch=0;ch<8;ch++){ADMUX=0x40|ch; SUM=0;for(i=0;i<64;i++){ ADCSRA=0xD7; while(!(ADCSRA&10)); SUM+=ADCW; }AVG[ch]=SUM>>6;}if(AVG[0]>=512)PORTA|=0x01; else PORTA&=~0x01; // ch0 2.5V 이상이면 ONif(AVG[1]>=512)PORTA|=0x02; else PORTA&=~0x02; // ch1 2.5V 이상이면 ONif(AVG[2]>=512)PORTA|=0x04; else PORTA&=~0x04; // ch2 2.5V 이상이면 ONif(AVG[3]>=512)PORTA|=0x08; else PORTA&=~0x08; // ch3 2.5V 이상이면 ONif(AVG[4]>=512)PORTA|=0x10; else PORTA&=~0x10; // ch4 2.5V 이상이면 ONif(AVG[5]>=512)PORTA|=0x20; else PORTA&=~0x20; // ch5 2.5V 이상이면 ONif(AVG[6]>=512)PORTA|=0x40; else PORTA&=~0x40; // ch6 2.5V 이상이면 ONif(AVG[7]>=512)PORTA|=0x80; else PORTA&=~0x80; // ch7 2.5V 이상이면 ON}}
AVRstudio 높은 버전은 ADCW 대신 ADC 사용하면 됩니다.
댓글 0
조회수 3,029등록된 댓글이 없습니다.