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

📄 ad_finish.c

📁 avr16的ad采样程序
💻 C
字号:
#include <macros.h>
#include <iom16v.h>
#include <math.h>

/*****1_ms延时程序*****/
void delay_1ms(void)
{	 
	 unsigned int i;
	 for(i=0;i<1142;i++)
	 ;
}

/*****N_ms延时程序*****/
void delay_nms(unsigned int n)
{	 
	 unsigned int i;
	 for(i=0;i<n;i++)
	  	delay_1ms();
}

/*****端口初始化*****/
void port_init(void)
{	 
	 DDRB=0xff;              //B口输出为1
	 PORTB=0x00;
	 DDRD=0xff;              //D口输出为1
	 PORTD=0x00;
}
/***AD初始化,对内部ADC进行相应设置***/
void adc_init(void)
{	 
	 CLI();
	 ADCSRA=0x00;//设置ADC之前禁止ADC
	 ADMUX=0x40;
	 ADCSRA|=(1<<ADEN)|(1<<ADIE)|(1<<ADSC); 
	 SEI();
}
/**功能:电压值(mV)显示;例如显示3432即为3432mv**/
void ad_change(unsigned int data)
{	 
	 unsigned long v;
	 unsigned char th,h,te,g;
	 v=data;
	 v=(v*5000)/1024;
	 th=v/1000;
	 h=(v%1000)/100;
	 te=(v%100)/10;
	 g=v%10;
	 PORTD=h*16+th;
	 PORTB=g*16+te;
}
/*****中断*****/
#pragma interrupt_handler ad_f:15
void ad_f(void)
{	 
	 unsigned int d;
	 d=ADC;
	 ad_change(d);
	 delay_nms(200);
	 ADCSRA|=(1<<ADSC);
} 
	 
/*****主函数*****/
void main(void)
{	 
	 port_init();		//端口设置
	 adc_init(); 	     //ADC设置
	 while(1)
	 ;
}

⌨️ 快捷键说明

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