📄 crc-ccitt.src
字号:
; .\DeBug\CRC-CCITT.SRC generated from: CRC-CCITT.C
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE CRC-CCITT.C LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\DeBug\CRC-CCITT.lst) SRC(.\DeBug\CRC-CCITT.SRC)
$NOMOD51
NAME CRC_CCITT
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?_?cal_crc?CRC_CCITT SEGMENT CODE
?CO?CRC_CCITT SEGMENT CODE
EXTRN CODE (?C?ADDXBP)
EXTRN DATA (?C_XBP)
EXTRN CODE (?C?XBPOFF)
EXTRN CODE (?C?CLDPTR)
EXTRN CODE (?C?IILDX)
PUBLIC _?cal_crc
RSEG ?CO?CRC_CCITT
crc_ta:
DW 00000H
DW 01021H
DW 02042H
DW 03063H
DW 04084H
DW 050A5H
DW 060C6H
DW 070E7H
DW 08108H
DW 09129H
DW 0A14AH
DW 0B16BH
DW 0C18CH
DW 0D1ADH
DW 0E1CEH
DW 0F1EFH
DW 01231H
DW 00210H
DW 03273H
DW 02252H
DW 052B5H
DW 04294H
DW 072F7H
DW 062D6H
DW 09339H
DW 08318H
DW 0B37BH
DW 0A35AH
DW 0D3BDH
DW 0C39CH
DW 0F3FFH
DW 0E3DEH
DW 02462H
DW 03443H
DW 00420H
DW 01401H
DW 064E6H
DW 074C7H
DW 044A4H
DW 05485H
DW 0A56AH
DW 0B54BH
DW 08528H
DW 09509H
DW 0E5EEH
DW 0F5CFH
DW 0C5ACH
DW 0D58DH
DW 03653H
DW 02672H
DW 01611H
DW 00630H
DW 076D7H
DW 066F6H
DW 05695H
DW 046B4H
DW 0B75BH
DW 0A77AH
DW 09719H
DW 08738H
DW 0F7DFH
DW 0E7FEH
DW 0D79DH
DW 0C7BCH
DW 048C4H
DW 058E5H
DW 06886H
DW 078A7H
DW 00840H
DW 01861H
DW 02802H
DW 03823H
DW 0C9CCH
DW 0D9EDH
DW 0E98EH
DW 0F9AFH
DW 08948H
DW 09969H
DW 0A90AH
DW 0B92BH
DW 05AF5H
DW 04AD4H
DW 07AB7H
DW 06A96H
DW 01A71H
DW 00A50H
DW 03A33H
DW 02A12H
DW 0DBFDH
DW 0CBDCH
DW 0FBBFH
DW 0EB9EH
DW 09B79H
DW 08B58H
DW 0BB3BH
DW 0AB1AH
DW 06CA6H
DW 07C87H
DW 04CE4H
DW 05CC5H
DW 02C22H
DW 03C03H
DW 00C60H
DW 01C41H
DW 0EDAEH
DW 0FD8FH
DW 0CDECH
DW 0DDCDH
DW 0AD2AH
DW 0BD0BH
DW 08D68H
DW 09D49H
DW 07E97H
DW 06EB6H
DW 05ED5H
DW 04EF4H
DW 03E13H
DW 02E32H
DW 01E51H
DW 00E70H
DW 0FF9FH
DW 0EFBEH
DW 0DFDDH
DW 0CFFCH
DW 0BF1BH
DW 0AF3AH
DW 09F59H
DW 08F78H
DW 09188H
DW 081A9H
DW 0B1CAH
DW 0A1EBH
DW 0D10CH
DW 0C12DH
DW 0F14EH
DW 0E16FH
DW 01080H
DW 000A1H
DW 030C2H
DW 020E3H
DW 05004H
DW 04025H
DW 07046H
DW 06067H
DW 083B9H
DW 09398H
DW 0A3FBH
DW 0B3DAH
DW 0C33DH
DW 0D31CH
DW 0E37FH
DW 0F35EH
DW 002B1H
DW 01290H
DW 022F3H
DW 032D2H
DW 04235H
DW 05214H
DW 06277H
DW 07256H
DW 0B5EAH
DW 0A5CBH
DW 095A8H
DW 08589H
DW 0F56EH
DW 0E54FH
DW 0D52CH
DW 0C50DH
DW 034E2H
DW 024C3H
DW 014A0H
DW 00481H
DW 07466H
DW 06447H
DW 05424H
DW 04405H
DW 0A7DBH
DW 0B7FAH
DW 08799H
DW 097B8H
DW 0E75FH
DW 0F77EH
DW 0C71DH
DW 0D73CH
DW 026D3H
DW 036F2H
DW 00691H
DW 016B0H
DW 06657H
DW 07676H
DW 04615H
DW 05634H
DW 0D94CH
DW 0C96DH
DW 0F90EH
DW 0E92FH
DW 099C8H
DW 089E9H
DW 0B98AH
DW 0A9ABH
DW 05844H
DW 04865H
DW 07806H
DW 06827H
DW 018C0H
DW 008E1H
DW 03882H
DW 028A3H
DW 0CB7DH
DW 0DB5CH
DW 0EB3FH
DW 0FB1EH
DW 08BF9H
DW 09BD8H
DW 0ABBBH
DW 0BB9AH
DW 04A75H
DW 05A54H
DW 06A37H
DW 07A16H
DW 00AF1H
DW 01AD0H
DW 02AB3H
DW 03A92H
DW 0FD2EH
DW 0ED0FH
DW 0DD6CH
DW 0CD4DH
DW 0BDAAH
DW 0AD8BH
DW 09DE8H
DW 08DC9H
DW 07C26H
DW 06C07H
DW 05C64H
DW 04C45H
DW 03CA2H
DW 02C83H
DW 01CE0H
DW 00CC1H
DW 0EF1FH
DW 0FF3EH
DW 0CF5DH
DW 0DF7CH
DW 0AF9BH
DW 0BFBAH
DW 08FD9H
DW 09FF8H
DW 06E17H
DW 07E36H
DW 04E55H
DW 05E74H
DW 02E93H
DW 03EB2H
DW 00ED1H
DW 01EF0H
; /*
; *********************************************************************************************************
; * 基于uC/OS-II实时内核的串口传输CRC-CCITT校验程序
; * 版权所有
; *
; * 文件名 : CRC-CCITT.C
; * 作者 : 陈是知 csz-mail@126.com 北京中软 2005。3。11
; *********************************************************************************************************
; */
; #include "includes.h"
;
; INT16U cal_crc(INT8U *ptr, INT8U len) reentrant
RSEG ?PR?_?cal_crc?CRC_CCITT
_?cal_crc:
USING 0
; SOURCE LINE # 12
MOV DPTR,#0FFFFH
LCALL ?C?ADDXBP
MOV A,R5
MOVX @DPTR,A
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
MOV A,R3
MOVX @DPTR,A
INC DPTR
MOV A,R2
MOVX @DPTR,A
INC DPTR
MOV A,R1
MOVX @DPTR,A
MOV DPTR,#0FFFDH
LCALL ?C?ADDXBP
; {
; INT16U crc;
; INT8U da;
; INT16U code crc_ta[256]={ /* CRC 余式表 */
; 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
; 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
; 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
; 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
; 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
; 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
; 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
; 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
; 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
; 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
; 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
; 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
; 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
; 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
; 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
; 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
; 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
; 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
; 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
; 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
; 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
; 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
; 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
; 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
; 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
; 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
; 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
; 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
; 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
; 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
; 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
; 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
; };
; crc=0;
; SOURCE LINE # 50
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
CLR A
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
?C0001:
; while(len--!=0) {
; SOURCE LINE # 51
MOV DPTR,#06H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R7,A
DEC A
MOVX @DPTR,A
MOV A,R7
JNZ $ + 5H
LJMP ?C0002
; da=(INT8U)(crc/256); /* 以8 位二进制数的形式暂存CRC 的高8 位 */
; SOURCE LINE # 52
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
MOV A,R4
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
MOVX @DPTR,A
; crc<<=8; /* 左移8 位,相当于CRC 的低8 位乘以8 2 */
; SOURCE LINE # 53
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOV A,R5
MOVX @DPTR,A
INC DPTR
CLR A
MOVX @DPTR,A
; crc^=crc_ta[da^*ptr]; /* 高8 位和当前字节相加后再查表求CRC ,再加上以前的CRC */
; SOURCE LINE # 54
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
PUSH DPH
PUSH DPL
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?XBPOFF
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
LCALL ?C?CLDPTR
MOV R5,A
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
INC DPTR
INC DPTR
MOVX A,@DPTR
XRL A,R5
MOV B,#02H
MUL AB
ADD A,#LOW (crc_ta)
MOV DPL,A
MOV A,B
ADDC A,#HIGH (crc_ta)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#01H
MOVC A,@A+DPTR
MOV R5,A
MOV A,R6
XRL A,R4
MOV R6,A
MOV A,R7
XRL A,R5
MOV R7,A
POP DPL
POP DPH
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; ptr++;
; SOURCE LINE # 55
MOV DPTR,#03H
LCALL ?C?XBPOFF
INC DPTR
CLR A
MOV B,#01H
LCALL ?C?IILDX
; }
; SOURCE LINE # 56
LJMP ?C0001
?C0002:
; return(crc);
; SOURCE LINE # 57
MOV DPH,?C_XBP
MOV DPL,?C_XBP+01H
MOVX A,@DPTR
MOV R6,A
INC DPTR
MOVX A,@DPTR
MOV R7,A
; }
; SOURCE LINE # 58
?C0003:
MOV DPTR,#07H
LJMP ?C?ADDXBP
; END OF _?cal_crc
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -