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

📄 sdio.src

📁 近期完成的一个项目
💻 SRC
📖 第 1 页 / 共 5 页
字号:

	RSEG  ?PR?_CRC7?SDIO
_CRC7:
	USING	0
			; SOURCE LINE # 292
	MOV  	chr?1552,R3
	MOV  	chr?1552+01H,R2
	MOV  	chr?1552+02H,R1
	MOV  	cnt?1553,R4
	MOV  	cnt?1553+01H,R5
; { 
			; SOURCE LINE # 293
;    unsigned int i,a; 
;    unsigned char crc_7,Data; 
;    crc_7=0; 
			; SOURCE LINE # 296
	CLR  	A
	MOV  	crc_7?1556,A
;    for(a=0;a<cnt;a++) 
			; SOURCE LINE # 297
;---- Variable 'a?1555' assigned to Register 'R6/R7' ----
	MOV  	R7,A
	MOV  	R6,A
?C0066:
	CLR  	C
	MOV  	A,R7
	SUBB 	A,cnt?1553+01H
	MOV  	A,R6
	SUBB 	A,cnt?1553
	JNC  	?C0067
;    { 
			; SOURCE LINE # 298
;      Data=chr[a]; 
			; SOURCE LINE # 299
	MOV  	R3,chr?1552
	MOV  	R2,chr?1552+01H
	MOV  	R1,chr?1552+02H
	MOV  	DPL,R7
	MOV  	DPH,R6
	LCALL	?C?CLDOPTR
;---- Variable 'Data?1557' assigned to Register 'R1' ----
	MOV  	R1,A
;      for (i=0;i<8;i++) 
			; SOURCE LINE # 300
;---- Variable 'i?1554' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0069:
;     { 
			; SOURCE LINE # 301
;       crc_7<<=1;
			; SOURCE LINE # 302
	MOV  	A,crc_7?1556
	ADD  	A,ACC
	MOV  	crc_7?1556,A
;       if((Data&0x80)^(crc_7&0x80)) 
			; SOURCE LINE # 303
	ANL  	A,#080H
	MOV  	R3,A
	MOV  	A,R1
	ANL  	A,#080H
	XRL  	A,R3
	JZ   	?C0072
;       crc_7^=0x09; 
			; SOURCE LINE # 304
	XRL  	crc_7?1556,#09H
?C0072:
;       Data <<=1; 
			; SOURCE LINE # 305
	MOV  	A,R1
	ADD  	A,ACC
	MOV  	R1,A
;     } 
			; SOURCE LINE # 306
	INC  	R5
	CJNE 	R5,#00H,?C0327
	INC  	R4
?C0327:
	MOV  	A,R5
	XRL  	A,#08H
	ORL  	A,R4
	JNZ  	?C0069
;    } 
			; SOURCE LINE # 307
?C0068:
	INC  	R7
	CJNE 	R7,#00H,?C0328
	INC  	R6
?C0328:
	SJMP 	?C0066
?C0067:
;    crc_7=(crc_7<<1)|1; 
			; SOURCE LINE # 308
	MOV  	A,crc_7?1556
	ADD  	A,ACC
	ORL  	A,#01H
	MOV  	crc_7?1556,A
;    return(crc_7); 
			; SOURCE LINE # 309
	MOV  	R7,A
; }
			; SOURCE LINE # 310
?C0073:
	RET  	
; END OF _CRC7

; 
; unsigned char insert_crc7 (unsigned char *path_trace_message,int cnt)

	RSEG  ?PR?_insert_crc7?SDIO
_insert_crc7:
	USING	0
			; SOURCE LINE # 312
	MOV  	cnt?1659,R4
	MOV  	cnt?1659+01H,R5
	MOV  	path_trace_message?1658,R3
	MOV  	path_trace_message?1658+01H,R2
	MOV  	path_trace_message?1658+02H,R1
; {
			; SOURCE LINE # 313
;   unsigned char crc7_accum = 0;
			; SOURCE LINE # 314
	CLR  	A
	MOV  	crc7_accum?1660,A
;   int i;
;   unsigned char j;
;   path_trace_message[0] &= ~0x7f; 
			; SOURCE LINE # 317
	LCALL	?C?CLDPTR
	ANL  	A,#080H
	LCALL	?C?CSTPTR
; 	for (i=0;i<=cnt;++i)
			; SOURCE LINE # 318
	CLR  	A
	MOV  	i?1661,A
	MOV  	i?1661+01H,A
?C0074:
	SETB 	C
	MOV  	A,i?1661+01H
	SUBB 	A,cnt?1659+01H
	MOV  	A,cnt?1659
	XRL  	A,#080H
	MOV  	R0,A
	MOV  	A,i?1661
	XRL  	A,#080H
	SUBB 	A,R0
	JNC  	?C0075
;   {
			; SOURCE LINE # 319
;     crc7_accum =crc7_syndrome_table[(crc7_accum << 1)^path_trace_message[i]];
			; SOURCE LINE # 320
	MOV  	R3,path_trace_message?1658
	MOV  	R2,path_trace_message?1658+01H
	MOV  	R1,path_trace_message?1658+02H
	MOV  	DPL,i?1661+01H
	MOV  	DPH,i?1661
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	MOV  	A,crc7_accum?1660
	ADD  	A,ACC
	MOV  	R7,A
	CLR  	A
	RLC  	A
	MOV  	R6,A
	MOV  	A,R7
	XRL  	A,R5
	ADD  	A,#LOW (crc7_syndrome_table)
	MOV  	DPL,A
	MOV  	A,#HIGH (crc7_syndrome_table)
	ADDC 	A,R6
	MOV  	DPH,A
	CLR  	A
	MOVC 	A,@A+DPTR
	MOV  	crc7_accum?1660,A
;   }
			; SOURCE LINE # 321
	INC  	i?1661+01H
	MOV  	A,i?1661+01H
	JNZ  	?C0074
	INC  	i?1661
?C0329:
	SJMP 	?C0074
?C0075:
;   path_trace_message[0] ^= crc7_accum;
			; SOURCE LINE # 322
	MOV  	R3,path_trace_message?1658
	MOV  	R2,path_trace_message?1658+01H
	MOV  	R1,path_trace_message?1658+02H
	LCALL	?C?CLDPTR
	XRL  	A,crc7_accum?1660
	LCALL	?C?CSTPTR
;   path_trace_message[0]=(path_trace_message[0]<<1)|1;
			; SOURCE LINE # 323
	MOV  	R3,path_trace_message?1658
	MOV  	R2,path_trace_message?1658+01H
	MOV  	R1,path_trace_message?1658+02H
	LCALL	?C?CLDPTR
	ADD  	A,ACC
	ORL  	A,#01H
	LCALL	?C?CSTPTR
;   j=path_trace_message[0];
			; SOURCE LINE # 324
	MOV  	R3,path_trace_message?1658
	MOV  	R2,path_trace_message?1658+01H
	MOV  	R1,path_trace_message?1658+02H
	LCALL	?C?CLDPTR
	MOV  	R7,A
	MOV  	j?1662,A
;   return(path_trace_message[0]);
			; SOURCE LINE # 325
; }
			; SOURCE LINE # 326
?C0077:
	RET  	
; END OF _insert_crc7

; 
; unsigned int CRC16(unsigned char * chr, int cnt)

	RSEG  ?PR?_CRC16?SDIO
_CRC16:
	USING	0
			; SOURCE LINE # 328
	MOV  	chr?1763,R3
	MOV  	chr?1763+01H,R2
	MOV  	chr?1763+02H,R1
	MOV  	cnt?1764,R4
	MOV  	cnt?1764+01H,R5
; {
			; SOURCE LINE # 329
;    unsigned int i,j;
;    //unsigned char crc_16;
;    unsigned int  crc_16=0xffff;
			; SOURCE LINE # 332
	MOV  	A,#0FFH
	MOV  	crc_16?1767,A
	MOV  	crc_16?1767+01H,A
;    for(i=0;i<cnt;i++)
			; SOURCE LINE # 333
;---- Variable 'i?1765' assigned to Register 'R4/R5' ----
	CLR  	A
	MOV  	R5,A
	MOV  	R4,A
?C0078:
	CLR  	C
	MOV  	A,R5
	SUBB 	A,cnt?1764+01H
	MOV  	A,R4
	SUBB 	A,cnt?1764
	JNC  	?C0079
;   {
			; SOURCE LINE # 334
;    crc_16=crc_16^((unsigned int)chr[i]);
			; SOURCE LINE # 335
	MOV  	R3,chr?1763
	MOV  	R2,chr?1763+01H
	MOV  	R1,chr?1763+02H
	MOV  	DPL,R5
	MOV  	DPH,R4
	LCALL	?C?CLDOPTR
	XRL  	crc_16?1767+01H,A
	CLR  	A
;    for (j=0;j<8;j++)
			; SOURCE LINE # 336
;---- Variable 'j?1766' assigned to Register 'R2/R3' ----
	MOV  	R3,A
	MOV  	R2,A
?C0081:
;    {
			; SOURCE LINE # 337
;      if(crc_16&0x0001)
			; SOURCE LINE # 338
	MOV  	A,crc_16?1767+01H
	JNB  	ACC.0,?C0084
;     {
			; SOURCE LINE # 339
;      crc_16=(crc_16>>1)^0x8408;
			; SOURCE LINE # 340
	MOV  	A,crc_16?1767
	CLR  	C
	RRC  	A
	MOV  	R6,A
	MOV  	A,crc_16?1767+01H
	RRC  	A
	MOV  	R7,A
	MOV  	A,R6
	XRL  	A,#084H
	MOV  	crc_16?1767,A
	MOV  	A,R7
	XRL  	A,#08H
	MOV  	crc_16?1767+01H,A
;     }
			; SOURCE LINE # 341
	SJMP 	?C0083
?C0084:
;     else
;     crc_16=(crc_16>>1);
			; SOURCE LINE # 343
	MOV  	A,crc_16?1767
	CLR  	C
	RRC  	A
	MOV  	crc_16?1767,A
	MOV  	A,crc_16?1767+01H
	RRC  	A
	MOV  	crc_16?1767+01H,A
;    }
			; SOURCE LINE # 344
?C0083:
	INC  	R3
	CJNE 	R3,#00H,?C0330
	INC  	R2
?C0330:
	MOV  	A,R3
	XRL  	A,#08H
	ORL  	A,R2
	JNZ  	?C0081
;   }
			; SOURCE LINE # 345
?C0080:
	INC  	R5
	CJNE 	R5,#00H,?C0331
	INC  	R4
?C0331:
	SJMP 	?C0078
?C0079:
;    crc_16= ~crc_16;
			; SOURCE LINE # 346
	XRL  	crc_16?1767+01H,#0FFH
	XRL  	crc_16?1767,#0FFH
;    return(crc_16);
			; SOURCE LINE # 347
	MOV  	R6,crc_16?1767
	MOV  	R7,crc_16?1767+01H
; }
			; SOURCE LINE # 348
?C0086:
	RET  	
; END OF _CRC16

; 
; void  Data_Write(void)

	RSEG  ?PR?Data_Write?SDIO
Data_Write:
	USING	0
			; SOURCE LINE # 350
; {
			; SOURCE LINE # 351
;   Write_Byte_SD(Adc_X);
			; SOURCE LINE # 352
	MOV  	R7,Adc_X
	LCALL	_Write_Byte_SD
;   Write_Byte_SD(Adc_Y);
			; SOURCE LINE # 353
	MOV  	R7,Adc_Y
	LJMP 	_Write_Byte_SD
; END OF Data_Write

; }
; 
; void Timing_Sync(void)

	RSEG  ?PR?Timing_Sync?SDIO
Timing_Sync:
			; SOURCE LINE # 356
; {
			; SOURCE LINE # 357
?C0088:
;   while(SD_CLK_PIN==0);
			; SOURCE LINE # 358
	JNB  	SD_CLK_PIN,?C0088
?C0090:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 359
	JB   	SD_CLK_PIN,?C0090
?C0092:
;   while(SD_CLK_PIN==0);                   
			; SOURCE LINE # 360
	JNB  	SD_CLK_PIN,?C0092
?C0094:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 361
	JB   	SD_CLK_PIN,?C0094
?C0096:
;   while(SD_CLK_PIN==0);
			; SOURCE LINE # 362
	JNB  	SD_CLK_PIN,?C0096
?C0098:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 363
	JB   	SD_CLK_PIN,?C0098
; }
			; SOURCE LINE # 364
?C0100:
	RET  	
; END OF Timing_Sync

; 
; /*void Timing_Sync_CMD53(void)
; {
;   while(SD_CLK_PIN==0);
;   while(SD_CLK_PIN==1);
;   while(SD_CLK_PIN==0);
;   while(SD_CLK_PIN==1);
;   while(SD_CLK_PIN==0); 
;   SD_DATA0_PIN=0;                 
;   while(SD_CLK_PIN==1);
; }*/
; 
; void Data_Rv_Sync(void)

	RSEG  ?PR?Data_Rv_Sync?SDIO
Data_Rv_Sync:
			; SOURCE LINE # 377
; {
			; SOURCE LINE # 378
?C0101:
;   while(SD_DATA0_PIN==1);
			; SOURCE LINE # 379
	JB   	SD_DATA0_PIN,?C0101
?C0103:
;   while(SD_CLK_PIN==0);
			; SOURCE LINE # 380
	JNB  	SD_CLK_PIN,?C0103
?C0105:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 381
	JB   	SD_CLK_PIN,?C0105
?C0107:
;   while(SD_CLK_PIN==0);                   
			; SOURCE LINE # 382
	JNB  	SD_CLK_PIN,?C0107
;   //while(SD_CLK_PIN==1);
; }
			; SOURCE LINE # 384
?C0109:
	RET  	
; END OF Data_Rv_Sync

; 
; void Data_Wr_Sync(void)

	RSEG  ?PR?Data_Wr_Sync?SDIO
Data_Wr_Sync:
			; SOURCE LINE # 386
; {
			; SOURCE LINE # 387
?C0110:
;   while(SD_CLK_PIN==0);
			; SOURCE LINE # 388
	JNB  	SD_CLK_PIN,?C0110
?C0112:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 389
	JB   	SD_CLK_PIN,?C0112
?C0114:
;   while(SD_CLK_PIN==0); 
			; SOURCE LINE # 390
	JNB  	SD_CLK_PIN,?C0114
?C0116:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 391
	JB   	SD_CLK_PIN,?C0116
?C0118:
;   while(SD_CLK_PIN==0); 
			; SOURCE LINE # 392
	JNB  	SD_CLK_PIN,?C0118
?C0119:
;   SD_DATA0_PIN=0;
			; SOURCE LINE # 393
	CLR  	SD_DATA0_PIN
?C0120:
;   while(SD_CLK_PIN==1);
			; SOURCE LINE # 394
	JB   	SD_CLK_PIN,?C0120
; }
			; SOURCE LINE # 395
?C0122:
	RET  	
; END OF Data_Wr_Sync

; 
; void Slave_Mode_Sel(void)

	RSEG  ?PR?Slave_Mode_Sel?SDIO
Slave_Mode_Sel:
			; SOURCE LINE # 397
; {
			; SOURCE LINE # 398
; }
			; SOURCE LINE # 399
	RET  	
; END OF Slave_Mode_Sel

; 
; void Response_to_CMD0(void)

	RSEG  ?PR?Response_to_CMD0?SDIO
Response_to_CMD0:
			; SOURCE LINE # 401
; {
			; SOURCE LINE # 402
;    Slave_Mode_Sel();
			; SOURCE LINE # 403
	LJMP 	Slave_Mode_Sel
; END OF Response_to_CMD0

; }
; 
; void Response_to_CMD3(void)                    //R6 response

	RSEG  ?PR?Response_to_CMD3?SDIO
Response_to_CMD3:
	USING	0
			; SOURCE LINE # 406
; {   
			; SOURCE LINE # 407
;    P2MDOUT=0x02;
			; SOURCE LINE # 408
	MOV  	P2MDOUT,#02H
;    Buffer_send[0]=0x03;                        //command index
			; SOURCE LINE # 409
	MOV  	Buffer_send,#03H
;    Buffer_send[1]=RCA_REG[0];                  
			; SOURCE LINE # 410
	MOV  	Buffer_send+01H,RCA_REG
;    Buffer_send[2]=RCA_REG[1];
			; SOURCE LINE # 411
	MOV  	Buffer_send+02H,RCA_REG+01H
;    Buffer_send[3]=0x00;                                        
			; SOURCE LINE # 412
	CLR  	A
	MOV  	Buffer_send+03H,A
;    Buffer_send[4]=0x00;
			; SOURCE LINE # 413
	MOV  	Buffer_send+04H,A
;    Buffer_send[5]=0xeb;
			; SOURCE LINE # 414
	MOV  	Buffer_send+05H,#0EBH
;    Timing_Sync();
			; SOURCE LINE # 415
;    Write_Res_SD(Buffer_send[0]);
			; SOURCE LINE # 416
;    Write_Res_SD(Buffer_send[1]);
			; SOURCE LINE # 417
;    Write_Res_SD(Buffer_send[2]);
			; SOURCE LINE # 418
;    Write_Res_SD(Buffer_send[3]);                //card status,0 stand for no error
			; SOURCE LINE # 419
;    Write_Res_SD(Buffer_send[4]);
			; SOURCE LINE # 420
;    Write_Res_SD(Buffer_send[5]);
			; SOURCE LINE # 421
	LCALL	L?0337
?C0125:
;    while(SD_CLK_PIN==0);
			; SOURCE LINE # 422
	JNB  	SD_CLK_PIN,?C0125
?C0126:
;    SD_CMD_PIN=1;
			; SOURCE LINE # 423
	SETB 	SD_CMD_PIN
;    SD_CMD_PIN=1;
			; SOURCE LINE # 424
	SETB 	SD_CMD_PIN
;    P2MDOUT&=~0x02;
			; SOURCE LINE # 425
	ANL  	P2MDOUT,#0FDH
; }
			; SOURCE LINE # 426
	RET  	
; END OF Response_to_CMD3

; 
; void Response_to_CMD5(void)                    //R4 response

	RSEG  ?PR?Response_to_CMD5?SDIO
Response_to_CMD5:
	USING	0
			; SOURCE LINE # 428
; {
			; SOURCE LINE # 429
;    P2MDOUT=0x02;
			; SOURCE LINE # 430
	MOV  	P2MDOUT,#02H
;    Buffer_send[0]=0x3f;                        //command index
			; SOURCE LINE # 431
	MOV  	Buffer_send,#03FH
;    Buffer_send[1]=0x90;                        //card status
			; SOURCE LINE # 432
	MOV  	Buffer_send+01H,#090H
;    Buffer_send[2]=OCR_REG[0];
			; SOURCE LINE # 433
	MOV  	Buffer_send+02H,OCR_REG
;    Buffer_send[3]=OCR_REG[1];                  //ready for data                   
			; SOURCE LINE # 434
	MOV  	Buffer_send+03H,OCR_REG+01H
;    Buffer_send[4]=OCR_REG[2];
			; SOURCE LINE # 435
	MOV  	Buffer_send+04H,OCR_REG+02H
;    Buffer_send[5]=0xff;
			; SOURCE LINE # 436
	MOV  	Buffer_send+05H,#0FFH
;    Timing_Sync();
			; SOURCE LINE # 437
;    Write_Res_SD(Buffer_send[0]);
			; SOURCE LINE # 438
;    Write_Res_SD(Buffer_send[1]);
			; SOURCE LINE # 439
;    Write_Res_SD(Buffer_send[2]);               //0xff
			; SOURCE LINE # 440
;    Write_Res_SD(Buffer_send[3]);               //0xC0
			; SOURCE LINE # 441
;    Write_Res_SD(Buffer_send[4]);               //0xff
			; SOURCE LINE # 442
;    Write_Res_SD(Buffer_send[5]);               //reserved bits
			; SOURCE LINE # 443
	LCALL	L?0337
?C0128:
;    while(SD_CLK_PIN==0);
			; SOURCE LINE # 444
	JNB  	SD_CLK_PIN,?C0128
?C0129:
;    SD_CMD_PIN=1;
			; SOURCE LINE # 445
	SETB 	SD_CMD_PIN
;    SD_CMD_PIN=1;
			; SOURCE LINE # 446
	SETB 	SD_CMD_PIN

⌨️ 快捷键说明

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