?? 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 + -