www.pudn.com > pdiusbd12 source.rar > SMART_CI.ASM
; D12CI.ASM generated and modified from: D12CI.C
$NOMOD51
NAME D12CI
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
WR BIT 0B0H.6
SBUF DATA 099H
PCON DATA 087H
MCU_HOSTDREQ BIT 0A0H.0
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?_D12_SetAddressEnable?D12CI SEGMENT CODE
?DT?_D12_SetAddressEnable?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_SetEndpointEnable?D12CI SEGMENT CODE
?DT?_D12_SetEndpointEnable?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_SetMode?D12CI SEGMENT CODE
?DT?_D12_SetMode?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_SetDMA?D12CI SEGMENT CODE
?DT?_D12_SetDMA?D12CI SEGMENT DATA OVERLAYABLE
?PR?D12_GetDMA?D12CI SEGMENT CODE
?PR?D12_ReadInterruptRegister?D12CI SEGMENT CODE
?DT?D12_ReadInterruptRegister?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_SelectEndpoint?D12CI SEGMENT CODE
?PR?_D12_ReadLastTransactionStatus?D12CI SEGMENT CODE
?PR?_D12_ReadEndpointStatus?D12CI SEGMENT CODE
?PR?_D12_SetEndpointStatus?D12CI SEGMENT CODE
?DT?_D12_SetEndpointStatus?D12CI SEGMENT DATA OVERLAYABLE
?PR?D12_SendResume?D12CI SEGMENT CODE
?PR?D12_ReadCurrentFrameNumber?D12CI SEGMENT CODE
?DT?D12_ReadCurrentFrameNumber?D12CI SEGMENT DATA OVERLAYABLE
?PR?D12_ReadChipID?D12CI SEGMENT CODE
?DT?D12_ReadChipID?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_ReadEndpoint?D12CI SEGMENT CODE
?DT?_D12_ReadEndpoint?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_WriteEndpoint?D12CI SEGMENT CODE
?DT?_D12_WriteEndpoint?D12CI SEGMENT DATA OVERLAYABLE
?PR?_D12_AcknowledgeEndpoint?D12CI SEGMENT CODE
?DT?_D12_AcknowledgeEndpoint?D12CI SEGMENT DATA OVERLAYABLE
EXTRN DATA (bEPPflags)
EXTRN CODE (?C_CSTOPTR)
EXTRN CODE (?C_CLDOPTR)
PUBLIC _D12_AcknowledgeEndpoint
PUBLIC ?_D12_WriteEndpoint?BYTE
PUBLIC _D12_WriteEndpoint
PUBLIC ?_D12_ReadEndpoint?BYTE
PUBLIC _D12_ReadEndpoint
PUBLIC D12_ReadChipID
PUBLIC D12_ReadCurrentFrameNumber
PUBLIC D12_SendResume
PUBLIC _D12_SetEndpointStatus
PUBLIC _D12_ReadEndpointStatus
PUBLIC _D12_ReadLastTransactionStatus
PUBLIC _D12_SelectEndpoint
PUBLIC D12_ReadInterruptRegister
PUBLIC _D12_SetDMA
PUBLIC D12_GetDMA
PUBLIC _D12_SetMode
PUBLIC _D12_SetEndpointEnable
PUBLIC _D12_SetAddressEnable
RSEG ?DT?_D12_SetAddressEnable?D12CI
?_D12_SetAddressEnable?BYTE:
bAddress?00: DS 1
bEnable?00: DS 1
RSEG ?DT?_D12_SetEndpointEnable?D12CI
?_D12_SetEndpointEnable?BYTE:
bEnable?10: DS 1
RSEG ?DT?_D12_SetMode?D12CI
?_D12_SetMode?BYTE:
bConfig?20: DS 1
bClkDiv?20: DS 1
RSEG ?DT?_D12_SetDMA?D12CI
?_D12_SetDMA?BYTE:
bMode?30: DS 1
RSEG ?DT?D12_ReadInterruptRegister?D12CI
?D12_ReadInterruptRegister?BYTE:
b1?41: DS 1
RSEG ?DT?_D12_SetEndpointStatus?D12CI
?_D12_SetEndpointStatus?BYTE:
bStalled?80: DS 1
RSEG ?DT?D12_ReadCurrentFrameNumber?D12CI
?D12_ReadCurrentFrameNumber?BYTE:
i?101: DS 2
RSEG ?DT?D12_ReadChipID?D12CI
?D12_ReadChipID?BYTE:
i?111: DS 2
RSEG ?DT?_D12_ReadEndpoint?D12CI
?_D12_ReadEndpoint?BYTE:
endp?120: DS 1
len?120: DS 1
buf?120: DS 3
ORG 5
i?121: DS 1
j?121: DS 1
RSEG ?DT?_D12_WriteEndpoint?D12CI
?_D12_WriteEndpoint?BYTE:
endp?140: DS 1
len?140: DS 1
buf?140: DS 3
ORG 5
i?141: DS 1
RSEG ?DT?_D12_AcknowledgeEndpoint?D12CI
?_D12_AcknowledgeEndpoint?BYTE:
endp?150: DS 1
; //*************************************************************************
; //
; // P H I L I P S P R O P R I E T A R Y
; //
; // COPYRIGHT (c) 1997 BY PHILIPS SINGAPORE.
; // -- ALL RIGHTS RESERVED --
; //
; // File Name: D12CI.C
; // Author: Wenkai Du
; // Created: 8 Jun 98
; // Modified:
; // Revision: 2.2
; //
; //*************************************************************************
; //
; // 98/11/27 I/O mode Main endpoints read/write update (WK)
; // 98/12/2 Added D12_ReadMainEndpoint (WK)
; //*************************************************************************
;
; void D12_SetAddressEnable(unsigned char bAddress, unsigned char bEnable)
RSEG ?PR?_D12_SetAddressEnable?D12CI
USING 0
_D12_SetAddressEnable:
MOV bAddress?00,R7
MOV bEnable?00,R5
; SOURCE LINE # 33
; {
; SOURCE LINE # 34
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 35
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0001
; DISABLE;
; SOURCE LINE # 36
CLR EA
?C0001:
;
; outportb(D12_COMMAND, 0xD0);
; SOURCE LINE # 38
MOV R7,#03H
MOV R5,#0D0H
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; if(bEnable)
; SOURCE LINE # 39
MOV A,bEnable?00
JZ ?C0002
; bAddress |= 0x80;
; SOURCE LINE # 40
ORL bAddress?00,#080H
?C0002:
; outportb(D12_DATA, bAddress);
; SOURCE LINE # 41
MOV R7,#02H
MOV R5,bAddress?00
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 43
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0004
; ENABLE;
; SOURCE LINE # 44
SETB EA
; }
; SOURCE LINE # 45
?C0004:
RET
; END OF _D12_SetAddressEnable
;
; void D12_SetEndpointEnable(unsigned char bEnable)
RSEG ?PR?_D12_SetEndpointEnable?D12CI
USING 0
_D12_SetEndpointEnable:
MOV bEnable?10,R7
; SOURCE LINE # 47
; {
; SOURCE LINE # 48
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 49
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0005
; DISABLE;
; SOURCE LINE # 50
CLR EA
?C0005:
;
; outportb(D12_COMMAND, 0xD8);
; SOURCE LINE # 52
MOV R7,#03H
MOV R5,#0D8H
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; if(bEnable)
; SOURCE LINE # 53
MOV A,bEnable?10
JZ ?C0006
; outportb(D12_DATA, 1);
; SOURCE LINE # 54
MOV R7,#02H
MOV R5,#01H
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
SJMP ?C0007
?C0006:
; else
; outportb(D12_DATA, 0);
; SOURCE LINE # 56
MOV R7,#02H
CLR A
MOV R5,A
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
?C0007:
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 58
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0009
; ENABLE;
; SOURCE LINE # 59
SETB EA
; }
; SOURCE LINE # 60
?C0009:
RET
; END OF _D12_SetEndpointEnable
;
; void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
RSEG ?PR?_D12_SetMode?D12CI
USING 0
_D12_SetMode:
MOV bConfig?20,R7
MOV bClkDiv?20,R5
; SOURCE LINE # 62
; {
; SOURCE LINE # 63
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 64
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0010
; DISABLE;
; SOURCE LINE # 65
CLR EA
?C0010:
;
; outportb(D12_COMMAND, 0xF3);
; SOURCE LINE # 67
MOV R7,#03H
MOV R5,#0F3H
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; outportb(D12_DATA, bConfig);
; SOURCE LINE # 68
MOV R7,#02H
MOV R5,bConfig?20
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
; outportb(D12_DATA, bClkDiv);
; SOURCE LINE # 69
MOV R7,#02H
MOV R5,bClkDiv?20
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 71
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0012
; ENABLE;
; SOURCE LINE # 72
SETB EA
; }
; SOURCE LINE # 73
?C0012:
RET
; END OF _D12_SetMode
;
; void D12_SetDMA(unsigned char bMode)
RSEG ?PR?_D12_SetDMA?D12CI
USING 0
_D12_SetDMA:
MOV bMode?30,R7
; SOURCE LINE # 75
; {
; SOURCE LINE # 76
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 77
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0013
; DISABLE;
; SOURCE LINE # 78
CLR EA
?C0013:
;
; outportb(D12_COMMAND, 0xFB);
; SOURCE LINE # 80
MOV R7,#03H
MOV R5,#0FBH
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; outportb(D12_DATA, bMode);
; SOURCE LINE # 81
MOV R7,#02H
MOV R5,bMode?30
; LCALL _outportb
MOV DPTR,#0FF02H
MOV A,R5
MOVX @DPTR,A
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 83
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0015
; ENABLE;
; SOURCE LINE # 84
SETB EA
; }
; SOURCE LINE # 85
?C0015:
RET
; END OF _D12_SetDMA
;
; unsigned short D12_ReadInterruptRegister(void)
RSEG ?PR?D12_ReadInterruptRegister?D12CI
USING 0
D12_ReadInterruptRegister:
; SOURCE LINE # 87
; {
; SOURCE LINE # 88
; unsigned char b1;
; unsigned int j;
;
; outportb(D12_COMMAND, 0xF4);
; SOURCE LINE # 92
MOV R7,#03H
MOV R5,#0F4H
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; b1 = inportb(D12_DATA);
; SOURCE LINE # 93
MOV R7,#02H
; LCALL _inportb
MOV DPTR,#0FF02H
MOVX A,@DPTR
MOV R7,A
MOV b1?41,R7
; j = inportb(D12_DATA);
; SOURCE LINE # 94
MOV R7,#02H
; LCALL _inportb
MOV DPTR,#0FF02H
MOVX A,@DPTR
MOV R7,A
;---- Variable 'j?41' assigned to Register 'R4/R5' ----
MOV R5,AR7
MOV R4,#00H
;
; j <<= 8;
; SOURCE LINE # 96
MOV A,R5
MOV R5,#00H
MOV R4,A
; j += b1;
; SOURCE LINE # 97
MOV A,R5
ADD A,b1?41
MOV R5,A
CLR A
ADDC A,R4
MOV R4,A
;
; return j;
; SOURCE LINE # 99
MOV R6,A
MOV R7,AR5
; }
; SOURCE LINE # 100
?C0016:
RET
; END OF D12_ReadInterruptRegister
;
; unsigned char D12_SelectEndpoint(unsigned char bEndp)
RSEG ?PR?_D12_SelectEndpoint?D12CI
USING 0
_D12_SelectEndpoint:
;---- Variable 'bEndp?50' assigned to Register 'R5' ----
MOV R5,AR7
; SOURCE LINE # 102
; {
; SOURCE LINE # 103
; unsigned char c;
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 106
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0017
; DISABLE;
; SOURCE LINE # 107
CLR EA
?C0017:
;
; outportb(D12_COMMAND, bEndp);
; SOURCE LINE # 109
MOV R7,#03H
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; c = inportb(D12_DATA);
; SOURCE LINE # 110
MOV R7,#02H
; LCALL _inportb
MOV DPTR,#0FF02H
MOVX A,@DPTR
MOV R7,A
;---- Variable 'c?51' assigned to Register 'R7' ----
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 112
MOV R6,bEPPflags
MOV A,R6
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0018
; ENABLE;
; SOURCE LINE # 113
SETB EA
?C0018:
;
; return c;
; SOURCE LINE # 115
; }
; SOURCE LINE # 116
?C0019:
RET
; END OF _D12_SelectEndpoint
;
; unsigned char D12_GetDMA(void)
RSEG ?PR?D12_GetDMA?D12CI
USING 0
D12_GetDMA:
CLR EA
;
MOV R7,#03H
MOV R5,#0FBH
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
;
MOV R7,#02H
MOV DPTR,#0FF02H
MOVX A,@DPTR
MOV R7,A
;
SETB EA
RET
; END OF D12_GetDMA
;
; unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
RSEG ?PR?_D12_ReadLastTransactionStatus?D12CI
USING 0
_D12_ReadLastTransactionStatus:
;---- Variable 'bEndp?60' assigned to Register 'R6' ----
MOV R6,AR7
; SOURCE LINE # 118
; {
; SOURCE LINE # 119
; outportb(D12_COMMAND, 0x40 + bEndp);
; SOURCE LINE # 120
MOV R7,#03H
MOV A,R6
ADD A,#040H
MOV R5,A
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; return inportb(D12_DATA);
; SOURCE LINE # 121
MOV R7,#02H
; LCALL _inportb
MOV DPTR,#0FF02H
MOVX A,@DPTR
MOV R7,A
; }
; SOURCE LINE # 122
?C0020:
RET
; END OF _D12_ReadLastTransactionStatus
;
; unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
RSEG ?PR?_D12_ReadEndpointStatus?D12CI
USING 0
_D12_ReadEndpointStatus:
;---- Variable 'bEndp?70' assigned to Register 'R6' ----
MOV R6,AR7
; SOURCE LINE # 124
; {
; SOURCE LINE # 125
; unsigned char c;
;
; if(bEPPflags.bits.in_isr == 0)
; SOURCE LINE # 128
MOV R7,bEPPflags
MOV A,R7
SWAP A
RRC A
ANL A,#07H
JB ACC.0,?C0021
; DISABLE;
; SOURCE LINE # 129
CLR EA
?C0021:
;
; outportb(D12_COMMAND, 0x80 + bEndp);
; SOURCE LINE # 131
MOV R7,#03H
MOV A,R6
ADD A,#080H
MOV R5,A
; LCALL _outportb
MOV DPTR,#0FF03H
MOV A,R5
MOVX @DPTR,A
; 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