📄 test2.lst
字号:
03A2: CLRF x67
03A4: MOVF x67,W
03A6: IORWF 4C,W
03A8: MOVWF 43
03AA: MOVFF 65,44
.................... NumberPoint_bytes=(receiveMessage[4]*256)+ receiveMessage[5];
03AE: CLRF x66
03B0: MOVFF 4D,65
03B4: MOVLW 01
03B6: MOVWF x68
03B8: CLRF x67
03BA: RCALL 009E
03BC: MOVF 4E,W
03BE: ADDWF 01,W
03C0: MOVWF 42
.................... lengthOfResponseMessage_output=(receiveMessage[4]*256+receiveMessage[5])*2+5;
03C2: CLRF x66
03C4: MOVFF 4D,65
03C8: MOVLW 01
03CA: MOVWF x68
03CC: CLRF x67
03CE: RCALL 009E
03D0: MOVF 4E,W
03D2: ADDWF 01,W
03D4: MOVWF x67
03D6: MOVLW 00
03D8: ADDWFC 02,W
03DA: MOVWF x68
03DC: BCF FD8.0
03DE: RLCF x67,W
03E0: MOVWF x69
03E2: RLCF x68,W
03E4: MOVWF x6A
03E6: MOVLW 05
03E8: ADDWF x69,W
03EA: MOVWF 1D
03EC: MOVLW 00
03EE: ADDWFC x6A,W
03F0: MOVWF 1E
.................... break;
03F2: BRA 04BC
.................... }
.................... case(0x04): //READ INPUT REGISTERS
.................... {
.................... StartingAddress=0;
03F4: CLRF 44
03F6: CLRF 43
.................... NumberPoint_bytes=0;
03F8: CLRF 42
....................
.................... StartingAddress=((StartingAddress | receiveMessage[2]) << 8) | (receiveMessage[3]);
03FA: MOVF 43,W
03FC: IORWF 4B,W
03FE: MOVWF x65
0400: MOVFF 44,66
0404: CLRF x67
0406: MOVF x67,W
0408: IORWF 4C,W
040A: MOVWF 43
040C: MOVFF 65,44
.................... NumberPoint_bytes=(receiveMessage[4]*256)+ receiveMessage[5];
0410: CLRF x66
0412: MOVFF 4D,65
0416: MOVLW 01
0418: MOVWF x68
041A: CLRF x67
041C: RCALL 009E
041E: MOVF 4E,W
0420: ADDWF 01,W
0422: MOVWF 42
.................... lengthOfResponseMessage_output=(receiveMessage[4]*256+receiveMessage[5])*2+5;;
0424: CLRF x66
0426: MOVFF 4D,65
042A: MOVLW 01
042C: MOVWF x68
042E: CLRF x67
0430: RCALL 009E
0432: MOVF 4E,W
0434: ADDWF 01,W
0436: MOVWF x67
0438: MOVLW 00
043A: ADDWFC 02,W
043C: MOVWF x68
043E: BCF FD8.0
0440: RLCF x67,W
0442: MOVWF x69
0444: RLCF x68,W
0446: MOVWF x6A
0448: MOVLW 05
044A: ADDWF x69,W
044C: MOVWF 1D
044E: MOVLW 00
0450: ADDWFC x6A,W
0452: MOVWF 1E
.................... break;
0454: BRA 04BC
.................... }
.................... case(0x05): //FORCE SINGLE COIL
.................... {
.................... CoilAddress=0;
0456: CLRF 46
0458: CLRF 45
....................
.................... for (i=0;i<lengthOfResponseMessage_output;i++)
045A: CLRF x64
045C: MOVF 1E,F
045E: BNZ 0466
0460: MOVF 1D,W
0462: SUBWF x64,W
0464: BC 0498
.................... {
.................... responseMessage[i]=receiveMessage[i];
0466: CLRF 03
0468: MOVF x64,W
046A: ADDLW 2C
046C: MOVWF 01
046E: MOVLW 00
0470: ADDWFC 03,F
0472: MOVFF 03,66
0476: CLRF 03
0478: MOVF x64,W
047A: ADDLW 49
047C: MOVWF FE9
047E: MOVLW 00
0480: ADDWFC 03,W
0482: MOVWF FEA
0484: MOVFF FEF,67
0488: MOVFF 66,FEA
048C: MOVFF 01,FE9
0490: MOVFF 67,FEF
.................... }
0494: INCF x64,F
0496: BRA 045C
.................... CoilAddress=((CoilAddress | receiveMessage[2]) << 8) | (receiveMessage[3]);
0498: MOVF 45,W
049A: IORWF 4B,W
049C: MOVWF x65
049E: MOVFF 46,66
04A2: CLRF x67
04A4: MOVF x67,W
04A6: IORWF 4C,W
04A8: MOVWF 45
04AA: MOVFF 65,46
....................
.................... break;
04AE: BRA 04BC
.................... }
.................... case(0x06): //PRESET SINGLE REGISTER
.................... {
.................... break;
04B0: BRA 04BC
.................... }
.................... case(0x07): //read exception Status
.................... {
.................... break;
04B2: BRA 04BC
.................... }
.................... case(0x0B): //Fetch Comm Event Counter
.................... {
.................... break;
04B4: BRA 04BC
.................... }
.................... case(0x0F): //FORCE MULTIPLE COILS
.................... {
.................... break;
04B6: BRA 04BC
.................... }
.................... case(0x10): //PRESET MULTIPLE REGS
.................... {
.................... break;
04B8: BRA 04BC
.................... }
....................
.................... default:
.................... break;
04BA: BRA 04BC
.................... }
.................... }
.................... }
.................... else //RDA wait response message
04BC: BRA 04BE
.................... {
.................... }
.................... //ETransmit
.................... }
.................... /* else if (receiveMessage[0]!=Stage_ID)
.................... {
.................... //count=0;
.................... // receiveMessage[0]=0;
.................... } */
.................... }
....................
.................... //******************************************************************************
04BE: BCF F9E.5
04C0: GOTO 0058
.................... void setup()
.................... {
.................... delay_ms(100);
*
04EC: MOVLW 64
04EE: MOVWF 51
04F0: RCALL 04C4
.................... enable_interrupts(global);
04F2: MOVLW C0
04F4: IORWF FF2,F
.................... enable_interrupts(int_rda);
04F6: BSF F9D.5
.................... TrisD =0x00;
04F8: CLRF F95
.................... TrisA =0xff;
04FA: MOVLW FF
04FC: MOVWF F92
.................... PortA =0x00;
04FE: CLRF F80
.................... PortD =0xf0;
0500: MOVLW F0
0502: MOVWF F83
.................... // output_high(pin_c0);
.................... output_low(pin_c2); //RX
0504: BCF F94.2
0506: BCF F8B.2
....................
.................... }
0508: GOTO 05AC (RETURN)
.................... //******************************************************************************
.................... void main()
.................... {
*
053A: CLRF FF8
053C: BCF FD0.7
053E: BSF 0D.7
0540: CLRF FEA
0542: CLRF FE9
0544: BSF FB8.3
0546: MOVLW 11
0548: MOVWF FAF
054A: MOVLW 04
054C: MOVWF FB0
054E: MOVLW A6
0550: MOVWF FAC
0552: MOVLW 90
0554: MOVWF FAB
0556: BSF FB8.3
0558: MOVLW 11
055A: MOVWF FAF
055C: MOVLW 04
055E: MOVWF FB0
0560: MOVLW A6
0562: MOVWF FAC
0564: MOVLW 90
0566: MOVWF FAB
0568: MOVF FC1,W
056A: ANDLW C0
056C: IORLW 0F
056E: MOVWF FC1
0570: MOVLW 07
0572: MOVWF FB4
0574: CLRF 19
0576: CLRF 1A
0578: CLRF 1B
057A: CLRF 1C
057C: CLRF 1D
057E: CLRF 1E
0580: CLRF 1F
0582: CLRF 20
0584: CLRF 21
0586: CLRF 22
0588: BCF 23.0
058A: BCF 23.1
058C: BCF 23.2
058E: BCF 23.3
0590: CLRF 3B
0592: CLRF 3C
0594: MOVLW 02
0596: MOVWF 3D
0598: CLRF 3E
059A: CLRF 41
059C: CLRF 42
059E: CLRF 43
05A0: CLRF 44
05A2: CLRF 45
05A4: CLRF 46
05A6: CLRF 47
05A8: CLRF 48
....................
.................... setup();
05AA: BRA 04EC
....................
.................... while(true)
.................... {
....................
.................... if(value==1) //finish RDA message
05AC: DECFSZ 3B,W
05AE: BRA 0636
.................... {
.................... value=0;
05B0: CLRF 3B
.................... if ((functionCode_Receive!=0)&&(status==0)) //RDA wait querry message
05B2: MOVF 22,F
05B4: BZ 062C
05B6: BTFSC 23.3
05B8: BRA 062C
.................... {
.................... getCRC(receiveMessage,(lengthOfQueryMessage_input-2),CRC);
05BA: MOVLW 02
05BC: SUBWF 1F,W
05BE: MOVWF 51
05C0: MOVLW 00
05C2: SUBWFB 20,W
05C4: MOVWF 52
05C6: CLRF 18
05C8: BTFSC FF2.7
05CA: BSF 18.7
05CC: BCF FF2.7
05CE: CLRF x68
05D0: MOVLW 49
05D2: MOVWF x67
05D4: MOVFF 51,69
05D8: CLRF x6B
05DA: MOVLW 3F
05DC: MOVWF x6A
05DE: RCALL 00BC
05E0: BTFSC 18.7
05E2: BSF FF2.7
.................... if((CRC[1]==receiveMessage[7]) && (CRC[0]==receiveMessage[6]))
05E4: MOVF 50,W
05E6: SUBWF 40,W
05E8: BNZ 0620
05EA: MOVF 4F,W
05EC: SUBWF 3F,W
05EE: BNZ 0620
.................... {
....................
.................... PortD =receiveMessage[7];
05F0: MOVFF 50,F83
.................... output_high(pin_c2); //TX
05F4: BCF F94.2
05F6: BSF F8B.2
.................... switch (functionCode_Receive)
.................... {
05F8: MOVF 22,W
05FA: XORLW 01
05FC: BZ 0604
05FE: XORLW 04
0600: BZ 0610
0602: BRA 061C
.................... case(0x01): //READ COIL STATUS
.................... {
.................... functionCode_Receive=0;
0604: CLRF 22
.................... response(responseMessage);
0606: CLRF 52
0608: MOVLW 2C
060A: MOVWF 51
060C: RCALL 050C
....................
.................... break;
060E: BRA 061E
.................... }
.................... case(0x05): //FORCE SINGLE COIL
.................... {
.................... functionCode_Receive=0;
0610: CLRF 22
.................... response(responseMessage); //responseMessage
0612: CLRF 52
0614: MOVLW 2C
0616: MOVWF 51
0618: RCALL 050C
....................
.................... break;
061A: BRA 061E
.................... }
.................... default:
.................... break;
061C: BRA 061E
.................... }
.................... }
.................... else
061E: BRA 0622
.................... {
.................... functionCode_Receive=0;
0620: CLRF 22
.................... }
.................... delay_ms (5); //phai co thoi gian tre
0622: MOVLW 05
0624: MOVWF 51
0626: RCALL 04C4
.................... output_low(pin_c2); //RX
0628: BCF F94.2
062A: BCF F8B.2
.................... }
.................... if ((functionCode_Receive!=0)&&(status==1)) //RDA wait response message
062C: MOVF 22,F
062E: BZ 0636
0630: BTFSS 23.3
0632: BRA 0636
.................... {
.................... status=0;
0634: BCF 23.3
.................... }
....................
.................... }
.................... }
0636: BRA 05AC
.................... }
0638: SLEEP
Configuration Fuses:
Word 1: 0200 HS NOIESO NOFCMEN RESERVED
Word 2: 1E1E BROWNOUT NOWDT BORV21 PUT WDT32768
Word 3: 8200 PBADEN NOLPT1OSC MCLR RESERVED
Word 4: 0081 STVREN NODEBUG NOLVP BBSIZ1K NOXINST RESERVED
Word 5: C00F NOPROTECT NOCPD NOCPB
Word 6: E00F NOWRT NOWRTD NOWRTC NOWRTB
Word 7: 400F NOEBTR NOEBTRB
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -