📄 cmds.src
字号:
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 + -