?? adc1.c
字號:
/************************************************************************************
* Copyright (c) 2004,西安銘朗電子科技有限責(zé)任公司
* All rights reserved.
*
* 文件名稱: ADC0.C
* 文件標(biāo)識: none
* 適用器件: c8051f020
*
* 摘 要: 本文件是AD子程序;使用外部22.1184MHz晶振,將跳線器JP3短接
*
* 當(dāng)前版本:1.1
* 作 者:劉大偉
* 完成日期:2007年2月9日
*
*************************************************************************************/
/************************************************************************************/
// 引用外部頭文件
#include "c8051f020.h"
#include "ADC1.h"
#include <stdio.h>
/************************************************************************************/
/***********************************************************************************
* 函數(shù)名稱:ADC1_Init;
*
* 函數(shù)功能描述:設(shè)置ADC0使用定時器Timer3溢出作為轉(zhuǎn)換源,轉(zhuǎn)換完成后產(chǎn)生中斷,使用左對齊輸出模式
*
* 輸入?yún)?shù):unsigned int類型指針,是ADC0使用時存放返回數(shù)據(jù)數(shù)組的指針;
*
* 返回數(shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void ADC1_Init (void)
{
ADC1_Ctr_Set; // 關(guān)閉ADC1; 低能追蹤模式
REF_Ctr_Set; // 打開溫度傳感器, on-chip VREF
ADC1_Channel_0; // ADC1使用"0"通道
SAR1_Clk_Set; // ADC轉(zhuǎn)換時鐘= 2.5MHz
ADC1_Gain; // PGA gain = 1
ENABLE_ADC3; // 打開ADC1中斷
}
/***********************************************************************************
* 函數(shù)名稱:Timer3_Init;
*
* 函數(shù)功能描述:lcd_init;
*
* 輸入?yún)?shù):none;
*
* 返回數(shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void Timer3_Init (int counts)
{
Timer3_Stop; // 停止Timer3; 清除TF3;
Timer3_Reload_init=-counts; // 初始化裝載值
TMR3_Count_Start; // 設(shè)置立即裝載
DISABLE_Tmr3; // 禁止定時器Timer3中斷
Timer3_Start; // 開啟Timer3
}
/***********************************************************************************
* 函數(shù)名稱:ADC1_enable
*
* 函數(shù)功能描述:ADC1開關(guān),1:打開;0:關(guān)閉
*
* 輸入?yún)?shù):1:打開;0:關(guān)閉
*
* 返回數(shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void ADC1_enable(unsigned char flag)
{
if(flag)
{
ADC1_Start; // 打開ADC
ENABLE_INTERRUPTS; // 開啟全局中斷
}
else
ADC1_Stop; // 關(guān)閉ADC
}
/***********************************************************************************
* 函數(shù)名稱:ADC1_ISR;
*
* 函數(shù)功能描述:中斷服務(wù)響應(yīng);ADC1 采樣,存儲在主程序定義的全局?jǐn)?shù)組中,選擇下個通道轉(zhuǎn)換
*
* 輸入?yún)?shù):none;
*
* 返回數(shù)據(jù):none;
*
* 注意: none;
************************************************************************************/
void ADC1_ISR (void) interrupt 17
{
static unsigned char channel = 0; // ADC mux 通道 (0-8)
unsigned char ppp;
ADC1_IntFlag_Clear; // 清除ADC轉(zhuǎn)換完成標(biāo)志
ADC1_result[channel]=ADC1; // 讀ADC值
ppp=ADC1_result[channel];
channel++; // 改變通道
if (channel == 8)
channel = 0;
ADC1_Channel = channel; // 設(shè)置mux到下個通道
}
/***********************************************************************************
* 函數(shù)名稱:ADC_Value;
*
* 函數(shù)功能描述:ADC0,ADC1轉(zhuǎn)換完成后數(shù)據(jù)寄存器數(shù)據(jù)轉(zhuǎn)換成unsigned int型
*
* 輸入?yún)?shù):unsigned char類型,"0"為選擇轉(zhuǎn)換ADC0數(shù)據(jù)格式,非"0"為選擇轉(zhuǎn)換ADC1數(shù)據(jù)格式;
*
* 返回數(shù)據(jù):unsigned int類型,當(dāng)前AD轉(zhuǎn)換完成后的unsigned int類型數(shù)據(jù)量;
*
* 注意: none;
************************************************************************************
unsigned int ADC_Value (unsigned char Flag)
{
unsigned int data temp,temp0,temp1;
if(Flag) //ADC1
temp0=ADC1;
else //ADC0
{
temp0=ADC0L;
temp1=ADC0H;
}
temp=temp1*256+temp0;
return temp; //取回ADC轉(zhuǎn)換數(shù)據(jù)
}
/***********************************************************************************
* 函數(shù)名稱:ADC_Value_Return;
*
* 函數(shù)功能描述:主程序通過此函數(shù)取得ADC0目標(biāo)通道數(shù)據(jù)
*
* 輸入?yún)?shù):unsigned char類型,ADC0通道號;
*
* 返回數(shù)據(jù):unsigned int類型,ADC0通道對應(yīng)的數(shù)據(jù);
*
* 注意: ADC0共有9個通道(包括溫度通道),注意范圍,超出范圍返回0XFFFF;
************************************************************************************/
unsigned int ADC_Valud_Return (unsigned char channel)
{
if (channel<8) //通道范圍有效
return ADC1_result[channel]; //取回通道對應(yīng)數(shù)據(jù)
else //通道范圍出錯
return 0xffff; //返回錯誤信息
}
/************************************************************************************
* 文件結(jié)束
************************************************************************************/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -