📄 pc-pic.lst
字号:
.................... case(0x02): //READ INPUT STATUS
.................... {
.................... break;
0390: BRA 04BC
.................... }
.................... case(0x03): //READ HOLDING REGISTERS
.................... {
.................... StartingAddress=0;
0392: CLRF 44
0394: CLRF 43
.................... NumberPoint_bytes=0;
0396: CLRF 42
....................
.................... StartingAddress=((StartingAddress | receiveMessage[2]) << 8) | (receiveMessage[3]);
0398: MOVF 43,W
039A: IORWF 4A,W
039C: MOVWF x64
039E: MOVFF 44,65
03A2: CLRF x66
03A4: MOVF x66,W
03A6: IORWF 4B,W
03A8: MOVWF 43
03AA: MOVFF 64,44
.................... NumberPoint_bytes=(receiveMessage[4]*256)+ receiveMessage[5];
03AE: CLRF x65
03B0: MOVFF 4C,64
03B4: MOVLW 01
03B6: MOVWF x67
03B8: CLRF x66
03BA: RCALL 009E
03BC: MOVF 4D,W
03BE: ADDWF 01,W
03C0: MOVWF 42
.................... lengthOfResponseMessage_output=(receiveMessage[4]*256+receiveMessage[5])*2+5;
03C2: CLRF x65
03C4: MOVFF 4C,64
03C8: MOVLW 01
03CA: MOVWF x67
03CC: CLRF x66
03CE: RCALL 009E
03D0: MOVF 4D,W
03D2: ADDWF 01,W
03D4: MOVWF x66
03D6: MOVLW 00
03D8: ADDWFC 02,W
03DA: MOVWF x67
03DC: BCF FD8.0
03DE: RLCF x66,W
03E0: MOVWF x68
03E2: RLCF x67,W
03E4: MOVWF x69
03E6: MOVLW 05
03E8: ADDWF x68,W
03EA: MOVWF 1D
03EC: MOVLW 00
03EE: ADDWFC x69,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 4A,W
03FE: MOVWF x64
0400: MOVFF 44,65
0404: CLRF x66
0406: MOVF x66,W
0408: IORWF 4B,W
040A: MOVWF 43
040C: MOVFF 64,44
.................... NumberPoint_bytes=(receiveMessage[4]*256)+ receiveMessage[5];
0410: CLRF x65
0412: MOVFF 4C,64
0416: MOVLW 01
0418: MOVWF x67
041A: CLRF x66
041C: RCALL 009E
041E: MOVF 4D,W
0420: ADDWF 01,W
0422: MOVWF 42
.................... lengthOfResponseMessage_output=(receiveMessage[4]*256+receiveMessage[5])*2+5;;
0424: CLRF x65
0426: MOVFF 4C,64
042A: MOVLW 01
042C: MOVWF x67
042E: CLRF x66
0430: RCALL 009E
0432: MOVF 4D,W
0434: ADDWF 01,W
0436: MOVWF x66
0438: MOVLW 00
043A: ADDWFC 02,W
043C: MOVWF x67
043E: BCF FD8.0
0440: RLCF x66,W
0442: MOVWF x68
0444: RLCF x67,W
0446: MOVWF x69
0448: MOVLW 05
044A: ADDWF x68,W
044C: MOVWF 1D
044E: MOVLW 00
0450: ADDWFC x69,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 x63
045C: MOVF 1E,F
045E: BNZ 0466
0460: MOVF 1D,W
0462: SUBWF x63,W
0464: BC 0498
.................... {
.................... responseMessage[i]=receiveMessage[i];
0466: CLRF 03
0468: MOVF x63,W
046A: ADDLW 2C
046C: MOVWF 01
046E: MOVLW 00
0470: ADDWFC 03,F
0472: MOVFF 03,65
0476: CLRF 03
0478: MOVF x63,W
047A: ADDLW 48
047C: MOVWF FE9
047E: MOVLW 00
0480: ADDWFC 03,W
0482: MOVWF FEA
0484: MOVFF FEF,66
0488: MOVFF 65,FEA
048C: MOVFF 01,FE9
0490: MOVFF 66,FEF
.................... }
0494: INCF x63,F
0496: BRA 045C
.................... CoilAddress=((CoilAddress | receiveMessage[2]) << 8) | (receiveMessage[3]);
0498: MOVF 45,W
049A: IORWF 4A,W
049C: MOVWF x64
049E: MOVFF 46,65
04A2: CLRF x66
04A4: MOVF x66,W
04A6: IORWF 4B,W
04A8: MOVWF 45
04AA: MOVFF 64,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
.................... {
.................... }
....................
.................... }
.................... }
....................
.................... //******************************************************************************
04BE: BCF F9E.5
04C0: GOTO 0058
.................... void setup()
.................... {
.................... delay_ms(100);
*
04EE: MOVLW 64
04F0: MOVWF 50
04F2: BRA 04C4
.................... enable_interrupts(global);
04F4: MOVLW C0
04F6: IORWF FF2,F
.................... enable_interrupts(int_rda);
04F8: BSF F9D.5
.................... TrisD =0x00;
04FA: CLRF F95
.................... TrisA =0xff;
04FC: MOVLW FF
04FE: MOVWF F92
.................... PortA =0x00;
0500: CLRF F80
.................... PortD =0xf0;
0502: MOVLW F0
0504: MOVWF F83
....................
.................... }
0506: GOTO 05A8 (RETURN)
.................... //******************************************************************************
.................... void main()
.................... {
*
0538: CLRF FF8
053A: BCF FD0.7
053C: BSF 0D.7
053E: CLRF FEA
0540: CLRF FE9
0542: BSF FB8.3
0544: MOVLW 11
0546: MOVWF FAF
0548: MOVLW 04
054A: MOVWF FB0
054C: MOVLW A6
054E: MOVWF FAC
0550: MOVLW 90
0552: MOVWF FAB
0554: BSF FB8.3
0556: MOVLW 11
0558: MOVWF FAF
055A: MOVLW 04
055C: MOVWF FB0
055E: MOVLW A6
0560: MOVWF FAC
0562: MOVLW 90
0564: MOVWF FAB
0566: MOVF FC1,W
0568: ANDLW C0
056A: IORLW 0F
056C: MOVWF FC1
056E: MOVLW 07
0570: MOVWF FB4
0572: CLRF 19
0574: CLRF 1A
0576: CLRF 1B
0578: CLRF 1C
057A: CLRF 1D
057C: CLRF 1E
057E: CLRF 1F
0580: CLRF 20
0582: CLRF 21
0584: CLRF 22
0586: BCF 23.0
0588: BCF 23.1
058A: BCF 23.2
058C: BCF 23.3
058E: CLRF 3B
0590: CLRF 3C
0592: MOVLW 01
0594: MOVWF 3D
0596: CLRF 3E
0598: CLRF 41
059A: CLRF 42
059C: CLRF 43
059E: CLRF 44
05A0: CLRF 45
05A2: CLRF 46
05A4: CLRF 47
....................
.................... setup();
05A6: BRA 04EE
....................
.................... while(true)
.................... {
.................... if(value==1) //finish RDA message
05A8: DECFSZ 3B,W
05AA: BRA 0620
.................... {
.................... value=0;
05AC: CLRF 3B
.................... if ((functionCode_Receive!=0)&&(status==0)) //RDA wait querry message
05AE: MOVF 22,F
05B0: BZ 0616
05B2: BTFSC 23.3
05B4: BRA 0616
.................... {
.................... getCRC(receiveMessage,(lengthOfQueryMessage_input-2),CRC);
05B6: MOVLW 02
05B8: SUBWF 1F,W
05BA: MOVWF 50
05BC: MOVLW 00
05BE: SUBWFB 20,W
05C0: MOVWF 51
05C2: CLRF 18
05C4: BTFSC FF2.7
05C6: BSF 18.7
05C8: BCF FF2.7
05CA: CLRF x67
05CC: MOVLW 48
05CE: MOVWF x66
05D0: MOVFF 50,68
05D4: CLRF x6A
05D6: MOVLW 3F
05D8: MOVWF x69
05DA: RCALL 00BC
05DC: BTFSC 18.7
05DE: BSF FF2.7
.................... if((CRC[1]==receiveMessage[7]) && (CRC[0]==receiveMessage[6]))
05E0: MOVF 4F,W
05E2: SUBWF 40,W
05E4: BNZ 0616
05E6: MOVF 4E,W
05E8: SUBWF 3F,W
05EA: BNZ 0616
.................... {
.................... PortD =receiveMessage[7];
05EC: MOVFF 4F,F83
.................... switch (functionCode_Receive)
.................... {
05F0: MOVF 22,W
05F2: XORLW 01
05F4: BZ 05FC
05F6: XORLW 04
05F8: BZ 0608
05FA: BRA 0614
.................... case(0x01): //READ COIL STATUS
.................... {
.................... functionCode_Receive=0;
05FC: CLRF 22
.................... response(responseMessage);
05FE: CLRF 51
0600: MOVLW 2C
0602: MOVWF 50
0604: RCALL 050A
.................... break;
0606: BRA 0616
.................... }
.................... case(0x05): //FORCE SINGLE COIL
.................... {
.................... functionCode_Receive=0;
0608: CLRF 22
.................... response(responseMessage); //responseMessage
060A: CLRF 51
060C: MOVLW 2C
060E: MOVWF 50
0610: RCALL 050A
.................... break;
0612: BRA 0616
.................... }
.................... default:
.................... break;
0614: BRA 0616
.................... }
.................... }
.................... }
.................... if ((functionCode_Receive!=0)&&(status==1)) //RDA wait response message
0616: MOVF 22,F
0618: BZ 0620
061A: BTFSS 23.3
061C: BRA 0620
.................... {
.................... status=0;
061E: BCF 23.3
.................... }
.................... }
.................... }
0620: BRA 05A8
.................... }
0622: 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 + -