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

📄 x9c503a.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
字号:
#include "f2407regs_c.h"  
#include "typedef.h" 


void delayX9c503(uchar n);
void setX9c503ToLowest();
void adjustX9c503(uchar dir,uint n);
void judgePower(void);

#define dpm_cs_0 	MCRC &= 0xfeff;PFDATDIR |= 0x0100;PFDATDIR &= 0xfffe
#define dpm_cs_1 	MCRC &= 0xfeff;PFDATDIR |= 0x0101
#define dpm_ud_0 	MCRC &= 0xff7f;PEDATDIR |= 0x8000;PEDATDIR &= 0xff7f
#define dpm_ud_1 	MCRC &= 0xff7f;PEDATDIR |= 0x8080
#define dpm_inc_0 	MCRC &= 0xfffe;PEDATDIR |= 0x0101;PEDATDIR &= 0xfffe
#define dpm_inc_1	MCRC &= 0xfffe;PEDATDIR |= 0x0101
#define dpm_Vw_0	MCRA &= 0xfff7;PADATDIR |= 0x0800;PADATDIR &= 0xfff7
#define dpm_Vw_1	MCRA &= 0xfff7;PADATDIR |= 0x0808

/*
	数字电位器延时	
*/
void delayX9c503(uchar n)
{
	uint i;
	for(i=0;i<n;i++)
	{
		i=i;
	}
}
/*
	将电位器调节到最低档
*/

void setX9c503ToLowest()
{
	uint i;	 
	uint n = 200;
	
	dpm_cs_0;	// cs=0,open x9c503
    for(i=0;i<n;i++)
    {
    	dpm_Vw_0;	
	    dpm_inc_1;	// inc = 1
	    dpm_ud_0;	        
	    delayX9c503(10);
	    dpm_inc_0;	// inc = 0
	    delayX9c503(50);
	}  
	dpm_cs_1;	//cs=1,close x9c503 	 
}
/*
	dir = 1,表示增加
	dir = 0,表示减少
	n:	表示负脉冲个数
*/
void adjustX9c503(uchar dir,uint n)
{
	uint i;	
	                        
	dpm_cs_0; 
	if(dir)
    {
    	dpm_ud_1;	//u/d=0,increase
	    for(i=0;i<n;i++)
	    {		
			dpm_inc_1;	// inc = 1	        
		    delayX9c503(10);
		    dpm_inc_0;	// inc = 0
		    delayX9c503(50);
		} 
	}
	else
	{
		dpm_ud_0;	//u/d=0,decrease
	    for(i=0;i<n;i++)
	    {	        			
			dpm_inc_1;	// inc = 1	        
		    delayX9c503(10);
		    dpm_inc_0;	// inc = 0
		    delayX9c503(50);
		}    
	}
	dpm_cs_1;	//cs=1,close x9c503	
}
void judgePower()
{
	uint i,j,data = 0;
	uint flag = 0;
	uint result[5];
	
	for(j=0;j<2;j++)
	{
		ADCCTRL1 = 0x0030;
		asm(" nop");
		ADCCTRL2 = 0x6000;
		CHSELSEQ1 = 0x0C;				
		MAXCONV = 0x00;			
		asm(" CLRC     SXM");		
			
		data = RESULT0;	
		data = data >> 6;
		result[j] = data;
	}	//清除开机产生的误差数据
		
	for(j=0;j<5;j++)
	{
		ADCCTRL1 = 0x0030;
		asm(" nop");
		ADCCTRL2 = 0x6000;
		CHSELSEQ1 = 0x04;				
		MAXCONV = 0x00;			
		asm(" CLRC     SXM");		
		
		data = RESULT0;	
		data = data >> 6;
		result[j] = data;
	}
	data = (result[0]+result[1]+result[2]+result[3]+result[4])/5;
	if( (data>=0x2f8) && (data<=0x210) )
	{
		while(1)
		{
			feedWatchDog();
			Delay_100_Milli_Seconds();	//100ms		
			if(flag==0){LedOutput2(0);flag=1;}
			else{LedOutput2(1);flag=0;}		//报警出错闪烁		
		}
	}
}

⌨️ 快捷键说明

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