📄 adc.c
字号:
//***************************************************************************************************
//Institute of Automation, Chinese Academy of Sciences
//File Name: ADC.c
//Description: ADC test.
//Author: Lee JuGuang
//Date: 2004-8-18
//***************************************************************************************************
#include"s3c4510b_add.h"
#include "uart.h"
#include "isr.h"
//*****************************************************************************
//ADC/DAC模块的硬件地址由跳线JP200~JP203决定,以下地址对应于S3C4510B的nECS1;
//跳线JP201短接,如跳线改变,需要修改该地址,建议用户不要改变跳线的设置。
#define nADC_Ch0 (*(volatile unsigned char *)0x03F0404e)
#define nADC_Ch1 (*(volatile unsigned char *)0x03F0404c)
#define nADC_Ch2 (*(volatile unsigned char *)0x03F0404a)
#define nADC_Ch3 (*(volatile unsigned char *)0x03F04048)
#define nADC_Ch4 (*(volatile unsigned char *)0x03F04046)
#define nADC_Ch5 (*(volatile unsigned char *)0x03F04044)
#define nADC_Ch6 (*(volatile unsigned char *)0x03F04042)
#define nADC_Ch7 (*(volatile unsigned char *)0x03F04040)
#define nADC_CS (*(volatile unsigned char *)0x03F04060)
#define nADC_RD (*(volatile unsigned int *)0x03F04080)
//*****************************************************************************
extern void ADC_test(void);
static void ADC(unsigned char);
static void Delay(unsigned int);
static void Delay(unsigned int i)
{ int j;
for(j=0;j<i*80;j++)
;
}
//*******************************************************************
//通道号选择,对应硬件系统的4路电压输入和4路电流输入;
//最后修改时间:2004-8-18
//*******************************************************************
void ADC_test(void)
{
unsigned char ch;
i_printf("\r\n\r\n\r\nADC Channel Test...\r\n");
while(1)
{
i_printf("\r\n");
i_printf("*******************************************\r\n");
i_printf("*Please Input the Item Number: *\r\n");
i_printf("* [0] Ch_V0 *\n\r");
i_printf("* [1] Ch_V1 *\n\r");
i_printf("* [2] Ch_V2 *\n\r");
i_printf("* [3] Ch_V3 *\n\r");
i_printf("* [4] Ch_I0 *\n\r");
i_printf("* [5] Ch_I1 *\n\r");
i_printf("* [6] Ch_I2 *\n\r");
i_printf("* [7] Ch_I3 *\n\r");
i_printf("* [8] Exit *\n\r");
i_printf("*******************************************\r\n");
put_char(0, 0x0d);
ch=get_char(0);
switch(ch)
{
case '0':ADC('0');
break;
case '1':ADC('1');
break;
case '2':ADC('2');
break;
case '3':ADC('3');
break;
case '4':ADC('4');
break;
case '5':ADC('5');
break;
case '6':ADC('6');
break;
case '7':ADC('7');
break;
case '8':
return;
default:
break;
}
}
}
//*******************************************************************
//根据通道数,完成A/D转换,参数Channel完成通道号的传递;
//最后修改时间:2004-8-15
//*******************************************************************
static void ADC(unsigned char Channel)
{
float i;
unsigned char ch;
//在此进行通道选择,分别对应ADC/DAC模块的8路输入;
switch(Channel)
{
case '0':nADC_Ch0=0x00;
break;
case '1':nADC_Ch1=0x00;
break;
case '2':nADC_Ch2=0x00;
break;
case '3':nADC_Ch3=0x00;
break;
case '4':nADC_Ch4=0x00;
break;
case '5':nADC_Ch5=0x00;
break;
case '6':nADC_Ch6=0x00;
break;
case '7':nADC_Ch7=0x00;
break;
}
Delay(1);
//启动AD转换,并延时等待转换完毕;
nADC_CS=0x00;
Delay(1);
//读取AD转换的结果,并通过超级终端显示;
i=((nADC_RD&0x0fff0000)>>16)*10.0/4096.0-5.0;
i_printf("\r\n");
i_printf("The acquire voltage of input is %f\n",i);
i_printf("\r\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -