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

📄 dtmfscan.c

📁 dtmf信号的检测,用来检测dtmf信号,用于嵌入式领域
💻 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 + -