关于ATMEGA16的AD转换

2019-07-16 06:49发布

2.png 1.png 用PA0单通道输入进行AD转换,但显示的结果都是1023? 检查了好几遍也没发现程序有什么问题~

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
16条回答
A670521546
2019-07-16 10:34
你的程序再看看

  1. uint mega16_ad()
  2. {
  3.          uint addata;

  4.          DDRA&=~BIT(PA0);          //PA0口设置为输入,无上垃电阻,高阻态
  5.          PORTA&=~BIT(PA0);

  6.          SFIOR =0;                 //连续转换模式
  7.          ADMUX=0X40;               //AVCC,AREF引脚外加滤波电容
  8.                                    //右对齐,ADC0单端输入
  9.          ADCSR =0X80;                         //启动ADC转换
  10.          ADCSR |=BIT(ADSC);                   //开始转换
  11.          while(!(ADCSR&(BIT(ADIF)))); //等待转换结束,ADIF置1
  12.          addata=ADCL;

  13.          addata=addata+ADCH*256;              //把ADCL,ADCH转换成10进制
  14.          ADCSR |=BIT(ADIF);                   //对ADIF写”1”,ADIF清0
  15.          ADCSR =0X00;                         //关闭ADC转换
  16.          return addata;
  17. }
复制代码

一周热门 更多>