⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pc-pic.lst

📁 This is my code (with PIC 18F458) for Modbus RTU Network. I have written by Ccs laguage
💻 LST
📖 第 1 页 / 共 3 页
字号:
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 + -