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

📄 crc.s

📁 AVR16源代码 ICC编译器
💻 S
字号:
	.module Crc.c
	.area text(rom, con, rel)
	.dbfile D:\MY_COMPUTER\d\avr16\atmegal16\Crc.c
	.dbfunc e BlockCRC16UsingAlgorithm _BlockCRC16UsingAlgorithm fi
;  uiCharShifted -> R20,R21
;              i -> R22,R23
;              v -> R12
;            CRC -> R10,R11
;            Len -> R18,R19
;          Block -> R16,R17
	.even
_BlockCRC16UsingAlgorithm::
	xcall push_gset4
	.dbline -1
	.dbline 15
; #include	<iom16v.h>
; #include	"Crc.h"
; 
; //============================================================
; //函	数:unsigned short CRC16(unsigned char *Message, int Len)
; //功	能:CRC16计算
; //入口参数:Message 要进行CRC16计算字符串,Len字符串长度  
; //返 回 值:CRC16计算结果  
; //设 计 者:覃道堂 
; //创作时间:2004-03-30
; //修改时间:
; //修改目的:
; //============================================================
; unsigned int  BlockCRC16UsingAlgorithm(unsigned char *Block, unsigned int Len)
; {
	.dbline 21
;    unsigned int CRC;
;    unsigned int uiCharShifted;
;    unsigned int i;
;    unsigned char v;
; 
;    CRC = 0;
	clr R10
	clr R11
	.dbline 22
;    for (i=0; i<Len; i++)
	clr R22
	clr R23
	xjmp L5
L2:
	.dbline 23
;      {
	.dbline 24
;      uiCharShifted = ((unsigned int)(Block[i]) & 0x00FF) << 8;
	movw R30,R22
	add R30,R16
	adc R31,R17
	ldd R20,z+0
	clr R21
	andi R21,0
	mov R21,R20
	clr R20
	.dbline 25
;      CRC = (CRC) ^ uiCharShifted;
	eor R10,R20
	eor R11,R21
	.dbline 26
;      for (v = 0; v < 8; ++v)
	clr R12
	xjmp L9
L6:
	.dbline 27
;        {
	.dbline 28
;        if ( CRC & 0x8000 )
	sbrs R11,7
	rjmp L10
	.dbline 29
;          CRC = (CRC << 1) ^ 0x1021;
	ldi R24,4129
	ldi R25,16
	movw R2,R10
	lsl R2
	rol R3
	eor R2,R24
	eor R3,R25
	movw R10,R2
	xjmp L11
L10:
	.dbline 31
;        else
;          CRC = CRC << 1;
	lsl R10
	rol R11
L11:
	.dbline 32
L7:
	.dbline 26
	inc R12
L9:
	.dbline 26
	mov R24,R12
	cpi R24,8
	brlo L6
	.dbline 33
	.dbline 34
L3:
	.dbline 22
	subi R22,255  ; offset = 1
	sbci R23,255
L5:
	.dbline 22
	cp R22,R18
	cpc R23,R19
	brlo L2
	.dbline 36
;        }
;      CRC = CRC & 0xFFFF;
;      }
;      // ByteCRC16UsingAlgorithm(CRC, Block[i]);
;    return CRC;
	movw R16,R10
	.dbline -2
L1:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r uiCharShifted 20 i
	.dbsym r i 22 i
	.dbsym r v 12 c
	.dbsym r CRC 10 i
	.dbsym r Len 18 i
	.dbsym r Block 16 pc
	.dbend

⌨️ 快捷键说明

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