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

📄 dtmf.cpp

📁 包括傅里叶变换和傅里叶反变换
💻 CPP
字号:
/*
GPE13(KSCAN2)  DV
GPG6(KSCAN1)   D3
GPF2(EINT2)    D2
GPG11(EINT19)  D1
GPF0(EINT0)    D0
*/


#include "DTMF.h"








unsigned char DTMF_Init(void)
{
	unsigned char receive_data=0;
	_int32 b;

    b = GetGPECON();
	b &= ~((1<<26)|(1<<27));
    SetGPECON(b);
	b = GetGPEUP();
    b &= ~(1<<13);
    SetGPEUP(b);

    b = GetGPFCON();
	b &= ~((1<<4)|(1<<5)|(1<<0)|(1<<1));
    SetGPFCON(b);
	b = GetGPFUP();
	b &= ~((1<<0)|(1<<2));
    SetGPFUP(b);

    b = GetGPGCON();
	b &= ~((1<<12)|(1<<13)|(1<<22)|(1<<23));
    SetGPGCON(b);
	b = GetGPGUP();
	b &= ~((1<<6)|(1<<11));
    SetGPGUP(b);


	if(GetGPEDAT() & (1<<13))
	{
	    receive_data |= 0x10;
	}
    if(GetGPGDAT() & (1<<6))
	{
	    receive_data |= 0x08;
	}
	if(GetGPFDAT() & (1<<2))
	{
	    receive_data |= 0x04;
	}
	if(GetGPGDAT() & (1<<11))
	{
	    receive_data |= 0x02;
	}
	if(GetGPFDAT() & (1<<0))
	{
	    receive_data |= 0x01;
	}
	return(receive_data);
}


unsigned char ReadDTMF(unsigned char last_status,unsigned char *valid_data)
{
	unsigned char receive_data=0;
    *valid_data = 0;
	if(GetGPEDAT() & (1<<13))
	{
	    receive_data |= 0x10;
	}
    if(GetGPGDAT() & (1<<6))
	{
	    receive_data |= 0x08;
	}
	if(GetGPFDAT() & (1<<2))
	{
	    receive_data |= 0x04;
	}
	if(GetGPGDAT() & (1<<11))
	{
	    receive_data |= 0x02;
	}
	if(GetGPFDAT() & (1<<0))
	{
	    receive_data |= 0x01;
	}

	if((receive_data ^ last_status) & 0x10)
    {
	    if(receive_data & 0x10)
		{
		    *valid_data = 0x0f & receive_data;
		}
        return(receive_data);
	}

	return(last_status);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -