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

📄 main.c

📁 基于ARM7 LPC214x的ADC实验例子程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			Chenxibing
** Modified date:		2005-01-20
** Version:
** Descriptions:		AD转换实验。
**
********************************************************************************************************/
#include "config.h"

uint32 ADC_Data;
char str[20];
/*
*******************************************************************************************************
** 函数名称 :AD_int()
** 函数功能 :AD转换完成中断
** 入口参数 :无
** 出口参数 :无	
*******************************************************************************************************
*/
void AD_int (void)
{
	ADC_Data = AD0DR3;					// 读取ADC结果
	//ADC_Data = AD0GDR;					// 读取ADC结果
	ADC_Data = (ADC_Data >> 6) & 0x3ff;
	ADC_Data = ADC_Data * 2475;			// 参考电压经过3/4分压:3300*3/4
	ADC_Data = ADC_Data / 1024;			// 在此设置端点,观察AD转换结果
	VICVectAddr = 0x00;
}

/*
*******************************************************************************************************
** 函数名称 :main()
** 函数功能 :进行3通道电压ADC转换,中断方式。
** 调试说明 :在AD_int中设置断点,观察AD转换的值。
*******************************************************************************************************
*/
int main (void)
{
	PINSEL0 = 0x00000005;	// 管脚连接串口
	PINSEL1 = 1 << 28;		// P0.30连接到AD0.3
	
	IRQEnable();
	
	/* 设置ADC中断IRQ */
	VICIntSelect = 0x00;				/* 所有中断通道设置为IRQ中断			*/
	VICVectCntl0 = 0x20 | 18;			/* 中断通道分配最高优先级	            */
	VICVectAddr0 = (uint32)AD_int;		/* 设置中断服务程序地址					*/
	VICIntEnable = 1 << 18;				/* 使能ADC中断				     		*/

	/* 进行ADC模块设置 */
	AD0INTEN |= 8;						// AD0.3转换完成产生中断
	AD0CR = (1 << 3)						|	// SEL=8,选择通道3
			((Fpclk / 1000000 - 1) << 8)	|	// CLKDIV=Fpclk/1000000-1,转换时钟为1MHz
			(0 << 16)						|	// BURST=0,软件控制转换操作
			(0 << 17)						|	// CLKS=0, 使用11clock转换
			(1 << 21)						|  	// PDN=1,正常工作模式
			(0 << 22)						|  	// TEST1:0=00,正常工作模式
			(1 << 24)						|	// START=1,直接启动ADC转换
			(0 << 27);						 	// 直接启动ADC转换时,此位无效
	//ADC_Data = AD0GDR;							// 清除DONE标志位
	ADC_Data = AD0DR3;							// 清除DONE标志位
	
	while (1);
	return 0;		
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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