📄 mt8880.c
字号:
#include <reg52.h>
#include"type.h"
#include"MT8880.h"
/* 延时子函数 */
void delay(UINT l)
{
UINT i;
for (i=0;i<l;i++);
}
/* 主函数(主程序) */
/* MT8880初始化子函数 */
void MT8880_INIT(void)
{
MT8880_RSO=1;
MT8880_RW=1;
delay(2);
MT8880_RSO=1;
MT8880_RW=0;
MT8880_D0=0;
MT8880_D1=0;
MT8880_D2=0;
MT8880_D3=0;
delay(2);
MT8880_RSO=1;
MT8880_RW=0;
MT8880_D0=0;
MT8880_D1=0;
MT8880_D2=0;
MT8880_D3=1;
delay(2);
MT8880_RSO=1;
MT8880_RW=0;
MT8880_D0=0;
MT8880_D1=0;
MT8880_D2=0;
MT8880_D3=0;
delay(2);
// MT8880_RSO=1;
// MT8880_RW=1;
// P1=0x3f;/* 读SR */
// P1=0x20;/* CRA=0000 */
// P1=0x20;/* CRA=0000 */
// P1=0x28;/* CRA=1000 */
// P1=0x20;
}/* CRB=0000 */
/* 发送初始化子函数 */
void tran_init(void)
{
MT8880_RSO=1;
MT8880_RW=0;
MT8880_D0=1;
MT8880_D1=0;
MT8880_D2=0;
MT8880_D3=1;
delay(2);
MT8880_RSO=1;
MT8880_RW=0;
MT8880_D0=1;
MT8880_D1=0;
MT8880_D2=0;
MT8880_D3=0;
delay(2);
// P1=0x29;/* CRA=1001 */
// P1=0x21;
} /* CRB=0001 */
/* 发送操作子函数 */
void transmit(UCHAR data *p,UCHAR count)
{
UCHAR i;
for (i=0;i<count;i++,p++)
{
P2=*p>>8; /* 发送数码 */
delay(6000); /* 延时 */
// P1=0x3f;
MT8880_RSO=1;
MT8880_RW=1;
}
}/* 读SR */
// 接收程序
//程序利用单片机的INT0以中断方式接收DTMF信号,接收的7位数码存入数组R_BUF中。
/* 接收初始化子函数 */
void rece_init(void)
{
P1=0x24;/* CRA=0100 */
IT0=1;/* 边沿触发 */
IE=0x81;
}/* 允许中断,开中断 */
/* 接收中断服务程序 */
void int0(void) interrupt 0 using 1
{
UCHAR i;
UCHAR data r_buf[7];
SP=0X5F;
P1=0x3f;/* 读SR */
P1=0x1f;/* 读RDR */
r_buf[i++]=P1&0x0f;
} /* 保存 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -