欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
松翰SN8F5703單片機AD轉(zhuǎn)換例程
[打印本頁]
作者:
hexinquan
時間:
2020-12-8 11:16
標題:
松翰SN8F5703單片機AD轉(zhuǎn)換例程
松翰5703例程_AD
#include <sn8f5703.h>
/*********************************************************************
CONST
*********************************************************************/
#define AD_CHANNEL1 0x00 //P20 AIN0
#define AD_CHANNEL2 0x02 //P22 AIN2
#define AD_CHANNEL3 0x0c //AIN12 內(nèi)部vdd輸入檢測
#define AD_SPEEDDIV16 0x00
#define AD_SPEEDDIV8 0x10
#define AD_SPEEDDIV1 0x20
#define AD_SPEEDDIV2 0x30
#define VREF_INT 0x00
#define VREF_EXT 0X80
#define VERFH_2V 0x00
#define VERFH_3V 0x01
#define VERFH_4V 0x02
#define VERFH_VDD 0x03
#define VERFH_INTVDD 0x04 //內(nèi)部vdd輸入檢測
#define ADSAMPLEMAX 8 //采樣8次,這個參數(shù)不用改動,防止AD值累計平均出錯
#define ADSHIFT 3 //右移3次平均
/*********************************************************************
DATA
*********************************************************************/
uint16_t ADValue1;
uint16_t ADValue2;
uint16_t ADValue3;
static uint8_t AD1Cnt = 0;
static uint16_t AD1Fifo[ADSAMPLEMAX] = 0;
static uint8_t AD2Cnt = 0;
static uint16_t AD2Fifo[ADSAMPLEMAX] = 0;
static uint8_t AD3Cnt = 0;
static uint16_t AD3Fifo[ADSAMPLEMAX] = 0;
/*********************************************************************
FUNCTION
*********************************************************************/
void InitAD(void);
void AD_Sample(void);
static uint16_t Get_AD(uint8_t ADChannel);
static uint16_t ADAverge(uint16_t *ADarray);
//===================================================================
// FUNCTION
//===================================================================
void main(void)
{
CLKSEL = 0x06; // Fcpu = 32M/2 = 16M
CLKCMD = 0X69;
CKCON = 0X10; // From = 8M
WDTR = 0x5A; // clear watchdog
P0 = 0;
P0M = 0;
P0UR = 0xFF;
P1 = 0;
P1M = 0;
P1UR = 0xFF;
P2 = 0;
P2M = 0;
P2UR = 0xFA; // AD口需設為輸入不上拉
P2CON = 0x05; //AD口打開,否則漏電
InitAD();
while(1)
{
WDTR = 0x5A; // clear watchdog
AD_Sample();
}
}
//=======================================================================
// AD 初始化
//=======================================================================
void InitAD(void)
{
ADM = 0x80;
ADM |= AD_CHANNEL1;
ADR = 0x40;
ADR |= AD_SPEEDDIV16;
VREFH = VREF_INT;
VREFH |= VERFH_4V;
P1CON |= 0; //需禁止相應的施密特觸發(fā)。
P2CON |= 0x05;
}
//=======================================================================
// AD 滑動濾波
//=======================================================================
void AD_Sample(void)
{
AD1Fifo[AD1Cnt ++] = Get_AD(AD_CHANNEL1);
if(AD1Cnt == ADSAMPLEMAX) AD1Cnt = 0;
ADValue1 = ADAverge(AD1Fifo);
AD2Fifo[AD2Cnt ++] = Get_AD(AD_CHANNEL2);
if(AD2Cnt == ADSAMPLEMAX) AD2Cnt = 0;
ADValue2 = ADAverge(AD2Fifo);
VREFH |= VERFH_INTVDD;
AD3Fifo[AD3Cnt ++] = Get_AD(AD_CHANNEL3);
if(AD3Cnt == ADSAMPLEMAX) AD3Cnt = 0;
ADValue3 = ADAverge(AD3Fifo);
VREFH &= (VERFH_INTVDD^0xff);
}
//=======================================================================
// AD 去極值平均
//=======================================================================
uint16_t Get_AD(uint8_t ADChannel)
{
uint8_t i;
uint16_t AD_Max = 0;
uint16_t AD_Min = 0xffff;
uint16_t AD_Buffer = 0;
uint16_t AD_Data = 0;
ADM &= 0xf0;
ADM |= ADChannel;
AD_Data = 0;
for(i = 0; i < ADSAMPLEMAX + 2; i++)
{
ADM |= 0x40; //Start ADC
while((ADM & 0x20) != 0X20); //EOC
ADM &= 0xdf;
AD_Buffer = ADB;
AD_Buffer = (AD_Buffer << 4) + (ADR & 0X0F);
AD_Data += AD_Buffer;
if(AD_Buffer < AD_Min)
{
AD_Min = AD_Buffer;
}
if(AD_Buffer > AD_Max)
{
AD_Max = AD_Buffer;
}
}
AD_Data = (AD_Data - AD_Min - AD_Max) >> ADSHIFT;
return AD_Data;
}
//=======================================================================
//
//=======================================================================
uint16_t ADAverge(uint16_t *ADarray)
{
uint8_t i = 0;
uint16_t Sum = 0;
for(i = 0;i < ADSAMPLEMAX;i++)
{
Sum += *(ADarray+i);
}
Sum = Sum >> ADSHIFT;
return Sum;
}
復制代碼
5703_AD_20161103.rar
2020-12-8 11:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
34.74 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1