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

📄 test2.lst

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