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

📄 upsd_adc.c

📁 ST公司的upsd34XX评估板固定源程序
💻 C
字号:
//============================================================================
// UPSD_ADC.C
//
// Copyright 2002 STMicroelectrons Inc.
//
// Modified by William Chin for uPSD3234 from STMicroelectronics
// on June 14, 2002
//============================================================================

//-- Includes ----------------------------------------------------------------

#include <intrins.h>

#include "general.h"
#include "upsd.h"				// SFRs
#include "upsd_xreg.h"			// extended registers in uPSD

//-- Variables ---------------------------------------------------------------

extern const uchar code cADC_CH_used;
extern const uchar code cASCL_value;

//----------------------------------------------------------------------------
//
// getADC(): reads an analog signal from the channel specified in hex format,
//            and returns the converted value in ADAT reg.     
//
unsigned char getADC(uchar channel)
{
	ACON &= ~(bADEN|bADST);					//Clears the input channels
	ACON |=  channel<<2 & (bADS1|bADS0);	//Loads Channel to sampled

	ACON |= (bADEN|bADST);					//Enables and Starts Conversion
	_nop_ ();

	_nop_ ();							   	//delay 1 machine cycle: ADST: 1->0
	while( !(ACON & bADSF) );		   		//Waits for Conversion to end
	ACON &= ~(bADEN|bADST);		      	   	//disable ADC

	return( (uchar)ADAT );		
}


//----------------------------------------------------------------------------
// Setup I/O ports and ADC prescaler value

void initADC (void) 
{
	/*
	long ASCL_value;

	ASCL_value = ((OSC*10L/2L)/(ADC_clk_in*1000L))+5;
	ASCL = (uchar)(ASCL_value/10)-1;		// Setup prescaler for ADC clock
	*/

	ASCL = cASCL_value;						//Setup prescaler for ADC clock	
	ACON &= ~(bADEN|bADST);		      	   	//disable ADC

	if (cADC_CH_used & bADC0)	
		P1SFS |= bADC0;	// Input port P1[4] = ADC_in[0]
	if (cADC_CH_used & bADC1)	
		P1SFS |= bADC1;	// Input port P1[5] = ADC_in[1]
	if (cADC_CH_used & bADC2)	
		P1SFS |= bADC2;	// Input port P1[6] = ADC_in[2]
	if (cADC_CH_used & bADC3)	
		P1SFS |= bADC3;	// Input port P1[7] = ADC_in[3]

}




⌨️ 快捷键说明

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