www.pudn.com > TELEPHONE.rar > MT8880.C, change:2008-04-28,size:1723b


#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; 
} /* 保存 */