原创
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条评论)
登录后参与讨论