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

📄 adc.c

📁 本文件是C8051F040AD采样及串口测试程序;AD输入端子可输入4路AD(AIN0--AIN3)
💻 C
字号:
/************************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: adc.C
* 文件标识: none
* 适用器件: C8051F040
* 
* 摘 要:
* 
* 当前版本:1.0
* 作 者:张宁强
* 完成日期:2006年1月20日
*
* 历史版本:0.9 
* 原作者 : 张宁强
* 完成日期:2005年x月xx日
*************************************************************************************/

#include "MAIN.h"

unsigned int result[9];                // AIN0-5

void ADC0_Init (void)
{
   char SFRPAGE_SAVE = SFRPAGE;        // 保存当前SFRPAGE
   SFRPAGE = LEGACY_PAGE;              // 改变页

   REF0CN = 0x07;                      // 打开温度传感器, on-chip VREF,
   ADC0CF = (SYSCLK/2500000) << 3;     // ADC转换时钟= 2.5MHz
   ADC0CF &= ~0x07;                    // PGA gain = 1
	AD0EN = 1;                          // 打开ADC

   HVA0CN = 0x88; //GAIN = 1           // 设置高压差分放大器

   SFRPAGE = SFRPAGE_SAVE;             // 恢复SFRPAGE
}

void ADC0_Conver (void)
{
   unsigned char i;             // ADC mux 通道 (0-3)
   unsigned int data temp;
   char SFRPAGE_SAVE = SFRPAGE; // 保存当前SFRPAGE
   SFRPAGE = ADC0_PAGE;         // 改变页

   for (i=0;i<4;i++)
   {
		AMX0SL = i;					  // 设置mux到通道AIN0x
		DelayMs(1);
		AD0INT = 0;               // 清除ADC转换完成标志
		AD0BUSY = 1;
		while (!AD0INT);
		temp = ADC0H;
		temp = temp*256 + ADC0L;
		result[i] = temp;         // 读ADC值
   }

	AMX0SL = 0x08;					  // 设置mux到温度传感器
	DelayMs(1);
	AD0INT = 0;                  // 清除ADC转换完成标志
	AD0BUSY = 1;
	while (!AD0INT);
	temp = ADC0H;
	temp = temp*256 + ADC0L;
	result[4] = temp;            // 读ADC值


	AMX0SL = 0x04;					  // 设置mux到高压差分放大器
	DelayMs(100);
	AD0INT = 0;                  // 清除ADC转换完成标志
	AD0BUSY = 1;
	while (!AD0INT);
	temp = ADC0H;
	temp = temp*256 + ADC0L;
	result[5] = temp;            // 读ADC值

   SFRPAGE = SFRPAGE_SAVE;      // 恢复SFRPAGE
}

⌨️ 快捷键说明

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