⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tc35h.h

📁 噪音测试。该测量仪能能满足一般民用需要。具有数字显示
💻 H
字号:
#include "string.h"
#define   enAT	1
#define   enBPs	1
#define   TRUE	1
#define   FALSE	0
sbit IGT	=	P1^7;      sbit	RING	=	P3^4;
//AT指令的定义
char code AT_Tc35[]="AT+";    //连机
char code Bps_Tc35[]="IPR=19200";  //波特率
char code Text_Tc35[]="CMGF=0";    //文本模式
char code Read_Tc35[]="CMGR=";  //读信息
char code Erase_Tc35[]="CMGD=";  //删除信息
char code Send_Tc35[]="CMGS=";  //发送信息
char code Creg_Tc35[]="CSQ";		//"CREG?";    //注册

unsigned char RsPoint=0,timer1;
unsigned char pdata RsBuf[156];

//发送-个ASCII
void SendASC(unsigned char ASC)
{
bit es;
	es=ES;
	ES=0;//关闭中断
	TI=0;	SBUF=ASC;	while(!TI);	TI=0;
	ES=es;
}

//发送命令到TC35
void SendToTc35(unsigned char* p,unsigned char Long)
{
 while(Long)
 {
    SendASC(*p++);  Long--;
 }
}

void ClrRsBuf(unsigned char *p,unsigned char Long){
	while(Long--){*p=0;	p++;}
	RsPoint=0;
}
void enter(void){
	SendASC(0x0d);	//SendASC(0x0a);
}

//*********** 延时 X ms ****************
void Delay(int x){
	timer0=0;
	while(timer0<x);
}

// 发送AT连机命令
char code AT_OK[]="OK";
#ifdef enAT
void Send_AT(void)
{
unsigned char *p;	//U8 ct=0;
while(1)
{
    ClrRsBuf(RsBuf,sizeof(RsBuf)-1);
    SendToTc35(AT_Tc35,2);    //"AT"
    enter();
//************等待应答“ok"
    ES=1;    //必须中断
    Delay(50);
    p=strstr(RsBuf,AT_OK);
    if(p!=NULL) break;
	 //if(++ct==20)RST;
}
}
#endif

//发送CREG命令
#ifndef enAT
void Send_CREG(void)
{
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Creg_Tc35,sizeof(Creg_Tc35)-1);//"IPR=19200"
 enter();   Delay(100);
}
#endif

//设置文本
void SetPDU(void)
{
SendToTc35(AT_Tc35,3);    //"AT+"
SendToTc35(Text_Tc35,sizeof(Text_Tc35)-1);//"IPR=19200"
enter();
Delay(100);
}
//*
//删除短信息
unsigned char EraseMsg(unsigned char index)
{
 unsigned char *p,i=20;
 SendToTc35(AT_Tc35,3);    //"AT+"
 SendToTc35(Erase_Tc35,sizeof(Erase_Tc35)-1);//"IPR=19200"
 SendASC(index);
 enter();
 ES=1;
 while(i--)
{
    Delay(200);
    p=strstr(RsBuf,AT_OK);
    if(p!=NULL)    {return TRUE;}
}
return FALSE;
}

//*读取短信息
char code Ask_No[]="+CMGR:0,,0";
char code ERROR[]="ERROR";
char code Ask_Tc35[]="/";

