📄 d12ci.asm
字号:
MOV DPL,D12_COMMAND+01H
MOV A,#0F5H
MOVX @DPTR,A
; i= inportb(D12_DATA);
; SOURCE LINE # 148
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV R7,A
; j = inportb(D12_DATA);
; SOURCE LINE # 149
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV R6,A
;
; i += (j<<8);
; SOURCE LINE # 151
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 153
MOV A,bEPPflags
JB ACC.5,?C0028
; ENABLE;
; SOURCE LINE # 154
SETB EA
?C0028:
;
; return i;
; SOURCE LINE # 156
; }
; SOURCE LINE # 157
?C0029:
RET
; END OF D12_ReadCurrentFrameNumber
;
; unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
RSEG ?PR?_D12_ReadEndpoint?D12CI
_D12_ReadEndpoint:
USING 0
; SOURCE LINE # 159
MOV endp?1055,R7
MOV len?1056,R5
MOV buf?1057,R3
MOV buf?1057+01H,R2
MOV buf?1057+02H,R1
; {
; SOURCE LINE # 160
; unsigned char i, j;
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 163
MOV A,bEPPflags
JB ACC.5,?C0030
; DISABLE;
; SOURCE LINE # 164
CLR EA
?C0030:
;
; outportb(D12_COMMAND, 0x80 + endp);
; SOURCE LINE # 166
MOV A,endp?1055
ADD A,#080H
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOVX @DPTR,A
; i = inportb(D12_DATA);
; SOURCE LINE # 167
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV i?1058,A
; i=i & 0x60;
; SOURCE LINE # 168
ANL i?1058,#060H
; if (endp == 2)
; SOURCE LINE # 169
MOV A,endp?1055
CJNE A,#02H,?C0031
; {
; SOURCE LINE # 170
; if (i == 0x60)
; SOURCE LINE # 171
MOV A,i?1058
CJNE A,#060H,?C0032
; bEPPflags.bits.ep1buf_full = 1;
; SOURCE LINE # 172
MOV A,bEPPflags+01H
ORL A,#010H
MOV bEPPflags+01H,A
SJMP ?C0031
?C0032:
; else
; bEPPflags.bits.ep1buf_full = 0;
; SOURCE LINE # 174
MOV A,bEPPflags+01H
ANL A,#0EFH
MOV bEPPflags+01H,A
; }
; SOURCE LINE # 175
?C0031:
;
; if (endp == 4)
; SOURCE LINE # 177
MOV A,endp?1055
CJNE A,#04H,?C0034
; {
; SOURCE LINE # 178
; if (i == 0x60)
; SOURCE LINE # 179
MOV A,i?1058
CJNE A,#060H,?C0035
; bEPPflags.bits.ep2buf_full = 1;
; SOURCE LINE # 180
MOV A,bEPPflags+01H
ORL A,#020H
MOV bEPPflags+01H,A
SJMP ?C0034
?C0035:
; else
; bEPPflags.bits.ep2buf_full = 0;
; SOURCE LINE # 182
MOV A,bEPPflags+01H
ANL A,#0DFH
MOV bEPPflags+01H,A
; }
; SOURCE LINE # 183
?C0034:
;
;
; outportb(D12_COMMAND, endp);
; SOURCE LINE # 186
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,endp?1055
MOVX @DPTR,A
; if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) {
; SOURCE LINE # 187
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
JB ACC.0,?C0037
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 188
MOV A,bEPPflags
JB ACC.0,?C0038
; ENABLE;
; SOURCE LINE # 189
SETB EA
?C0038:
; return 0;
; SOURCE LINE # 190
MOV R7,#00H
RET
; }
; SOURCE LINE # 191
?C0037:
;
; outportb(D12_COMMAND, 0xF0);
; SOURCE LINE # 193
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F0H
MOVX @DPTR,A
; j = inportb(D12_DATA);
; SOURCE LINE # 194
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
; j = inportb(D12_DATA);
; SOURCE LINE # 195
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV j?1059,A
;
; if(j > len)
; SOURCE LINE # 197
; MOV A,j?1059
SETB C
SUBB A,len?1056
JC ?C0040
; j = len;
; SOURCE LINE # 198
MOV j?1059,len?1056
?C0040:
;
; for(i=0; i<j; i++)
; SOURCE LINE # 200
MOV A,j?1059
JZ WRITEDAT_END
MOV R6,A
MOV R3,buf?1057
CJNE R3,#01H,WRITE_DATA
MOV DPH,buf?1057+01H
MOV DPL,buf?1057+02H
WRITE_XDATA1:
; for(i=0; i<j; i++)
; *(buf+i) = D12_DATA;
; SOURCE LINE # 219
PUSH DPH
PUSH DPL
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
MOVX A,@DPTR
POP DPL
POP DPH
MOVX @DPTR,A
INC DPTR
DJNZ R6,WRITE_XDATA1
SJMP WRITEDAT_END
WRITE_DATA:
JNC WRITE_PDATA
MOV R1,buf?1057+02H
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
WRITE_DATA1:
; for(i=0; i<j; i++)
; *(buf+i) = D12_DATA;
; SOURCE LINE # 219
MOVX A,@DPTR
MOV @R1,A
INC R1
DJNZ R6,WRITE_DATA1
SJMP WRITEDAT_END
WRITE_PDATA:
CJNE R3,#0FEH,WRITEDAT_END
MOV R1,buf?1057+02H
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
WRITE_PDATA1:
; for(i=0; i<j; i++)
; *(buf+i) = D12_DATA;
; SOURCE LINE # 219
MOVX A,@DPTR
MOVX @R1,A
INC R1
DJNZ R6,WRITE_PDATA1
WRITEDAT_END:
?C0042:
;
; outportb(D12_COMMAND, 0xF2);
; SOURCE LINE # 203
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F2H
MOVX @DPTR,A
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 205
MOV A,bEPPflags
JB ACC.5,?C0044
; ENABLE;
; SOURCE LINE # 206
SETB EA
?C0044:
;
; return j;
; SOURCE LINE # 208
MOV R7,j?1059
; }
; SOURCE LINE # 209
?C0039:
RET
; END OF _D12_ReadEndpoint
;
; unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
RSEG ?PR?_D12_WriteEndpoint?D12CI
_D12_WriteEndpoint:
USING 0
; SOURCE LINE # 211
MOV endp?1160,R7
MOV len?1161,R5
MOV buf?1162,R3
MOV buf?1162+01H,R2
MOV buf?1162+02H,R1
; {
; SOURCE LINE # 212
; unsigned char i;
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 215
MOV A,bEPPflags
JB ACC.5,?C0045
; DISABLE;
; SOURCE LINE # 216
CLR EA
?C0045:
;
; outportb(D12_COMMAND, endp);
; SOURCE LINE # 218
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,endp?1160
MOVX @DPTR,A
; i = inportb(D12_DATA);
; SOURCE LINE # 219
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV R7,A
MOV i?1163,R7
;
; outportb(D12_COMMAND, 0xF0);
; SOURCE LINE # 221
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F0H
MOVX @DPTR,A
; outportb(D12_DATA, 0);
; SOURCE LINE # 222
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
CLR A
MOVX @DPTR,A
; outportb(D12_DATA, len);
; SOURCE LINE # 223
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOV A,len?1161
MOVX @DPTR,A
;
; for(i=0; i<len; i++)
; SOURCE LINE # 225
; outportb(D12_DATA, *(buf+i));
; SOURCE LINE # 226
MOV R7,A
JZ READDAT_END
MOV R3,buf?1162
CJNE R3,#00H,READ_PDATA
MOV R1,buf?1162+02H
;
; for(i=0; i<len; i++)
; SOURCE LINE # 243
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
READ_DATA1:
MOV A,@R1
INC R1
; D12_DATA = *(buf+i);
; SOURCE LINE # 244
MOVX @DPTR,A
DJNZ R5,READ_DATA1
SJMP READDAT_END
READ_XDATA:
CJNE R3,#01,READ_PDATA
MOV DPH,buf?1162+01H
MOV DPL,buf?1162+02H
;
; for(i=0; i<len; i++)
; SOURCE LINE # 243
READ_XDATA1:
MOVX A,@DPTR
INC DPTR
PUSH DPH
PUSH DPL
; D12_DATA = *(buf+i);
; SOURCE LINE # 244
; MOV DPTR,#0FF02H
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
MOVX @DPTR,A
POP DPL
POP DPH
DJNZ R5,READ_XDATA1
SJMP READDAT_END
READ_PDATA:
CJNE R3,#0FEH,READ_CODE
MOV R1,buf?1162+02H
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
;
; for(i=0; i<len; i++)
; SOURCE LINE # 243
READ_PDATA1:
MOVX A,@R1
INC R1
; D12_DATA = *(buf+i);
; SOURCE LINE # 244
MOVX @DPTR,A
DJNZ R5,READ_PDATA1
SJMP READDAT_END
READ_CODE:
JC READDAT_END
MOV DPH,buf?1162+01H
MOV DPL,buf?1162+02H
;
; for(i=0; i<len; i++)
; SOURCE LINE # 243
READ_CODE1:
CLR A
MOVC A,@A+DPTR
INC DPTR
PUSH DPH
PUSH DPL
; D12_DATA = *(buf+i);
; SOURCE LINE # 244
MOV DPH,D12_DATA
MOV DPL,D12_DATA+1
MOVX @DPTR,A
POP DPL
POP DPH
DJNZ R5,READ_CODE1
READDAT_END:
?C0047:
;
; outportb(D12_COMMAND, 0xFA);
; SOURCE LINE # 228
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0FAH
MOVX @DPTR,A
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 230
MOV A,bEPPflags
JB ACC.5,?C0049
; ENABLE;
; SOURCE LINE # 231
SETB EA
?C0049:
;
; return len;
; SOURCE LINE # 233
MOV R7,len?1161
; }
; SOURCE LINE # 234
?C0050:
RET
; END OF _D12_WriteEndpoint
;
; void D12_AcknowledgeEndpoint(unsigned char endp)
RSEG ?PR?_D12_AcknowledgeEndpoint?D12CI
_D12_AcknowledgeEndpoint:
USING 0
; SOURCE LINE # 236
MOV endp?1264,R7
; {
; SOURCE LINE # 237
; outportb(D12_COMMAND, endp);
; SOURCE LINE # 238
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,endp?1264
MOVX @DPTR,A
; outportb(D12_COMMAND, 0xF1);
; SOURCE LINE # 239
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F1H
MOVX @DPTR,A
; if(endp == 0)
; SOURCE LINE # 240
MOV A,endp?1264
JNZ ?C0052
; outportb(D12_COMMAND, 0xF2);
; SOURCE LINE # 241
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F2H
MOVX @DPTR,A
; }
; SOURCE LINE # 242
?C0052:
RET
; END OF _D12_AcknowledgeEndpoint
;
;
; void fn_usb_isr()
RSEG ?PR?fn_usb_isr?D12CI
fn_usb_isr:
USING 0
; SOURCE LINE # 245
; {
; SOURCE LINE # 246
; unsigned int i_st;
; unsigned char b1;
;
; bEPPflags.bits.in_isr = 1;
; SOURCE LINE # 250
MOV A,bEPPflags
ORL A,#020H
MOV bEPPflags,A
; // i_st = D12_ReadInterruptRegister();
;
;
; outportb(D12_COMMAND, 0xF4);
; SOURCE LINE # 254
MOV DPH,D12_COMMAND
MOV DPL,D12_COMMAND+01H
MOV A,#0F4H
MOVX @DPTR,A
; b1 = inportb(D12_DATA);
; SOURCE LINE # 255
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV i_st?1365+01H,A
; i_st = inportb(D12_DATA);
; SOURCE LINE # 256
MOV DPH,D12_DATA
MOV DPL,D12_DATA+01H
MOVX A,@DPTR
MOV i_st?1365,A
;
; i_st <<= 8;
; SOURCE LINE # 258
; i_st += b1;
; SOURCE LINE # 259
;
;
; if(i_st != 0) {
; SOURCE LINE # 262
MOV A,i_st?1365+01H
ORL A,i_st?1365
JZ ?C0053
;
; if(i_st & D12_INT_ENDP2IN)
; SOURCE LINE # 264
MOV A,i_st?1365+01H
JNB ACC.5,?C0054
; ep2_txdone();
; SOURCE LINE # 265
LCALL ep2_txdone
?C0054:
; if(i_st & D12_INT_ENDP2OUT)
; SOURCE LINE # 266
MOV A,i_st?1365+01H
JNB ACC.4,?C0055
; ep2_rxdone();
; SOURCE LINE # 267
LCALL ep2_rxdone
?C0055:
;
; if(i_st & D12_INT_BUSRESET) {
; SOURCE LINE # 269
MOV A,i_st?1365+01H
JNB ACC.6,?C0056
; // bus_reset();
; bEPPflags.bits.bus_reset = 1;
; SOURCE LINE # 271
MOV R7,bEPPflags
MOV A,R7
ORL A,#02H
MOV bEPPflags,A
; }
; SOURCE LINE # 272
?C0056:
;
; if(i_st & D12_INT_EOT)
; SOURCE LINE # 274
MOV A,i_st?1365
JNB ACC.0,?C0057
; dma_eot();
; SOURCE LINE # 275
LCALL dma_eot
?C0057:
;
; if(i_st & D12_INT_SUSPENDCHANGE)
; SOURCE LINE # 277
MOV A,i_st?1365+01H
JNB ACC.7,?C0058
; bEPPflags.bits.suspend = 1;
; SOURCE LINE # 278
MOV R7,bEPPflags
MOV A,R7
ORL A,#04H
MOV bEPPflags,A
?C0058:
;
; if(i_st & D12_INT_ENDP0IN)
; SOURCE LINE # 280
MOV A,i_st?1365+01H
JNB ACC.1,?C0059
; ep0_txdone();
; SOURCE LINE # 281
LCALL ep0_txdone
?C0059:
; if(i_st & D12_INT_ENDP0OUT)
; SOURCE LINE # 282
MOV A,i_st?1365+01H
JNB ACC.0,?C0060
; ep0_rxdone();
; SOURCE LINE # 283
LCALL ep0_rxdone
?C0060:
; if(i_st & D12_INT_ENDP1IN)
; SOURCE LINE # 284
MOV A,i_st?1365+01H
JNB ACC.3,?C0061
; ep1_txdone();
; SOURCE LINE # 285
LCALL ep1_txdone
?C0061:
; if(i_st & D12_INT_ENDP1OUT)
; SOURCE LINE # 286
MOV A,i_st?1365+01H
JNB ACC.2,?C0053
; ep1_rxdone();
; SOURCE LINE # 287
LCALL ep1_rxdone
; }
; SOURCE LINE # 288
?C0053:
;
; bEPPflags.bits.in_isr = 0;
; SOURCE LINE # 290
MOV A,bEPPflags
ANL A,#0DFH
MOV bEPPflags,A
; }
; SOURCE LINE # 291
RET
; END OF fn_usb_isr
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -