📄 复件 dac.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 + -