⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 AVR单片机AD采集
💻 C
字号:
#include <avr/interrupt.h>
#include <avr/io.h>
#include <avr/signal.h>
#include <stdlib.h>
void uart_init(void);
void timer2_init(void);
unsigned int dtime=0;
void delay_l(int time);//单位是100us
void puts(char *s,unsigned char i);
void adc_init()
{
	DIDR0=(1<<ADC0D);//选择ADC0脚为AD输入脚
	ADMUX=0x40;//0通道,AVcc作为参考
	ADCSRA=(1<<ADEN)|(0<<ADSC)|(1<<ADIF)|0x07;//开启AD

}
void main()
{
	unsigned int a;
	char buffer[8];
	CLKPR=(1<<CLKPCE);
	CLKPR=0;
	uart_init();
	adc_init();
	timer2_init();
	sei();
	itoa(3654,buffer,10);
	
	while(1)
	{
		PRR&=~(1<<PRADC);
		ADMUX=0x40;
		ADCSRA|=(1<<ADSC);
		while(!(ADCSRA&(1<<ADIF)));
		ADCSRA|=(1<<ADIF);
		a=ADC;
		itoa(a,buffer,10);
		puts(buffer,4);
		delay_l(1000);
	}
	
}
void timer2_init(void)
{
 TIMSK2 = 0x00;
 ASSR  = 0; //同步时钟
 TCNT2 = 5; //定时时间100us,20M晶振
 TCCR2B = (0<<CS22)|(1<<CS21)|(0<<CS20); //分频比8,0x07
}

SIGNAL(SIG_OVERFLOW2)
{
 TCNT2 = 5;
 dtime++;
}
void delay_l(int time)//单位是100us
{

	dtime=0;
	TCNT2=5;
	TIMSK2=0x01;//开启中断100us

	while(dtime<time);
	TIMSK2=0;
	return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -