📄 zhenggeshi.lst
字号:
231 3 }
232 2
233 2 if(Send_Flag)
234 2 {
235 3 TR0=1;
236 3 }
237 2
238 2
239 2 if(Send_Overtime_Flag)
240 2 {
241 3
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 5
242 3 HEX_Send_Buf[0]=0x01;
243 3 HEX_Send_Buf[1]=0x45;
244 3 Send_Hex_To_ASCII();
245 3
246 3 Send_Array();
247 3 Send_Overtime_Flag=0;
248 3 }
249 2
250 2 if(Receive_OK_Flag)
251 2 {
252 3 if(CheckSum())
253 3 {
254 4 if(ASCII_Receive_Buf[1]<0x30)
255 4 {
256 5 if(ASCII_Receive_Buf[1]==F_Receive_OK)
257 5 {
258 6 Send_Flag=0;
259 6 Send_Overtime_Flag=0;
260 6 TR0=0;
261 6 }
262 5 }
263 4 else
264 4 {
265 5 i=ASCII_To_Hex(ASCII_Receive_Buf[1])<<4;
266 5 i+=ASCII_To_Hex(ASCII_Receive_Buf[2]);
267 5 Dis_LedNum(i);
268 5 Send_Response(F_Receive_OK);
269 5 }
270 4 }
271 3 else
272 3 {
273 4 Receive_Error_Flag=1;
274 4 }
275 3 Receive_OK_Flag=0;
276 3 }
277 2
278 2 if(Receive_Error_Flag)
279 2 {
280 3 Send_Response(F_Receive_Error);
281 3 Receive_Error_Flag=0;
282 3 }
283 2
284 2 if(Receive_Overtime_Flag)
285 2 {
286 3 Send_Response(F_Overtime);
287 3 Receive_Overtime_Flag=0;
288 3 }
289 2
290 2 }
291 1
292 1 }
293
294
295 void Timer_init(void)
296 {
297 1 TMOD=0x1;
298 1 TH0=0x15;
299 1 TL0=0xa0;
300 1 PT0=1;
301 1 ET0=1;
302 1 }
303
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 6
304
305
306 void UART_init()
307 {
308 1 SCON = 0x50;
309 1 TMOD|= 0x20;
310 1 TH1 = 0xFB;
311 1 TL1 = 0XFB;
312 1 TR1 = 1;
313 1 ET1 = 0;
314 1 //AUXR=64;
315 1 ES = 1;
316 1 //PS = 1;
317 1 EA = 1;
318 1 }
319
320
321
322 bit CheckSum(void)
323 {
324 1 uchar ASCII_Len=0;
325 1 uchar Checksum_Temp=0;
326 1 ASCII_Len=ASCII_Receive_Buf[0]-1;
327 1
328 1 for(;ASCII_Len!=0;ASCII_Len--)
329 1 {
330 2 Checksum_Temp+=ASCII_Receive_Buf[ASCII_Len];
331 2 }
332 1
333 1 ASCII_Len=ASCII_Receive_Buf[0];
334 1
335 1 if(Checksum_Temp==ASCII_Receive_Buf[ASCII_Len])
336 1 return 1;
337 1 else
338 1 return 0;
339 1
340 1 }
341
342
343 void Get_CheckSum(void)
344 {
345 1 uchar ASCII_Len=0;
346 1 uchar CheckSum_Temp=0;
347 1 ASCII_Len=ASCII_Send_Buf[0]-1;
348 1
349 1 for(;ASCII_Len!=0;ASCII_Len--)
350 1 {
351 2 CheckSum_Temp+=ASCII_Send_Buf[ASCII_Len];
352 2 }
353 1
354 1 ASCII_Len=ASCII_Send_Buf[0];
355 1 ASCII_Send_Buf[ASCII_Len]=CheckSum_Temp;
356 1
357 1 }
358
359
360
361 void Send_Response(uchar Frame)
362 {
363 1 uchar ASCII_Len=1;
364 1
365 1 ASCII_Send_Buf[ASCII_Len++]=Frame;
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 7
366 1 ASCII_Send_Buf[0]=ASCII_Len;
367 1
368 1 ASCII_Send_Buf[ASCII_Len]=Frame;
369 1 Send_Array();
370 1
371 1 }
372
373
374
375 void Send_Hex_To_ASCII(void)
376 {
377 1 uchar i;
378 1 uchar Hex_Len=0;
379 1 uchar ASCII_Len=1;
380 1 Hex_Len=HEX_Send_Buf[0];
381 1
382 1 for(i=1;i<=Hex_Len;i++)
383 1 {
384 2 ASCII_Send_Buf[ASCII_Len++]=Hex_To_ASCII(HEX_Send_Buf[i]>>4);
385 2 ASCII_Send_Buf[ASCII_Len++]=Hex_To_ASCII(HEX_Send_Buf[i]&0x0f);
386 2 }
387 1 ASCII_Send_Buf[0]=ASCII_Len;
388 1 Get_CheckSum();
389 1 }
390
391
392 void Send_Array(void)
393 {
394 1 uchar i;
395 1 uchar ASCII_Len=1;
396 1 ASCII_Len=ASCII_Send_Buf[0];
397 1
398 1 UART_Send(F_ST);
399 1 Delay_1ms(2);
400 1 UART_Send(F_ADDR);
401 1 Delay_1ms(2);
402 1 for(i=0;i<=ASCII_Len;i++)
403 1 {
404 2 UART_Send(ASCII_Send_Buf[i]);
405 2 Delay_1ms(2);
406 2 }
407 1 UART_Send(F_END);
408 1 Delay_1ms(2);
409 1
410 1 }
411
412
413
414
415 uchar ASCII_To_Hex(uchar bChar)
416 {
417 1 if((bChar>=0x30)&&(bChar<=0x39))
418 1 bChar -= 0x30;
419 1 else if((bChar>=0x41)&&(bChar<=0x46))
420 1 bChar -= 0x37;
421 1 else if((bChar>=0x61)&&(bChar<=0x66))
422 1 bChar -= 0x57;
423 1 else bChar = 0xff;
424 1
425 1 return bChar;
426 1 }
427
C51 COMPILER V8.08 ZHENGGESHI 04/23/2008 10:04:52 PAGE 8
428 uchar Hex_To_ASCII(uchar bHex)
429 {
430 1 if((bHex>=0)&&(bHex<=9))
431 1 bHex += 0x30;
432 1 else if((bHex>=10)&&(bHex<=15))
433 1 bHex += 0x37;
434 1 else bHex = 0xff;
435 1 return bHex;
436 1 }
437
438
439 void Delay_1ms(uint Nms)
440 {
441 1 uchar Temp;
442 1 for(;Nms!=0;Nms--)
443 1 {
444 2 for(Temp=0;Temp<255;Temp++)
445 2 {
446 3 _nop_();
447 3 _nop_();
448 3 _nop_();
449 3 }
450 2 }
451 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 875 ----
CONSTANT SIZE = 96 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 65 8
IDATA SIZE = ---- ----
BIT SIZE = 9 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -