问题描述:
proteus仿真能显示出ADCL的数据,但ADCH的却不行。问题程序:
#include <iom128v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
adc_convert() //AD转换
{
uint a,b, q1,q2; //a用来暂存每次AD转换后的数值;b用来算10次a的总和;q1用来替代表示ADCL;q2用来替代表示ADCH
uchar i;
ADMUX=0XC0;
ADCSRA=0X87;
for(i=0;i<10;i++)
{
ADCSRA|=(1<<ADSC);
//启动ADC开始转换
while((ADCSRA&0X10)!=0x10);
//等待ADC转换结束
ADCSRA|=(1<<ADIF);
//写1清除标志位
q1=ADCL;
q2=ADCH;
a=q1+q2*256; //其实a、b并没有在这个测试中有用到,显示靠的是q1、q2
b+=a;
PORTE=q2;
PORTD=q1;
ADCSRA|=~(1<<ADSC);
//再次启动ADC开始转换
}
ADCSRA&=~(1<<ADIE);
//禁止ADC中断
return(b/10); //返回b十次的平均值,其实并没用到
}
main()
{
DDRD=0XFF;
DDRE=0XFF;
while(1)
{adc_convert();}
}
一周热门 更多>