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

📄 sdio.src

📁 近期完成的一个项目
💻 SRC
📖 第 1 页 / 共 5 页
字号:
;                                     0xbb,0xa9,0x9f,0x8d,0xf3,0xe1,0xd7,0xc5,
;                                     0x19,0xb,0x3d,0x2f,0x51,0x43,0x75,0x67,
;                                     0x89,0x9b,0xad,0xbf,0xc1,0xd3,0xe5,0xf7,
;                                     0x87,0x95,0xa3,0xb1,0xcf,0xdd,0xeb,0xf9,
;                                     0x17,0x5,0x33,0x21,0x5f,0x4d,0x7b,0x69,
;                                     0xb5,0xa7,0x91,0x83,0xfd,0xef,0xd9,0xcb,
;                                     0x25,0x37,0x1,0x13,0x6d,0x7f,0x49,0x5b,
;                                     0xe3,0xf1,0xc7,0xd5,0xab,0xb9,0x8f,0x9d,
;                                     0x73,0x61,0x57,0x45,0x3b,0x29,0x1f,0xd,
;                                     0xd1,0xc3,0xf5,0xe7,0x99,0x8b,0xbd,0xaf};
; 
; void delay_us(unsigned int time_count)

	RSEG  ?PR?_delay_us?SDIO
_delay_us:
	USING	0
			; SOURCE LINE # 128
;---- Variable 'time_count?040' assigned to Register 'R6/R7' ----
; {
			; SOURCE LINE # 129
?C0003:
;    do 
;    { 
			; SOURCE LINE # 131
;      time_count--; 
			; SOURCE LINE # 132
	MOV  	A,R7
	DEC  	R7
	JNZ  	?C0322
	DEC  	R6
?C0322:
;    } 
			; SOURCE LINE # 133
;    while (time_count>1); 
			; SOURCE LINE # 134
	SETB 	C
	MOV  	A,R7
	SUBB 	A,#01H
	MOV  	A,R6
	SUBB 	A,#00H
	JNC  	?C0003
; }
			; SOURCE LINE # 135
	RET  	
; END OF _delay_us

; 
; void Oscillator_Init(void)

	RSEG  ?PR?Oscillator_Init?SDIO
Oscillator_Init:
			; SOURCE LINE # 137
; {
			; SOURCE LINE # 138
;    OSCICL=0x08;                    //Internal Oscillator programme to 24MHz.
			; SOURCE LINE # 139
	MOV  	OSCICL,#08H
;    OSCICN=0xC3;                    //Enable Internal oscilator and set dividor to 1
			; SOURCE LINE # 140
	MOV  	OSCICN,#0C3H
; }
			; SOURCE LINE # 141
	RET  	
; END OF Oscillator_Init

; 
; void Watchdog_close(void)

	RSEG  ?PR?Watchdog_close?SDIO
Watchdog_close:
			; SOURCE LINE # 143
; {
			; SOURCE LINE # 144
;    PCA0MD&=~0X40;                  //COSE WATCHDOG
			; SOURCE LINE # 145
	ANL  	PCA0MD,#0BFH
; }
			; SOURCE LINE # 146
	RET  	
; END OF Watchdog_close

; 
; void IO_Init(void)

	RSEG  ?PR?IO_Init?SDIO
IO_Init:
			; SOURCE LINE # 148
; {
			; SOURCE LINE # 149
;    P2MDOUT=0x08;                   //Config P2.0-P2.3(CLK,CMD,DATA0,led) as push_pull
			; SOURCE LINE # 150
	MOV  	P2MDOUT,#08H
;    P1MDOUT=0x10;
			; SOURCE LINE # 151
	MOV  	P1MDOUT,#010H
;    XBR1=0x60;                      //Crossbar enabled
			; SOURCE LINE # 152
	MOV  	XBR1,#060H
; }
			; SOURCE LINE # 153
	RET  	
; END OF IO_Init

; 
; void ADC_Init(void)

	RSEG  ?PR?ADC_Init?SDIO
ADC_Init:
			; SOURCE LINE # 155
