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

📄 motor.c

📁 ICETEK-LF2407-A-EDU的全部试验程序,非常适合DSP开发
💻 C
字号:
#include "2407c.h"                    

#define T46uS		0x0d40

void interrupt gptime1(void);     
void gp_init(void);      
char ConvertScanToChar(unsigned char cScanCode);
void Delay(unsigned int nDelay);

ioport unsigned char port8001;	
unsigned int uWork,nCount;

main()
{   char cKey;
	unsigned char nScanCode;
	unsigned int uWork1,nSpeed;

	*WDCR=0x6f;
	*WDKEY=0x5555;
	*WDKEY=0xaaaa;    
	*SCSR1=0x81fe;    //40m      
	uWork=(*MCRC);
	uWork&=0x0efdf;	/* PWM11/IOPE5,TDIR2/IOPF4 for normal I/O ports */
	(*MCRC)=uWork;
	gp_init();   
	*IMR=0x3;
	*IFR=0xffff;    
	nCount=0;
	uWork=(*WSGR);
	uWork&=0x0fe3f;
	(*WSGR)=uWork;
		
	uWork=(*PFDATDIR);
	uWork|=0x1000;
	uWork1&=0xffef;		/* Set direct=0 */
	(*PFDATDIR)=uWork;
	asm(" clrc INTM");         
	Delay(128);
	*T1PR=T46uS; 
	nSpeed=T46uS;
	for(;;)
	{
		if ( nCount>=16 )
		{
			nCount=0;
			nScanCode=port8001;
			nScanCode&=0x0ff;
			if ( nScanCode!=0 )
			{
				cKey=ConvertScanToChar(nScanCode);
				if ( cKey=='A' )
				{
   					*T1PR=T46uS*9/5; 
					uWork1=(*PFDATDIR);
					uWork1|=0x0010;	/* Set direct=1 */
					(*PFDATDIR)=uWork1;
   					Delay(128);
   					*T1PR=nSpeed; 
				}
				else if ( cKey=='B' )
				{
   					*T1PR=T46uS*9/5; 
					uWork1=(*PFDATDIR);
					uWork1&=0xffef;	/* Set direct=0 */
					(*PFDATDIR)=uWork1;
   					Delay(128);
   					*T1PR=nSpeed; 
				}
				else if ( cKey=='C' )
				{
   					if ( nSpeed== 0x17D9 )
   						nSpeed=T46uS;
   					else
   						nSpeed=0x17D9;
   					*T1PR=nSpeed; 
				}
				else if ( cKey=='D' )
				{
   					if ( nSpeed== 0x0a40 )
   						nSpeed=T46uS;
   					else
   						nSpeed=0x0a40;
   					*T1PR=nSpeed; 
				}
			}
		}
	}
}               

void interrupt gptime1(void)
{
   uWork=(*PIVR);
   switch(uWork)
   {  
   		case 0x27:
   		{
			(*EVAIFRA)=0x80;
			uWork=(*PEDATDIR);
			uWork|=0x2000;
			uWork^=0x0020;
			(*PEDATDIR)=uWork;
			nCount++;
   		   	break;
   		}
   }
}                       

void gp_init(void)
{
   *EVAIMRA = 0x80;
   *EVAIFRA = 0xffff;
   *GPTCONA = 0x0100;
   *T1PR    = T46uS*9/5; 
   *T1CNT   = 0;
   *T1CON   = 0x1340;
}

char KeyLUT[16]={ 'A','B','C','D', 
  			      'E','F','G','H',
				  'I','J','K','L',
				  'M','N','O','P'
				};
char ConvertScanToChar(unsigned char cScanCode)
{
	int nWork;
	unsigned int uWork1,uWork2;
	 
	uWork1=uWork2=cScanCode;
	uWork1>>=4;
	uWork2&=0x0f;
	switch ( uWork1 )
	{
		case 1: nWork=0; break;
		case 2: nWork=4; break;
		case 4: nWork=8; break;
		case 8: nWork=12; break;
	}
	switch ( uWork2 )
	{
		case 1: nWork+=3; break;
		case 2: nWork+=2; break;
		case 4: nWork+=1; break;
	}
	return KeyLUT[nWork];
}

void Delay(unsigned int nDelay)
{
	int i,j,k;
	
	for ( i=0;i<nDelay;i++ )
		for ( j=0;j<16;j++ )
			k++;
}

 

⌨️ 快捷键说明

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