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

📄 lab.c

📁 运行环境:CCS2.1
💻 C
字号:
//*****************************************************************************
//  Filename:	 lab.c
//  Version:	 1.00
//  Description: the program for the c5409 box
//-----------------------------------------------------------------------------
//*****************************************************************************/
/* 变量*/
#include <math.h>

#include "dtmf.h"
/*-------------------------------------*/
int workmode0,workmode1;
int fftnum,fftworkmode ;
/*-------------------------------------*/
int ser1inrdcnt,ser1outwrcnt;
int ser1inwrcnt,ser1outrdcnt;
int ser1inbuf[10],ser1outbuf[10];
int ser1flag;
/*-------------------------------------*/
int ser0inrdcnt,ser0outwrcnt;
int ser0inwrcnt,ser0outrdcnt ;
int ser0inbuf[10],ser0outbuf[10];
int ser0flag;
/*-------------------------------------*/
int firhN ;
/*-------------------------------------*/
int int0flag ;
/*-------------------------------------*/

/*-------------------------------------*/
ioport unsigned port0;
ioport unsigned port1;
ioport unsigned port2;
ioport unsigned port3;
ioport unsigned port4;
ioport unsigned port5;
ioport unsigned port6;
ioport unsigned port7;
ioport unsigned port8;
ioport unsigned port9;
int IO_LED,LED2,LED3,LEDADDR0,LEDADDR=0;
int daout ;
extern int ad0fr,ad1fr;
/*-------------------------------------*/
int  ch1ISRData[102];		/* ISR I/O buffer 			*/
int  ch1Data[102];		/* process buffer 			*/
int  ch1Digits[28];		/* output buffer for digit results 	*/
int  ch1Taps[20];		/* filter states  			*/
int  ch1Energy[10];		/* energy template 			*/
int  ch1Oscis[16];		/* oscillator states			*/
int  ch1Phnbr[29]={0,1,2,3,4,5,6,7,8,9,1,2,4,5,6,7,8,9,0,1,1,4,5,6,7,8,9,0,-1};	/* phone number buffer			*/
int  *ch1ISRDataPtr = &ch1ISRData[0];	/* ptr to ISR I/O buffer 	*/
int  *ch1DataPtr = &ch1Data[0];			/* ptr to ISR I/O buffer 	*/
int  ch1ISRDataStat = 0;	/* status of ISR I/O buffer 		*/
DTMFENCOBJ	ch1EncObj = {	&ch1Data[0],
				&ch1Oscis[0],
				32767,
				5,
				5,
				&ch1Phnbr[0],
				5,
				5,
				1	};
DTMFENCOBJ 	*ch1EncObjPtr = &ch1EncObj;

DTMFDECOBJ 	ch1DecObj = {	&ch1ISRData[0],
				&ch1Taps[0],
				&ch1Energy[0],
				&ch1Digits[0],
				0xFFFF,
				1,
				0	};
DTMFDECOBJ 	*ch1DecObjPtr = &ch1DecObj;
/*-------------------------------------*/
void initArrays(void);
/*-------------------------------------*/
void main()
{ 
//----------------------------------------------  

//----------------------------------------------  

//----------------------------------------------  
//init c54 and the serial in&out buf and buf's pointer
    workmode0 = 4 ;
    workmode1 = 0x1d;
    ad0fr = 1026;
    ad1fr = 1026;
start:           
    c54_init(); 	         /*C54的初始化*/
    //initArrays(); 						

    ser0inwrcnt = 1 ;
    ser0outrdcnt = 5;
    ser0inrdcnt = 5 ;
    ser0outwrcnt = 1;
    ser0flag = 0;

	ch1ISRDataPtr=&ch1ISRData[0];
	ch1DataPtr = &ch1Data[0];
	ch1Digits[27]=0xff ;
	ch1ISRDataStat = 0;
	//initArrays();
	initoscis(ch1EncObjPtr);
//----------------------------------------------  
//----------------------------------------------  


	for (;;) 
   		{   
 
/************************************************/
/*                 ser0 process                 */   		
/************************************************/
   			if (ser0flag >= 1){    
				ser0inrdcnt = (ser0inrdcnt+1)%10;
				ser0outwrcnt =(ser0outwrcnt+1)%10;
				if (workmode0 == 4){
					if(ch1ISRDataPtr == (&ch1ISRData[0]+101)){	
						(*ch1ISRDataPtr) = ser0inbuf[ser0inrdcnt]>>3 ;
						ser0outbuf[ser0outwrcnt] = (*ch1DataPtr) ;
						ch1ISRDataPtr = &ch1ISRData[0];
						ch1DataPtr = &ch1Data[0];
						ch1ISRDataStat = 1;
						
					}
					else{ 
						(*ch1ISRDataPtr++) = ser0inbuf[ser0inrdcnt] ;
						ser0outbuf[ser0outwrcnt] = (*ch1DataPtr++) ;
					}	
					if(ch1ISRDataStat==1){
						ch1ISRDataStat = 0;
						dtmfDecode(ch1DecObjPtr);
							if (ch1Digits[27]!=0xff){
								ch1Digits[27]=0xff;							    
							}
						dtmfEncode(ch1EncObjPtr);
					}
								
				}
				if (workmode0 == 5){
						ser0outbuf[ser0outwrcnt] = ser0inbuf[ser0inrdcnt] ;
				}
   			    ser0flag = 0;
			}
  		}  
}
void initArrays(void)
{
	int n;

	for(n=0;n<102;n++)   {
		ch1ISRData[n] = 0;
		ch1Data[n] = 0;
	}

	for(n=0;n<10;n++)
		ch1Digits[n] = 0;

	for(n=0;n<20;n++)
		ch1Taps[n] = 0;

	for(n=0;n<10;n++)
		ch1Energy[n] = 0;

	initoscis(ch1EncObjPtr);
}

⌨️ 快捷键说明

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