; {
			; SOURCE LINE # 156
;    AMX0P=0x05;                    //P1.5    x_axis
			; SOURCE LINE # 157
	MOV  	AMX0P,#05H
;    AMX0N=0x1F;                    //GND(ADC in single-ended mode)
			; SOURCE LINE # 158
	MOV  	AMX0N,#01FH
;    ADC0CN=0xC0;  
			; SOURCE LINE # 159
	MOV  	ADC0CN,#0C0H
;    ADC0CF=0x3C;
			; SOURCE LINE # 160
	MOV  	ADC0CF,#03CH
;    REF0CN=0x0A;                  // Vdd used as voltage reference, internal temperature sensor off	           
			; SOURCE LINE # 161
	MOV  	REF0CN,#0AH
; }          
			; SOURCE LINE # 162
	RET  	
; END OF ADC_Init

; 
; void Interrupts_Init()

	RSEG  ?PR?Interrupts_Init?SDIO
Interrupts_Init:
			; SOURCE LINE # 164
; {
			; SOURCE LINE # 165
;    IE=0xA0;                       //Enabled T2 interrupt  enabled all
			; SOURCE LINE # 166
	MOV  	IE,#0A0H
; }
			; SOURCE LINE # 167
	RET  	
; END OF Interrupts_Init

; 
; void ADC(void)

	RSEG  ?PR?ADC?SDIO
ADC:
			; SOURCE LINE # 169
; {
			; SOURCE LINE # 170
;    AMX0P=0x05; 
			; SOURCE LINE # 171
	MOV  	AMX0P,#05H
;    AD0BUSY=0X01;
			; SOURCE LINE # 172
	SETB 	AD0BUSY
?C0010:
;    while(AD0BUSY);
			; SOURCE LINE # 173
	JB   	AD0BUSY,?C0010
?C0011:
;    Adc_X=ADC0H;
			; SOURCE LINE # 174
	MOV  	Adc_X,ADC0H
;    AMX0P=0x04; 
			; SOURCE LINE # 175
	MOV  	AMX0P,#04H
;    AD0BUSY=0X01;
			; SOURCE LINE # 176
	SETB 	AD0BUSY
?C0012:
;    while(AD0BUSY);
			; SOURCE LINE # 177
	JB   	AD0BUSY,?C0012
?C0013:
;    Adc_Y=ADC0H;
			; SOURCE LINE # 178
	MOV  	Adc_Y,ADC0H
; }
			; SOURCE LINE # 179
	RET  	
; END OF ADC

; 
; void Timer_Init(void)

	RSEG  ?PR?Timer_Init?SDIO
Timer_Init:
			; SOURCE LINE # 181
; { 
			; SOURCE LINE # 182
;    TMR2CN =0x04;                               //Timer2 enabled, clock is the system clock divided by 12                   
			; SOURCE LINE # 183
	MOV  	TMR2CN,#04H
;    TMR2RLL=0x00;
			; SOURCE LINE # 184
	CLR  	A
	MOV  	TMR2RLL,A
;    TMR2RLH=0xc0;
			; SOURCE LINE # 185
	MOV  	TMR2RLH,#0C0H
;    TMR2L  =0x00;
			; SOURCE LINE # 186
	MOV  	TMR2L,A
;    TMR2H  =0xc0;
			; SOURCE LINE # 187
	MOV  	TMR2H,#0C0H
;    timer_index=0;
			; SOURCE LINE # 188
	MOV  	timer_index,A
; }
			; SOURCE LINE # 189
	RET  	
; END OF Timer_Init

CSEG	AT	0002BH
	LJMP	Timer2_ISR

; 
; void Timer2_ISR (void) interrupt 5 using 1

	RSEG  ?PR?Timer2_ISR?SDIO
	USING	1
Timer2_ISR:
	PUSH 	PSW
			; SOURCE LINE # 191
; {
;    
;    IE=0;
			; SOURCE LINE # 194
	MOV  	IE,#00H
;    TMR2CN&=0x7F;                              // clear inturrupt overflow flag  
			; SOURCE LINE # 195
	ANL  	TMR2CN,#07FH
;    //if(++timer_index==1)
;    //{
;   // timer_index=0;
;    SD_BUSY_LED^=1;
			; SOURCE LINE # 199
	MOV  	C,SD_BUSY_LED
	CPL  	C
	MOV  	SD_BUSY_LED,C
;    //SD_BUSY_LED=0;
;    timer_index=1;
			; SOURCE LINE # 201
	MOV  	timer_index,#01H
;    //}
;    //ADC();
;    
; }
			; SOURCE LINE # 205
	POP  	PSW
	RETI 	
; END OF Timer2_ISR

; 
; void set_10ms(void)

	RSEG  ?PR?set_10ms?SDIO
set_10ms:
			; SOURCE LINE # 207
; {
			; SOURCE LINE # 208
;   IE=0xA0; 
			; SOURCE LINE # 209
	MOV  	IE,#0A0H
;   timer_index=0;  
			; SOURCE LINE # 210
	CLR  	A
	MOV  	timer_index,A
; }
			; SOURCE LINE # 211
	RET  	
; END OF set_10ms

; 
; void Write_Byte_SD(unsigned char value)       //MCU Data WRITE

	RSEG  ?PR?_Write_Byte_SD?SDIO
_Write_Byte_SD:
	USING	0
			; SOURCE LINE # 213
;---- Variable 'value?1041' assigned to Register 'R7' ----
; { 
			; SOURCE LINE # 214
;    unsigned char i;  
;    for (i=0; i<8; i++) 
			; SOURCE LINE # 216
;---- Variable 'i?1042' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0018:
;    { 
			; SOURCE LINE # 217
?C0021:
;     while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low)
			; SOURCE LINE # 218
	JNB  	SD_CLK_PIN,?C0021
?C0022:
;     if(((value>>(7-i))&0x01)==0x01)
			; SOURCE LINE # 219
	CLR  	C
	MOV  	A,#07H
	SUBB 	A,R6
	MOV  	R5,A
	MOV  	A,R7
	MOV  	R0,AR5
	INC  	R0
	SJMP 	?C0324
?C0323:
	CLR  	C
	RRC  	A
?C0324:
	DJNZ 	R0,?C0323
	JNB  	ACC.0,?C0023
; 	SD_DATA0_PIN=1;                           //Send bit by bit(MSB First)
			; SOURCE LINE # 220
	SETB 	SD_DATA0_PIN
	SJMP 	?C0025
?C0023:
;     else SD_DATA0_PIN=0;
			; SOURCE LINE # 221
	CLR  	SD_DATA0_PIN
?C0025:
;     while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
			; SOURCE LINE # 222
	JB   	SD_CLK_PIN,?C0025
;    }
			; SOURCE LINE # 223
?C0020:
	INC  	R6
	CJNE 	R6,#08H,?C0018
;    //while(SD_CLK_PIN==0);
;    //SD_DATA0_PIN=1;	                          //set Output High 
; }
			; SOURCE LINE # 226
?C0027:
	RET  	
; END OF _Write_Byte_SD

; 
; unsigned char Read_Byte_SD(void)              //MCU Data READ

	RSEG  ?PR?Read_Byte_SD?SDIO
Read_Byte_SD:
	USING	0
			; SOURCE LINE # 228
; { 
			; SOURCE LINE # 229
;    unsigned char temp=0;
			; SOURCE LINE # 230
;---- Variable 'temp?1143' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
;    unsigned char i;
;    for (i=0; i<8; i++)                        //MSB First
			; SOURCE LINE # 232
;---- Variable 'i?1144' assigned to Register 'R6' ----
	MOV  	R6,A
?C0028:
;    {
			; SOURCE LINE # 233
?C0031:
;     while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
			; SOURCE LINE # 234
	JB   	SD_CLK_PIN,?C0031
?C0032:
;     temp=(temp<<1)|SD_DATA0_PIN;              //read data from master
			; SOURCE LINE # 235
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	R7,A
	MOV  	C,SD_DATA0_PIN
	CLR  	A
	RLC  	A
	ORL  	A,R7
	MOV  	R7,A
?C0033:
;     while(SD_CLK_PIN==0);	                  //WAITING Clock Impuls (LOW)       
			; SOURCE LINE # 236
	JNB  	SD_CLK_PIN,?C0033
;    } 
			; SOURCE LINE # 237
?C0030:
	INC  	R6
	CJNE 	R6,#08H,?C0028
?C0029:
;    return (temp);
			; SOURCE LINE # 238
; }
			; SOURCE LINE # 239
?C0035:
	RET  	
; END OF Read_Byte_SD

; 
; unsigned char code mask[8]={0x80,0x40,0x20,0x10,8,4,2,1};
; void Write_Res_SD_CMD53(unsigned char value1,unsigned char value2)         //MCU CMD WRITE

	RSEG  ?PR?_Write_Res_SD_CMD53?SDIO
_Write_Res_SD_CMD53:
	USING	0
			; SOURCE LINE # 242
;---- Variable 'value2?1246' assigned to Register 'R5' ----
;---- Variable 'value1?1245' assigned to Register 'R7' ----
; { 
			; SOURCE LINE # 243
; 
; 
;    unsigned char i;  
;   
;    for (i=0; i<8; i++) 
			; SOURCE LINE # 248
;---- Variable 'i?1247' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0036:
;    {
			; SOURCE LINE # 249
?C0039:
;     while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
			; SOURCE LINE # 250
	JNB  	SD_CLK_PIN,?C0039
?C0040:
;     if((value1 & mask[i])==mask[i])
			; SOURCE LINE # 251
	MOV  	A,R6
	MOV  	DPTR,#mask
	MOVC 	A,@A+DPTR
	MOV  	R4,A
	ANL  	A,R7
	CJNE 	A,AR4,?C0041
; 	SD_CMD_PIN=1;
			; SOURCE LINE # 252
	SETB 	SD_CMD_PIN
	SJMP 	?C0042
?C0041:
; 	else SD_CMD_PIN=0;                             
			; SOURCE LINE # 253
	CLR  	SD_CMD_PIN
?C0042:
; 	if((value2 & mask[i])==mask[i])
			; SOURCE LINE # 254
	MOV  	A,R6
	MOV  	DPTR,#mask
	MOVC 	A,@A+DPTR
	MOV  	R4,A
	ANL  	A,R5
	CJNE 	A,AR4,?C0043
; 	SD_DATA0_PIN=1; 
			; SOURCE LINE # 255
	SETB 	SD_DATA0_PIN
	SJMP 	?C0045
?C0043:
;     else SD_DATA0_PIN=0; 
			; SOURCE LINE # 256
	CLR  	SD_DATA0_PIN
?C0045:
;     while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
			; SOURCE LINE # 257
	JB   	SD_CLK_PIN,?C0045
;    }
			; SOURCE LINE # 258
?C0038:
	INC  	R6
	CJNE 	R6,#08H,?C0036
;    //while(SD_CLK_PIN==0);
;    //SD_CMD_PIN=1;	                         
; 
; }
			; SOURCE LINE # 262
?C0047:
	RET  	
; END OF _Write_Res_SD_CMD53

; 
; void Write_Res_SD(unsigned char value)         //MCU CMD WRITE

	RSEG  ?PR?_Write_Res_SD?SDIO
L?0332:
	USING	0
L?0333:
	MOV  	Buffer_send,#034H
L?0334:
	MOV  	Buffer_send+01H,A
	MOV  	Buffer_send+02H,A
	MOV  	Buffer_send+03H,#020H
	MOV  	Buffer_send+04H,CMD_R+04H
	MOV  	A,CMD_R+04H
L?0335:
	MOV  	DPTR,#crc7_CMD52
L?0336:
	MOVC 	A,@A+DPTR
	MOV  	Buffer_send+05H,A
L?0337:
	LCALL	Timing_Sync
	MOV  	R7,Buffer_send
	LCALL	_Write_Res_SD
	MOV  	R7,Buffer_send+01H
	LCALL	_Write_Res_SD
	MOV  	R7,Buffer_send+02H
	LCALL	_Write_Res_SD
	MOV  	R7,Buffer_send+03H
	LCALL	_Write_Res_SD
	MOV  	R7,Buffer_send+04H
	LCALL	_Write_Res_SD
	MOV  	R7,Buffer_send+05H
