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

📄 adc0.c

📁 C8051F020单片机的AD测试程序
💻 C
字号:
/************************************************************************************
*  Copyright (c) 2004,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* 文件名称: ADC0.C
* 文件标识: none
* 适用器件: c8051f020
* 
* 摘 要: 本文件是AD子程序;使用外部22.1184MHz晶振,将跳线器JP3短接
* 
* 当前版本:1.0
* 作 者:卢 阳
* 完成日期:2004年11月14日
*
* 历史版本:0.9 
* 原作者 : 李林利
* 完成日期:2004年1月1日
*************************************************************************************/

/************************************************************************************/
// 引用外部头文件

#include "c8051f020.h"                 
#include <stdio.h>
#include "ADC.h"

/************************************************************************************/

/***********************************************************************************
* 函数名称:UART0_Init;
*
* 函数功能描述:设置UART0使用定时器Timer1, 应用 <baudrate> 和 8-N-1.
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void UART0_Init (void)
{
   SCON0   = 0x50;                     // SCON0: 模式1, 8位UART, 使能RX
   TMOD    = 0x20;                     // TMOD: 定时器1, 模式2, 8位重载 
   TH1    = -(SYSCLK/BAUDRATE/16);     // 设置定时器Timer1重装载值,应用 <baudrate> 
   TR1    = 1;                         // 启动Timer1
   CKCON |= 0x10;                      // 定时器Timer1使用系统时钟作为时间基准
   PCON  |= 0x80;                      // SMOD00 = 1
   TI0    = 1;                         // Indicate TX0 ready
}

/***********************************************************************************
* 函数名称:ADC0_Init;
*
* 函数功能描述:设置ADC0使用定时器Timer3溢出作为转换源,转换完成后产生中断,使用左对齐输出模式
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void ADC0_Init (void)
{
   ADC0CN = 0x45;                      // 关闭ADC0; 低能追踪模式
                                       // DC0使用定时器Timer3溢出作为转换源;
									   //使用左对齐输出模式

   REF0CN = 0x07;                      // 打开温度传感器, on-chip VREF,
                                       // VREF输出缓存器
   AMX0SL = 0x00;                      // 选择AIN0作为ADC mux输出
   ADC0CF = (SYSCLK/2500000) << 3;     // ADC转换时钟= 2.5MHz
   ADC0CF &= ~0x07;                    // PGA gain = 1

   EIE2 |= 0x02;                       // 打开ADC中断
}


/***********************************************************************************
* 函数名称:Timer3_Init;
*
* 函数功能描述:lcd_init;
*              
* 输入参数:none;
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void Timer3_Init (int counts)
{
   TMR3CN = 0x02;                      // 停止Timer3; 清除TF3;
                                       // 使用SYSCLK作为时间基准
   TMR3RL  = -counts;                  // 初始化装载值
   TMR3    = 0xffff;                   // 设置立即装载
   EIE2   &= ~0x01;                    // 关闭定时器Timer3中断
   TMR3CN |= 0x04;                     // 开启Timer3
}

/***********************************************************************************
* 函数名称:ADC0_enable
*
* 函数功能描述:ADC0开关,1:打开;0:关闭
*              
* 输入参数:1:打开;0:关闭
*
* 返回数据:none;
*
* 注意:    none;
************************************************************************************/

void ADC0_enable(unsigned char flag)
{
	if(flag)
	{
		AD0EN = 1;                          // 打开ADC
    	EA = 1;                             // 开启全局中断
	}
	else
	{
		AD0EN = 0;                          // 关闭ADC
//    	EA = 0;                             // 关闭全局中断
	}
}


/***********************************************************************************/
// 文件结束
/***********************************************************************************/

⌨️ 快捷键说明

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