GTM900-B(GSM)模块测试程序.doc_第1页
GTM900-B(GSM)模块测试程序.doc_第2页
GTM900-B(GSM)模块测试程序.doc_第3页
GTM900-B(GSM)模块测试程序.doc_第4页
GTM900-B(GSM)模块测试程序.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* GTM900-B工业模块模块测试程序1 程序功能:远程控制两路继电器的吸合与断开远程控制两路开关 短信控制单片机型号:STC12C5A60S2 支持双串口 晶振:11.0592M 波特率:9600bps应用软件:Keil2或Keil3 发布时间:2011-1210作 者:QQ790244909 */#include#include#define Buf_Max 200 /缓存长度200#define Delay_Time 3000 /延时长度sbit jdq1 = P00; /继电器1sbit jdq2 = P01; /继电器2/sbit LED3 = P02; /状态指示灯3/sbit LED4 = P03; /状态指示灯4unsigned char i = 0; /定义缓存指针unsigned char Rec_BufBuf_Max; /定义缓存数组void Serial_Init(void); /声明串口初始化函数void Send_ASCII(unsigned char *b); /声明发送字符(ASCII码)函数void Delay_ms(unsigned int time); /声明延时函数void CLR_Buf(void); /声明清除缓存内容void Send_Hex(unsigned char b); /声明发送字符(十六进制)函数bit Hand(unsigned char *a); /声明判断缓存中是否含有指定的字符串函数/*主函数*/void main(void) Serial_Init(); /初始化串口CLR_Buf(); /清除缓存内容 Delay_ms(60000); /延时Send_ASCII(AT); /发送联机指令 while(!Hand(OK) /判断是否握手成功,如果不成功延时一会,再发送AT握手指令Send_ASCII(AT); /发送联机指令 Delay_ms(60000); /延时CLR_Buf(); /清除缓存内容Delay_ms(Delay_Time); /延时 Send_ASCII(AT+CPMS=SM,SM,SM);/所有操作都在MT(模块终端)中进行Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容Delay_ms(Delay_Time); /延时Send_ASCII(AT+CNMI=2,1);/设置当有新短信到来时提示 Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容Delay_ms(Delay_Time); /延时Send_ASCII(AT+CMGF=1); /文本(TEXT)模式 Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容/*Delay_ms(Delay_Time); /延时Send_ASCII(AT+CMGD=1); /删除第一条信息Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容 */* Delay_ms(Delay_Time); /延时Send_ASCII(AT+CSCA=shoujihao); /文本(TEXT)模式 Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容 */ while(1) if(strstr(Rec_Buf,+CMTI)!=NULL) /若缓存字符串中含有+CMTI就表示有新的短信 CLR_Buf(); /清除缓存内容Delay_ms(Delay_Time); /延时Send_ASCII(AT+CMGR=1); /发送读取信息指令Delay_ms(Delay_Time); /延时 while(!Hand(OK); /等待设置成功 if(strstr(Rec_Buf,openjdq1)!=NULL) /如果信息内容是open1 jdq1 = 0; /点亮LED7指示灯 else if(strstr(Rec_Buf,closeljdq1)!=NULL) /如果信息内容是close1 jdq1 = 1; /熄灭LED7指示灯 else if(strstr(Rec_Buf,openjdq2)!=NULL) /如果信息内容是open2 jdq2 = 0; /点亮LED8指示灯 else if(strstr(Rec_Buf,closejdq2)!=NULL) /如果信息内容是close2 jdq2 = 1; /熄灭LED8指示灯CLR_Buf(); /清除缓存内容 Delay_ms(Delay_Time); /延时Send_ASCII(AT+CMGD=1); /删除读取后的信息Delay_ms(Delay_Time); /延时while(!Hand(OK); /等待设置成功CLR_Buf(); /清除缓存内容 if(strstr(Rec_Buf,RING)!=NULL) /有电话时两路继电器吸合 jdq1=0; jdq2=0; /*串口初始化函数*/*函数原型:void Serial_Init(void)/*函数功能:串口初始化/*输入参数:无/*输出参数:无/*/void Serial_Init(void)/串口初始化函数 SCON = 0x50;/串口:方式1,允许发送和接收 TMOD = 0x20;/定时器1:模式2,8位自动重装模式,用于产生波特率 TH1 = 0xFD; /11.0592MHZ晶振,波特率为9600 TL1 = 0xFD; TR1 = 1; /开启定时器1 ES = 1; /开启串口中断 EA = 1; /开启全局中断/*串口中断处理函数*/*函数原型:void Serial_Int(void)/*函数功能:串口中断处理/*输入参数:无/*输出参数:无/*/void Serial_Int() interrupt 4 ES = 0; /关串口中断,防止中断嵌套if(TI) /如果是发送中断,则不做任何处理TI = 0; /清除发送中断标志位if(RI) /如果是接送中断,则进行处理RI = 0; /清除接收中断标志位Rec_Bufi = SBUF; /将接收到的字符串存到缓存中i+; /缓存指针向后移动if(i200) /如果缓存满,将缓存指针指向缓存的首地址i = 0;ES = 1; /开启串口中断/*发送字符(ASCII)函数*/*函数原型:void Send_ASCII(unsigned char *b) /*函数功能:发送字符(ASCII码)/*输入参数:unsigned char *b/*输出参数:无/*/void Send_ASCII(unsigned char *b) ES = 0; /关串口中断 for (b; *b!=0;b+) SBUF = *b; while(TI!=1); /等待发送完成TI = 0; /清除发送中断标志位ES = 1; /开串口中断Send_Hex(0x0d); /发送回车符 Send_Hex(0x0a); /发送换行符 /*time ms延时函数*/*函数原型:Delay_ms(unsigned int time)/*函数功能:延时Time ms/*输入参数:time/*输出参数:无/*/void Delay_ms(unsigned int time) unsigned char j; for(;time0;time-) j = 1500; while(j-); /*清除缓存数据函数*/*函数原型:void CLR_Buf(void)/*函数功能:清除缓存数据/*输入参数:无/*输出参数:无/*调用模块:无/*/void CLR_Buf(void)unsigned char k; for(k=0;kBuf_Max;k+) /将缓存内容清零 Rec_Bufk = 0; i = 0; /接收字符串的起始存储位置/*发送字符(十六进制)函数*/*函数原型:void Send_Hex(unsigned char c)/*函数功能:发送字符(十六进制)/*输入参数:unsigned char c/*输出参数:无/*调用模块:无/*/ void Send_Hex(unsigned char c) ES = 0; /关串口中断 SBUF = c; while(TI!=1); /等待发送完成 TI = 0; /清除发送中断标志位ES = 1; /开串口中断/*判断缓存中是否含有指定的字符串函数*/*

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论