欢迎来到天天文库
浏览记录
ID:29475305
大小:350.04 KB
页数:41页
时间:2018-12-20
《第8章基于gprs技术的远程监控系统》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、8.5软件设计本系统的软件设计主要包括以下几个部分:A/D转换子程序、时钟芯片DS12887初始化子程序、看门狗芯片的初始化及复位子程序、外部控制接点输出子程序、查询外部开关量的状态子程序、网络部分子程序等。其中网络部分是本模块软件设计相对复杂的部分,也是软件设计的重点部分。网络部分主要包括以下几个部分:GPRSMODEM拨号部分、LCP协商部分、IPCP协商部分、查找UDP包部分、UDP解包部分、UDP包的发送部分、短信报警部分等。下面分别给出主要部分的程序流程图以及相应的源代码,供读者参考。8.
2、5.1主程序#include#include#include#include#defineucharunsignedchar#defineuintunsignedint#defineulongunsignedlong#defineAdd_h0x00#defineAdd_l0x01externuchardatabackup_P1;externucharxdatareceive_buff[256];externucharxd
3、atacount;externuintxdatacrc;externuintxdatappp_s_id;externucharxdatalocal_ip[4];externucharxdatahost_ip[4];voidreset_dog(void);voidset_system_time(void);voidout_io(void);voidsd_connected_prove(void);voidsend_ad(void);uchardatabackup_P1;//中断时用来保存片选uchar
4、xdatareceive_buff[256]_at_0x0101;//256字节的接收缓冲区ucharxdatalocal_ip[4];ucharxdatahost_ip[4];uintxdatacrc=0;ucharxdatacount=0;//接受数组下表,自动转头uintxdatappp_s_id=0x3600;voidcsh_X25045(void);voidmain(void){ucharxdatah;ppp_s_id=0x3600;P1=0x1c;//选中ramcsh_X25045();
5、baud();//设置波特率P1=0x1c;//---------------------------缓冲区清0---------------------------------//for(h=0;h<255;h++)receive_buff[h]=0x00;reset_dog();initstat_mc35();//setmc35msg();//找到短信dail();41confg();//上网p_service();sd_connected_prove();while(1){P1=0x1c;re
6、set_dog();read_io();//读4路io口状态,放入io_state[4]数组read_ad();//读4路AD数值,放入ad_value[4]数组P1=0x0D;//选中ds12887,读系统时间,放入date[6]数组r_ds();P1=0x1c;for(h=0;h<100;h++){delays();find_config_frame();//找udp包switch(receive_config_frame[35]){case0x50:{send_ad();}break;//发送
7、对应模拟开关量case0x70:{set_system_time();}break;//设置系统时间set_system_time.ccase0x95:{out_io();}break;//执行开关量io_out.cdefault:_nop_();}}}}8.5.2相关的硬件驱动程序1.延时子程序voiddelay(uchardataa)//延时程序,延时a个机器周期{uchardatab;for(b=0;b<=a;b++)_nop_();}2.A/D转换子程序sbitsa_clk=P1^5;sbi
8、tsa_in=P1^7;sbitsa_out=P1^6;voiddelay(uchar);uintread2543(uchardatachannel)//A/D转换子程序read2543{uchardataal=0,ah=0;uintdataad;uintdatai;switch(channel)//通道转换{case0x01:{channel=0x00;}break;case0x02:{channel=0x01;}break;case0x03:{channel=0x
此文档下载收益归作者所有