📄 output.lst
字号:
205 #define Channel2 0x01
206 #define Channel3 0x02
207 #define Channel4 0x03
208 #define Channel5 0x04
209 #define Channel6 0x05
210 #define Channel7 0x06
211 #define Channel8 0x07
212 #define Channel9 0x08
213
214 #define Channel10 0x09
215 #define Channel11 0x0A
216 #define Channel12 0x0B
217 #define Channel13 0x0C
218 #define Channel14 0x0D
219 #define Channel15 0x0E
220 #define Channel16 0x0F
221 //外设数据长度信息。
222 #define LenRecvWsType1 0x38 //外设类型1的数据长度
223 #define LenRecvWsType2 0x04 //外设类型2的数据长度
224 /**********************************************外设信息***************************************************
-/
225
226 /**********************************************从机信息***************************************************
-/
227 //从机编号信息。
228 #define SlaveCode1 0x01 //从机1编号。
229 #define SlaveCode2 0x02 //从机2编号。
230 #define SlaveCode3 0x03 //从机3编号。
231 #define SlaveCode4 0x04 //从机4编号。
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 5
232 #define SlaveCode5 0x05 //从机5编号。
233 uchar SlaveCode = SlaveCode1; //当前从机编号。
234 //从机数据存储最大长度。
235 #define DataLen7053 560 //7053数据存储最大长度。
236 #define DataLen7017 280 //7017数据存储最大长度。
237 //从机串口信息。
238 #define InitState 0 //开始接收状态。
239 #define DataState 1 //数据接收状态。
240 #define SlaveStartFlag 0x3E //数据开始标志。
241 uchar n = 1; //当前处理的外设编号。
242 uchar FlagWsSend[5]={0,0,0,0,0}; //从机外设的数据返回状态。
243 char RecvDataCount=-1; //接收外设数据的计数器。
244 uint TimeCount = 0; //串口通讯的计数器。
245 uchar RecvState= InitState; //接收的状态,初始化为初始化接收状态。
246 uchar RecvDataSize; //接收外设数据的长度。
247 //从机参数信息。
248 #define SlaveParaLen 0x05 //从机默认参数长度。
249 uchar BodeRate; //从机与外设通讯的波特率。
250 uchar WsNumber; //从机的外设个数。
251 uint ReadDataRate; //读取外设数据的时间间隔。
252 uchar WsType; //外设的类型。
253 /**********************************************从机信息***************************************************
-/
254 /**************************************拷贝数据最大长度定义**************************************/
255 #define MaxOrderLen 0x6FD
256 #define MaxSlaveDataLen 0x230
257 #define MaxGetChannelParaLen 0x7ED
258 #define MaxAlarmLen 0xFD
259 #define MaxSlaveAlarmLen 80
260 /**************************************拷贝数据最大长度定义**************************************/
261
262 /**************************************输出报警动作号定义****************************************/
263 #define ACTION1 0x01 //01号输出动作
264 #define ACTION2 0x02 //02号输出动作
265 #define ACTION3 0x03 //03号输出动作
266 #define ACTION4 0x04 //04号输出动作
267 #define ACTION5 0x05 //05号输出动作
268 #define ACTION6 0x06 //06号输出动作
269 #define ACTION7 0x07 //07号输出动作
270 #define ACTION8 0x08 //08号输出动作
271 #define ACTION9 0x09 //09号输出动作
272 #define ACTION10 0x10 //10号输出动作
273 #define ACTION11 0x11 //11号输出动作
274 #define ACTION12 0x12 //12号输出动作
275 /**************************************输出报警动作号定义****************************************/
276
277 /**********************************************标识位定义信息*********************************************
-/
278 bit FlagMutex=0; //用于隔离外部中断,假如一次外部中断没有执行完,不能响应下一次外部中断。
279 bit FlagExt0=0; //外部中断0标识,也就是IIC使用标识。
280 bit FlagTime0=0; //定时器0中断标识。
281 bit FlagStartRecv=0; //开始接收标识。
282 bit FlagProcessRecvData=0; //处理接收数据标识。
283 bit FlagReInit = 0; //从机参数重置的命令被解析的标识,也是从机参数重置的标志位。
284 bit FlagProcessOrderStart = 0;//上位机的命令被从机拷贝的标志,也是处理命令的标志位。
285 bit FlagFirst = 1; //第一次定时器0中断标识。
286 bit FlagNewData = 0; //有新的外设数据标识。
287 bit FlagNewOrder = 0; //有新的服务器的命令标识。
288 bit FlagSendOrder = 1; //发送读取外设数据命令开始标识。
289 bit FlagExtInterrupt = 0;
290 bit FlagNewAlarm = 0; //有新的报警需要处理的标识位。
291 /**********************************************标识位定义信息*********************************************
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 6
-/
292
293 /**********************************************定时器相关信息*********************************************
-/
294 #define WaitLen 10 //发送外设数据采集命令的等待时限。
295 #define MAX 20 //定时器的倍频。
296 #define SampleBase 1000 //Sample = ReadDataRate/SampleBase即为发送采集外设数据命令的间隔。
297 #define DelayTime 5
298 uchar Sample = 2; //发送采集外设数据命令的间隔。
299 uchar TimesNum = 0; //定时中断次数的计数器,用来判断等待的外设数据返回的时限的。
300 uchar TimesCount = 0; //定时中断次数的计数器,用来判断等待的外设数据返回的时限的。
301 /**********************************************定时器相关信息*********************************************
-/
302
303 /**********************************************从机IIC使用信息********************************************
-/
304 sbit P20=P2^0; //IIC使用完通知仲裁机的信号。
305 /**********************************************从机IIC使用信息********************************************
-/
306
307 /******************************************从机分配的数组*************************************************
-*/
308 #define COPYLEN 200 //I2C中转的缓冲区大小。
309 #define PROCESSLEN 20 //处理命令的暂存数组长度。
310 xdata uchar RecvDataBuff[60]; //外设数据的接收数组,应大于56。
311 xdata uchar SendBuff[4]; //发送读取外设数据的命令数组。
312 /******************************************从机分配的数组*************************************************
-*/
313
314 /*********************************************************************************************************
-**
315 功能:Delay
316 描述:延时函数
317 参数:t
318 返回:无
319 **********************************************************************************************************
-**/
320 void Delay(uint t) /*延时函数*/
321 {
322 1 while(t!=0)
323 1 t--;
324 1 }
325
326 /*********************************************************************************************************
-**
327 功能:InitSerialCom
328 描述:串口初始化
329 参数:无
330 返回:无
331 **********************************************************************************************************
-**/
332 void InitSerialCom(void)
333 {
334 1 SCON = 0x50; //SCON: serail mode 1, 8-bit UART, enable ucvr
335 1 TMOD |= 0x21; //TMOD: timer 1, mode 2, 8-bit reload
336 1 PCON |= 0x80; //SMOD=1;
337 1 TH1 = 0xF3; //Baud:4800 fosc=12MHz
338 1 IE |= 0x93; //Enable Serial Interrupt
339 1 TR1 = 1; // timer 1 run
340 1 IT0 = 1;
341 1 // TI=1;
342 1 }
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 7
343
344 /*********************************************************************************************************
-**
345 功能:Time0Initial()
346 描述:定时器0初始化,主要设定初值
347 参数:无
348 返回:无
349 **********************************************************************************************************
-**/
350 void Time0Initial()
351 {
352 1 TR0=0;
353 1 TH0=0x3C; //50ms
354 1 TL0=0xB0;
355 1 TR0=1;
356 1 }
357
358 /*********************************************************************************************************
-**
359 功能:Time0
360 描述:产生定时器0中断
361 参数:无
362 返回:无
363 **********************************************************************************************************
-**/
364 void Time0() interrupt 1 using 2
365 {
366 1 TimeCount++;
367 1 if(TimeCount >= MAX)
368 1 {
369 2 TimeCount=0;
370 2 FlagTime0=1;
371 2 }
372 1 Time0Initial();
373 1 }
374
375 /*********************************************************************************************************
-**
376 功能:SendCharCom
377 描述:向串口发送一个字符
378 参数:t
379 返回:无
380 **********************************************************************************************************
-**/
381 void SendCharCom(unsigned char ch)
382 {
383 1 SBUF=ch;
384 1 while(TI==0);
385 1 TI=0;
386 1 }
387
388 /*********************************************************************************************************
-**
389 功能:SendStringCom
390 描述:向串口发送一个字符串,strlen为该字符串长度
391 参数:str---要发送的字符串指针 strlen---字符串长度
392 返回:无
393 **********************************************************************************************************
-**/
394 void SendStringCom(unsigned char *str,unsigned int strlen)
395 {
396 1 unsigned int k=0;
C51 COMPILER V7.50 OUTPUT 03/17/2008 20:38:41 PAGE 8
397 1 while( (k < strlen) && (strlen > 0) )
398 1 {
399 2 SendCharCom(*(str + k));
400 2 k++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -