这个程序是否实现了每0.5MS采样一次的作用呢?大神求指教啊
#include <avr/io.h>
#include <stdio.h>
unsigned int data;
float temp;
/*void delay1(int t)
{
volatile int x,y;
for(x=0;x<t;x++)
{
for(y=0;y<500;y++);
}
}*/
void TIM_INIT(void)
{
TCCR0 = 0X00;
TCNT0 = 0;//T/C0开始值
TCCR0 |=(1<<CS01);//8分频
TIMSK |=(1<<TOIE0);//|(1<<OCIE0);
}
void TIM_Deal(void)
{
if(TCNT0 <0xFF) TCNT0++;
TIFR |= (1<<TOV0);
}
void ADC_INIT (void)
{
PORTA = 0X00;
DDRA = 0X00;//PA0设置为输入口,高阻态
// ADCSRA = 0X00;//禁止ADC工作
ADMUX = (1<<REFS1)|(1<<REFS0);//参考电压2.56v,左对齐,选择ADC0
ACSR = (1<<ACD);//关闭模拟比较器
ADCSRA |= (1<<ADEN);
}
void AD_START (void)
{
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
data = (unsigned int)ADCL;
data = data + ((unsigned int )ADCH<<8);
temp = data *2.5 ;
}
int main(void)
{
ADC_INIT();
TIM_INIT();
// AD_START();
while(1)
{
TIM_Deal();
if(1<<TOV0)
{
AD_START();
TIFR &=~ 0x01;
}
}
}
这个程序是否实现了每0.5MS采样一次的作用呢? |