📄 lab.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 + -