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

📄 cmds.src

📁 Comlete files for fullfile the slave USB function!
💻 SRC
📖 第 1 页 / 共 2 页
字号:
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0024
; 		DISABLE;
			; SOURCE LINE # 135
	CLR  	EA
?C0024:
; 
; 	outportb(D12_COMMAND, 0x40 + bEndp);
			; SOURCE LINE # 137
	MOV  	A,R7
	ADD  	A,#040H
	MOV  	R5,A
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	outportb(D12_DATA, bStalled);
			; SOURCE LINE # 138
	MOV  	R5,bStalled?854
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_outportb
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 140
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0026
; 		ENABLE;
			; SOURCE LINE # 141
	SETB 	EA
; }
			; SOURCE LINE # 142
?C0026:
	RET  	
; END OF _D12_SetEndpointStatus

; 
; void D12_SendResume(void)

	RSEG  ?PR?D12_SendResume?CMDS
D12_SendResume:
	USING	0
			; SOURCE LINE # 144
; {
			; SOURCE LINE # 145
; 	outportb(D12_COMMAND, 0xF6);
			; SOURCE LINE # 146
	MOV  	R5,#0F6H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LJMP 	_outportb
; END OF D12_SendResume

; }
; 
; unsigned short D12_ReadCurrentFrameNumber(void)

	RSEG  ?PR?D12_ReadCurrentFrameNumber?CMDS
D12_ReadCurrentFrameNumber:
	USING	0
			; SOURCE LINE # 149
; {
			; SOURCE LINE # 150
; 	unsigned short i,j;
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 153
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0028
; 		DISABLE;
			; SOURCE LINE # 154
	CLR  	EA
?C0028:
; 
; 	outportb(D12_COMMAND, 0xF5);
			; SOURCE LINE # 156
	MOV  	R5,#0F5H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	i= inportb(D12_DATA);
			; SOURCE LINE # 157
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	i?1055,#00H
	MOV  	i?1055+01H,R7
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 158
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
;---- Variable 'j?1056' assigned to Register 'R6/R7' ----
; 
; 	i += (j<<8);
			; SOURCE LINE # 160
	MOV  	A,R7
	MOV  	R6,A
	CLR  	A
	ADD  	A,i?1055+01H
	MOV  	i?1055+01H,A
	MOV  	A,R6
	ADDC 	A,i?1055
	MOV  	i?1055,A
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 162
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0029
; 		ENABLE;
			; SOURCE LINE # 163
	SETB 	EA
?C0029:
; 
; 	return i;
			; SOURCE LINE # 165
	MOV  	R6,i?1055
	MOV  	R7,i?1055+01H
; }
			; SOURCE LINE # 166
?C0030:
	RET  	
; END OF D12_ReadCurrentFrameNumber

; 
; unsigned short D12_ReadChipID(void)

	RSEG  ?PR?D12_ReadChipID?CMDS
D12_ReadChipID:
	USING	0
			; SOURCE LINE # 168
; {
			; SOURCE LINE # 169
; 	unsigned short i,j;
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 172
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0031
; 		DISABLE;
			; SOURCE LINE # 173
	CLR  	EA
?C0031:
; 
; 	outportb(portbase+D12_COMMAND, 0xFD);
			; SOURCE LINE # 175
	MOV  	R5,#0FDH
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	i=inportb(portbase+D12_DATA);
			; SOURCE LINE # 176
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	i?1157,#00H
	MOV  	i?1157+01H,R7
; 	j=inportb(portbase+D12_DATA);
			; SOURCE LINE # 177
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
;---- Variable 'j?1158' assigned to Register 'R6/R7' ----
; 	i += (j<<8);
			; SOURCE LINE # 178
	MOV  	A,R7
	MOV  	R6,A
	CLR  	A
	ADD  	A,i?1157+01H
	MOV  	i?1157+01H,A
	MOV  	A,R6
	ADDC 	A,i?1157
	MOV  	i?1157,A
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 180
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0032
; 		ENABLE;
			; SOURCE LINE # 181
	SETB 	EA
?C0032:
; 
; 	return i;
			; SOURCE LINE # 183
	MOV  	R6,i?1157
	MOV  	R7,i?1157+01H
; }
			; SOURCE LINE # 184
?C0033:
	RET  	
; END OF D12_ReadChipID

; 
; unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)

	RSEG  ?PR?_D12_ReadEndpoint?CMDS
_D12_ReadEndpoint:
	USING	0
			; SOURCE LINE # 186
	MOV  	buf?1260,R3
	MOV  	buf?1260+01H,R2
	MOV  	buf?1260+02H,R1
;---- Variable 'endp?1259' assigned to Register 'R5' ----
	MOV  	R5,AR7
; {
			; SOURCE LINE # 187
; 	unsigned char i, j;
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 190
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0034
; 		DISABLE;
			; SOURCE LINE # 191
	CLR  	EA
?C0034:
; 
; 	outportb(D12_COMMAND, endp);
			; SOURCE LINE # 193
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
			; SOURCE LINE # 194
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	A,R7
	JB   	ACC.0,?C0035
; 		if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 195
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0036
; 			ENABLE;
			; SOURCE LINE # 196
	SETB 	EA
?C0036:
; 		return 0;
			; SOURCE LINE # 197
	MOV  	R7,#00H
	RET  	
; 	}
			; SOURCE LINE # 198
?C0035:
; 
; 	outportb(D12_COMMAND, 0xF0);
			; SOURCE LINE # 200
	MOV  	R5,#0F0H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 201
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	j?1263,R7
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 202
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	j?1263,R7
; 
; 	if(j > len)
			; SOURCE LINE # 204
	MOV  	A,j?1263
	SETB 	C
	SUBB 	A,len?1261
	JC   	?C0038
; 		j = len;
			; SOURCE LINE # 205
	MOV  	j?1263,len?1261
?C0038:
; 
; 	for(i=0; i<j; i++)
			; SOURCE LINE # 207
	CLR  	A
	MOV  	i?1262,A
?C0039:
	MOV  	A,i?1262
	CLR  	C
	SUBB 	A,j?1263
	JNC  	?C0040
; 		*(buf+i) = inportb(D12_DATA);
			; SOURCE LINE # 208
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	R3,buf?1260
	MOV  	R2,buf?1260+01H
	MOV  	R1,buf?1260+02H
	MOV  	DPL,i?1262
	MOV  	DPH,#00H
	MOV  	A,R7
	LCALL	?C?CSTOPTR
	INC  	i?1262
	SJMP 	?C0039
?C0040:
; 
; 	outportb(D12_COMMAND, 0xF2);
			; SOURCE LINE # 210
	MOV  	R5,#0F2H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 212
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0042
; 		ENABLE;
			; SOURCE LINE # 213
	SETB 	EA
?C0042:
; 
; 	return j;
			; SOURCE LINE # 215
	MOV  	R7,j?1263
; }
			; SOURCE LINE # 216
?C0037:
	RET  	
; END OF _D12_ReadEndpoint

; 
; // D12_ReadMainEndpoint() added by V2.2 to support double-buffering.
; // Caller should assume maxium 128 bytes of returned data.
; unsigned char D12_ReadMainEndpoint(unsigned char * buf)

	RSEG  ?PR?_D12_ReadMainEndpoint?CMDS
_D12_ReadMainEndpoint:
	USING	0
			; SOURCE LINE # 220
	MOV  	buf?1364,R3
	MOV  	buf?1364+01H,R2
	MOV  	buf?1364+02H,R1
; {
			; SOURCE LINE # 221
; 	unsigned char i, j, k = 0, bDblBuf = 1;
			; SOURCE LINE # 222
	CLR  	A
	MOV  	k?1367,A
	MOV  	bDblBuf?1368,#01H
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 224
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0043
; 		DISABLE;
			; SOURCE LINE # 225
	CLR  	EA
?C0043:
; 
; //	outportb(D12_COMMAND, 0x84);
; //	if( (inportb(D12_DATA) & 0x60) == 0x60)
; 		bDblBuf = 2;
			; SOURCE LINE # 229
	MOV  	bDblBuf?1368,#02H
?C0044:
; 
; 	while(bDblBuf) {
			; SOURCE LINE # 231
; 		outportb(D12_COMMAND, 4);
			; SOURCE LINE # 232
	MOV  	R5,#04H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 		if((inportb(D12_DATA) & D12_FULLEMPTY) == 0)
			; SOURCE LINE # 233
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	A,R7
	JNB  	ACC.0,?C0045
; 			break;
			; SOURCE LINE # 234
?C0046:
; 
; 		outportb(D12_COMMAND, 0xF0);
			; SOURCE LINE # 236
	MOV  	R5,#0F0H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 		j = inportb(D12_DATA);
			; SOURCE LINE # 237
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	j?1366,R7
; 		j = inportb(D12_DATA);
			; SOURCE LINE # 238
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	j?1366,R7
; 
; 		for(i=0; i<j; i++)
			; SOURCE LINE # 240
	CLR  	A
	MOV  	i?1365,A
?C0047:
	MOV  	A,i?1365
	CLR  	C
	SUBB 	A,j?1366
	JNC  	?C0048
; 			*(buf+i+k) = inportb(D12_DATA);
			; SOURCE LINE # 241
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
	MOV  	R3,buf?1364
	MOV  	A,i?1365
	MOV  	R4,#00H
	ADD  	A,buf?1364+02H
	MOV  	R1,A
	MOV  	A,R4
	ADDC 	A,buf?1364+01H
	MOV  	R2,A
	MOV  	A,k?1367
	ADD  	A,R1
	MOV  	R1,A
	MOV  	A,R4
	ADDC 	A,R2
	MOV  	R2,A
	MOV  	A,R7
	LCALL	?C?CSTPTR
	INC  	i?1365
	SJMP 	?C0047
?C0048:
; 
; 		k += j;
			; SOURCE LINE # 243
	MOV  	A,j?1366
	ADD  	A,k?1367
	MOV  	k?1367,A
; 
; 		outportb(D12_COMMAND, 0xF2);
			; SOURCE LINE # 245
	MOV  	R5,#0F2H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 
; 		bDblBuf --;
			; SOURCE LINE # 247
	DJNZ 	bDblBuf?1368,?C0044
; 	}
			; SOURCE LINE # 248
?C0045:
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 250
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0050
; 		ENABLE;
			; SOURCE LINE # 251
	SETB 	EA
?C0050:
; 
; 	return k;
			; SOURCE LINE # 253
	MOV  	R7,k?1367
; }
			; SOURCE LINE # 254
?C0051:
	RET  	
; END OF _D12_ReadMainEndpoint

; 
; unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char * buf, unsigned char len)

	RSEG  ?PR?_D12_WriteEndpoint?CMDS
_D12_WriteEndpoint:
	USING	0
			; SOURCE LINE # 256
	MOV  	buf?1470,R3
	MOV  	buf?1470+01H,R2
	MOV  	buf?1470+02H,R1
;---- Variable 'endp?1469' assigned to Register 'R5' ----
	MOV  	R5,AR7
; {
			; SOURCE LINE # 257
; 	unsigned char i;
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 260
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0052
; 		DISABLE;
			; SOURCE LINE # 261
	CLR  	EA
?C0052:
; 
; 	/* Select Endpoint */
; 	outportb(D12_COMMAND, endp);	
			; SOURCE LINE # 264
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	inportb(D12_DATA);				
			; SOURCE LINE # 265
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_inportb
; 
; 	/* Write Buffer */
; 	outportb(D12_COMMAND, 0xF0);
			; SOURCE LINE # 268
	MOV  	R5,#0F0H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	outportb(D12_DATA, 0);			/* first byte is reserved */
			; SOURCE LINE # 269
	CLR  	A
	MOV  	R5,A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_outportb
; 	outportb(D12_DATA, len);		/* how many actual data bytes to be sent to host */
			; SOURCE LINE # 270
	MOV  	R5,len?1471
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_outportb
; 
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 272
	CLR  	A
	MOV  	i?1472,A
?C0053:
	MOV  	A,i?1472
	CLR  	C
	SUBB 	A,len?1471
	JNC  	?C0054
; 		outportb(D12_DATA, *(buf+i));
			; SOURCE LINE # 273
	MOV  	R3,buf?1470
	MOV  	R2,buf?1470+01H
	MOV  	R1,buf?1470+02H
	MOV  	DPL,i?1472
	MOV  	DPH,#00H
	LCALL	?C?CLDOPTR
	MOV  	R5,A
	CLR  	A
	MOV  	R7,A
	MOV  	R6,A
	LCALL	_outportb
	INC  	i?1472
	SJMP 	?C0053
?C0054:
; 
; 	/* Inform D12 that the buffer is now fully loaded and ready to send data out */
; 	outportb(D12_COMMAND, 0xFA);	
			; SOURCE LINE # 276
	MOV  	R5,#0FAH
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 278
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0056
; 		ENABLE;
			; SOURCE LINE # 279
	SETB 	EA
?C0056:
; 
; 	return len;
			; SOURCE LINE # 281
	MOV  	R7,len?1471
; }
			; SOURCE LINE # 282
?C0057:
	RET  	
; END OF _D12_WriteEndpoint

; 
; /* When a SETUP token is received, the data in the endpoint buffer is locked, this means
;    that a ClearBuffer command or Validate command has no effect till Ack_SETUP issued */
; void D12_AcknowledgeEndpoint(unsigned char endp)

	RSEG  ?PR?_D12_AcknowledgeEndpoint?CMDS
_D12_AcknowledgeEndpoint:
	USING	0
			; SOURCE LINE # 286
	MOV  	endp?1573,R7
; {
			; SOURCE LINE # 287
; 	outportb(D12_COMMAND, endp);
			; SOURCE LINE # 288
	MOV  	R5,endp?1573
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	outportb(D12_COMMAND, 0xF1);
			; SOURCE LINE # 289
	MOV  	R5,#0F1H
	MOV  	R7,#01H
	MOV  	R6,#00H
	LCALL	_outportb
; 	if(endp == 0)
			; SOURCE LINE # 290
	MOV  	A,endp?1573
	JNZ  	?C0059
; 		outportb(D12_COMMAND, 0xF2);
			; SOURCE LINE # 291
	MOV  	R5,#0F2H
	MOV  	R7,#01H
	MOV  	R6,A
	LCALL	_outportb
; }
			; SOURCE LINE # 292
?C0059:
	RET  	
; END OF _D12_AcknowledgeEndpoint

	END

⌨️ 快捷键说明

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