📄 kd12ci.lst
字号:
61 1 if(bEPPflags.bits.in_isr == 0)
62 1 ENABLE;
63 1 }
64
65 void D12_SetMode(unsigned char bConfig, unsigned char bClkDiv)
66 {
67 1 if(bEPPflags.bits.in_isr == 0)
68 1 DISABLE;
69 1 outportcmd(0xF3);
70 1 outportdata(bConfig);
71 1 outportdata(bClkDiv);
72 1 if(bEPPflags.bits.in_isr == 0)
73 1 ENABLE;
74 1
75 1 }
76
77 void D12_SetDMA(unsigned char bMode)
78 {
C51 COMPILER V7.06 KD12CI 11/11/2003 20:11:03 PAGE 10
79 1
80 1 if(bEPPflags.bits.in_isr == 0)
81 1 DISABLE;
82 1 outportcmd(0xFB);
83 1 outportdata(bMode);
84 1 if(bEPPflags.bits.in_isr == 0)
85 1 ENABLE;
86 1
87 1 }
88 /*
89 unsigned char D12_GetDMA(void)
90 {
91 outportcmd(0xFB);
92 return(inportb());
93 }
94 */
95 /*
96 unsigned char D12_ReadEndpointStatus(unsigned char bEndp)
97 {
98 unsigned char c;
99
100 if(bEPPflags.bits.in_isr == 0)
101 DISABLE;
102
103 outportcmd(0x80 + bEndp);
104 c = inportb();
105
106 if(bEPPflags.bits.in_isr == 0)
107 ENABLE;
108
109 return c;
110 }
111 */
112 void D12_SetEndpointStatus(unsigned char bEndp, unsigned char bStalled)
113 {
114 1 if(bEPPflags.bits.in_isr == 0)
115 1 DISABLE;
116 1
117 1 outportcmd(0x40 + bEndp);
118 1 outportdata(bStalled);
119 1
120 1 if(bEPPflags.bits.in_isr == 0)
121 1 ENABLE;
122 1 }
123
124
125 /*
126 void D12_SendResume(void)
127 {
128 outportcmd(0xF6);
129 }
130 */
131
132 unsigned char D12_WriteEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
133 {
134 1 unsigned char i;
135 1
136 1 if(bEPPflags.bits.in_isr == 0)
137 1 DISABLE;
138 1 //---------------------
139 1 outportcmd(endp); //选择端点
140 1 inportb(); //读入满/空状态
C51 COMPILER V7.06 KD12CI 11/11/2003 20:11:03 PAGE 11
141 1
142 1 outportcmd(0xF0); //写缓冲区命令
143 1 outportdata(0);
144 1 outportdata(len);
145 1
146 1 for(i=0; i<len; i++)
147 1 outportdata(*(buf+i));
148 1
149 1 outportcmd(0xFA); //驶购冲区有效
150 1
151 1 //--------------------------------
152 1 if(bEPPflags.bits.in_isr == 0)
153 1 ENABLE;
154 1
155 1 return len;
156 1 }
157 void D12_AcknowledgeEndpoint(unsigned char endp)
158 {
159 1 outportcmd(endp); //选择端点
160 1 outportcmd(0xF1); //应答设置
161 1 if(endp == 0)
162 1 outportcmd(0xF2); //缓冲区清零
163 1 }
164 unsigned short D12_ReadInterruptRegister(void)
165 {
166 1 unsigned char b1;
167 1 unsigned int j;
168 1 //outportb(D12_COMMAND, 0xF4);
169 1 outportcmd(0xF4);
170 1 b1 = inportb();
171 1 j = inportb();
172 1 j <<= 8;
173 1 j += b1;
174 1 return j;
175 1 }
176
177 unsigned char D12_ReadLastTransactionStatus(unsigned char bEndp)
178 {
179 1 //outportb(D12_COMMAND, 0x40 + bEndp);
180 1 outportcmd(0x40 + bEndp);
181 1 return inportb();
182 1 }
183 unsigned char D12_ReadEndpoint(unsigned char endp, unsigned char len, unsigned char * buf)
184 {
185 1 unsigned char i, j;
186 1
187 1 if(bEPPflags.bits.in_isr == 0)
188 1 DISABLE;
189 1 //--------------------------------
190 1 outportcmd(endp); //选择端点
191 1 if((inportb() & D12_FULLEMPTY) == 0) { //如果缓冲区为空,则返回
192 2 if(bEPPflags.bits.in_isr == 0)
193 2 ENABLE;
194 2 return 0;
195 2 }
196 1
197 1 outportcmd(0xF0); //读缓冲区
198 1 j = inportb();
199 1 j = inportb();
200 1
201 1 if(j > len)
202 1 j = len;
C51 COMPILER V7.06 KD12CI 11/11/2003 20:11:03 PAGE 12
203 1
204 1 for(i=0; i<j; i++)
205 1 *(buf+i) = inportb();
206 1
207 1 outportcmd(0xF2); //缓冲区清空
208 1 //-------------------------------
209 1 if(bEPPflags.bits.in_isr == 0)
210 1 ENABLE;
211 1
212 1 return j;
213 1 }
214
215 unsigned char D12_SelectEndpoint(unsigned char bEndp)
216 {
217 1 unsigned char c;
218 1
219 1 if(bEPPflags.bits.in_isr == 0)
220 1 DISABLE;
221 1
222 1 outportcmd(bEndp);
223 1 c = inportb();
224 1
225 1 if(bEPPflags.bits.in_isr == 0)
226 1 ENABLE;
227 1
228 1 return c;
229 1 }
230
C51 COMPILER V7.06 KD12CI 11/11/2003 20:11:03 PAGE 13
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _outportcmd (BEGIN)
; SOURCE LINE # 8
;---- Variable 'value' assigned to Register 'R7' ----
; SOURCE LINE # 9
; SOURCE LINE # 16
0000 90FF03 MOV DPTR,#0FF03H
0003 EF MOV A,R7
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 17
0005 22 RET
; FUNCTION _outportcmd (END)
; FUNCTION _outportdata (BEGIN)
; SOURCE LINE # 18
;---- Variable 'value' assigned to Register 'R7' ----
; SOURCE LINE # 19
; SOURCE LINE # 20
0000 90FF02 MOV DPTR,#0FF02H
0003 EF MOV A,R7
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 21
0005 22 RET
; FUNCTION _outportdata (END)
; FUNCTION L?0045 (BEGIN)
0000 120000 R LCALL _outportcmd
; FUNCTION inportb (BEGIN)
; SOURCE LINE # 23
; SOURCE LINE # 24
; SOURCE LINE # 33
0003 90FF02 MOV DPTR,#0FF02H
0006 A3 INC DPTR
0007 E0 MOVX A,@DPTR
0008 FF MOV R7,A
; SOURCE LINE # 34
0009 ?C0003:
0009 22 RET
; FUNCTION inportb (END)
; FUNCTION _D12_SetAddressEnable (BEGIN)
; SOURCE LINE # 36
;---- Variable 'bAddress' assigned to Register 'R6' ----
0000 AE07 MOV R6,AR7
;---- Variable 'bEnable' assigned to Register 'R5' ----
; SOURCE LINE # 37
; SOURCE LINE # 38
0002 AF00 E MOV R7,bEPPflags
0004 EF MOV A,R7
0005 C4 SWAP A
0006 13 RRC A
0007 5407 ANL A,#07H
0009 20E002 JB ACC.0,?C0004
; SOURCE LINE # 39
000C C2AF CLR EA
000E ?C0004:
; SOURCE LINE # 41
000E 7FD0 MOV R7,#0D0H
0010 120000 R LCALL _outportcmd
; SOURCE LINE # 42
C51 COMPILER V7.06 KD12CI 11/11/2003 20:11:03 PAGE 14
0013 ED MOV A,R5
0014 6003 JZ ?C0005
; SOURCE LINE # 43
0016 430680 ORL AR6,#080H
0019 ?C0005:
; SOURCE LINE # 44
0019 AF06 MOV R7,AR6
001B 120000 R LCALL _outportdata
; SOURCE LINE # 46
001E AF00 E MOV R7,bEPPflags
0020 EF MOV A,R7
0021 C4 SWAP A
0022 13 RRC A
0023 5407 ANL A,#07H
0025 20E002 JB ACC.0,?C0007
; SOURCE LINE # 47
0028 D2AF SETB EA
; SOURCE LINE # 48
002A ?C0007:
002A 22 RET
; FUNCTION _D12_SetAddressEnable (END)
; FUNCTION _D12_SetEndpointEnable (BEGIN)
; SOURCE LINE # 50
;---- Variable 'bEnable' assigned to Register 'R6' ----
0000 AE07 MOV R6,AR7
; SOURCE LINE # 51
; SOURCE LINE # 52
0002 AF00 E MOV R7,bEPPflags
0004 EF MOV A,R7
0005 C4 SWAP A
0006 13 RRC A
0007 5407 ANL A,#07H
0009 20E002 JB ACC.0,?C0008
; SOURCE LINE # 53
000C C2AF CLR EA
000E ?C0008:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -