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

📄 sdcrc.s

📁 mega128的串口发送文件.可以发送0X55上位机使用串口调试工具就可以接收了.
💻 S
字号:
	.module sdcrc.c
	.area lit(rom, con, rel)
_CRCTable::
	.word 0
	.word 4129
	.word 8258
	.word 12387
	.word 16516
	.word 20645
	.word 24774
	.word 28903
	.word 33032
	.word 37161
	.word 41290
	.word 45419
	.word 49548
	.word 53677
	.word 57806
	.word 61935
	.word 4657
	.word 528
	.word 12915
	.word 8786
	.word 21173
	.word 17044
	.word 29431
	.word 25302
	.word 37689
	.word 33560
	.word 45947
	.word 41818
	.word 54205
	.word 50076
	.word 62463
	.word 58334
	.word 9314
	.word 13379
	.word 1056
	.word 5121
	.word 25830
	.word 29895
	.word 17572
	.word 21637
	.word 42346
	.word 46411
	.word 34088
	.word 38153
	.word 58862
	.word 62927
	.word 50604
	.word 54669
	.word 13907
	.word 9842
	.word 5649
	.word 1584
	.word 30423
	.word 26358
	.word 22165
	.word 18100
	.word 46939
	.word 42874
	.word 38681
	.word 34616
	.word 63455
	.word 59390
	.word 55197
	.word 51132
	.word 18628
	.word 22757
	.word 26758
	.word 30887
	.word 2112
	.word 6241
	.word 10242
	.word 14371
	.word 51660
	.word 55789
	.word 59790
	.word 63919
	.word 35144
	.word 39273
	.word 43274
	.word 47403
	.word 23285
	.word 19156
	.word 31415
	.word 27286
	.word 6769
	.word 2640
	.word 14899
	.word 10770
	.word 56317
	.word 52188
	.word 64447
	.word 60318
	.word 39801
	.word 35672
	.word 47931
	.word 43802
	.word 27814
	.word 31879
	.word 19684
	.word 23749
	.word 11298
	.word 15363
	.word 3168
	.word 7233
	.word 60846
	.word 64911
	.word 52716
	.word 56781
	.word 44330
	.word 48395
	.word 36200
	.word 40265
	.word 32407
	.word 28342
	.word 24277
	.word 20212
	.word 15891
	.word 11826
	.word 7761
	.word 3696
	.word 65439
	.word 61374
	.word 57309
	.word 53244
	.word 48923
	.word 44858
	.word 40793
	.word 36728
	.word 37256
	.word 33193
	.word 45514
	.word 41451
	.word 53516
	.word 49453
	.word 61774
	.word 57711
	.word 4224
	.word 161
	.word 12482
	.word 8419
	.word 20484
	.word 16421
	.word 28742
	.word 24679
	.word 33721
	.word 37784
	.word 41979
	.word 46042
	.word 49981
	.word 54044
	.word 58239
	.word 62302
	.word 689
	.word 4752
	.word 8947
	.word 13010
	.word 16949
	.word 21012
	.word 25207
	.word 29270
	.word 46570
	.word 42443
	.word 38312
	.word 34185
	.word 62830
	.word 58703
	.word 54572
	.word 50445
	.word 13538
	.word 9411
	.word 5280
	.word 1153
	.word 29798
	.word 25671
	.word 21540
	.word 17413
	.word 42971
	.word 47098
	.word 34713
	.word 38840
	.word 59231
	.word 63358
	.word 50973
	.word 55100
	.word 9939
	.word 14066
	.word 1681
	.word 5808
	.word 26199
	.word 30326
	.word 17941
	.word 22068
	.word 55628
	.word 51565
	.word 63758
	.word 59695
	.word 39368
	.word 35305
	.word 47498
	.word 43435
	.word 22596
	.word 18533
	.word 30726
	.word 26663
	.word 6336
	.word 2273
	.word 14466
	.word 10403
	.word 52093
	.word 56156
	.word 60223
	.word 64286
	.word 35833
	.word 39896
	.word 43963
	.word 48026
	.word 19061
	.word 23124
	.word 27191
	.word 31254
	.word 2801
	.word 6864
	.word 10931
	.word 14994
	.word 64814
	.word 60687
	.word 56684
	.word 52557
	.word 48554
	.word 44427
	.word 40424
	.word 36297
	.word 31782
	.word 27655
	.word 23652
	.word 19525
	.word 15522
	.word 11395
	.word 7392
	.word 3265
	.word 61215
	.word 65342
	.word 53085
	.word 57212
	.word 44955
	.word 49082
	.word 36825
	.word 40952
	.word 28183
	.word 32310
	.word 20053
	.word 24180
	.word 11923
	.word 16050
	.word 3793
	.word 7920
	.dbfile D:\new_sd\SD\SD\sdcrc.c
	.dbsym e CRCTable _CRCTable A[512:256]ki
	.area text(rom, con, rel)
	.dbfile D:\new_sd\SD\SD\sdcrc.c
	.dbfunc e SD_GetCRC16 _SD_GetCRC16 fi
;              i -> R20,R21
;         result -> R22,R23
;            len -> R10,R11
;        pSource -> R12,R13
	.even
_SD_GetCRC16::
	xcall push_gset4
	movw R10,R18
	movw R12,R16
	.dbline -1
	.dbline 52
