#include <iot26v.h> #include <macros.h> #define uchar unsigned char #define uint unsigned int #define RED_LED_ON PORTA &= ~(1<<PA7) #define RED_LED_OFF PORTA |= (1<<PA7) unsigned int value; #pragma interrupt_handler adc_isr:12 void adc_isr(void) { value=ADCL; value|=(int)ADCH << 8; }
void AD_init(void) { ADCMUX = 0xA0;//内部参考电压 ADCSR = 0xAe;//连续转换,64分频,ad中断使能 }
void main() { DDRA = 0xE0;/* 定义PORTA口输入且不带上拉,,PA7,PA6,PA5输出*/ PORTA = 0xE0; DDRB = 0xBD;/* 定义PORTB口输出,PB1,PB6输入且带上拉*/ PORTB = 0x00; CLI(); //关总中断 MCUCR = 0x00; TIMSK = 0x00; //timer interrupt sources GIMSK = 0x00; //interrupt sources RED_LED_ON; AD_init(); ADCSR|=(1<<ADSC);//连续模式,开始AD转换 SEI(); while (1) { if(value>6000) RED_LED_OFF; else RED_LED_ON; } } 为什么while语句里面的value会这么大啊 我的pa0口用表测量电压为2.56v 用的是内部2.56v基准电压 计算下来应该是1000左右...怎么会这么大啊
|