📄 mt8880.c
字号:
#include "Head.h"
unsigned char Read_80(void)
{ unsigned char data temp;
CS_80=0; //片选输入,低电平有效
temp=P1;
CP_80=1;
_nop_();
_nop_();
CP_80=0;
_nop_();
CS_80=1;
CP_80=1; //*构造8880时钟时序
RS_80=1;
return temp;
}
void Write_80(unsigned char Data)
{ unsigned char data temp;
CS_80=0;
temp=P1;
temp &=0xf0;
P1=Data+temp;
WR_80=0; //write
_nop_();
CP_80=1;
_nop_();
CP_80=0;
WR_80=1;
CS_80=1;
CP_80=1;
RS_80=1;
}
unsigned char Read_80status(void)
{
RS_80=1;
return Read_80();
}
void Write_80Cont(unsigned char command)
{
RS_80=1;
Write_80(command);
}
unsigned char Read_80Data(void)
{
RS_80=0;
return Read_80();
}
void Write_80Data(unsigned char command)
{
RS_80=0;
Write_80(command);
}
bit SendDTMF(uchar * buff)
{static uchar SendState,i;
switch (SendState)
{
case 0: Write_80Data(buff[i++]); //2
TimeCNT=1;
SendState=1;
break;
case 1: if(TimeCNT<40) break;
SendState=0; TimeCNT=0;
if(buff[i]==0xff) {i=0;P1=0xff;return 1;}
break;
}
return 0;
}
/*
void initial_8880(void)
{ unsigned char temp;
Read_80status();
Write_80Cont(0); //CRA
Write_80Cont(0);
Write_80Cont(0x01);
Write_80Cont(0); //CRB
Read_80status();
Write_80Cont(0x0b);
Write_80Cont(0); //CRB
Read_80status();
HANDUP=0;
LINE =0;
delay();
Write_80Data(0x04); //2
delay();
Write_80Data(0x05); //0
delay();
Write_80Data(0x05); //0
delay();
Read_80status();
EX1=1;
IT1=1;
EA=1;
P1=0xff;
while(1) _nop_();;
{
_nop_();
if((Read_80status()&0x02)==0x02)
{temp=Read_80Data();
P2=temp<<4;
}
}
}
void getDTMF(void) interrupt 2 using 2
{ unsigned char temp;
temp=Read_80status();
P1=0xff;
if((temp&0x02)==0x02)
{
temp=Read_80Data();
P0=temp<<4;
}
P1=0xff;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -