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

📄 transmit.lst

📁 This is my code (with PIC 18F458) for Modbus RTU Network. I have written by Ccs laguage
💻 LST
字号:
CCS PCH C Compiler, Version 4.065, 9011               15-Feb-09 23:02

               Filename: E:\DIEN TU\PLC\MODBUS\VDK\transmit.lst

               ROM used: 502 bytes (2%)
                         Largest free fragment is 32262
               RAM used: 41 (3%) at main() level
                         52 (3%) worst case
               Stack:    2 worst case (1 in main + 1 for interrupts)

*
0000:  GOTO   0160
*
0008:  MOVWF  05
000A:  MOVFF  FD8,06
000E:  MOVFF  FE0,07
0012:  MOVLB  0
0014:  MOVFF  FE9,0D
0018:  MOVFF  FEA,08
001C:  MOVFF  FE1,09
0020:  MOVFF  FE2,0A
0024:  MOVFF  FD9,0B
0028:  MOVFF  FDA,0C
002C:  MOVFF  FF3,14
0030:  MOVFF  FF4,15
0034:  MOVFF  FFA,16
0038:  MOVFF  00,0F
003C:  MOVFF  01,10
0040:  MOVFF  02,11
0044:  MOVFF  03,12
0048:  MOVFF  04,13
004C:  BTFSS  F9D.5
004E:  GOTO   0058
0052:  BTFSC  F9E.5
0054:  GOTO   009E
0058:  MOVFF  0F,00
005C:  MOVFF  10,01
0060:  MOVFF  11,02
0064:  MOVFF  12,03
0068:  MOVFF  13,04
006C:  BSF    0E.7
006E:  MOVFF  0D,FE9
0072:  MOVFF  08,FEA
0076:  MOVFF  09,FE1
007A:  MOVFF  0A,FE2
007E:  MOVFF  0B,FD9
0082:  MOVFF  0C,FDA
0086:  MOVFF  14,FF3
008A:  MOVFF  15,FF4
008E:  MOVFF  16,FFA
0092:  MOVF   05,W
0094:  MOVFF  07,FE0
0098:  MOVFF  06,FD8
009C:  RETFIE 0
.................... #include <18f458.h> 
.................... //////// Standard Header file for the PIC18F458 device //////////////// 
.................... #device PIC18F458 
.................... #list 
....................  
.................... #device *=16 ADC=10 
.................... #fuses HS,NOWDT,NOPROTECT,NOLVP 
.................... #use delay(clock=40000000) 
*
00C8:  CLRF   FEA
00CA:  MOVLW  29
00CC:  MOVWF  FE9
00CE:  MOVF   FEF,W
00D0:  BZ    00EE
00D2:  MOVLW  0C
00D4:  MOVWF  01
00D6:  CLRF   00
00D8:  DECFSZ 00,F
00DA:  BRA    00D8
00DC:  DECFSZ 01,F
00DE:  BRA    00D6
00E0:  MOVLW  F7
00E2:  MOVWF  00
00E4:  DECFSZ 00,F
00E6:  BRA    00E4
00E8:  BRA    00EA
00EA:  DECFSZ FEF,F
00EC:  BRA    00D2
00EE:  RETLW  00
.................... #use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 ) 
....................  
.................... int8  message[6]={0x01,0x03,0x01,0x01,0x00,0x01}; 
.................... int8 huy[3]; 
.................... int8 CRC[2]; 
.................... int8 conv[2]; 
.................... int8 count=0; 
.................... int8 value=0; 
....................  
.................... #int_rda 
.................... void receive() 
.................... { 
....................    huy[count]=getc(); 
*
009E:  CLRF   03
00A0:  MOVF   25,W
00A2:  ADDLW  1E
00A4:  MOVWF  FE9
00A6:  MOVLW  00
00A8:  ADDWFC 03,W
00AA:  MOVWF  FEA
00AC:  BTFSS  F9E.5
00AE:  BRA    00AC
00B0:  MOVFF  FAE,FEF
....................    count++; 
00B4:  INCF   25,F
....................    if(count==2) 
00B6:  MOVF   25,W
00B8:  SUBLW  02
00BA:  BNZ   00C2
....................    { 
....................       count=0; 
00BC:  CLRF   25
....................       value=1; 
00BE:  MOVLW  01
00C0:  MOVWF  26
....................    } 
.................... } 
....................  
00C2:  BCF    F9E.5
00C4:  GOTO   0058
.................... void getCRC() // chuong tring con tinh CRC 
.................... {    
....................    int16 CRCFull = 0xFFFF; 
*
00F0:  MOVLW  FF
00F2:  MOVWF  28
00F4:  MOVWF  29
....................    int8 CRCHigh = 0xFF, CRCLow = 0xFF; 
00F6:  MOVWF  2A
00F8:  MOVWF  2B
....................    int16 CRCLSB; 
....................    int i,j; 
....................    for ( i = 0; i < 6; i++) 
00FA:  CLRF   2E
00FC:  MOVF   2E,W
00FE:  SUBLW  05
0100:  BNC   014C
....................    { 
....................       CRCFull = (int16)(CRCFull ^ message[i]); 
0102:  CLRF   03
0104:  MOVF   2E,W
0106:  ADDLW  18
0108:  MOVWF  FE9
010A:  MOVLW  00
010C:  ADDWFC 03,W
010E:  MOVWF  FEA
0110:  MOVF   FEF,W
0112:  XORWF  28,F
....................       for (j = 0; j < 8; j++) 
0114:  CLRF   2F
0116:  MOVF   2F,W
0118:  SUBLW  07
011A:  BNC   0148
....................       { 
....................          CRCLSB = (int16)(CRCFull & 0x0001); 
011C:  MOVF   28,W
011E:  ANDLW  01
0120:  MOVWF  2C
0122:  CLRF   2D
....................          CRCFull = (int16)((CRCFull >> 1) & 0x7FFF); 
0124:  BCF    FD8.0
0126:  RRCF   29,W
0128:  MOVWF  31
012A:  RRCF   28,W
012C:  MOVWF  28
012E:  MOVF   31,W
0130:  ANDLW  7F
0132:  MOVWF  29
....................          if (CRCLSB == 1) 
0134:  DECFSZ 2C,W
0136:  BRA    0144
0138:  MOVF   2D,F
013A:  BNZ   0144
....................          CRCFull = (int16)(CRCFull ^ 0xA001); 
013C:  MOVLW  01
013E:  XORWF  28,F
0140:  MOVLW  A0
0142:  XORWF  29,F
....................       } 
0144:  INCF   2F,F
0146:  BRA    0116
....................    } 
0148:  INCF   2E,F
014A:  BRA    00FC
....................    CRC[0] = CRCHigh = (int8)((CRCFull >> 8) & 0xFF); //char 
014C:  MOVFF  29,2A
0150:  MOVFF  2A,21
....................    CRC[1] = CRCLow = (int8)(CRCFull & 0xFF);       //char 
0154:  MOVFF  28,2B
0158:  MOVFF  2B,22
....................    //conv[0]=(int8)(CRC[1]); 
....................    //conv[1]=(int8)(CRC[0]); 
.................... } 
015C:  GOTO   01AC (RETURN)
....................  
.................... void main() 
.................... { 
0160:  CLRF   FF8
0162:  BCF    FD0.7
0164:  BSF    0D.7
0166:  CLRF   FEA
0168:  CLRF   FE9
016A:  MOVLW  40
016C:  MOVWF  FAF
016E:  MOVLW  A2
0170:  MOVWF  FAC
0172:  MOVLW  90
0174:  MOVWF  FAB
0176:  BSF    FC1.0
0178:  BSF    FC1.1
017A:  BSF    FC1.2
017C:  BCF    FC1.3
017E:  MOVLW  07
0180:  MOVWF  FB4
0182:  MOVLW  01
0184:  MOVWF  18
0186:  MOVLW  03
0188:  MOVWF  19
018A:  MOVLW  01
018C:  MOVWF  1A
018E:  MOVWF  1B
0190:  CLRF   1C
0192:  MOVWF  1D
0194:  CLRF   25
0196:  CLRF   26
....................    int i=0; 
0198:  CLRF   27
....................     
....................    enable_interrupts(global); 
019A:  MOVLW  C0
019C:  IORWF  FF2,F
....................    enable_interrupts(int_rda); 
019E:  BSF    F9D.5
....................    delay_ms(200);  
01A0:  MOVLW  C8
01A2:  MOVWF  29
01A4:  RCALL  00C8
....................    message[0]=1; 
01A6:  MOVLW  01
01A8:  MOVWF  18
....................    //CRC[1]=255; 
....................    //CRC[0]=15; 
....................    getCRC(); 
01AA:  BRA    00F0
....................    while(true) 
....................      {       
....................        if(value==1) 
01AC:  DECFSZ 26,W
01AE:  BRA    01F6
....................        { 
....................          value=0; 
01B0:  CLRF   26
....................          if(huy[0]==2) 
01B2:  MOVF   1E,W
01B4:  SUBLW  02
01B6:  BNZ   01F6
....................          { 
....................            
....................          putc(message[0]); 
01B8:  MOVF   18,W
01BA:  BTFSS  F9E.4
01BC:  BRA    01BA
01BE:  MOVWF  FAD
....................          putc(CRC[1]); 
01C0:  MOVF   22,W
01C2:  BTFSS  F9E.4
01C4:  BRA    01C2
01C6:  MOVWF  FAD
....................          putc(CRC[0]); 
01C8:  MOVF   21,W
01CA:  BTFSS  F9E.4
01CC:  BRA    01CA
01CE:  MOVWF  FAD
....................          delay_ms(500); 
01D0:  MOVLW  02
01D2:  MOVWF  28
01D4:  MOVLW  FA
01D6:  MOVWF  29
01D8:  RCALL  00C8
01DA:  DECFSZ 28,F
01DC:  BRA    01D4
....................          putc(message[0]); 
01DE:  MOVF   18,W
01E0:  BTFSS  F9E.4
01E2:  BRA    01E0
01E4:  MOVWF  FAD
....................          putc(CRC[1]); 
01E6:  MOVF   22,W
01E8:  BTFSS  F9E.4
01EA:  BRA    01E8
01EC:  MOVWF  FAD
....................          putc(CRC[0]); 
01EE:  MOVF   21,W
01F0:  BTFSS  F9E.4
01F2:  BRA    01F0
01F4:  MOVWF  FAD
....................          
....................          } 
....................        } 
....................    } 
01F6:  BRA    01AC
....................     
.................... } 
01F8:  SLEEP 

Configuration Fuses:
   Word  1: 2200   HS NOOSCSEN
   Word  2: 0E0E   BROWNOUT WDT128 NOWDT BORV20 PUT
   Word  3: 0000  
   Word  4: 0081   STVREN NODEBUG NOLVP
   Word  5: C00F   NOPROTECT NOCPD NOCPB
   Word  6: E00F   NOWRT NOWRTD NOWRTB NOWRTC
   Word  7: 400F   NOEBTR NOEBTRB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -