📄 dvs-comprotoc.lst
字号:
C51 COMPILER V7.06 DVS_COMPROTOC 02/27/2009 15:46:10 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DVS_COMPROTOC
OBJECT MODULE PLACED IN dvs-comprotoc.OBJ
COMPILER INVOKED BY: D:\Program Files\keil2.0\C51\BIN\C51.EXE dvs-comprotoc.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 //dvs-comprotoc.c
2 #include "DVS-V1.0.H"
3
4
5 //=========================================== 函数定义 ==========================================
6 void ScanComProtoc(); //扫描串口协议
7 void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);//返回协议
8 void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst);
9 //===============================================================================================
10
11
12 //=========================================== 外部定义 ==========================================
13 //位
14 extern bit guc_Bit_BuChe; //布撤防:1为布,0为撤
15 extern bit guc_bitRsCom; //中断接收完毕
16
17 extern bit guc_bit_SenAlar ; //传感器报警
18 extern bit guc_BitTel ; // 拔打电话标致位
19 //变里
20 extern unsigned int data guc_Timer0; //拔号按键定时计数器
21 extern unsigned char data guc_AlarCnt; //拔号时计算器
22 //数组
23 extern unsigned char idata RsBuf[32]; //接收缓冲区
24 //函数
25 extern void Delay1Ms(unsigned int auc_time); //延时1MS
26 extern void ONAlarSoun(); //打开警号声
27 extern void BuFan(); //布防处理
28 extern void CheFan(); //撤防处理
29 extern void SendToData(unsigned char *p,unsigned char Long); //发送命令
30 extern void SendASC(unsigned char ASC); //发送-个ASCII
31 extern void WrEEPROM(unsigned char address,unsigned char indata); //写EEPROM
32 extern unsigned char RdEEPROM(unsigned char address); //读EEPROM
33 //===============================================================================================
34
35
36
37
38 //===============================================================================================
39 //语法格式: RxTCPSame()
40 //实现功能: 返回相同的协议
41 //参数:
42 //auc_Command:命令字;auc_Send_Len数据长度;*pDst:数据
43 //返回: 无
44 //创建时间:2008-12-26 修改时间:
45 //创建人员: 修改人员:
46 //===============================================================================================
47 void RxTCPSame(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst)
48 {
49 1 unsigned char data luc_i,luc_temp;
50 1 luc_temp = 0xfe^auc_Command^0x00^0x01^auc_Send_Len; //异或协议区
51 1 for(luc_i = 0 ; luc_i < auc_Send_Len ;luc_i ++) //异或数据区
52 1 {
53 2 luc_temp = *(pDst+luc_i)^luc_temp;
54 2 }
55 1 SendASC(0xfe); //返回起始码
C51 COMPILER V7.06 DVS_COMPROTOC 02/27/2009 15:46:10 PAGE 2
56 1 SendASC(auc_Command); //返回命令字
57 1 SendASC(0x00); //返回分包标记
58 1 SendASC(0x01); //返回命令序号
59 1 SendASC(auc_Send_Len); //返回数据区长度
60 1 SendToData(pDst,auc_Send_Len); //返回数据区
61 1 SendASC(luc_temp) ; //返回异或值
62 1 }
63
64
65
66 //===============================================================================================
67 //语法格式: judgeRAYTC()
68 //实现功能: 判断返回协议是否定义协议相同
69 //参数:
70 //auc_Command:命令字;auc_Send_Len数据长度;*pDst:数据
71 //返回: 无
72 //创建时间:2009-01-08 修改时间:
73 //创建人员: 修改人员:
74 //==============================================================================================
75 void judgeRAYTC(unsigned char auc_Command,unsigned char auc_Send_Len,unsigned char *pDst)
76 {
77 1 // unsigned char data luc_i;
78 1 RxTCPSame(auc_Command,auc_Send_Len,pDst);
79 1 guc_Timer0 = 32; //定时1秒
80 1 while(1) //等待回返回信息
81 1 {
82 2 if(RsBuf[0]==0xFE)
83 2 {
84 3 Delay1Ms(30);
85 3 break;
86 3 }
87 2 if(guc_Timer0==0) break; //如果没有等到返回信息也返回
88 2 }
89 1 RsBuf[0] = 0x00;
90 1 // for(luc_i = 0 ; luc_i < 30 ; luc_i ++) //清除接收缓冲区
91 1 // {
92 1 // RsBuf[luc_i] = 0x00;
93 1 // }
94 1 guc_bitRsCom = 0;
95 1 }
96
97
98 /*
99 //===============================================================================================
100 //语法格式: judgeTCPSame()
101 //实现功能: 判断协议是否定义协议相同
102 //参数: 无
103 //返回: 如果相同返回1,如果不同返回0
104 //创建时间:2008-12-25 修改时间:
105 //创建人员: 修改人员:
106 //===============================================================================================
107 unsigned char judgeTCPSame()
108 {
109 unsigned char data luc_len,luc_xordata;
110 unsigned char data luc_temp,luc_i;
111 luc_len = RsBuf[4]; //获取数据长度
112 luc_xordata = RsBuf[4+luc_len+1]; //获取校验值
113 luc_temp = RsBuf[0]^RsBuf[1]^RsBuf[2]^RsBuf[3]^RsBuf[4]; //异或协议值区
114 for(luc_i = 0 ; luc_i < luc_len ;luc_i ++) //异或数据区
115 {
116 luc_temp = RsBuf[5+luc_i]^luc_temp;
117 }
C51 COMPILER V7.06 DVS_COMPROTOC 02/27/2009 15:46:10 PAGE 3
118 if((luc_xordata==luc_temp )&&(RsBuf[2]==0)&&(RsBuf[3]==1)) return 1; //如果相同则返回1
119 else
120 {
121 // luc_len = 0x02; //返回参数的数据长度错误
122 // RxTCPSame(RsBuf[1],1,&luc_len);
123 return 0 ; //否则返回0
124 }
125 }
126 */
127
128
129
130 //===============================================================================================
131 //语法格式: SetComPhone()
132 //实现功能: 设置串口电话号码
133 //参数: 无
134 //返回: 无
135 //创建时间:2008-12-26 修改时间:
136 //创建人员: 修改人员:
137 //===============================================================================================
138 void SetComPhone()
139 {
140 1 unsigned char data luc_Phone_nub;
141 1 unsigned char data luc_temp;
142 1 unsigned char data luc_i;
143 1 bit luc_BitOk;
144 1 luc_Phone_nub = RsBuf[5]; //获取电话组数
145 1 luc_temp = RsBuf[0]^RsBuf[1]^RsBuf[2]^RsBuf[3]^RsBuf[4]^RsBuf[5];
146 1
147 1
148 1
149 1 for(luc_i = 0 ; luc_i < RsBuf[4]-1; luc_i ++)
150 1 {
151 2 if((RsBuf[luc_i+6])<13) luc_BitOk = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -