📄 stc_adc.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 + -