📄 mt8880.c
字号:
/*------------- 泰兴电子集团 ------------------
*----------------------------------------------
*文件名: MT8880.C
*开发: www.at90s1200.go.nease.net
*创建日期: 2004-6-30 16:19
*创建人: 尹刚
*功能: 8880功能函数
-----------------------------------------------
-----------------------------------------------*/
#include "global.h"
/***************************************************************
*名称: void MT8880_WC(Byte com);
*功能: 写控制寄存器CRA或CRB
*入口参数: com--要写入的数据
*出口参数: 无
****************************************************************/
void MT8880_WC(Byte com)
{
EA=0;
MT_CS=0;
MT_RS0=1;
MT_RW=0;
_nop_();
MT_CLK=1;
com&=0x0f;
MT_DataBus&=0xf0;
MT_DataBus|=com;
_nop_();
MT_CLK=0;
MT_CS=1;
P2=0xff;
EA=1;
}
/***************************************************************
*名称: void MT8880_WD(Byte dat);
*功能: 写MT8880的发送数据寄存器
*入口参数: dat--要发送的数据
*出口参数: 无
****************************************************************/
void MT8880_WD(Byte dat)
{
EA=0;
MT_CS=0;
MT_RS0=0;
MT_RW=0;
MT_CLK=1;
dat&=0x0f;
MT_DataBus&=0xf0;
MT_DataBus|=dat;
MT_CLK=0;
MT_CS=1;
P2=0xff;
EA=1;
}
/***************************************************************
*名称: Byte MT8880_RD(void);
*功能: 读MT8880的接收数据寄存器
*入口参数: 无
*出口参数: temp--读出的数据,低4位有效
****************************************************************/
Byte MT8880_RD(void)
{
Byte temp;
EA=0;
MT_DataBus |= 0x0f; //D0~D3设置为输入
MT_CS = 0;
MT_RS0 = 0;
MT_RW = 1;
MT_CLK = 1;
_nop_();
temp=MT_DataBus;
MT_CLK = 0;
temp &= 0x0f;
MT_CS = 1;
P2 = 0xff;
EA=1;
return(temp);
}
/***************************************************************
*名称: Byte MT8880_RS(void);
*功能: 读MT8880的状态寄存器
*入口参数: 无
*出口参数: temp--读出的数据,低4位有效
****************************************************************/
Byte MT8880_RS(void)
{
Byte temp;
EA=0;
MT_DataBus|=0x0f; //D0~D3设置为输入
MT_CS=0;
MT_RS0=1;
MT_RW=1;
MT_CLK=1;
_nop_();
temp=MT_DataBus;
temp &=0x0f;
MT_CLK=0;
MT_CS=1;
P2=0xff;
EA=1;
return(temp);
}
/***************************************************************
*名称: void InitMT8880(Byte mode);
*功能: 初始化MT8880,中断允许,双音模式
*入口参数: mode 可以选择CP8880,DTMF8880,RST8880三个参数
*出口参数: 无
****************************************************************/
void InitMT8880(Byte mode)
{
MT8880_WC(0x00); //写控制寄存器,确保控制寄存器指针指向CRA
MT8880_WC(0x00);
MT8880_WC(mode); //写控制寄存器A
MT8880_WC(0x00); //写控制寄存器B
MT8880_RS(); //读状态寄存器,用以清除各标志
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -