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

📄 aic23_54x.c

📁 基于f54XX的dsp程序
💻 C
字号:
#include "scancode.h"
#include "myapp.h"

char ConvertScanToChar(unsigned char cScanCode);	// 将键盘扫描码转换为字符
#define REGISTERCLKMD (*(unsigned int *)0x58)
#define WAITSTATUS (*(unsigned int *)0x28)
#define SOUNDBUFFERLENGTH 0x0f000
unsigned int nSoundNumber,bPlayBack,bRecord,nCurrentSound,js,bls,bStop,bLongEnough;
#pragma DATA_SECTION(uSound,".sound")
unsigned int uSound[SOUNDBUFFERLENGTH];
ioport unsigned int port0000;
ioport unsigned int port8000;
ioport unsigned int port8001;
ioport unsigned int port8002;
ioport unsigned int port8007;

void main( void )
{
	int i,j;
	unsigned int nScanCode,nScanCode1;
	unsigned char cKey;
	
	port8000=0; port8000=0x80; port8000=0;
	port8007=0; port8007=0x40; i=port8002;
	REGISTERCLKMD=0;
//	WAITSTATUS=0x0ffff;
	js=nSoundNumber=bPlayBack=bRecord=nCurrentSound=bls=bStop=0;
//	for ( i=0;i<SOUNDBUFFERLENGTH;i++ ) uSound[i]=0;
//	initCLK(CPU_SPEED_160M);
	initMcBSP1();
	initAIC23();
	initMcBSP0();
	initInterrupt();
	initVal();
	REGISTERCLKMD=0x1007;
	for ( i=0;i<2048;i++ )	nScanCode++;
	DesableInterrupt(); js=0; bStop=1; bLongEnough=0;
	port0000=1;
	for(;;)
	{
		if ( bls )
			if ( bPlayBack==0 )
			{
				DesableInterrupt();
				bls=0;
				js=0;
				bStop=1;
			}
		if ( js==0 )
		{
			nScanCode1=port8001;
			for ( i=0;i<1024;i++ );
			nScanCode=port8001;
			nScanCode&=0x0ff;
			if ( nScanCode!=0 && nScanCode!=0x0ff )
			{
				if ( nScanCode==SCANCODE_Enter )	break;
				else
				{
					cKey=ConvertScanToChar(nScanCode);
					switch ( cKey )
					{
						case '0':	// 录音
							if ( bRecord )
							{
								bRecord=0;
								nCurrentSound=nSoundNumber;
								DesableInterrupt(); bStop=1;
								js=0;
							}
							else
							{
								bRecord=1;
								nSoundNumber=nCurrentSound=0;
								EnableInterrupt(); bStop=0;
								bLongEnough=0;
							}
							break;
						case '1':	// 放音
							if ( bLongEnough )
							{
								bPlayBack=1; nSoundNumber=0;
								bls=1; 
								EnableInterrupt(); bStop=0;
							}
							break;
						case 0:
						default: break;
					}
				}
				i=port8002;
			}
		}
		if ( bStop )
		{
			for ( i=0;i<1024;i++ )
				for ( j=0;j<1024;j++ );
		}
	}
}

interrupt void rxData( void )
{
   unsigned int i;
   unsigned int uL,uR;
   
	js++; js%=61440;
	uL=DRR10;
	uR=DRR20;
	if ( bPlayBack )
	{
		i=nCurrentSound+nSoundNumber; i%=SOUNDBUFFERLENGTH;
		DXR10=DXR20=uSound[i];
		nSoundNumber++;
		if ( nSoundNumber>=SOUNDBUFFERLENGTH )
			bPlayBack=0;
	}
	else if ( bRecord)
	{
		uSound[nSoundNumber]=uL;
		nSoundNumber++;
		if ( nSoundNumber>=SOUNDBUFFERLENGTH )
		{
			bLongEnough=1;
			nSoundNumber=0;
		}
		DXR10=uL;
		DXR20=uR;
   }
}

char ConvertScanToChar(unsigned char cScanCode)
{
	char cReturn;
	
	cReturn=0;
	switch ( cScanCode )
	{
		case SCANCODE_0: cReturn='0'; break;
		case SCANCODE_1: cReturn='1'; break;
		case SCANCODE_2: cReturn='2'; break;
		case SCANCODE_3: cReturn='3'; break;
		case SCANCODE_4: cReturn='4'; break;
		case SCANCODE_5: cReturn='5'; break;
		case SCANCODE_6: cReturn='6'; break;
		case SCANCODE_7: cReturn='7'; break;
		case SCANCODE_8: cReturn='8'; break;
		case SCANCODE_9: cReturn='9'; break;
	}
	 
	return cReturn;
}


⌨️ 快捷键说明

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