unsigned char ReadMsg(unsigned char index)
{
unsigned char *p;
//unsigned char Buf[40];
SendToTc35(AT_Tc35,3);    //"AT+"
SendToTc35(Read_Tc35,sizeof(Read_Tc35)-1);
SendASC(index);
enter();
ES=1;    //必须中断
Delay(600);
//-------
//    ES=0:
//    SendToTc35(RsBuf,99);
//    ES=1;


	p=strstr(RsBuf,ERROR);
	if(p!=NULL)
	{
    	Send_AT();return 0;
		p=strstr(RsBuf,Ask_No);//无信息
		if(p!=NULL)return 0;
	}
return TRUE;
}
//*/
//发送AT+CSCA?查询短信中心号码子程序
#define zxhmHead  128    // 12 bytes
char at_csca(){  char *p;
	char i,Send_Cmd[]="CSCA?";  //发送Command
	SendToTc35(AT_Tc35,3);    //"AT+"
	SendToTc35(Send_Cmd,sizeof(Send_Cmd)-1);
	enter();
	RsPoint=timer1=0;	while(timer1<20);//等待手机回答
	if (RsPoint<24) return FALSE; 
	p=zxhmHead;
	for (i=0; i<6; i++){
		*p=RsBuf[14+i+i+1]; p +=2;
	}
	p=zxhmHead+1;
	for (i=0; i<6; i++){
		*p=RsBuf[13+i+i]; p +=2;
	}
	p=zxhmHead+10; *p='F';
}
//发送短信息
unsigned char code hex2ch[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
unsigned char SendMsg(unsigned char *p,unsigned char Long){
	unsigned char *p1;
	char Send_Cmd[]="CMGS=037";  //发送Command
	//发送AT+CMGS=150
	SendToTc35(AT_Tc35,3);    //"AT+"
	SendToTc35(Send_Cmd,sizeof(Send_Cmd)-1);
	enter();
	RsPoint=timer1=0;	while(timer1<20);//等待手机回答">"
    p1=strstr(RsBuf,AT_OK);
    if(p1==NULL) return 0;
	//发固定的短信字头089168子程序
	//strcpy(Send_Cmd,"089168");
	SendToTc35("089168",6);
	//发送短信中心号码子程序13800412500
//	p1=zxhmHead;
//	strncpy(Send_Cmd,p1,12);
//	strcpy(Send_Cmd,"3108402105F0");
	SendToTc35("3108402105F0",12);
	//短信中部固定数据11000B81
//	strcpy(Send_Cmd,"11000D81");
	SendToTc35("11000D81",8);
	//发送短信接收方手机号码子程序 13050009330
//	strcpy(Send_Cmd,"683116902807F0");
//	strcpy(Send_Cmd,"683150009033F0");
//	SendToTc35("683116902807F0",14);
	SendToTc35("683150009033F0",14);
	//下部固定数据0008A9  Or 000800
//	strcpy(Send_Cmd,"0008A9");
	SendToTc35("000800",6);
	//发送汉字的字数*2
	Send_Cmd[0]=hex2ch[Long>>4];   Send_Cmd[1]=hex2ch[Long&0xf];
	SendToTc35(Send_Cmd,2);
	//发送汉字
//	strncpy(Send_Cmd,p,Long*2);
	SendToTc35(p,Long*2);
	SendASC(0x1a);
}
//发送ATD,拨打电话136
void atd(){
	char Send_Cmd[]="ATD13050009330;";  //发送ATD 
	SendToTc35(Send_Cmd,sizeof(Send_Cmd)-1);
	enter();
}
//发送ATA,应答电话136
void ATA(){
	char Send_Cmd[]="ATA";  //发送ATA 
	SendToTc35(Send_Cmd,sizeof(Send_Cmd)-1);
	enter();
}

//  通讯中断接收程序
void Rs232(void) interrupt 4 using 1
{
  if(RI)
  {
    RI=0;  
    RsBuf[RsPoint++]=SBUF;		timer1=0;
  }
}
//  T0中断计时程序

void timer(void) interrupt 1 using 2
{
	timer0++;  timer1++;  
	if((RsPoint)&&(timer1>20))R232=1;
}
//有人动您的车,请察看!16
unsigned char code DC[]={
0x36,0x37,0x30,0x39,0x34,0x45,0x42,0x41, //67094EBA
0x35,0x32,0x41,0x38,0x36,0x30,0x41,0x38, //52A860A8
0x37,0x36,0x38,0x34,0x38,0x46,0x36,0x36, //76848F66
0x30,0x30,0x32,0x43,0x38,0x42,0x46,0x37, //002C8BF7
0x35,0x42,0x44,0x46,0x37,0x37,0x30,0x42, //5BDF770B
0x30,0x30,0x32,0x31 					 //0021
};
//数据搬家
void BeiFen(U16 addr,U8 Long){
	int i;
	flash_erase(1);
	for(i=0; i< 512; i++)if((i<addr)&&(i>=(addr+Long)))write_EE(i+512,read_EE(i));
}
//数据考回
void KaoHui(U16 addr,U8 Long){
	int i;
	flash_erase(0);
	for(i=0; i< 512; i++)if((i<addr)&&(i>=(addr+Long)))write_EE(i,read_EE(i+512));
}
// Store Datas To Flash addr:Flash begin-addr p:datas point Long:Data Length
void Save(U16 addr,U8 *p,U8 Long){
	while(Long--){write_EE(addr,*p); addr++; p++;}
}
//处理消息
U8 *PDcmd0(){
	U8 *p,i;U8 pdata buf[24+12]="012345678901234567891111547D4EE40030";  //命令0: 547D4EE40030
	for(i=0; i<24; i++)buf[i]=read_EE(i);	//Read PassWord
	p=strstr(RsBuf,buf);	
	return p;
}
U8 *PDcmd1(){
	U8 *p,i;U8 pdata buf[24+12]="012345678901234567891111547D4EE40031";  //命令1: 547D4EE40030
	for(i=0; i<24; i++)buf[i]=read_EE(i);	//Read PassWord
	p=strstr(RsBuf,buf);	
	return p;
}
void SaveTel(U8 *p){
	U8 pdata buf[11],type[4];	U8 i;
	for(i=0;i<4;i++){type[i]=*p; p++;}		//Read BaoJing Type
	for(i=0;i<11;i++){buf[i]=*p; p++;}		//Read Tel_NO
	if(read_EE(60)==0xff){
		Save(60,type,4);   Save(64,buf,11);
	}
	else if(read_EE(60+16)==0xff){
		Save(60+16,type,4);   Save(64+16,buf,11);
	}
	else if(read_EE(60+32)==0xff){
		Save(60+32,type,4);   Save(64+32,buf,11);
	}
	else {

	}
}
void cmd0ok(){
	U8 pdata buf[]="65B05BC67801662F003A012345678901234567891111";  //新密码是:
	U8 i;
	for (i=0;i<24;i++)buf[20+i]=read_EE(i);	//Read New PassWord 24 Bytes
	SendMsg(buf,22);
}
//**************************************
// PassWord=24 JianTingTel.1=12 
// Baojing Type.1=4 Baojing tel.1=12
//**************************************
void Onmsg(){
	unsigned char *p,i,pw[6],buf[12];
	p=strstr(RsBuf,"RING");
	if(p!=NULL){		//监听
		while(pw[0]<3){
			for(i=0;i<12;i++)buf[i]=read_EE(6*4+pw[0]*i+i);	//Read Tel-No
			p=strstr(RsBuf,buf);
			if(p!=NULL){ATA();  break;}
			pw[0]++;
		}
		R232=0;	RsPoint=0;	return;
	}
	if(ReadMsg(0)==TRUE){
		p=PDcmd0();
		if(p!=NULL){BeiFen(0,24); Save(0,p,24); KaoHui(0,24);
			if(EraseMsg(0)==FALSE) EraseMsg(0);  //不成功再删
			cmd0ok();  Delay(100);
			ClrRsBuf(RsBuf,sizeof(RsBuf)-1);  R232=0;		return;
		}
		p=PDcmd1();
		if(p!=NULL){	SaveTel(p); 
			if(EraseMsg(0)==FALSE) EraseMsg(0);  //不成功再删
			Delay(100);
			ClrRsBuf(RsBuf,sizeof(RsBuf)-1);  R232=0;		return;
		}

	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -