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

📄 smart_ci.asm

📁 usb1.1协议的实现
💻 ASM
📖 第 1 页 / 共 2 页
字号:
; 	c = inportb(D12_DATA);
			; SOURCE LINE # 132
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
;---- Variable 'c?71' assigned to Register 'R7' ----
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 134
	MOV  	R6,bEPPflags
	MOV  	A,R6
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0022
; 		ENABLE;
			; SOURCE LINE # 135
	SETB 	EA
?C0022:
; 
; 	return c;
			; SOURCE LINE # 137
; }
			; SOURCE LINE # 138
?C0023:
	RET  	
; END OF _D12_ReadEndpointStatus

; 
; void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)

	RSEG  ?PR?_D12_SetEndpointStatus?D12CI
	USING	0
_D12_SetEndpointStatus:
	MOV  	bStalled?80,R5
;---- Variable 'bEndp?80' assigned to Register 'R6' ----
	MOV  	R6,AR7
			; SOURCE LINE # 140
; {
			; SOURCE LINE # 141
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 142
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0024
; 		DISABLE;
			; SOURCE LINE # 143
	CLR  	EA
?C0024:
; 
; 	outportb(D12_COMMAND, 0x40 + bEndp);
			; SOURCE LINE # 145
	MOV  	R7,#03H
	MOV  	A,R6
	ADD  	A,#040H
	MOV  	R5,A
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	outportb(D12_DATA, bStalled);
			; SOURCE LINE # 146
	MOV  	R7,#02H
	MOV  	R5,bStalled?80
;	LCALL	_outportb
	MOV  	DPTR,#0FF02H
	MOV  	A,R5
	MOVX 	@DPTR,A
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 148
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0026
; 		ENABLE;
			; SOURCE LINE # 149
	SETB 	EA
; }
			; SOURCE LINE # 150
?C0026:
	RET  	
; END OF _D12_SetEndpointStatus

; 
; void D12_SendResume(void)

	RSEG  ?PR?D12_SendResume?D12CI
	USING	0
D12_SendResume:
			; SOURCE LINE # 152
; {
			; SOURCE LINE # 153
; 	outportb(D12_COMMAND, 0xF6);
			; SOURCE LINE # 154
	MOV  	R7,#03H
	MOV  	R5,#0F6H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 155
	RET
; END OF D12_SendResume

;
; unsigned short D12_ReadCurrentFrameNumber(void)

	RSEG  ?PR?D12_ReadCurrentFrameNumber?D12CI
	USING	0
D12_ReadCurrentFrameNumber:
			; SOURCE LINE # 157
; {
			; SOURCE LINE # 158
; 	unsigned short i,j;
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 161
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0028
; 		DISABLE;
			; SOURCE LINE # 162
	CLR  	EA
?C0028:
;
; 	outportb(D12_COMMAND, 0xF5);
			; SOURCE LINE # 164
	MOV  	R7,#03H
	MOV  	R5,#0F5H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	i= inportb(D12_DATA);
			; SOURCE LINE # 165
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	i?101,#00H
	MOV  	i?101+01H,R7
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 166
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
;---- Variable 'j?101' assigned to Register 'R6/R7' ----
;
; 	i += (j<<8);
			; SOURCE LINE # 168
	MOV  	A,R7
	MOV  	R6,A
	CLR  	A
	ADD  	A,i?101+01H
	MOV  	i?101+01H,A
	MOV  	A,R6
	ADDC 	A,i?101
	MOV  	i?101,A
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 170
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0029
; 		ENABLE;
			; SOURCE LINE # 171
	SETB 	EA
?C0029:
;
; 	return i;
			; SOURCE LINE # 173
	MOV  	R6,i?101
	MOV  	R7,i?101+01H
; }
			; SOURCE LINE # 174
?C0030:
	RET
; END OF D12_ReadCurrentFrameNumber

;
; unsigned short D12_ReadChipID(void)

	RSEG  ?PR?D12_ReadChipID?D12CI
	USING	0
D12_ReadChipID:
			; SOURCE LINE # 176
; {
			; SOURCE LINE # 177
; 	unsigned short i,j;
;
; 	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,?C0031
; 		DISABLE;
			; SOURCE LINE # 181
	CLR  	EA
?C0031:
;
; 	outportb(portbase+D12_COMMAND, 0xFD);
			; SOURCE LINE # 183
	MOV  	R7,#05H
	MOV  	R5,#0FDH
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	i=inportb(portbase+D12_DATA);
			; SOURCE LINE # 184
	MOV  	R7,#04H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	i?111,#00H
	MOV  	i?111+01H,R7
; 	j=inportb(portbase+D12_DATA);
			; SOURCE LINE # 185
	MOV  	R7,#04H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
;---- Variable 'j?111' assigned to Register 'R6/R7' ----
; 	i += (j<<8);
			; SOURCE LINE # 186
	MOV  	A,R7
	MOV  	R6,A
	CLR  	A
	ADD  	A,i?111+01H
	MOV  	i?111+01H,A
	MOV  	A,R6
	ADDC 	A,i?111
	MOV  	i?111,A
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 188
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0032
; 		ENABLE;
			; SOURCE LINE # 189
	SETB 	EA
?C0032:
;
; 	return i;
			; SOURCE LINE # 191
	MOV  	R6,i?111
	MOV  	R7,i?111+01H
; }
			; SOURCE LINE # 192
?C0033:
	RET
; END OF D12_ReadChipID

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

	RSEG  ?PR?_D12_ReadEndpoint?D12CI
	USING	0
_D12_ReadEndpoint:
			; SOURCE LINE # 194
; {
			; SOURCE LINE # 195
; 	unsigned char i, j;
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 198
	MOV  	A,bEPPflags
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0034
; 		DISABLE;
			; SOURCE LINE # 199
	CLR  	EA
?C0034:
	MOV  	buf?120,R3
	MOV  	buf?120+01H,R2
	MOV  	buf?120+02H,R1
	MOV  	len?120, R5
;---- Variable 'endp?120' assigned to Register 'R5' ----
	MOV  	R5,AR7
;
; 	outportb(D12_COMMAND, endp);
			; SOURCE LINE # 201
	MOV  	R7,#03H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
			; SOURCE LINE # 202
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	A,R7
	JB   	ACC.0,?C0035
; 		if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 203
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0036
; 			ENABLE;
			; SOURCE LINE # 204
	SETB 	EA
?C0036:
; 		return 0;
			; SOURCE LINE # 205
	MOV  	R7,#00H
	RET
; 	}
			; SOURCE LINE # 206
?C0035:
;
; 	outportb(D12_COMMAND, 0xF0);
			; SOURCE LINE # 208
	MOV  	R7,#03H
	MOV  	R5,#0F0H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 209
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	j?121,R7
; 	j = inportb(D12_DATA);
			; SOURCE LINE # 210
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	j?121,R7
;
; 	if(j > len)
			; SOURCE LINE # 212
	MOV  	A,j?121
	SETB 	C
	SUBB 	A,len?120
	JC   	?C0038
; 		j = len;
			; SOURCE LINE # 213
	MOV  	j?121,len?120
?C0038:
;
	MOV  	R3,buf?120
	CJNE	R3,#02,RDEP_002
			; XDATA memory type
	MOV  	DPH,buf?120+01H
	MOV  	DPL,buf?120+02H
; 	for(i=0; i<j; i++)
			; SOURCE LINE # 215
	CLR  	A
	MOV  	i?121,A
RDEP_001:
	MOV  	A,i?121
	CLR  	C
	SUBB 	A,j?121
	JNC  	?C0040
	PUSH	DPH
	PUSH	DPL
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	POP		DPL
	POP		DPH
	MOVX	@DPTR,A
	INC		DPTR
	INC  	i?121
	SJMP 	RDEP_001
;
RDEP_002:
			; IDATA, DATA memory type. (PDATA not supported!)
	MOV  	R0,buf?120+02H
; 	for(i=0; i<j; i++)
			; SOURCE LINE # 215
	CLR  	A
	MOV  	i?121,A
	MOV  	DPTR,#0FF02H
RDEP_003:
	MOV  	A,i?121
	CLR  	C
	SUBB 	A,j?121
	JNC  	?C0040
	MOVX 	A,@DPTR
	MOV		@R0,A
	INC		R0
	INC  	i?121
	SJMP 	RDEP_003

?C0040:
;
;
; 	outportb(D12_COMMAND, 0xF2);
			; SOURCE LINE # 218
	MOV  	R7,#03H
	MOV  	R5,#0F2H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 220
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0042
; 		ENABLE;
			; SOURCE LINE # 221
	SETB 	EA
?C0042:
;
; 	return j;
			; SOURCE LINE # 223
	MOV  	R7,j?121
; }
			; SOURCE LINE # 224
?C0037:
	RET
; END OF _D12_ReadEndpoint

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

	RSEG  ?PR?_D12_WriteEndpoint?D12CI
	USING	0
_D12_WriteEndpoint:
			; SOURCE LINE # 264
; {
			; SOURCE LINE # 265
; 	unsigned char i;
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 268
	MOV  	A,bEPPflags
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0052
; 		DISABLE;
			; SOURCE LINE # 269
	CLR  	EA
?C0052:
	MOV  	buf?140,R3
	MOV  	buf?140+01H,R2
	MOV  	buf?140+02H,R1
	MOV  	len?140, R5
;---- Variable 'endp?140' assigned to Register 'R5' ----
	MOV  	R5,AR7
;
; 	outportb(D12_COMMAND, endp);
			; SOURCE LINE # 271
	MOV  	R7,#03H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	inportb(D12_DATA);
			; SOURCE LINE # 272
	MOV  	R7,#02H
;	LCALL	_inportb
	MOV  	DPTR,#0FF02H
	MOVX 	A,@DPTR
	MOV  	R7,A
;
; 	outportb(D12_COMMAND, 0xF0);
			; SOURCE LINE # 274
	MOV  	R7,#03H
	MOV  	R5,#0F0H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	outportb(D12_DATA, 0);
			; SOURCE LINE # 275
	MOV  	R7,#02H
	CLR  	A
	MOV  	R5,A
;	LCALL	_outportb
	MOV  	DPTR,#0FF02H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	outportb(D12_DATA, len);
			; SOURCE LINE # 276
	MOV  	R7,#02H
	MOV  	R5,len?140
;	LCALL	_outportb
	MOV  	DPTR,#0FF02H
	MOV  	A,R5
	MOVX 	@DPTR,A
;
	MOV  	R3,buf?140
	CJNE	R3,#02,WREP_002
	MOV  	DPH,buf?140+01H
	MOV  	DPL,buf?140+02H
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 278
	CLR  	A
	MOV  	i?141,A
WREP_001:
	MOV  	A,i?141
	CLR  	C
	SUBB 	A,len?140
	JNC  	?C0054
	MOVX	A,@DPTR
	INC		DPTR
	PUSH	DPH
	PUSH	DPL
	MOV  	DPTR,#0FF02H
	MOVX 	@DPTR,A
	POP		DPL
	POP		DPH
	INC  	i?141
	SJMP 	WREP_001
WREP_002:
	CJNE	R3,#05,WREP_004
	MOV  	DPH,buf?140+01H
	MOV  	DPL,buf?140+02H
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 278
	CLR  	A
	MOV  	i?141,A
WREP_003:
	MOV  	A,i?141
	CLR  	C
	SUBB 	A,len?140
	JNC  	?C0054
	CLR		A
	MOVC	A,@A+DPTR
	INC		DPTR
	PUSH	DPH
	PUSH	DPL
	MOV  	DPTR,#0FF02H
	MOVX 	@DPTR,A
	POP		DPL
	POP		DPH
	INC  	i?141
	SJMP 	WREP_003
WREP_004:
;	CJNE	R3,#04,?C0054
	MOV  	R0,buf?140+02H
; 	for(i=0; i<len; i++)
			; SOURCE LINE # 278
	CLR  	A
	MOV  	i?141,A
	MOV  	DPTR,#0FF02H
WREP_005:
	MOV  	A,i?141
	CLR  	C
	SUBB 	A,len?140
	JNC  	?C0054
	MOV		A,@R0
	INC		R0
	MOVX 	@DPTR,A
	INC  	i?141
	SJMP 	WREP_005

?C0054:
;
;
; 	outportb(D12_COMMAND, 0xFA);
			; SOURCE LINE # 281
	MOV  	R7,#03H
	MOV  	R5,#0FAH
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
;
; 	if(bEPPflags.bits.in_isr == 0)
			; SOURCE LINE # 283
	MOV  	R7,bEPPflags
	MOV  	A,R7
	SWAP 	A
	RRC  	A
	ANL  	A,#07H
	JB   	ACC.0,?C0056
; 		ENABLE;
			; SOURCE LINE # 284
	SETB 	EA
?C0056:
;
; 	return len;
			; SOURCE LINE # 286
	MOV  	R7,len?140
; }
			; SOURCE LINE # 287
?C0057:
	RET
; END OF _D12_WriteEndpoint

;
; void D12_AcknowledgeEndpoint(unsigned char endp)

	RSEG  ?PR?_D12_AcknowledgeEndpoint?D12CI
	USING	0
_D12_AcknowledgeEndpoint:
	MOV  	endp?150,R7
			; SOURCE LINE # 289
; {
			; SOURCE LINE # 290
; 	outportb(D12_COMMAND, endp);
			; SOURCE LINE # 291
	MOV  	R7,#03H
	MOV  	R5,endp?150
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	outportb(D12_COMMAND, 0xF1);
			; SOURCE LINE # 292
	MOV  	R7,#03H
	MOV  	R5,#0F1H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; 	if(endp == 0)
			; SOURCE LINE # 293
	MOV  	A,endp?150
	JNZ  	?C0059
; 		outportb(D12_COMMAND, 0xF2);
			; SOURCE LINE # 294
	MOV  	R7,#03H
	MOV  	R5,#0F2H
;	LCALL	_outportb
	MOV  	DPTR,#0FF03H
	MOV  	A,R5
	MOVX 	@DPTR,A
; }
			; SOURCE LINE # 295
?C0059:
	RET
; END OF _D12_AcknowledgeEndpoint

	END

⌨️ 快捷键说明

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