adc.c

来自「一个通过串口与51通信的AVR的程序,还有一些其实功能」· C语言 代码 · 共 45 行

C
45
字号
#include <header.h>
#include <adc.h>
#include <ctrl.h>

#define ADREFIN 0x0A
#define ADREFOUT 0x0B
#define ADCREFIN 0xc0
#define ADCREFOUT 0x00

unsigned char adc_mux;

unsigned short int ADC_read(unsigned char adc_way)
{
ADMUX=adc_mux|(adc_way&0x07);
ADCSRA|=(1<<ADSC);
loop_until_bit_is_set(ADCSRA,ADIF);
ADCSRA|=(1<<ADIF);
return ADC; //ADC=ADCH:ADCL 
}

void ADC_int()
{
adc_mux=0xc0; //0xc0:选择内部2.56V参考电压
ADCSRA=(1<<ADEN)|0x06; //使能ADC,时钟64分频 125KHz@8MHz system clock
}

void ADC_com(unsigned char com)
{
switch(com)
	{
	case 0x00:
	case 0x01:
	case 0x02:
	case 0x03:
	case 0x04:
	case 0x05:
	case 0x06:
	case 0x07: 
		ctrl_send_ADC(ADC_read(com),com);
		break;
	case ADREFIN: adc_mux=ADCREFIN;break;
	case ADREFOUT: adc_mux=ADCREFOUT;break;
	}
}

⌨️ 快捷键说明

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