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

📄 speaker.c

📁 一些DSP2407源程序
💻 C
字号:
#include "2407c.h"                    
#define nMusicNumber 40
void interrupt gptime1(void);     
void gp_init(void);      
void delay(unsigned int nDelay);

unsigned int uWork,nCount;
unsigned int music[nMusicNumber][2]=
{
	{182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480},
	{182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480},
	{182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240},
	{182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240},
	{182,1920},{151,1920},{135,1920},{121,1920},{135,1920},{151,1920},{182,1920},{0,1920} 
};
/* 
   C   D   E   F   G   A   B
   1   2   3   4   5   6   7   11
C: 264,297,330,352,396,440,495,528

music[][0]=1/264*1000000/25nS(for 40MHz DSP clock)

6123216
.     .

*/

main()
{
	int i;
	
	for ( i=0;i<nMusicNumber;i++ )
	{
		music[i][0]*=24;
	}
	*WDCR=0x6f;
	*WDKEY=0x5555;
	*WDKEY=0xaaaa;    
	*SCSR1=0x81fe;    //40m      
	uWork=(*MCRB);
	uWork&=0x0ffbf;	/* CANTX/IOPC6 for normal I/O port */
	(*MCRB)=uWork;
	nCount=0;
	gp_init();   
	*IMR=0x3;
	*IFR=0xffff;    
	
	asm(" clrc INTM");         
	for(;;)
	{
		delay(music[nCount][1]);
		nCount++;
		nCount%=nMusicNumber;
		*T1PR = music[nCount][0]; 
	}
}               

void interrupt gptime1(void)
{
   uWork=(*PIVR);
   switch(uWork)
   {  
   		case 0x27:
   		{
			(*EVAIFRA)=0x80;
			{
				uWork=(*PCDATDIR);
				uWork|=0x4000;
				uWork^=0x40;
				(*PCDATDIR)=uWork;
			}
   		   	break;
   		}
   }
}                       

void gp_init(void)
{
   *EVAIMRA = 0x80;
   *EVAIFRA = 0xffff;
   *GPTCONA = 0x0100;
   *T1PR    = music[nCount][0]; 
   *T1CNT   = 0;
   *T1CON   = 0x1340;
}

void delay(unsigned int nDelay)
{
	int ii,jj,kk;
	for ( ii=0;ii<nDelay;ii++ )
		for ( jj=0;jj<256;jj++ )
			kk++;
}


 

⌨️ 快捷键说明

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