[PIC®/AVR®/dsPIC®产品] AD转换的问题

[复制链接]
1922|3
 楼主| 比神乐 发表于 2024-6-1 14:58 | 显示全部楼层 |阅读模式
代码:
  1. /*
  2. * File:   newmain.c
  3. * Author: Administrator
  4. *
  5. * Created on May 29, 2024, 3:29 PM
  6. */

  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <xc.h>
  10. #include <string.h>


  11. #pragma config POSCMOD= XT
  12. #pragma config OSCIOFNC= OFF
  13. #pragma config FCKSM= CSDCMD
  14. #pragma config FNOSC= FRCDIV
  15. #pragma config IESO= ON
  16. #pragma config WDTPS= PS32768
  17. #pragma config FWPSA= PR128
  18. #pragma config WINDIS= OFF
  19. #pragma config FWDTEN= ON
  20. #pragma config ICS= PGx2
  21. #pragma config GWRP= OFF
  22. #pragma config GCP= OFF
  23. #pragma config JTAGEN= OFF
  24. /*
  25. *
  26. */

  27. #define POT 5
  28. #define AINPUTS 0XFFDF

  29. void delay(void)
  30. {
  31.     int i,j;
  32.     for(i=0;i<200;i++)
  33.         for(j=0;j<200;j++)
  34.             ;
  35. }
  36. void initADC(int amask)
  37. {
  38.     AD1PCFG=amask;
  39.     //AD1CON1=0X00E0;
  40.     AD1CON1=0X0000;
  41.     AD1CSSL=0;
  42.     AD1CON2=0;
  43.     AD1CON3=0X1F04;
  44.     AD1CON1bits.ADON=1;
  45.    
  46. }

  47. int readADC(int ch)
  48. {
  49.     AD1CHS=ch;
  50.     AD1CON1bits.SAMP=1;
  51.    
  52.     ///////////////////////////
  53.     TMR1=0;
  54.     //PORTA=1;
  55.     while(TMR1<100);
  56.     PORTA=2;
  57.     AD1CON1bits.SAMP=1;
  58. <font color="#ff0000">    while(!AD1CON1bits.DONE);</font>
  59.     TMR1=0;
  60.     while(TMR1<200);
  61.     PORTA=4;
  62.     return ADC1BUF0;
  63. }
  64. void main(void)
  65. {
  66.     int a;
  67.    
  68.     initADC(AINPUTS);
  69.     TRISA=0xff00;
  70.     TRISE=0;
  71.     //TRISBbits.TRISB5=1;
  72.     T1CON=0X8020;
  73.         while(1)
  74.         {
  75.         
  76.         a=readADC(POT);
  77.         a=(a>>2);
  78.         //PORTE=(unsigned char)(a);
  79.         }
  80. }
红色的那句执行不过去。
芯片是pic24fj128ga010,环境是xc16.
请问高手,怎么回事?谢谢!
原来是wjc 发表于 2024-9-28 23:18 | 显示全部楼层
充分体验3 nm工艺技术提供高性能和低功耗性能。
jiekou001 发表于 2024-9-29 14:33 | 显示全部楼层
while(!AD1CON1bits.DONE);
这一句执行不过去,那就是这一句条件一直没满足啊。
jiekou001 发表于 2024-9-29 14:33 | 显示全部楼层
可以试试,你在之前先清零,然后再试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

470

主题

3537

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部