原创 C51读写MT8888源程序--hylaliu

2008-8-19 11:15 4293 6 3 分类: 软件与OS
已用于电话批量拨号器,其中MT8888的CS接MCU的P27,RS接P26
//////////////////////////////////////////////////////////////////////
//说明:     控制MT8888拨打电话号码,MT8888工作于DTMF模式,
//             电话号码存储在TelephoneNumber数组中。
//晶振:       11.0592MHz
//MCU:     AT89S52
//接口:     void InitializeMT8888(void);
//             void SetMT8888Mode(void);
//             void DialTelephoneNumber(void);
//Author:     hylaliu
//Version:     2.0
//LastDate:   2005/09/20
//Complier:   Keil 7.50
//
//////////////////////////////////////////////////////////////////////

#include<reg52.h>
#include<absacc.h>

#define MT8888_CONTROL_STATUS XBYTE[0x7fff]//P2.7=0
#define MT8888_DATA_REGISTER     XBYTE[0x3fff]//P2.7=0 P2.6=0

void InitializeMT8888(void);
void SetMT8888Mode(void);
void DialTelephoneNumber(void);

unsigned char code TelephoneNumber[8]={1,6,8,7,7,1,6,8};

//上电后均需要初始化MT8888
void InitializeMT8888(void)
{
  unsigned char i;
  i="MT8888"_CONTROL_STATUS;
  MT8888_CONTROL_STATUS=0x0f;
  MT8888_CONTROL_STATUS=0x0f;
  MT8888_CONTROL_STATUS=0x8f;
  MT8888_CONTROL_STATUS=0x0f;
  i="MT8888"_CONTROL_STATUS;
}

//设置MT8888工作模式
void SetMT8888Mode(void)
{
  MT8888_CONTROL_STATUS=0xdf;
  MT8888_CONTROL_STATUS=0x0f;
  Delay50ms(2);
}


void DialTelephoneNumber(void)
{
  unsigned char i,j;
  for(i=0;i<8;i++)
  {
    j="TelephoneNumber"
;
    if(j==0)  
    {
        j="10";//如果号码为0时,按照MT8888的规则应送0x0a
    }
        MT8888_DATA_REGISTER=(j<<4);
    Delay50ms(3);
    while((MT8888_CONTROL_STATUS&0x20)!=0x20)P1_2=!P1_2;
    Delayms(20);

  }
}

void Delayms(unsigned int ms)
{
  unsigned int i,j;
  for(i=0;i<ms;i++)
  for(j=0;j<113;j++);
}

void Delay50ms(unsigned char ms)
{
  unsigned int i;
  unsigned char j;
  for(j=0;j<ms;j++)
  for(i=0;i<9135;i++);
}

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /2 下一条