📄 transmit.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 + -