mega16内部AD程序范例
发布时间:
>>>>PSoC联合实验室
Mega16
AD程序范例2013年5月2日
内部
>>>>#include#include
#defineucharunsignedchar#defineuintunsignedint
/******************运用mega16内部AD转换**********************/uintmega16_ad({
uintaddata;
DDRA&=~BIT(PA0;//设置PA0为输入PORTA&=~BIT(PA0;//拉低PA0
ADMUX=0;//7,6号选择参考电压AREF;5号口选择左对齐;//0~4号口选则通道与增益(此处选择单端输入);
ADCSR=0X80;//使能ADC,未开始,标志位置0,关闭中断,分频因子2ADCSR|=BIT(ADSC;//开始转换
while(!(ADCSR&(BIT(ADIF;//等待ADIF为1,开始转换
addata=ADCL;//将ADCl的值强制转为十进制赋给无符号整形addataaddata=addata+ADCH*256;//将寄存器高位ADCH的值读取,将这16位寄存器值全赋给addata
returnaddata;//返回addata}
voidmain({
uintada,i,ad[4];
DDRB=0xff;//设置二极管显示
DDRB=0xff;//初始化二极管,关闭while(1{
ada=mega16_ad(;//将addata的值赋给ada
/****************以下为根据ada的值不同而不同的显示以此表示AD值*******************/
if(ada>=0&&ada<=128PORTB=0xfe;
elseif(ada>128&&ada<=256PORTB=0xfd;
elseif(ada>256&&ada<=384PORTB=0xfb;
elseif(ada>384&&ada<=512PORTB=0xf7;
elseif(ada>512&&ada<=640PORTB=0xef;
elseif(ada>640&&ada<=768PORTB=0xdf;
>>>>