; /*******************************************************************************************************
; ** Descriptions:		sd 卡驱动软件包: SD卡相关工具函数 ---- CRC校验
; ********************************************************************************************************/
; #include    "D:\new_sd\define.h"
; 
; 
; 
; #if SD_CRC_EN
; //X16 + X12 + X5 + 1 余式表
; uint16 const CRCTable[256]={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
; 						   };
; 
; /********************************************************************************************************************
; ** 函数名称: INT8U SD_GetCRC16()					Name:	  INT8U SD_GetCRC16()
; ** 功能描述: 计算CRC16								Function: calculate CRC16 
; ** 输   入: INT8U *pSource: 数据					Input:    INT8U *pSource: data
; 			 INT16U len    : 长度							  INT16U len    : len
; ** 输   出: CRC16码								Output:	  CRC16 code
; ********************************************************************************************************************/
; uint16 SD_GetCRC16(uint8 *pSource, uint16 len)
; {
	.dbline 54
; 	uint16 i;
; 	uint16 result = 0;
	clr R22
	clr R23
	.dbline 56
; 
; 	for (i = 0; i < len; i++)
	clr R20
	clr R21
	xjmp L5
L2:
	.dbline 57
	movw R30,R12
	ld R2,Z+
	movw R12,R30
	clr R3
	movw R18,R22
	mov R18,R19
	clr R19
	eor R18,R2
	eor R19,R3
	ldi R16,2
	ldi R17,0
	xcall empy16s
	movw R30,R16
	ldi R24,<_CRCTable
	ldi R25,>_CRCTable
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	movw R2,R22
	mov R3,R2
	clr R2
	eor R2,R30
	eor R3,R31
	movw R22,R2
L3:
	.dbline 56
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 56
	cp R20,R10
	cpc R21,R11
	brlo L2
	.dbline 59
; 	    result = (result << 8) ^ (uint16)CRCTable[(result >> 8) ^ *pSource++];
; 	
; 	return result;
	movw R16,R22
	.dbline -2
L1:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r result 22 i
	.dbsym r len 10 i
	.dbsym r pSource 12 pc
	.dbend
	.dbfunc e SD_GetCmdByte6 _SD_GetCmdByte6 fc
;          array -> y+0
;              i -> R20
;            reg -> R22
;              j -> R12
;          param -> R10,R11
;            cmd -> R20
	.even
_SD_GetCmdByte6::
	xcall push_gset5
	movw R10,R18
	mov R20,R16
	sbiw R28,5
	.dbline -1
	.dbline 70
; }
; 
; /*******************************************************************************************************************
; ** 函数名称: INT8U SD_GetCmdByte6()					Name:	  INT8U SD_GetCmdByte6()
; ** 功能描述: 获取SD卡命令的CRC7						Function: get the CRC7 of the command of SD card
; ** 输   入: INT8U cmd   : 命令						Input:    INT8U cmd   :	command
; 			 INT8U *param: 命令的参数,长度为4字节			  INT8U *param: the param of command,length is 4 bytes
; ** 输   出: CRC7码									Output:	  CRC7 code
; ********************************************************************************************************************/
; uint8 SD_GetCmdByte6(uint8 cmd, uint8 *param)
; {
	.dbline 72
; 	uint8 i, j;
; 	uint8 reg = 0;
	clr R22
	.dbline 75
; 	uint8 array[5];
; 	
; 	array[0] = cmd;
	std y+0,R20
	.dbline 76
; 	for (i = 1; i < 5; i++)						/* 将参数的顺序重新排列 */
	ldi R20,1
	xjmp L10
L7:
	.dbline 77
	mov R2,R20
	clr R3
	ldi R30,4
	ldi R31,0
	sub R30,R2
	sbc R31,R3
	add R30,R10
	adc R31,R11
	ldd R2,z+0
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R2
L8:
	.dbline 76
	inc R20
L10:
	.dbline 76
	cpi R20,5
	brlo L7
	.dbline 79
; 		array[i] = param[4 - i];
; 	
; 	for (i = 0; i < 5; i++)						/* 计算5个字节的CRC7 */
	clr R20
	xjmp L14
L11:
	.dbline 80
; 	{
	.dbline 81
; 	    for (j = 0; j < 8; j++)
	clr R12
	xjmp L18
L15:
	.dbline 82
; 	    {
	.dbline 83
; 			reg <<= 1;
	lsl R22
	.dbline 84
; 			reg ^= ((((array[i] << j) ^ reg) & 0x80) ? 0x9 : 0);
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	mov R17,R12
	xcall lsl8
	mov R24,R16
	eor R24,R22
	andi R24,128
	breq L19
	ldi R24,9
	ldi R25,0
	movw R14,R24
	xjmp L20
L19:
	clr R14
	clr R15
L20:
	mov R2,R22
	clr R3
	eor R2,R14
	eor R3,R15
	mov R22,R2
	.dbline 85
L16:
	.dbline 81
	inc R12
L18:
	.dbline 81
	mov R24,R12
	cpi R24,8
	brlo L15
	.dbline 86
L12:
	.dbline 79
	inc R20
L14:
	.dbline 79
	cpi R20,5
	brlo L11
	.dbline 88
; 	    }
; 	}
; 	
; 	return ((reg << 1) + 0x01) ;				/* 计算结果的CRC7左移一位,并将最低位置1 */
	mov R16,R22
	lsl R16
	subi R16,255    ; addi 1
	.dbline -2
L6:
	adiw R28,5
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l array 0 A[5:5]c
	.dbsym r i 20 c
	.dbsym r reg 22 c
	.dbsym r j 12 c
	.dbsym r param 10 pc
	.dbsym r cmd 20 c
	.dbend

⌨️ 快捷键说明

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