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

📄 pc-pic.lst

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