88 lines
3.8 KiB
C
88 lines
3.8 KiB
C
/*---------------------------------------------------------------------*/
|
||
/* --- STC MCU Limited ------------------------------------------------*/
|
||
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
|
||
/* --- Mobile: (86)13922805190 ----------------------------------------*/
|
||
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
|
||
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
|
||
/* --- Web: www.STCMCU.com --------------------------------------------*/
|
||
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
|
||
/* --- QQ: 800003751 -------------------------------------------------*/
|
||
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
|
||
/*---------------------------------------------------------------------*/
|
||
|
||
#ifndef __ADC_H
|
||
#define __ADC_H
|
||
|
||
#include "config.h"
|
||
|
||
#define ADC_RES_12BIT 0 // 0: MCU为10位ADC; 1: MCU为12位ADC
|
||
|
||
#define ADC_P10 0x01 // IO引脚 Px.0
|
||
#define ADC_P11 0x02 // IO引脚 Px.1
|
||
#define ADC_P12 0x04 // IO引脚 Px.2
|
||
#define ADC_P13 0x08 // IO引脚 Px.3
|
||
#define ADC_P14 0x10 // IO引脚 Px.4
|
||
#define ADC_P15 0x20 // IO引脚 Px.5
|
||
#define ADC_P16 0x40 // IO引脚 Px.6
|
||
#define ADC_P17 0x80 // IO引脚 Px.7
|
||
#define ADC_P1_All 0xFF // IO所有引脚
|
||
|
||
#define ADC_POWER (1 << 7) // ADC 电源
|
||
#define ADC_START (1 << 6) // ADC 转换启动控制位。自动清0
|
||
#define ADC_FLAG (1 << 5) // ADC 转换结束标志位。软件清0
|
||
#define ADC_EPWMT (1 << 4) // 使能 PWM 同步触发 ADC 功能
|
||
#define ADC_CH0 0
|
||
#define ADC_CH1 1
|
||
#define ADC_CH2 2
|
||
#define ADC_CH3 3
|
||
#define ADC_CH4 4
|
||
#define ADC_CH5 5
|
||
#define ADC_CH6 6
|
||
#define ADC_CH7 7
|
||
#define ADC_CH8 8
|
||
#define ADC_CH9 9
|
||
#define ADC_CH10 10
|
||
#define ADC_CH11 11
|
||
#define ADC_CH12 12
|
||
#define ADC_CH13 13
|
||
#define ADC_CH14 14
|
||
#define ADC_CH15 15
|
||
|
||
#define ADC_SPEED_2X1T 0 // SYSclk/2/1
|
||
#define ADC_SPEED_2X2T 1 // SYSclk/2/2
|
||
#define ADC_SPEED_2X3T 2 // SYSclk/2/3
|
||
#define ADC_SPEED_2X4T 3 // SYSclk/2/4
|
||
#define ADC_SPEED_2X5T 4 // SYSclk/2/5
|
||
#define ADC_SPEED_2X6T 5 // SYSclk/2/6
|
||
#define ADC_SPEED_2X7T 6 // SYSclk/2/7
|
||
#define ADC_SPEED_2X8T 7 // SYSclk/2/8
|
||
#define ADC_SPEED_2X9T 8 // SYSclk/2/9
|
||
#define ADC_SPEED_2X10T 9 // SYSclk/2/10
|
||
#define ADC_SPEED_2X11T 10 // SYSclk/2/11
|
||
#define ADC_SPEED_2X12T 11 // SYSclk/2/12
|
||
#define ADC_SPEED_2X13T 12 // SYSclk/2/13
|
||
#define ADC_SPEED_2X14T 13 // SYSclk/2/14
|
||
#define ADC_SPEED_2X15T 14 // SYSclk/2/15
|
||
#define ADC_SPEED_2X16T 15 // SYSclk/2/16
|
||
|
||
#define ADC_LEFT_JUSTIFIED 0 // ADC Result left-justified
|
||
#define ADC_RIGHT_JUSTIFIED 1 // ADC Result right-justified
|
||
|
||
typedef struct {
|
||
u8 ADC_SMPduty; // ADC 模拟信号采样时间控制, 0~31(注意: SMPDUTY 一定不能设置小于 10)
|
||
u8 ADC_Speed; // 设置 ADC 工作时钟频率 ADC_SPEED_2X1T~ADC_SPEED_2X16T
|
||
u8 ADC_Power; // ADC功率允许/关闭 ENABLE,DISABLE
|
||
u8 ADC_AdjResult; // ADC结果调整, ADC_LEFT_JUSTIFIED,ADC_RIGHT_JUSTIFIED
|
||
u8 ADC_Priority; // 优先级设置 Priority_0,Priority_1,Priority_2,Priority_3
|
||
u8 ADC_Interrupt; // 中断允许 ENABLE,DISABLE
|
||
u8 ADC_CsSetup; // ADC 通道选择时间控制 0(默认),1
|
||
u8 ADC_CsHold; // ADC 通道选择保持时间控制 0,1(默认),2,3
|
||
} ADC_InitTypeDef;
|
||
|
||
static void ADC_Inilize(ADC_InitTypeDef *ADCx);
|
||
void ADC_PowerControl(u8 pwr);
|
||
u16 Get_ADCResult(u8 channel); // channel = 0~15
|
||
void ADC_config(void);
|
||
extern u16 adc_date;
|
||
#endif
|