⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc.c

📁 三星4510 BOOTLOADER全部源代码
💻 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 + -