_Write_Res_SD:
	USING	0
			; SOURCE LINE # 264
;---- Variable 'value?1348' assigned to Register 'R7' ----
; { 
			; SOURCE LINE # 265
;    unsigned char i;  
;    for (i=0; i<8; i++) 
			; SOURCE LINE # 267
;---- Variable 'i?1349' assigned to Register 'R6' ----
	CLR  	A
	MOV  	R6,A
?C0048:
;    {
			; SOURCE LINE # 268
?C0051:
;     while(SD_CLK_PIN==0);                     //WAITING Clock Impuls (Low) 
			; SOURCE LINE # 269
	JNB  	SD_CLK_PIN,?C0051
?C0052:
;     if(((value>>(7-i))&0x01)==0x01)
			; SOURCE LINE # 270
	CLR  	C
	MOV  	A,#07H
	SUBB 	A,R6
	MOV  	R5,A
	MOV  	A,R7
	MOV  	R0,AR5
	INC  	R0
	SJMP 	?C0326
?C0325:
	CLR  	C
	RRC  	A
?C0326:
	DJNZ 	R0,?C0325
	JNB  	ACC.0,?C0053
; 	SD_CMD_PIN=1;                             //Send bit by bit(MSB First)
			; SOURCE LINE # 271
	SETB 	SD_CMD_PIN
	SJMP 	?C0055
?C0053:
;     else SD_CMD_PIN=0; 
			; SOURCE LINE # 272
	CLR  	SD_CMD_PIN
?C0055:
;     while(SD_CLK_PIN==1);                     //WAITING Clock Impuls (High)   
			; SOURCE LINE # 273
	JB   	SD_CLK_PIN,?C0055
;    }
			; SOURCE LINE # 274
?C0050:
	INC  	R6
	CJNE 	R6,#08H,?C0048
;    //while(SD_CLK_PIN==0);
;    //SD_CMD_PIN=1;	                         
; }
			; SOURCE LINE # 277
?C0057:
	RET  	
; END OF _Write_Res_SD

; 
; unsigned char Read_CMD_SD(void)               //MCU CMD READ

	RSEG  ?PR?Read_CMD_SD?SDIO
Read_CMD_SD:
	USING	0
			; SOURCE LINE # 279
; { 
			; SOURCE LINE # 280
;    unsigned char temp=0;
			; SOURCE LINE # 281
;---- Variable 'temp?1450' assigned to Register 'R7' ----
	CLR  	A
	MOV  	R7,A
;    unsigned char i;                       
;    for (i=0; i<8; i++)                        //MSB First
			; SOURCE LINE # 283
;---- Variable 'i?1451' assigned to Register 'R6' ----
	MOV  	R6,A
?C0058:
;    {
			; SOURCE LINE # 284
?C0061:
;     while(SD_CLK_PIN==1) ;                    //WAITING Clock Impuls (Low)
			; SOURCE LINE # 285
	JB   	SD_CLK_PIN,?C0061
?C0062:
;     temp=(temp<<1)|SD_CMD_PIN;                //read data from master
			; SOURCE LINE # 286
	MOV  	A,R7
	ADD  	A,ACC
	MOV  	R7,A
	MOV  	C,SD_CMD_PIN
	CLR  	A
	RLC  	A
	ORL  	A,R7
	MOV  	R7,A
?C0063:
;     while(SD_CLK_PIN==0);	                  //WAITING Clock Impuls (High)       
			; SOURCE LINE # 287
	JNB  	SD_CLK_PIN,?C0063
;    } 
			; SOURCE LINE # 288
?C0060:
	INC  	R6
	CJNE 	R6,#08H,?C0058
?C0059:
;    return (temp);
			; SOURCE LINE # 289
; }
			; SOURCE LINE # 290
?C0065:
	RET  	
; END OF Read_CMD_SD

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

⌨️ 快捷键说明

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