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

📄 adc.c

📁 ICETEK-VC5416-EDULab瑞泰创新科技5416开发板的实验源程序
💻 C
字号:
/////////////////////////////////////////////////
//  Example For ICETEK-VC5416-EDU              //
//          CTR Version : V4                   //
//  Filename: ADC.c                            //
//  Project : ADC.pjt                          //
//  Version : 2.00                             //
//  Write by: Daniel Hawk                      //
//  Company : Realtimedsp Co.Ltd               //
//                                             //
//  All Rights opened & no Onus  2005.06       //
/////////////////////////////////////////////////
#define	TIM		*(int *)0x24
#define	PRD     *(int *)0x25
#define	TCR		*(int *)0x26
#define	IMR		*(int *)0x0
#define	IFR		*(int *)0x1		
#define	PMST	*(int *)0x1d	
#define REGISTERCLKMD *(int *)0x58

ioport unsigned int port2,port3,port4;

#define AD_DATA	port2
#define AD_SEL  port3
#define AD_HOLD port4

void interrupt time(void);
int *ptr,k0,k1;
signed int uWork0,uWork,uWork1;
unsigned int nCount;

main()
{
	int i,j;
	asm("	ssbx	INTM");	// 关闭可屏蔽中断
	*(int *)0x58=0x0;	
	asm(" nop");
	asm(" nop");
	*(int *)0x58=0x9007;	// DSP主频改为=160MHz
	k0=k1=0;
	ptr=(int *)0x3000;	// 转换数据的保存区,从数据区3000H开始
				// 3000H-3200H保存第1通道(AIN1)的转换结果
				// 3200H-3400H保存第2通道(AIN2)的转换结果
	for(i=0;i<0x400;i++)	// 将转换数据的保存区清0
      		*(ptr+i)=0;
	j= PMST; 		      
	PMST = j&0xff;
	
	IMR = 0x8;
	TCR = 0x417;		// 计数器分频系数=8
	TIM = 8;
	PRD = 0x27;		
	TCR = 0x427;		//                         
	IFR = 0x100;		//   其中,时钟周期为8MHz

	AD_SEL=6;		// 通道选择 A0,A1

	asm("	rsbx	INTM");	// 开中断进行转换
      
	while ( 1 );
}

// 定时器中断服务程序,完成:保存转换结果、启动下次转换
void interrupt time(void)	
{

	AD_HOLD =0;		// 送转换信号
	for ( uWork=0;uWork<10;uWork++ );
	AD_HOLD=1;
	
	uWork0=AD_DATA;		// 从FIFO中读取转换结果
	uWork1=AD_DATA;		// 从FIFO中读取转换结果


	uWork=uWork0&0x0f000;
	if ( uWork==0x8000 )
	{
		uWork0<<=4;		// 去掉高4位
		uWork0>>=4;	// 取低4位有效值
		*(ptr+k0)=uWork0;	// 保存结果
		k0++;
		if ( k0>=0x200 )
		{
			k0=0;	// 软中断位置1
		}
	}
	else if ( uWork==0x9000 )
	{
		uWork0<<=4;	// 去掉高4位
		uWork0>>=4;	// 取低4位有效值
		*(ptr+k1+0x200)=uWork0;	// 保存结果
		k1++; k1%=0x200;
	}
	uWork=uWork1&0x0f000;
	if ( uWork==0x8000 )
	{
		uWork1<<=4;		// 去掉高4位
		uWork1>>=4;	// 取低4位有效值
		*(ptr+k0)=uWork1;	// 保存结果
		k0++;
		if ( k0>=0x200 )
		{
			k0=0;	
		}
	}
	else if ( uWork==0x9000 )
	{
		uWork1<<=4;	// 去掉高4位
		uWork1>>=4;	// 取低4位有效值
		*(ptr+k1+0x200)=uWork1;	// 保存结果
		k1++; 
		if ( k1>=0x200 )
		{
			k1=0;	// 软中断位置2
		}
	}


}

⌨️ 快捷键说明

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