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

📄 stc_adc.c

📁 我们自己做了一个智能充电器,能向串口发送各种电压数据.
💻 C
字号:
/****************************************Copyright (c)**************************************************
**									广州广微电子有限公司
**                          Guangzhou Microwide Electronic Co.,Ltd.
**                                 http://www.micro-wide.com
**
**----------------------------------------File Info----------------------------------------------------
** File name:			STC_ADC.h
** Last modified Date:  2007-05-06
** Last Version:		1.0
** Descriptions:		STC系列51单片机ADC驱动程序
**						
**
**------------------------------------------------------------------------------------------------------
** Created by:			stars_txx
** Created date:		2007-05-06
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "STC_ADC.h"

sfr P1M0		=0x91;
sfr P1M1		=0x92;
sfr ADC_CONTR	=0xC5;
sfr ADC_DATA	=0xC6;
sfr IE			=0xA8;
sfr AUXR		=0x8E;
	
//#define REG(ADDR) (*((volatile unsigned char*)ADDR))
unsigned char ADC_Result[8];
/*
*********************************************************************************************************
**函数原型		:  	void ADC_Pin_Config(unsigned char nCh)
**参数说明		:  	nCh	->	通道号,0~7
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	作为ADC使用时,端口必须配置成开漏或高阻,函数选择配置成高阻
*********************************************************************************************************/
void ADC_Pin_Config(unsigned char nCh)
{
	P1M0 |= 0x01<<nCh;		//P1M0相应位为1
	P1M1 &= ~(0x01<<nCh);	//P1M1相应位为0
}
/*
*********************************************************************************************************
**函数原型		:  	void ADC_Start_Convt(unsigned char nCh, unsigned char nSpeed);
**参数说明		:  	nCh		->	通道号,0~7
**				:	nSpeed	->	转换速率,STC_ADC_SPEED_210CLK~STC_ADC_SPEED_840CLK
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	A函数DC启动
*********************************************************************************************************/
void ADC_Start_Convt(unsigned char nCh, unsigned char nSpeed)
{
	ADC_CONTR = 0x01<<0x07|nSpeed<<0x05|0x01<<0x03|nCh;
}
/*
*********************************************************************************************************
**函数原型		:  	void ADC_Stop(void)
**参数说明		:  	
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	ADC停止函数,关闭电源
*********************************************************************************************************/
/*void  ADC_Stop(void)
{
	ADC_CONTR &= ~(0x01<<0x07|0x01<<3);
}*/
/*
*********************************************************************************************************
**函数原型		:  	unsigned char GetADC_Reslut(unsigned char nCh);
**参数说明		:  	nCh	-> 通道号,0~7
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	获取ADC转换值函数
*********************************************************************************************************/
unsigned char GetADC_Reslut(unsigned char nCh)
{
	return ADC_Result[nCh];
}
/*
*********************************************************************************************************
**函数原型		:  	void isr_ADC_GetVal(void)
**参数说明		:  	
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	在中断服务程序中取出ADC转换值
*********************************************************************************************************/
void isr_ADC_GetVal(void)
{
	ADC_CONTR &= ~(0x01<<7|0x01<<3|0x01<<4);	//停止ADC转换,清除ADC_FLAG标志
	ADC_Result[ADC_CONTR&0x07] = ADC_DATA;	//取出ADC转换值到相应结果缓冲
}
/*
*********************************************************************************************************
**函数原型		:  	void Init_ADC_Interrupt(unsigned char bVal)
**参数说明		:  	
**				:------------------------------------------------------------------------------------------
**返回值		:	无	
**说	明		:	在中断服务程序中取出ADC转换值
*********************************************************************************************************/
void Init_ADC_Interrupt(unsigned char bVal)
{
	if(bVal != 0)
	{
		IE |= 0x01<<5;
		AUXR |= 0x01<<4;
	}
	else
	{
		IE &= ~(0x01<<5);
		AUXR &= ~(0x01<<4);
	}
}

⌨️ 快捷键说明

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