|
已用于電話批量撥號器,其中MT8888的CS接MCU的P27,RS接P26 ////////////////////////////////////////////////////////////////////// //說明: 控制MT8888撥打電話號碼,MT8888工作于DTMF模式, // 電話號碼存儲在TelephoneNumber數(shù)組中。 //晶振: 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; }
//設(shè)置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的規(guī)則應(yīng)送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++); }
|