📄 test.c
字号:
#include "main.h"
unsigned char Test_FunPt;
unsigned char ExtSav,OutSav;
unsigned char Test_Link;
unsigned int Test_dialtime;
void fnTest_Ext(void)
{
unsigned char i;
for(i=0;i<OutsideTelNum;i++) //测试来电显示,DTMF和响铃
{
if(bit_is_set(OutsideRingCheck,i))
{
Test_FunPt=1;
Test_Link=i;
Test_dialtime=8000;
return;
}
}
switch(ExtTelStateCheck^ExtSav)
{
case 0x02:
if(bit_is_set(ExtTelStateCheck,cExt2Num))//测试450HZ 1
{
Writesoundway(SigCallID,cExt2Num,OFF); //
Writesoundway(2,Sig450Hz_1,ON);
Writesoundway(2,cExt2Num,ON);
}
else
{
Writesoundway(SigCallID,cExt2Num,ON); //
Writesoundway(2,Sig450Hz_1,OFF);
Writesoundway(2,cExt2Num,OFF);
}
break;
case 0x04:
if(bit_is_set(ExtTelStateCheck,cExt3Num))//测试450HZ 2
{
Writesoundway(SigCallID,cExt3Num,OFF); //
Writesoundway(3,Sig450Hz_2,ON);
Writesoundway(3,cExt3Num,ON);
}
else
{
Writesoundway(SigCallID,cExt3Num,ON); //
Writesoundway(3,Sig450Hz_2,OFF);
Writesoundway(3,cExt3Num,OFF);
}
break;
case 0x08:
if(bit_is_set(ExtTelStateCheck,cExt4Num))//测试回铃声
{
ExtTelRingState=0x80;
Writesoundway(SigCallID,cExt4Num,OFF); //
Writesoundway(4,WaitRing,ON);
Writesoundway(4,cExt4Num,ON);
}
else
{
ExtTelRingState=0x00;
Writesoundway(SigCallID,cExt4Num,ON); //
Writesoundway(4,WaitRing,OFF);
Writesoundway(4,cExt4Num,OFF);
}
break;
case 0x10:
if(bit_is_set(ExtTelStateCheck,cExt5Num))//测试音乐
{
Writesoundway(SigCallID,cExt5Num,OFF); //
Writesoundway(5,cX_Music,ON);
Writesoundway(5,cExt5Num,ON);
}
else
{
Writesoundway(SigCallID,cExt5Num,ON); //
Writesoundway(5,cX_Music,OFF);
Writesoundway(5,cExt5Num,OFF);
}
break;
case 0x20:
if(bit_is_set(ExtTelStateCheck,cExt6Num))//测试忙音
{
Writesoundway(SigCallID,cExt6Num,OFF); //
Writesoundway(Connect_Busy,cExt6Num,ON);
}
else
{
Writesoundway(SigCallID,cExt6Num,ON); //
Writesoundway(Connect_Busy,cExt6Num,OFF);
}
break;
default:break;
}
ExtSav=ExtTelStateCheck;
}
void fnTest_Out(void)
{
if (Test_dialtime)
{
--Test_dialtime;
if(Test_dialtime==5000)
{
SetBit(PORTC,(Line_LedCtr+Test_Link));
Writesoundway(Test_Link,(cX_DTMF1+Test_Link),ON);
Writesoundway(Test_Link,cX_Music,ON); //外线可听到音乐,可用来测试内外是否可通话
}
if(Test_dialtime==0) //5s后关掉音乐,测试响铃
{
Writesoundway(Test_Link,cX_Music,OFF);
}
return;
}
mDTMF_In=DTMF_Decode(Test_Link+1);
switch (mDTMF_In) //测试响铃
{
case 1:
ExtTelRingState=0x01; //对方响铃
break;
case 2:
ExtTelRingState=0x02; //对方响铃
break;
case 3:
ExtTelRingState=0x04; //对方响铃
break;
case 4:
ExtTelRingState=0x08; //对方响铃
break;
case 5:
ExtTelRingState=0x10; //对方响铃
break;
case 6:
ExtTelRingState=0x20; //对方响铃
break;
case cXin:
Test_FunPt=0;
ExtTelRingState=0x00;
ClrBit(PORTC,(Line_LedCtr+Test_Link)); //外线提示灯亮
Writesoundway(Test_Link,cX_Music,OFF); //外线可听到音乐,可用来测试内外是否可通话
Writesoundway(Test_Link,(cX_DTMF1+Test_Link),OFF);
break;
default:
break;
}
}
const void (*Test_FunTab[]) PROGMEM=
{
fnTest_Ext,
fnTest_Out,
};
void fnTelRountineTest(void)
{
void (*pp)(void);
pp= (void *) pgm_read_word_near(Test_FunTab+Test_FunPt);
pp();
}
void test(void)
{
while(bit_is_clear(PINB,Test_Flag1))//PINB3=0 for test
{
if(bit_is_set( TIFR, OCF0)) // 1ms
{
SetBit( TIFR, OCF0);
ExtTelCheck(); //分机摘机检测
OutsideTelRingCheck(); //外线振铃检测
fnTelRountineTest();
fnOSCRingFK(); //振铃声,5秒断续,即1秒送、4秒断
fnMusic(); //产生音乐
if(++timeover_200ms>=200) //0.2秒 计时
{
timeover_200ms=0;
PORTC^=Create10HZ; //产生10HZ频繁
}
wdt_reset();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -