我用的是ATMEGA16单片机。
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,c;
float ad;
void delay(uint z)
{
uint x,y;
for(x=0;x<z;x++)
for(y=0;y<1141;y++);
}
uint mega16_ad()
{
uint addata;
DDRA&=~BIT(PA0);
PORTA&=~BIT(PA0);
ADMUX=0x40;
ADCSR=0X80;
ADCSR|=BIT(ADSC);
while(!(ADCSR&(BIT(ADIF))));
addata=ADCL;
addata=addata+ADCH*256;
return addata;
}
void main()
{
DDRD=0XFF;
while(1)
{
a=mega16_ad();
ad=a*5./1023;
c=ad*255/5;
PORTD=c;
}
}
用的是AREF是5V,希望从PA0处读出电压,在由PD口输出(二进制)
但我PA0给5V电压,PD口输出0011 1111,不是应该是0xff,(1111 1111)吗? |