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

📄 main.c

📁 这是基于dsp编写的利用各种方法产生来启动AD,包含书上介绍的所有方法
💻 C
字号:
/*Main.c*/ 
#include "global.c" 
void SystemInit();
void KickDog();  
void AD_Sample(); 
void Que();
unsigned int t0=0,i=0,j=0;   
unsigned int RESULT_0=0,RESULT_8=0;  
unsigned int AD0[20],AD_0,AD8[20],AD_8;
float AD_SIG0=0.0,AD_SIG8=0.0;  

main()
{  
  SystemInit();         		//系统初始化
  AD_Sample();     
     while(1)
      {	 
     	  asm(" NOP ");
          asm(" NOP ");  
     	for(i=0;i<20;i++) 
      	 	{ 
      	 		
      	 		RESULT_0=RESULT0>>6; 
      	 		RESULT_8=RESULT1>>6; 
      	 		AD0[i]=RESULT_0;
      	 		AD8[i]=RESULT_8;
      	 	}
      	Que();			//排队滤波         
      }
}     

void SystemInit() 
{  
 
	asm(" SETC	INTM ");	//关闭总中断 
	asm(" CLRC  SXM  ");	 //禁止符号位扩展 
	asm(" CLRC  CNF  ");    //B0块映射为 on-chip DARAM
	asm(" CLRC  OVM  ");    // 累加器结果正常溢出
	SCSR1=0x83FE;         // 系统时钟CLKOUT=20*1=20M 
	   						// 打开ADC,EVA,EVB,CAN和SCI的时钟
	WDCR=0x006F;			// 禁止看门狗,看门狗时钟64分频 
	KickDog();    		// 初始化看门狗 
}  
   
void AD_Sample()
{   

    ADCTRL1=0x4000;			//ADC模块复位 
    asm(" NOP	");
    ADCTRL1=0x2050;       // 仿真悬挂,ADC完成当前转换后停止,连续转换模式,级连模式 
    
    MAXCONV=0x0008; 
    CHSELSEQ1=0x80;       //第0通道
    ADCTRL2=0x4000;         //复位使排序器指针指向CONV00
    ADCTRL2=0x2000;		// 启动ADC转换 
        
}

void Que()
{
   unsigned int MaxAD0=0;
   unsigned int MinAD0=AD0[0];
   unsigned int MaxAD8=0;
   unsigned int MinAD8=AD8[0];
   unsigned int tempAD0=0;
   unsigned int tempAD8=0;
   for(j=0;j<20;j++)
   {
      if(AD0[j]>MaxAD0)   MaxAD0=AD0[j];
      else if(AD0[j]<MinAD0)   MinAD0=AD0[j]; 

      if(AD8[j]>MaxAD8)   MaxAD8=AD8[j];
      else if(AD8[j]<MinAD8)   MinAD8=AD8[j];  
     
   }  
   for(j=0;j<20;j++)
   {
      tempAD0=tempAD0+AD0[j];
      tempAD8=tempAD8+AD8[j];
    } 
    AD_0=(tempAD0-MaxAD0-MinAD0)/18; 
    AD_8=(tempAD8-MaxAD8-MinAD8)/18; 
    AD_SIG0=AD_0*4.983/1023;    		//1023~3.3*(10+5.1)/10=4.983V,对应满量程
    AD_SIG8=AD_8*4.983/1023;            //电路中采用的是5.1k和10k的电阻分压
    asm(" NOP ");          //请将光标移到此处设置断点,并用debug->Animate监测数据
}     

/*踢除看门狗 */
void KickDog()			
{
	WDKEY=0x5555;
	WDKEY=0xAAAA;
}

⌨️ 快捷键说明

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