📄 comm.ls1
字号:
A51 MACRO ASSEMBLER COMM 08/03/2009 16:57:28 PAGE 5
257 EXTRN CODE (wie)
258 EXTRN CODE (_cal_crc)
259 EXTRN XDATA (MyID)
260 EXTRN CODE (pow)
261 EXTRN CODE (_spisendcommand)
262 EXTRN IDATA (RELAY_TIME_OUT)
263 EXTRN CODE (_delayms)
264 EXTRN CODE (?C?CLDPTR)
265 EXTRN CODE (?C?IILDX)
266 EXTRN CODE (?C?CSTPTR)
267 EXTRN CODE (?C?COPY)
268 PUBLIC TxBuf
269 PUBLIC RxBuf
270 PUBLIC outTxBuf
271 PUBLIC inTxBuf
272 PUBLIC outRxBuf
273 PUBLIC inRxBuf
274 PUBLIC TIflag
275 PUBLIC process_incmd
276 PUBLIC process_uart
277 PUBLIC _Get_Char
278 PUBLIC _Printf_String
279 PUBLIC _Printf_Char
280 PUBLIC serial
281 PUBLIC Buff_Init
282 PUBLIC UART0_Init
283
---- 284 RSEG ?XD?serial?COMM
0000 285 ?serial?BYTE:
0000 286 t?240: DS 3
287
---- 288 RSEG ?XD?process_uart?COMM
0000 289 ?process_uart?BYTE:
0000 290 dat_len?645: DS 1
0001 291 ORG 1
0001 292 ch?646: DS 1
293
---- 294 RSEG ?XD?_Printf_String?COMM
0000 295 ?_Printf_String?BYTE:
0000 296 string?443: DS 3
297
---- 298 RSEG ?XD?_Printf_Char?COMM
0000 299 ?_Printf_Char?BYTE:
0000 300 t?342: DS 3
301
---- 302 RSEG ?XD?process_incmd?COMM
0000 303 ?process_incmd?BYTE:
0000 304 pcs?747: DS 2
305
---- 306 RSEG ?BI?COMM
0000 307 TIflag: DBIT 1
308
---- 309 RSEG ?XD?COMM
0000 310 inRxBuf: DS 3
0003 311 outRxBuf: DS 3
0006 312 inTxBuf: DS 2
0008 313 outTxBuf: DS 3
000B 314 RxBuf: DS 34
002D 315 TxBuf: DS 128
316
---- 317 RSEG ?C_INITSEG
0000 C100 F 318 DB 0C1H, TIflag + 080H ; bit-init
319
320 ; #include "global.h"
321 ;
322 ;
A51 MACRO ASSEMBLER COMM 08/03/2009 16:57:28 PAGE 6
323 ; unsigned char xdata TxBuf[LenTxBuf],RxBuf[LenRxBuf];//收发缓冲区实体
324 ; unsigned char xdata *inTxBuf,*outTxBuf, *inRxBuf,*outRxBuf;//收发缓冲区读写指针
325 ; //inRxBuf指向收的收,outRxBuf指向收缓冲区的读。
326 ; bit TIflag=1;//Note:It must be 1.
327 ;
328 ;
329 ;
330 ;
331 ; /******************************************************************************
332 ; ** 函数: UART0_Init()
333 ; ** 入参:
334 ; ** 返回:
335 ; ** 说明:
336 ; ** UART0_Init
337 ; ** Configure the UART0 using Timer1, for <BAUDRATE> and 8-N-1.
338 ; ******************************************************************************/
339 ;
340 ; void UART0_Init (void)
341
---- 342 RSEG ?PR?UART0_Init?COMM
0000 343 UART0_Init:
344 USING 0
345 ; SOURCE LINE # 21
346 ; {
347 ; SOURCE LINE # 22
348 ; SCON0 = 0x50; // SCON0: 8-bit variable bit rate
349 ; SOURCE LINE # 23
0000 759850 350 MOV SCON0,#050H
351 ; // level of STOP bit is ignored
352 ; // RX enabled
353 ; // ninth bits are zeros
354 ; // clear RI0 and TI0 bits
355 ; if (SYSCLK/BAUDRATE/2/256 < 1) {
356 ; SOURCE LINE # 28
357 ; TH1 = -(SYSCLK/BAUDRATE/2);
358 ; SOURCE LINE # 29
359 ; CKCON &= ~0x0B; // T1M = 1; SCA1:0 = xx
360 ; SOURCE LINE # 30
361 ; CKCON |= 0x08;
362 ; SOURCE LINE # 31
363 ; } else if (SYSCLK/BAUDRATE/2/256 < 4) {
364 ; SOURCE LINE # 32
365 ; TH1 = -(SYSCLK/BAUDRATE/2/4);
366 ; SOURCE LINE # 33
367 ; CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 01
368 ; SOURCE LINE # 34
369 ; CKCON |= 0x09;
370 ; SOURCE LINE # 35
371 ; } else if (SYSCLK/BAUDRATE/2/256 < 12) {
372 ; SOURCE LINE # 36
0003 373 ?C0003:
374 ; TH1 = -(SYSCLK/BAUDRATE/2/12);
375 ; SOURCE LINE # 37
0003 758D96 376 MOV TH1,#096H
377 ; CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 00
378 ; SOURCE LINE # 38
0006 538EF4 379 ANL CKCON,#0F4H
380 ; } else {
381 ; SOURCE LINE # 39
382 ; TH1 = -(SYSCLK/BAUDRATE/2/48);
383 ; SOURCE LINE # 40
384 ; CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10
385 ; SOURCE LINE # 41
386 ; CKCON |= 0x02;
387 ; SOURCE LINE # 42
388 ; }
A51 MACRO ASSEMBLER COMM 08/03/2009 16:57:28 PAGE 7
389 ; SOURCE LINE # 43
0009 390 ?C0002:
391 ;
392 ; TL1 = TH1; // init Timer1
393 ; SOURCE LINE # 45
0009 858D8B 394 MOV TL1,TH1
395 ; TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload
396 ; SOURCE LINE # 46
000C 53890F 397 ANL TMOD,#0FH
398 ; TMOD |= 0x20;
399 ; SOURCE LINE # 47
000F 438920 400 ORL TMOD,#020H
401 ; TR1 = 1; // START Timer1
402 ; SOURCE LINE # 48
0012 D28E 403 SETB TR1
404 ; Buff_Init();
405 ; SOURCE LINE # 49
0014 020000 F 406 LJMP Buff_Init
407 ; END OF UART0_Init
408
409 ;
410 ; }
411 ;
412 ; /******************************************************************************
413 ; ** 函数: Buff_Init (void)
414 ; ** 入参:
415 ; ** 返回:
416 ; ** 说明:
417 ; ******************************************************************************/
418 ; void Buff_Init (void)
419
---- 420 RSEG ?PR?Buff_Init?COMM
0000 421 Buff_Init:
422 USING 0
423 ; SOURCE LINE # 59
424 ; {
425 ; SOURCE LINE # 60
426 ;
427 ; inTxBuf=TxBuf;outTxBuf=TxBuf;
428 ; SOURCE LINE # 62
0000 900000 F 429 MOV DPTR,#inTxBuf
0003 7400 F 430 MOV A,#HIGH (TxBuf)
0005 F0 431 MOVX @DPTR,A
0006 A3 432 INC DPTR
0007 7400 F 433 MOV A,#LOW (TxBuf)
0009 F0 434 MOVX @DPTR,A
000A F9 435 MOV R1,A
000B A3 436 INC DPTR
000C 7401 437 MOV A,#01H
000E F0 438 MOVX @DPTR,A
000F A3 439 INC DPTR
0010 7400 F 440 MOV A,#HIGH (TxBuf)
0012 F0 441 MOVX @DPTR,A
0013 A3 442 INC DPTR
0014 E9 443 MOV A,R1
0015 F0 444 MOVX @DPTR,A
445 ; inRxBuf=RxBuf;outRxBuf=RxBuf;
446 ; SOURCE LINE # 63
0016 900000 F 447 MOV DPTR,#inRxBuf
0019 7401 448 MOV A,#01H
001B F0 449 MOVX @DPTR,A
001C A3 450 INC DPTR
001D 7400 F 451 MOV A,#HIGH (RxBuf)
001F F0 452 MOVX @DPTR,A
0020 A3 453 INC DPTR
0021 7400 F 454 MOV A,#LOW (RxBuf)
A51 MACRO ASSEMBLER COMM 08/03/2009 16:57:28 PAGE 8
0023 F0 455 MOVX @DPTR,A
0024 F9 456 MOV R1,A
0025 A3 457 INC DPTR
0026 7401 458 MOV A,#01H
0028 F0 459 MOVX @DPTR,A
0029 A3 460 INC DPTR
002A 7400 F 461 MOV A,#HIGH (RxBuf)
002C F0 462 MOVX @DPTR,A
002D A3 463 INC DPTR
002E E9 464 MOV A,R1
002F F0 465 MOVX @DPTR,A
466 ; EA=1;ES0=1;
467 ; SOURCE LINE # 64
0030 D2AF 468 SETB EA
0032 D2AC 469 SETB ES0
470 ;
471 ; }
472 ; SOURCE LINE # 66
0034 22 473 RET
474 ; END OF Buff_Init
475
---- 476 CSEG AT 00023H
0023 020000 F 477 LJMP serial
478
479 ;
480 ; /******************************************************************************
481 ; ** 函数: UATR0_ISR() interrupt
482 ; ** 入参:
483 ; ** 返回:
484 ; ** 说明: interrupt 4
485 ; ******************************************************************************/
486 ;
487 ; void serial(void) interrupt 4
488
---- 489 RSEG ?PR?serial?COMM
490 USING 0
0000 491 serial:
0000 C0E0 492 PUSH ACC
0002 C0F0 493 PUSH B
0004 C083 494 PUSH DPH
0006 C082 495 PUSH DPL
0008 C0D0 496 PUSH PSW
000A 75D000 497 MOV PSW,#00H
000D C000 498 PUSH AR0
000F C001 499 PUSH AR1
0011 C002 500 PUSH AR2
0013 C003 501 PUSH AR3
0015 C006 502 PUSH AR6
503 USING 0
504 ; SOURCE LINE # 75
505 ; {
506 ;
507 ; unsigned char *t;
508 ;
509 ; if(TI0)
510 ; SOURCE LINE # 80
0017 309978 511 JNB TI0,?C0009
512 ; {
513 ; SOURCE LINE # 81
514 ; TI0=0;
515 ; SOURCE LINE # 82
001A C299 516 CLR TI0
517 ; if(inTxBuf==outTxBuf) {TIflag=1;return;}//TxBuf Empty
518 ; SOURCE LINE # 83
001C 900000 F 519 MOV DPTR,#outTxBuf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -