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

📄 ccitt.src

📁 用于51单片机的高速CRC-16计算程序
💻 SRC
字号:
; CCITT.SRC generated from: CCITT.c
; COMPILER INVOKED BY:
;        C:\Keil\C51\BIN\C51.EXE CCITT.c BROWSE SRC DEBUG OBJECTEXTEND


NAME	CCITT

?PR?_CrcFix?CCITT    SEGMENT CODE 
?DT?_CrcFix?CCITT    SEGMENT DATA OVERLAYABLE 
?PR?CrcFixClr?CCITT  SEGMENT CODE 
?PR?_CrcPtr?CCITT    SEGMENT CODE 
?PR?_CrcPtrClr?CCITT SEGMENT CODE 
?DT?CCITT            SEGMENT DATA 
	PUBLIC	CrcL
	PUBLIC	CrcH
	PUBLIC	_CrcPtrClr
	PUBLIC	_CrcPtr
	PUBLIC	CrcFixClr
	PUBLIC	_CrcFix

	RSEG  ?DT?_CrcFix?CCITT
?_CrcFix?BYTE:
       dats?040:   DS   1

	RSEG  ?DT?CCITT
           CrcH:   DS   1
           CrcL:   DS   1
; #include "CCITT.h"
; 
; uchar data  CrcH;
; uchar data  CrcL;
; 
; void CrcFix(char dats)  // ;固定CRC输出位置算法 23指令周期

	RSEG  ?PR?_CrcFix?CCITT
_CrcFix:
			; SOURCE LINE # 6
	
         MOV  A,R7
         MOV  R0,#CRCH
         XRL  A,@R0
         MOV  B,A           ;CRCH = CRCH xor Dat[i]
;计算   CRCB = (CRCA div 16)  xor (CRCA and $0f0)
         SWAP A
         XRL  A,B
         MOV  @R0,A
;CrcH:= CrcL xor (CRCT*16+CRCT div 8) xor ((CRCA and $f0) div 8);
         ANL  A,#0F0H
         RL   A
         XCHD A,@R0             ;A=$21*T  CRCH= T*16+T div 8
         ANL  B,#0F0H
         XRL  A,B
         XCH  A,CRCL            ;A=CRCL CrcL:= (CRCA and $f0) xor ($21*(CRCB));
         XRL  CRCH,A;
         MOV  A,B
         SWAP A
         RL   A                 ;DIV 8
         XRL  CRCH,A
         RET
; END OF _CrcFix

; 
; void CrcFixClr() 

	RSEG  ?PR?CrcFixClr?CCITT
CrcFixClr:
			; SOURCE LINE # 12
; {
			; SOURCE LINE # 13
; 	CrcH = 0;
			; SOURCE LINE # 14
	CLR  	A
	MOV  	CrcH,A
; 	CrcL = 0;
			; SOURCE LINE # 15
	MOV  	CrcL,A
; }
			; SOURCE LINE # 16
	RET  	
; END OF CrcFixClr

; 
; void CrcPtr(uchar idata *ptr,uchar dats)   //;指针CRC输出位置算法 26指令周期

	RSEG  ?PR?_CrcPtr?CCITT
_CrcPtr:
	USING	0
			; SOURCE LINE # 18
;---- Variable 'dats?242' assigned to Register 'R5' ----
;---- Variable 'ptr?241' assigned to Register 'R0' ----
	 MOV  R0,AR7
;计算   CRCA = CRCH xor Dat[i]
         MOV  A,R5
         XRL  A,@R0
         MOV  B,A           ;CRCH = CRCH xor Dat[i]
;计算   CRCB = (CRCA div 16)  xor (CRCA and $0f0)
         SWAP A
         XRL  A,B
         MOV  @R0,A
;CrcH:= CrcL xor (CRCT*16+CRCT div 8) xor ((CRCA and $f0) div 8);
         ANL  A,#0F0H
         RL   A
         XCHD A,@R0             ;A=$21*T  CRCH= T*16+T div 8
         ANL  B,#0F0H
         XRL  A,B
         INC  R0
         XCH  A,@R0             ;A=CRCL CrcL:= (CRCA and $f0) xor ($21*(CRCB));
         DEC  R0
         XRL  A,@R0;
         MOV  @R0,A
         MOV  A,B
         SWAP A
         RL   A                 ;DIV 8
         XRL  A,@R0
         MOV  @R0,A
         RET
; END OF _CrcPtr

; 
; void CrcPtrClr(uchar idata *ptr) 

	RSEG  ?PR?_CrcPtrClr?CCITT
_CrcPtrClr:
	USING	0
			; SOURCE LINE # 24
;---- Variable 'ptr?343' assigned to Register 'R0' ----
	MOV  	R0,AR7
; {
			; SOURCE LINE # 25
; 	*ptr = 0;
			; SOURCE LINE # 26
	CLR  	A
	MOV  	@R0,A
; 	*(ptr+1) = 0;
			; SOURCE LINE # 27
	INC  	R0
	MOV  	@R0,A
; }
			; SOURCE LINE # 28
	RET  	
; END OF _CrcPtrClr

	END

⌨️ 快捷键说明

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