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

📄 复件 dac.c

📁 三星4510 BOOTLOADER全部源代码
💻 C
字号:
//***************************************************************************************************
//Institute of Automation, Chinese Academy of Sciences
//File Name:	DAC.c
//Description: 	DAC test. 
//Author:	Lee JuGuang
//Date:		2004-8-15
//***************************************************************************************************	
#include 	"uart.h"
//*****************************************************************************
//ADC/DAC模块的硬件地址由跳线JP200~JP203决定,以下地址对应于S3C4510B的nECS1;
//跳线JP201短接,如跳线改变,需要修改该地址,建议用户不要改变跳线的设置。
#define nDAC0  		 (*(volatile unsigned *)0x03F04000)
#define nDAC1  		 (*(volatile unsigned *)0x03F04020)
//*****************************************************************************

extern void DAC_test(void);
static void Delay(unsigned int);
static void Dac(unsigned char Channel);

//*******************************************************************
//通道号选择,对应硬件系统的Channel A和Channel B;
//最后修改时间:2004-8-18
//*******************************************************************
extern void DAC_test(void)
{	
	unsigned char ch;
	while(1){
		i_printf("\r\n");
		i_printf("*******************************************\r\n");
		i_printf("*Please Input the Item Number:            *\r\n");
		i_printf("*  [0]    Channel A                       *\n\r");
		i_printf("*  [1]    Channel B                       *\n\r");
		i_printf("*  [2]    Exit                            *\n\r");
		i_printf("*******************************************\r\n");
		
		put_char(0, 0x0d);
		ch=get_char(0);
		switch(ch)
			{
			case '0':Dac(ch);
				break;	
			case '1':Dac(ch);
				break;
			case '2':
				return;
			default:
				break;		
			}
		}
}

//*******************************************************************
//根据输入的通道数,完成D/A转换,参数Channel完成通道号的传递;
//最后修改时间:2004-4-5
//*******************************************************************
static void Dac(unsigned char Channel)
{
	float i,j;
	int l; 
	static int p;
	static int psize;
	if(Channel=='0')
		i_printf("\r\n\r\nChannel A \r\n");	
	else
		i_printf("\r\n\r\nChannel B \r\n");	
	i_printf("\r\nPlease Input the Voltage Value:");
	j=get_fltdigit();
	p=rep();
	psize=repsize();
        if(p==psize)
        	{if(Channel=='0')
        		nDAC0=((int)(j*32768.0/10.0)<<16)&0x7fff0000;
        	else
        		nDAC1=((int)(j*32768.0/10.0)<<16)&0x7fff0000;
        	}
	else
		{if(Channel=='0')
			nDAC0=((int)(j*32768.0/10.0)/((psize-p-1)*10)<<16)&0x7fff0000;
		else
			nDAC1=((int)(j*32768.0/10.0)/((psize-p-1)*10)<<16)&0x7fff0000;
		}
	Delay(1);
}

//*******************************************************************
//实现软件延时
//*******************************************************************
static void Delay(unsigned int x)
{
	unsigned int i,j,k;
	for(i=0;i<=x;i++)
		for(j=0;j<255;j++)
			for(k=0;k<255;k++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -