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

📄 main.c

📁 tms320lf2407点led的代码。
💻 C
字号:
/*Main.c*/ 
/*AD采样基本程序,并带有排队滤波函数
  采样结果的精度与稳定性与基准源和信号源有关
  请在项目开发的时候选择稳定的电压基准源*/
  
#include "global.c" 
#include "math.h" 
void SystemInit();
void Timer1Init(); 
void KickDog();  
void interrupt t1_int();
void SPI_Init(); 
void DA_OUT(unsigned CHANNEL,unsigned int RNG,unsigned int SPI_DATA);
void AD_Sample(); 
void Que();
void delay_as(unsigned int a);
int numled0=200;   
unsigned int t0=0,i=0,j=0,num;   
unsigned int RESULT_0=0,RESULT_L[8]; 
int  AD0[2000],AD_0,lo[512];
unsigned int AD_FLAG=0,FLAG1,AD_GET,AD_GET1,I1,I2;
ioport port0008,port0009,port000a,port000b;
float AD_SIG0=0.0,AD_SIG8=0.0;  
double sin_n; 

unsigned int addr[1000];
unsigned int hh[20]={10000,13090,15878,18090,19511,20000,19511,18090,15878,13090,10000,
6910,4122,1910,489,0,489,1910,4122,6910};
unsigned int hh1[20];
unsigned char busy,flag_t1;
/*********************************************************************/

void main(void)
{     
   SystemInit();         		//系统初始化
   Timer1Init();
   for(i=0;i<256;i++)
   {
     lo[i]=100*cos((2*3.1415926*i)/256);
   }
   for(i=0;i<300;i++)
   {
     AD0[i]=0;
   }      
   MCRA=0x0003; 	    	//IOPA2-7,B0-7设为IO口模式
      i=0;
    ADCTRL1=0x4000;			// ADC模块复位 reset
    asm(" NOP	");
    ADCTRL1=0x0020;         // 自由运行,启动/停止模式,双排序器工作模式 3
  //  ADCTRL1 =0x0060;         // 自由运行,cont,双排序器工作模式 3
    MAXCONV=0x0008;          //max  channal number
    CHSELSEQ1=0x3210;       //第0通道
    CHSELSEQ2=0x7654;       //第0通道
    ADCTRL2=0x4000;         //复位使排序器指针指向CONV00
    ADCTRL2=0x2000;			// 启动ADC转换 
    
    PADATDIR=0xE808;    //PA3,5,6,7输出,PA3=1;P5,6,7=0,选择AV0到AD模块
    port0008=0xfe;  
    
//6个灯循环亮    
    while(1)
    {       
       port0008=0x00fe;
       delay_as(1);       
       port0008=0x00fd;
       delay_as(1);
       port0008=0x00fb;
       delay_as(1);
       port0008=0x00f7;
       delay_as(1);
       port0008=0x00ef;
       delay_as(1);
       port0008=0x00df;
       delay_as(1); 
       port0008=0x00bf;
       delay_as(1);  
       port0008=0x007f;
       delay_as(1);            
    }
 
//内部16路AD采样     
   while(1)
   { // 	 PADATDIR=PADATDIR & 0xFFFE;    //IOPA0=0;LED灭  
	  //   PADATDIR=PADATDIR |0x0101;     //IOPA0=1;LED亮  
      if(i>512)
      {
      i=0;} 	 	
     
	//AD0[i++]=RESULT_0;
//	T1CNT=0;
	EVAIFRA=0x80;       
   }   
}

void SystemInit() 
{ 
	asm(" SETC INTM ");	/* 关闭总中断 */
	asm(" CLRC  SXM  ");	/* 禁止符号位扩展 */ 
	asm(" CLRC  CNF  ");    /* B0块映射为 on-chip DARAM*/
	asm(" CLRC  OVM  ");    /* 累加器结果正常溢出*/
//	SCSR1=0x87FE;         	/* 系统时钟CLKOUT=20*2=40M PLL=1*clk*/
//	SCSR1=0x83FE;         	/* 系统时钟CLKOUT=20*2=40M */
    SCSR1=0x81FE;         	/* 系统时钟CLKOUT=6*4=40M */
	   						/* 打开ADC,EVA,EVB,CAN和SCI的时钟*/
	WDCR=0x006F;			/* 禁止看门狗,看门狗时钟64分频 */ 
//	KickDog();    			/* 初始化看门狗 */  
    IFR=0xFFFF;				/* 清除中断标志 */
    IMR=0x0002;				/* 打开中断2*/   
    WSGR=0X00;					// 禁止所有的等待状态     
}  

void Timer1Init()           
{ 
    EVAIMRA=0x0080;			//  定时器1周期中断使能 
    EVAIFRA=0xFFFF;			//  清除中断标志 
    GPTCONA=0x0000;
//	T1PR=2500;				//  定时器1初值,定时0.4us*2500=1ms 			
    T1PR=30;			
	T1CNT=0;                  //clear T1
	T1CON=0x140C;           //增模式, TPS系数40M/16=2.5M,T1使能;24M/16=1.5M
//   T1CON=0x144E;           //增模式, TPS系数20M/1=20M,T1使能	
//	KickDog();    			/* 初始化看门狗 */  				
}  

void interrupt nothing()
{
   asm(" CLRC INTM ");
   return;
}

void interrupt t1_int()
{
  	port000b=hh1[i];      
   	PBDATDIR=0xffdf;              //PB5=0(LDAC= 0).
   	PBDATDIR=0xffff;              //PB5=1(LDAC=1).        
	i++;
   	if(i>19)
   		i=0;
   	EVAIFRA=EVAIFRA&0X0080;	// 清除定时器1周期中断标志,否则以后的中断将被忽略		
   	T1CNT=0X00;				// 定时器1的计数器重新赋0
	return;						// 中断返回
}


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

void delay_ams(unsigned int a)
{
    while(a-->0)
    {
      for(i=0;i<10;i++)
      {
        for(j=0;j<21;j++);
      }
    }  
}    

void delay_as(unsigned int a)
{
    while(a-->0)
    {
      for(i=0;i<10000;i++)
      {
        for(j=0;j<70;j++);
      }
    }  
}

⌨️ 快捷键说明

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