📄 otelc1.c
字号:
uchar idata ToneNoneCounter ;
uchar idata ToneCounter ; //450HZ的个数
uchar idata ToneOtherCounter ;//不是450HZ的个数
uchar idata ToneTimeCounter ; //定时器到的个数 70ms采集一次
bit ToneFlag ; //是否检测
uchar idata ToneKind ;// 线路音的种类
//0x30 忙音
//0x31 拨号音
//0x32 回铃音
//0x33 记费信号
uchar SendDxFlag ;
void Phone_ToneCtrl(uchar Onoff)
{
ToneFlag = Onoff ;
ToneCounter = 0 ;
ToneTimeCounter = 0 ;
ToneOtherCounter = 0 ;
ToneNoneCounter = 0 ;
ToneKind = 0 ;
EA=0;
TH1 = 0;
TL1 = 0;
TMOD = (TMOD & 0x0F) | 0x50; /* 模式1,计数器*/
TR1 = 1 ;
EA = 1 ;
}
void Phone_ToneCheck() using 2
{
uchar counter ;
if(ToneFlag == FALSE) return ;
ToneTimeCounter ++ ;
if(ToneTimeCounter >=7)
{
TR1 = 0 ;
ToneTimeCounter = 0 ;
counter = TL1 ;
// SBUF = counter ;
if((counter>=29)&&(counter<=33))
{
ToneCounter ++ ;
ToneNoneCounter = 0 ;
ToneOtherCounter = 0 ;
if(ToneCounter>16)
{
ToneCounter = 0 ;
ToneKind = 0x31 ;
disp_buf = 0x0d ;
}
}
else
{
ToneOtherCounter++ ;
ToneNoneCounter++ ;
if(ToneNoneCounter>100)
{
ToneNoneCounter = 0 ;
ToneCounter = 0 ;
ToneKind = 0 ;
ToneOtherCounter = 0 ;
disp_buf = 0xff ;
}
if(ToneOtherCounter>1)
{
ToneOtherCounter = 0 ;
if((ToneCounter>=3)&&(ToneCounter<=10))
{
ToneNoneCounter = 0 ;
ToneKind = 0x30 ;
disp_buf = 0x0b ;
}
else if((ToneCounter>10)&&(ToneCounter<=16))
{
ToneNoneCounter = 0 ;
ToneKind = 0x32 ;
disp_buf = 0x0c ;
Huilingying_dingshi = 1 ;
}
ToneCounter = 0 ;
}
}
TR1 = 1 ;
TH1 = 0 ;
TL1 = 0 ;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -