📄 dtmfscan.c
字号:
/***************************************************************************************
* 生成日期: 2007-11-15
* 文件名: dtmfidy.c
* 作者: zhouxy
* 功能说明:
DTMF检测。
双音多频收号扫描,在定时中断调用,20ms调一次
返回值:event_pool为返回的检测事件
* 主要函数清单:
void dtmfidy(unsigned char line)
*变量定义:
addr_DTMF[]:为各路的收号地址
*/
#define MT8888DR 0 /*MT8888*/
#define MT8888CR 1
#define E_NUM 5 //事件号
void dtmfidy(unsigned char line)
{
static unsigned char data bef_DTMF[6]={0,0,0,0,0,0} ; //前次检测的DTMF状态寄存器;
static unsigned char data now_DTMF[6]={0,0,0,0,0,0}; //当前检测的DTMF状态寄存器;
unsigned char line,tem=0;
if(line>=6) return;
now_DTMF[line]=XBYTE[addr_DTMF[line]+MT8888CR]&0x04; //环路检测状态寄存器b2为1
tem=bef_DTMF[line];
tem=tem&now_DTMF[line];
if((tem == 0x00) && (now_DTMF == 0x04))
{
event_pool[event_t].evecode = E_NUM; //振铃事件
event_pool[event_t].lineno = line; //线路号
event_pool[event_t].numb = XBYTE[addr_DTMF[line]+MT8888DR] & 0x0f;
if (event_pool[event_t].numb == 0x0A) event_pool[event_t].numb = 0;
event_t = (event_t + 1) % EVENT_POOL_LEN;
}
bef_DTMF[line]=now_DTMF[line];
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -