完整代码
- #include "main.h"
- #define TSADCCON0 0xE1700000
- #define TSDATX0 0xE170000C
- #define TSDATY0 0xE1700010
- //#define CLRINTADC0 0xE1700000
- #define ADCMUX 0xE170001C
- #define rTSADCCON0 (*(volatile unsigned int *)TSADCCON0)
- #define rTSDATX0 (*(volatile unsigned int *)TSDATX0)
- #define rTSDATY0 (*(volatile unsigned int *)TSDATY0)
- //#define rCLRINTADC0 (*(volatile unsigned int *)CLRINTADC0)
- #define rADCMUX (*(volatile unsigned int *)ADCMUX)
- static void adc_init(void) //初始化ADC控制器的函数
- {
- rTSADCCON0 |=(1<<16); //bit16写1
- rTSADCCON0 |=(1<<14); //bit14写1,使能
- rTSADCCON0 &=~(0xff<<6); //全部清0
- rTSADCCON0 |=(65<<6); //66分频,convertor clock(转换器时钟) =66/66m=1MHZ,MSPS(毫秒)=200KHZ
- rTSADCCON0 &=~(1<<2); // normal operation mode
- rTSADCCON0 &=~(1<<1); //bit1写1
- rADCMUX &=~(0x0f<<0); //MUX选择ADCIN0
- }
- static void delay(void)
- {
- volatile unsigned int i, j;
-
- for (i=0; i<4000; i++)
- for (j=0; j<1000; j++);
-
- }
- //测试ADC,完成的功能就是循环检测ADC并得到ADC转换数字值打印出来
- void adc_test(void)
- {
- unsigned int val=0;
- adc_init();
- while(1)
- {
- //第一步:开启ADC转换
- rTSADCCON0 |=(1<<0);
- //第二步:等待ADC转换完毕
- while(!(rTSADCCON0&(1<<15)));
- //第三步:读取ADC的数字值
- //第四步:处理/显示数字值
- val = rTSDATX0 ; //读取
- printf("bit14 =%d.\n",(val & (1<<14)));
- printf("adc value=%d./n",(val & (0xfff<<0))); //显示
-
- val = rTSDATY0; //读取
- printf("y: bit14 = %d.\n", (val & (1<<14)));
- printf("y: adc value = %d.\n", (val & (0xFFF<<0))); //显示
- //第五步延时
- delay();
-
- }
-
-
- }
|