📄 pc-pic.lst
字号:
0184: BZ 01F8
0186: XORLW 01
0188: BZ 0208
018A: XORLW 0C
018C: BZ 021A
018E: XORLW 07
0190: BZ 022C
0192: XORLW 03
0194: BZ 023E
0196: XORLW 1F
0198: BZ 0250
019A: XORLW 01
019C: BZ 0262
019E: XORLW 05
01A0: BZ 0268
01A2: XORLW 01
01A4: BZ 026E
01A6: XORLW 03
01A8: BZ 0274
01AA: XORLW 01
01AC: BZ 027A
01AE: XORLW 0F
01B0: BZ 0280
01B2: BRA 0286
.................... case(0x01): //READ COIL STATUS
.................... {
.................... functionCode_Receive=0x01;
01B4: MOVLW 01
01B6: MOVWF 22
.................... lengthOfQueryMessage_input=8;
01B8: CLRF 20
01BA: MOVLW 08
01BC: MOVWF 1F
.................... break;
01BE: BRA 0288
.................... }
.................... case(0x02): //READ INPUT STATUS
.................... {
.................... functionCode_Receive=0x02;
01C0: MOVLW 02
01C2: MOVWF 22
.................... lengthOfResponseMessage_output=8;
01C4: CLRF 1E
01C6: MOVLW 08
01C8: MOVWF 1D
.................... lengthOfQueryMessage_input=8;
01CA: CLRF 20
01CC: MOVWF 1F
.................... break;
01CE: BRA 0288
.................... }
.................... case(0x03): //READ HOLDING REGISTERS
.................... {
.................... functionCode_Receive=0x03;
01D0: MOVLW 03
01D2: MOVWF 22
.................... lengthOfQueryMessage_input=8;
01D4: CLRF 20
01D6: MOVLW 08
01D8: MOVWF 1F
.................... break;
01DA: BRA 0288
.................... }
.................... case(0x04): //READ INPUT REGISTERS
.................... {
.................... lengthOfQueryMessage_input=8;
01DC: CLRF 20
01DE: MOVLW 08
01E0: MOVWF 1F
.................... functionCode_Receive=0x04;
01E2: MOVLW 04
01E4: MOVWF 22
.................... break;
01E6: BRA 0288
.................... }
.................... case(0x05): //FORCE SINGLE COIL
.................... {
.................... functionCode_Receive=0x05;
01E8: MOVLW 05
01EA: MOVWF 22
.................... lengthOfResponseMessage_output=8;
01EC: CLRF 1E
01EE: MOVLW 08
01F0: MOVWF 1D
.................... lengthOfQueryMessage_input=8;
01F2: CLRF 20
01F4: MOVWF 1F
.................... break;
01F6: BRA 0288
.................... }
.................... case(0x06): //PRESET SINGLE REGISTER
.................... {
.................... lengthOfResponseMessage_output=8;
01F8: CLRF 1E
01FA: MOVLW 08
01FC: MOVWF 1D
.................... lengthOfQueryMessage_input=8;
01FE: CLRF 20
0200: MOVWF 1F
.................... functionCode_Receive=0x06;
0202: MOVLW 06
0204: MOVWF 22
.................... break;
0206: BRA 0288
.................... }
.................... case(0x07): //read exception Status
.................... {
.................... lengthOfResponseMessage_output=5;
0208: CLRF 1E
020A: MOVLW 05
020C: MOVWF 1D
.................... lengthOfQueryMessage_input=4;
020E: CLRF 20
0210: MOVLW 04
0212: MOVWF 1F
.................... functionCode_Receive=0x07;
0214: MOVLW 07
0216: MOVWF 22
.................... break;
0218: BRA 0288
.................... }
.................... case(0x0B): //Fetch Comm Event Counter
.................... {
.................... lengthOfResponseMessage_output=8;
021A: CLRF 1E
021C: MOVLW 08
021E: MOVWF 1D
.................... lengthOfQueryMessage_input=4;
0220: CLRF 20
0222: MOVLW 04
0224: MOVWF 1F
.................... functionCode_Receive=0x0B;
0226: MOVLW 0B
0228: MOVWF 22
.................... break;
022A: BRA 0288
.................... }
.................... case(0x0C):
.................... {
.................... lengthOfResponseMessage_output=13;
022C: CLRF 1E
022E: MOVLW 0D
0230: MOVWF 1D
.................... lengthOfQueryMessage_input=4;
0232: CLRF 20
0234: MOVLW 04
0236: MOVWF 1F
.................... functionCode_Receive=0x0C;
0238: MOVLW 0C
023A: MOVWF 22
.................... break;
023C: BRA 0288
.................... }
.................... case(0x0F): //FORCE MULTIPLE COILS
.................... {
.................... lengthOfResponseMessage_output=8;
023E: CLRF 1E
0240: MOVLW 08
0242: MOVWF 1D
.................... lengthOfQueryMessage_input=10;
0244: CLRF 20
0246: MOVLW 0A
0248: MOVWF 1F
.................... functionCode_Receive=0x0F;
024A: MOVLW 0F
024C: MOVWF 22
.................... break;
024E: BRA 0288
.................... }
.................... case(0x10): //PRESET MULTIPLE REGS
.................... {
.................... lengthOfResponseMessage_output=8;
0250: CLRF 1E
0252: MOVLW 08
0254: MOVWF 1D
.................... lengthOfQueryMessage_input=13;
0256: CLRF 20
0258: MOVLW 0D
025A: MOVWF 1F
.................... functionCode_Receive=0x10;
025C: MOVLW 10
025E: MOVWF 22
.................... break;
0260: BRA 0288
.................... }
.................... case(0x11):
.................... {
.................... functionCode_Receive=0x11;
0262: MOVLW 11
0264: MOVWF 22
.................... break;
0266: BRA 0288
.................... }
.................... case(0x14):
.................... {
.................... functionCode_Receive=0x14;
0268: MOVLW 14
026A: MOVWF 22
.................... break;
026C: BRA 0288
.................... }
.................... case(0x15):
.................... {
.................... functionCode_Receive=0x15;
026E: MOVLW 15
0270: MOVWF 22
.................... break;
0272: BRA 0288
.................... }
.................... case(0x16):
.................... {
.................... functionCode_Receive=0x16;
0274: MOVLW 16
0276: MOVWF 22
.................... break;
0278: BRA 0288
.................... }
.................... case(0x17):
.................... {
.................... functionCode_Receive=0x17;
027A: MOVLW 17
027C: MOVWF 22
.................... break;
027E: BRA 0288
.................... }
.................... case(0x18):
.................... {
.................... functionCode_Receive=0x18;
0280: MOVLW 18
0282: MOVWF 22
.................... break;
0284: BRA 0288
.................... }
.................... default:
.................... break;
0286: BRA 0288
.................... }
.................... }
.................... if(count==lengthOfQueryMessage_input)
0288: MOVF 1F,W
028A: SUBWF 3C,W
028C: BTFSS FD8.2
028E: BRA 04BC
0290: MOVF 20,F
0292: BTFSS FD8.2
0294: BRA 04BC
.................... {
.................... count=0;
0296: CLRF 3C
.................... value=1;
0298: MOVLW 01
029A: MOVWF 3B
.................... Switch (receiveMessage[1])
.................... {
029C: MOVF 49,W
029E: XORLW 01
02A0: BZ 02DA
02A2: XORLW 03
02A4: BTFSC FD8.2
02A6: BRA 0390
02A8: XORLW 01
02AA: BTFSC FD8.2
02AC: BRA 0392
02AE: XORLW 07
02B0: BTFSC FD8.2
02B2: BRA 03F4
02B4: XORLW 01
02B6: BTFSC FD8.2
02B8: BRA 0456
02BA: XORLW 03
02BC: BTFSC FD8.2
02BE: BRA 04B0
02C0: XORLW 01
02C2: BTFSC FD8.2
02C4: BRA 04B2
02C6: XORLW 0C
02C8: BTFSC FD8.2
02CA: BRA 04B4
02CC: XORLW 04
02CE: BTFSC FD8.2
02D0: BRA 04B6
02D2: XORLW 1F
02D4: BTFSC FD8.2
02D6: BRA 04B8
02D8: BRA 04BA
.................... case(0x01): //READ COIL STATUS
.................... {
.................... /* StartingAddress=0;
.................... StartingAddressHigh=0;
.................... StartingAddressLow=0;
.................... StartingAddressHigh=receiveMessage[2]& 0x00ff;
.................... StartingAddressLow=receiveMessage[3]& 0x00ff;
.................... StartingAddress=((StartingAddress | StartingAddressHigh) << 8) | (StartingAddressLow); */
....................
.................... StartingAddress=0;
02DA: CLRF 44
02DC: CLRF 43
.................... NumberPoint_bits=0;
02DE: CLRF 41
....................
.................... StartingAddress=((StartingAddress | receiveMessage[2]) << 8) | (receiveMessage[3]);
02E0: MOVF 43,W
02E2: IORWF 4A,W
02E4: MOVWF x64
02E6: MOVFF 44,65
02EA: CLRF x66
02EC: MOVF x66,W
02EE: IORWF 4B,W
02F0: MOVWF 43
02F2: MOVFF 64,44
.................... NumberPoint_bits=(receiveMessage[4]*256)+ receiveMessage[5];
02F6: CLRF x65
02F8: MOVFF 4C,64
02FC: MOVLW 01
02FE: MOVWF x67
0300: CLRF x66
0302: RCALL 009E
0304: MOVF 4D,W
0306: ADDWF 01,W
0308: MOVWF 41
....................
.................... if (NumberPoint_bits % 8 == 0)
030A: MOVF 41,W
030C: ANDLW 07
030E: BNZ 0332
.................... {
.................... lengthOfResponseMessage_output = 5 + NumberPoint_bits / 8;
0310: RRCF 41,W
0312: MOVWF 00
0314: RRCF 00,F
0316: RRCF 00,F
0318: MOVLW 1F
031A: ANDWF 00,F
031C: MOVF 00,W
031E: ADDLW 05
0320: MOVWF 1D
0322: CLRF 1E
.................... ByteCount= NumberPoint_bits / 8;
0324: RRCF 41,W
0326: MOVWF 47
0328: RRCF 47,F
032A: RRCF 47,F
032C: MOVLW 1F
032E: ANDWF 47,F
.................... }
.................... else
0330: BRA 0358
.................... {
.................... lengthOfResponseMessage_output = 6 + NumberPoint_bits / 8;
0332: RRCF 41,W
0334: MOVWF 00
0336: RRCF 00,F
0338: RRCF 00,F
033A: MOVLW 1F
033C: ANDWF 00,F
033E: MOVF 00,W
0340: ADDLW 06
0342: MOVWF 1D
0344: CLRF 1E
.................... ByteCount= 1 + NumberPoint_bits / 8;
0346: RRCF 41,W
0348: MOVWF 00
034A: RRCF 00,F
034C: RRCF 00,F
034E: MOVLW 1F
0350: ANDWF 00,F
0352: MOVF 00,W
0354: ADDLW 01
0356: MOVWF 47
.................... }
....................
.................... //***********xu ly data truyen di******************************
.................... responseMessage[0]=receiveMessage[0]; //Slave Address
0358: MOVFF 48,2C
.................... responseMessage[1]=receiveMessage[1]; //function
035C: MOVFF 49,2D
.................... responseMessage[2]=ByteCount; //bytecount
0360: MOVFF 47,2E
.................... responseMessage[3]=0x0f; //value
0364: MOVLW 0F
0366: MOVWF 2F
.................... getCRC(responseMessage,(lengthOfResponseMessage_output-2),CRC);
0368: MOVLW 02
036A: SUBWF 1D,W
036C: MOVWF x64
036E: MOVLW 00
0370: SUBWFB 1E,W
0372: MOVWF x65
0374: CLRF x67
0376: MOVLW 2C
0378: MOVWF x66
037A: MOVFF 64,68
037E: CLRF x6A
0380: MOVLW 3F
0382: MOVWF x69
0384: RCALL 00BC
.................... responseMessage[4]=CRC[0];
0386: MOVFF 3F,30
.................... responseMessage[5]=CRC[1];
038A: MOVFF 40,31
.................... //*************************************************************
.................... break;
038E: BRA 04BC
.................... }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -