📄 adc0.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 + -