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

📄 adc2.c

📁 TMS320LF2407A对ADC0809的控制及数据的读取和存储。
💻 C
字号:
/* 2407 单通道AD转换实验 */

#include "register.h"
#define ADCNUMBER 256
void ADInit(void);						// AD模块初始化
void SysInit(void);						// 系统初始化
void ADSOC(void);						// 启动AD转换
void interrupt adint(void);				// 中断子程序
unsigned int nADCIn15[ADCNUMBER]; 		// 保存通道ADCIN15的转换结果,循环保存
unsigned int nADCount;					// AD转换次数
volatile unsigned int *j;				// 定义一个指针变量j

main()
 {
	asm("	setc INTM");
	SysInit();
	ADInit();
	asm("	clrc INTM");
	ADSOC();							// 开启AD转换
 }
 
void ADInit(void)
 {
	int i; 
	for(i=0;i<ADCNUMBER;i++) 			// 缓冲区清0 
	nADCIn15[i]=0; 
	nADCount=0;
	
	*ADCTRL1=0x0040;					// 设置连续转换模式
	*ADCTRL2=0x4000;					// 复位SEQ1,SEQ1受EVA的控制
	*MAXCONV=0x0000;					// 最大转换数为1
	*CHSELSEQ1=0x000F;					// 转换通道为15

	*GPTCONA=0x400; 					// T2周期中断标志触发AD转换
	*T2CNT=0x0000; 						// T2计数器清0
	*T2CON=0x170C; 						// T2为连续增计数模式,128分频,且选用内部时钟源
	*T2PR=0x75; 						// 设置T2的周期寄存器
	*EVAIFRB=0xFFFF; 					// 清除EVA中断标志,写"1"清0
 }

void SysInit(void)
 {
	asm("	setc SXM");					// 符号位扩展有效
	asm("	clrc OVM");					// 累加器中结果正常溢出
	asm("	clrc CNF");					// B0被配置为数据存储空间
	*SCSR1=0x83EF; 						// CLKIN=15M,CLKOUT=2*CLKIN=30M
	*WDCR=0x0E8;						// 不使能看门狗,因为SCSR2中的WDOVERRIDE
										// 即WD保护位复位后的缺省值为1,故可以用
	  									// 软件禁止看门狗

	*IMR=0x0020; 						// 允许INT6中断
	*IFR=0x0FFFF; 						// 清除全部中断标志,"写1清0"
 }

void ADSOC(void)
 {
	*T2CON=*T2CON|0x40; 				// 启动定时器2
 }
 
void interrupt adint()
 {
	asm("	clrc SXM");					// 抑制符号位扩展
	nADCIn15[nADCount]=(*RESULT15>>6);	// 取通道15的转换结果,结果右移6位
	nADCount++;							// 转换次数自增
	if(nADCount>=ADCNUMBER)	
	 {									// 结果循环存放
		nADCount=0;	
	 }			
	*EVAIFRB=0xFFFF; 					// 清除EVA中断标志,写"1"清0
	//*ADCTRL2=*ADCTRL2|0x4200; 		// 复位SEQ1,且清除INT FLAG SEQ1标志写"1"清0
	asm("	clrc INTM");				// 开总中断,因为一进入中断总中断就自动关闭了
 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 

⌨️ 快捷键说明

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