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

📄 adc.c

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 C
字号:
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#define a 0xf4              //a=0.95
#define b 0x0d              //b=1-a=0.05

unsigned char x0,y0=0;    //x0,ADCH的值;
unsigned char read_adc(unsigned char ad_chanel)     //单通道AD值读取函数
{
    ADMUX=1<<ADLAR|ad_chanel|1<<REFS1|1<<REFS0; //内参2.56V
    ADCSRA=1<<ADEN|1<<ADSC|6<<ADPS0;    //16分频做AD转换时钟
    loop_until_bit_is_set(ADCSRA,ADIF);
        ADCSRA=1<<ADIF;
    return ADCH;
    
}
SIGNAL(SIG_OUTPUT_COMPARE0)             //interrupt
{
    x0=read_adc(0);         
    //if(50<x0<150)PORTB=0XF0;
    //if(150<x0>250)PORTB=0X0F;
    y0=(char)(((int)a*y0+(int)b*x0)>>8);
    PORTB=y0;
}
int main(void)
{
    DDRA=0X00;
    DDRB=0XFF;
    OCR0=0X0F;                  //设置OCR0的值,使采样频率约为500Hz
    TCCR0=1<<WGM01|5<<CS00;
    TIMSK=1<<OCIE0;
    TIFR=1<<OCF0;
    SREG=0X80;
    while(1){;}
    return 0;
}

⌨️ 快捷键说明

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