📄 rs485.lst
字号:
269 ;rs485.c: 225: }
270 06B3 0ACB incf ?a_Rs485SendPacket+2
271 06B4 2EA8 goto l45
272 06B5 l37
273 ;rs485.c: 226: }
274 06B5 3004 movlw 4
275 06B6 120A 118A 2752 fcall _Rs485UpdateCrc
+ 120A 118A
276 ;rs485.c: 229: Rs485SendChar( 0x04 );
277 06BB 3004 movlw 4
278 06BC 2652 fcall _Rs485SendChar
279 ;rs485.c: 231: Rs485SendChar(cCalcCrcHigh);
280 06BD 0821 movf _cCalcCrcHigh,w
281 06BE 2652 fcall _Rs485SendChar
282 ;rs485.c: 232: Rs485SendChar(cCalcCrcLow);
283 06BF 0822 movf _cCalcCrcLow,w
284 06C0 2652 fcall _Rs485SendChar
285 ;rs485.c: 234: for ( c=0; c < 2; c++ ) Rs485Sen
+ dChar( 0xaa );
286 06C1 01CB clrf ?a_Rs485SendPacket+2
287 06C2 l46
288 06C2 30AA movlw -86
289 06C3 2652 fcall _Rs485SendChar
290 06C4 0ACB incf ?a_Rs485SendPacket+2
291 06C5 3002 movlw 2
292 06C6 024B subwf ?a_Rs485SendPacket+2,w
293 06C7 1C03 btfss 3,0
294 06C8 2EC2 goto l46
295 ;rs485.c: 235: DelayMs(1);
296 06C9 3001 movlw 1
297 06CA 120A 118A 24A9 fcall _DelayMs
+ 120A 118A
298 ;rs485.c: 236: RD4 = 0;
299 06CF 1208 bcf 8,4
300 ;rs485.c: 237: RCIE = 1;
301 06D0 1683 bsf 3,5
302 06D1 168C bsf 12,5
303 ;rs485.c: 238: }
304 06D2 1283 bcf 3,5
305 06D3 0008 return
306
307 psect text10
308 ;rs485.c: 382: unsigned char PacketHasPayload(v
+ oid)
309 ;rs485.c: 383: {
310 06D4 _PacketHasPayload
311 ;rs485.c: 384: if ( cCommand == 0xA4 ) return 1
+ ;
312 06D4 0183 clrf 3 ;select bank 0
313 06D5 0823 movf _cCommand,w
314 06D6 3AA4 xorlw -92
315 06D7 1903 btfsc 3,2
316 06D8 3401 retlw 1
317 06D9 3400 retlw 0
318 ;rs485.c: 118: unsigned char Rs485Decode( void
+ )
319 ;rs485.c: 119: {
320 06DA _Rs485Decode
321 ;rs485.c: 121: switch ( cRS485State )
322 06DA 2F0E goto l14
323 06DB l15
324 ;rs485.c: 122: {
325 06DB 0829 movf _cRs485RxChar,w
326 06DC 00AC movwf _cStart
327 ;rs485.c: 124: if ( cStart == 0x02 )
328 06DD 3A02 xorlw 2
329 06DE 2EFF goto L6
330 ;rs485.c: 125: {
331 ;rs485.c: 127: }
332 06DF l17
333 ;rs485.c: 130: case 1: cNetAddr = cRs485RxChar;
334 06DF 0829 movf _cRs485RxChar,w
335 06E0 00A5 movwf _cNetAddr
336 06E1 2F07 goto L4
337 ;rs485.c: 131: cRS485State++;
338 ;rs485.c: 132: break;
339 06E2 l18
340 ;rs485.c: 134: case 2: cLenExpected = cRs485RxC
+ har;
341 06E2 0829 movf _cRs485RxChar,w
342 06E3 00A4 movwf _cLenExpected
343 ;rs485.c: 135: if ( cLenExpected > sizeof(c485B
+ uf) )
344 06E4 3021 movlw 33
345 06E5 0224 subwf _cLenExpected,w
346 06E6 1C03 btfss 3,0
347 06E7 2EEA goto l19
348 ;rs485.c: 136: {
349 06E8 30FF movlw -1
350 06E9 2F0C goto L3
351 ;rs485.c: 138: }
352 06EA l19
353 ;rs485.c: 140: {
354 06EA 01A0 clrf _cBufPtr
355 06EB 2F07 goto L4
356 ;rs485.c: 142: cRS485State++;
357 ;rs485.c: 143: }
358 ;rs485.c: 144: break;
359 06EC l21
360 ;rs485.c: 146: case 3: cCommand = cRs485RxChar;
361 06EC 0829 movf _cRs485RxChar,w
362 06ED 00A3 movwf _cCommand
363 ;rs485.c: 147: if ( PacketHasPayload() ) cRS485
+ State = 4;
364 06EE 26D4 fcall _PacketHasPayload
365 06EF 3800 iorlw 0
366 06F0 1903 btfsc 3,2
367 06F1 2EF4 goto l22
368 06F2 3004 movlw 4
369 06F3 2F0C goto L3
370 ;rs485.c: 148: else cRS485State = 5;
371 06F4 l22
372 06F4 3005 movlw 5
373 06F5 2F0C goto L3
374 ;rs485.c: 149: break;
375 06F6 l24
376 ;rs485.c: 151: case 4: c485Buf[cBufPtr] = cRs48
+ 5RxChar;
377 06F6 0820 movf _cBufPtr,w
378 06F7 3EA0 addlw _c485Buf
379 06F8 0084 movwf 4
380 06F9 1383 bcf 3,7
381 06FA 0829 movf _cRs485RxChar,w
382 06FB 0080 movwf 0
383 ;rs485.c: 152: cBufPtr++;
384 06FC 0AA0 incf _cBufPtr
385 ;rs485.c: 153: if ( cBufPtr == cLenExpected )
386 06FD 0820 movf _cBufPtr,w
387 06FE 0624 xorwf _cLenExpected,w
388 06FF L6
389 06FF 1D03 btfss 3,2
390 0700 2F32 goto l13
391 0701 2F07 goto L4
392 ;rs485.c: 154: {
393 ;rs485.c: 156: }
394 0702 l26
395 ;rs485.c: 159: case 5: cStop = cRs485RxChar;
396 0702 0829 movf _cRs485RxChar,w
397 0703 00AD movwf _cStop
398 0704 2F07 goto L4
399 ;rs485.c: 160: cRS485State ++;
400 ;rs485.c: 161: break;
401 0705 l27
402 ;rs485.c: 163: case 6: cRxCrcHigh = cRs485RxCha
+ r;
403 0705 0829 movf _cRs485RxChar,w
404 0706 00AA movwf _cRxCrcHigh
405 0707 L4
406 ;rs485.c: 164: cRS485State++;
407 0707 0AA7 incf _cRS485State
408 ;rs485.c: 165: break;
409 0708 2F32 goto l13
410 0709 l28
411 ;rs485.c: 167: case 7: cRxCrcLow = cRs485RxChar
+ ;
412 0709 0829 movf _cRs485RxChar,w
413 070A 00AB movwf _cRxCrcLow
414 ;rs485.c: 168: cRS485State = 8;
415 070B 3008 movlw 8
416 070C L3
417 070C 00A7 movwf _cRS485State
418 ;rs485.c: 169: break;
419 ;rs485.c: 171: case 8: break;
420 ;rs485.c: 172: case 9: break;
421 ;rs485.c: 173: case 255: break;
422 070D 2F32 goto l13
423 ;rs485.c: 176: break;
424 070E l14
425 070E 1283 bcf 3,5
426 070F 1303 bcf 3,6 ;carry unused
427 0710 0827 movf _cRS485State,w
428 0711 1903 btfsc 3,2
429 0712 2EDB goto l15
430 0713 3A01 xorlw 1
431 0714 1903 btfsc 3,2
432 0715 2EDF goto l17
433 0716 3A03 xorlw 3
434 0717 1903 btfsc 3,2
435 0718 2EE2 goto l18
436 0719 3A01 xorlw 1
437 071A 1903 btfsc 3,2
438 071B 2EEC goto l21
439 071C 3A07 xorlw 7
440 071D 1903 btfsc 3,2
441 071E 2EF6 goto l24
442 071F 3A01 xorlw 1
443 0720 1903 btfsc 3,2
444 0721 2F02 goto l26
445 0722 3A03 xorlw 3
446 0723 1903 btfsc 3,2
447 0724 2F05 goto l27
448 0725 3A01 xorlw 1
449 0726 1903 btfsc 3,2
450 0727 2F09 goto l28
451 0728 3A0F xorlw 15
452 0729 1903 btfsc 3,2
453 072A 2F32 goto l13
454 072B 3A01 xorlw 1
455 072C 1903 btfsc 3,2
456 072D 2F32 goto l13
457 072E 3AF6 xorlw 246
458 072F 1903 btfsc 3,2
459 0730 2F32 goto l13
460 ;rs485.c: 175: default: cRS485State = 0;
461 0731 01A7 clrf _cRS485State
462 0732 l13
463 ;rs485.c: 179: return cRS485State;
464 0732 0827 movf _cRS485State,w
465 ;rs485.c: 180: }
466 0733 0008 return
467 ;rs485.c: 289: void CRC16_Update4Bits( unsigned
+ char val )
468 ;rs485.c: 290: {
469 0734 _CRC16_Update4Bits
470 ; _val assigned to ?a_CRC16_Update4Bits+0
471 0000 _CRC16_Update4Bits$val set ?a_CRC16_Update4Bits
472 ; _t assigned to ?a_CRC16_Update4Bits+1
473 0000 _CRC16_Update4Bits$t set ?a_CRC16_Update4Bits+1
474 ;_val stored from w
475 0734 0183 clrf 3 ;select bank 0
476 0735 00CD movwf ?a_CRC16_Update4Bits
477 ;rs485.c: 291: unsigned char t;
478 0736 0E21 swapf _cCalcCrcHigh,w
479 0737 390F andlw 15
480 0738 00CE movwf ?a_CRC16_Update4Bits+1
481 ;rs485.c: 297: t = t ^ val;
482 0739 084D movf ?a_CRC16_Update4Bits,w
483 073A 06CE xorwf ?a_CRC16_Update4Bits+1
484 ;rs485.c: 300: cCalcCrcHigh = (cCalcCrcHigh <<
+ 4) | (cCalcCrcLow >> 4);
485 073B 0E22 swapf _cCalcCrcLow,w
486 073C 390F andlw 15
487 073D 00F0 movwf btemp
488 073E 0E21 swapf _cCalcCrcHigh,w
489 073F 39F0 andlw 240
490 0740 0470 iorwf btemp,w
491 0741 00A1 movwf _cCalcCrcHigh
492 ;rs485.c: 301: cCalcCrcLow = cCalcCrcLow << 4;
493 0742 0EA2 swapf _cCalcCrcLow
494 0743 30F0 movlw 240
495 0744 05A2 andwf _cCalcCrcLow
496 ;rs485.c: 304: cCalcCrcHigh = cCalcCrcHigh ^ CR
+ C16_LookupHigh[t];
497 0745 3000 movlw _CRC16_LookupHigh shr (0+8)
498 0746 008A movwf 10
499 0747 084E movf ?a_CRC16_Update4Bits+1,w
500 0748 2077 call ((_CRC16_LookupHigh+-1)& (0+2047))| (($)&
+ (0+-2048))
501 0749 06A1 xorwf _cCalcCrcHigh
502 ;rs485.c: 305: cCalcCrcLow = cCalcCrcLow ^ CRC1
+ 6_LookupLow[t];
503 074A 3000 movlw _CRC16_LookupLow shr (0+8)
504 074B 008A movwf 10
505 074C 084E movf ?a_CRC16_Update4Bits+1,w
506 074D 2066 call ((_CRC16_LookupLow+-1)& (0+2047))| (($)&
+ (0+-2048))
507 074E 120A 118A pagesel $
508 0750 06A2 xorwf _cCalcCrcLow
509 ;rs485.c: 306: }
510 0751 0008 return
511 ;rs485.c: 311: void Rs485UpdateCrc( unsigned ch
+ ar cVal )
512 ;rs485.c: 312: {
513 0752 _Rs485UpdateCrc
514 ; _cVal assigned to ?a_Rs485UpdateCrc+0
515 0000 _Rs485UpdateCrc$cVal set ?a_Rs485UpdateCrc
516 ;_cVal stored from w
517 0752 0183 clrf 3 ;select bank 0
518 0753 00CC movwf ?a_Rs485UpdateCrc
519 ;rs485.c: 313: CRC16_Update4Bits( cVal >> 4 );
520 0754 0E4C swapf ?a_Rs485UpdateCrc,w
521 0755 390F andlw 15
522 0756 2734 120A 118A fcall _CRC16_Update4Bits
523 ;rs485.c: 314: CRC16_Update4Bits( cVal & 0x0F )
+ ;
524 0759 084C movf ?a_Rs485UpdateCrc,w
525 075A 390F andlw 15
526 075B 2F34 ljmp _CRC16_Update4Bits
527 ;rs485.c: 277: void CRC16_Init( void )
528 ;rs485.c: 278: {
529 075C _CRC16_Init
530 ;rs485.c: 280: cCalcCrcHigh = 0xFF;
531 075C 30FF movlw -1
532 075D 0183 clrf 3 ;select bank 0
533 075E 00A1 movwf _cCalcCrcHigh
534 ;rs485.c: 281: cCalcCrcLow = 0xFF;
535 075F 00A2 movwf _cCalcCrcLow
536 ;rs485.c: 282: }
537 0760 0008 return
538 ;rs485.c: 340: unsigned char PostValidatePacket
+ (void)
539 ;rs485.c: 341: {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -