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

📄 mt888.c

📁 Code C for transmit and receive DTMF with MT8888
💻 C
字号:
#include "AT89X52.h"
#include "MT888.h"
#include "stdio.h"

#define RS_MT P1_7
#define RD_MT P1_6
#define WR_MT P1_5

#define D0 P3_7
#define D1 P3_6
#define D2 P3_5
#define D3 P3_4

char bdata MT_Read;
sbit TFinished = MT_Read^1;
sbit DRecieved = MT_Read^2;

unsigned char  Digit;
/////////////////////////////////////////////////////////////////
//														////////
////////////////////////////////////////////////////////////////

void write_data_transmit(unsigned char dat)
{
	if(dat&0x01==1) D0 = 1;
	else D0 = 0;
	if((dat>>1)&0x01==1) D1 = 1;
	else D1 = 0;
	if((dat>>2)&0x01==1) D2 = 1;
	else D2 = 0;
	if((dat>>3)&0x01 ==1) D3 = 1;
	else D3 = 0;
	RS_MT = 0;
	RD_MT = 1;
	WR_MT = 0;
	WR_MT =1;
}

unsigned char read_data_reg()
{
	unsigned char dat;
	D0 = 1;
	D1 = 1;
	D2 = 1;
	D3 = 1;
	RS_MT = 0;
	WR_MT = 1;
	RD_MT = 0;
	dat = 0x00;
	if(D0 == 1) dat = dat|0x01;
	if(D1 == 1) dat = dat|0x02;
	if(D2 == 1) dat = dat|0x04;
	if(D3 == 1) dat = dat|0x08;
	RD_MT = 1;
	return dat;

}

void write_control_reg(unsigned char dat)
{
	if(dat&0x01==1) D0 = 1;
	else D0 = 0;
	if((dat>>1)&0x01==1) D1 = 1;
	else D1 = 0;
	if((dat>>2)&0x01==1) D2 = 1;
	else D2 = 0;
	if((dat>>3)&0x01 ==1) D3 = 1;
	else D3 = 0;
	RS_MT = 1;
	RD_MT = 1; 	
	WR_MT = 0;
	WR_MT = 1;
}

unsigned char read_status_reg()
{
	unsigned char dat;
	D0 = 1;
	D1 = 1;
	D2 = 1;
	D3 = 1;
	RS_MT = 1;
	WR_MT = 1;
	RD_MT = 0;
    dat=0x00;
	if(D0 ==1) dat=dat|0x01;
	if(D1 ==1) dat=dat|0x02;
	if(D2 ==1) dat=dat|0x04;
	if(D3 ==1) dat=dat|0x08;

	RD_MT = 1;						   
	return dat;

}

void initMT8888(void)
{

	read_status_reg();
	write_control_reg(0);
	write_control_reg(0);
	write_control_reg(8);
	write_control_reg(0);
	read_status_reg();

}
void setupMT8888(void)
{

	write_control_reg(13);
	write_control_reg(0);
}

void TransmitDTMF(unsigned char digit)
{
	write_data_transmit(digit);
	do	
	{
		MT_Read = 0x00;
		MT_Read = read_status_reg();

	}
	while (TFinished==0);
}

unsigned char ReceiveDTMF()
{
	MT_Read = 0x00;
	MT_Read = read_status_reg();
	while(MT_Read^2==1)
	{
		Digit = read_data_reg();
		MT_Read = read_status_reg();
	}
	Digit =Digit&0x0f;	 // b? nible cao v

⌨️ 快捷键说明

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