?? d12ci.lst
字號(hào):
if(bEPPflags.bits.in_isr == 0)
ENABLE();
return c;
}
#endif
197
198 /************************************************************
199 ** 函數(shù)名稱(chēng): D12_ReadLastTransactionStatus()
200 ** 功能描述: 讀取最后處理狀態(tài)寄存器
201 ** 輸 入: INT8U bEndp: 端點(diǎn)索引號(hào),取值0 ~ 5
202 ** 輸 出: 端點(diǎn)最后處理的狀態(tài)
203 ************************************************************/
204 INT8U D12_ReadLastTransactionStatus(INT8U bEndp)
205 {
206 1 outportb(D12_COMMAND, 0x40 + bEndp); //輸出讀取最后處理狀態(tài)寄存器命令
207 1 return inportb(D12_DATA); //讀取狀態(tài)
208 1 }
209
210 /************************************************************
211 ** 函數(shù)名稱(chēng): D12_SetEndpointStatus()
212 ** 功能描述: 設(shè)置端點(diǎn)狀態(tài)
213 ** 輸 入: INT8U bEndp: 端點(diǎn)索引號(hào),取值0 ~ 5
214 INT8U bStalled: 狀態(tài)值
215 ** 輸 出: 端點(diǎn)狀態(tài)
216 ************************************************************/
217 void D12_SetEndpointStatus(INT8U bEndp,INT8U bStalled)
218 {
219 1 if(bEPPflags.bits.in_isr == 0)
220 1 DISABLE();
221 1
222 1 outportb(D12_COMMAND, 0x40 + bEndp); //發(fā)送設(shè)置端點(diǎn)狀態(tài)命令
223 1 outportb(D12_DATA, bStalled); //設(shè)置端點(diǎn)狀態(tài)
224 1
225 1 if(bEPPflags.bits.in_isr == 0)
226 1 ENABLE();
227 1 }
228
229 /************************************************************
230 ** 函數(shù)名稱(chēng): D12_SendResume()
231 ** 功能描述: 傳輸恢復(fù)
232 ** 輸 入: 無(wú)
233 ** 輸 出: 無(wú)
234 ************************************************************/
235 #if D12_SendResume_EN
void D12_SendResume(void)
{
outportb(D12_COMMAND, 0xF6); //設(shè)置發(fā)送恢復(fù)
}
#endif
C51 COMPILER V7.06 D12CI 12/20/2004 10:45:21 PAGE 5
241
242
243 /************************************************************
244 ** 函數(shù)名稱(chēng): D12_ReadCurrentFrameNumber()
245 ** 功能描述: 讀取當(dāng)前幀號(hào)
246 ** 輸 入: 無(wú)
247 ** 輸 出: 當(dāng)前幀號(hào)
248 ************************************************************/
249 #if D12_ReadCurrentFrameNumber_EN
INT16U D12_ReadCurrentFrameNumber(void)
{
INT16U i,j;
if(bEPPflags.bits.in_isr == 0)
DISABLE();
outportb(D12_COMMAND, 0xF5); //發(fā)送讀取當(dāng)前幀數(shù)目命令
i= inportb(D12_DATA); //讀取幀數(shù)目的低8位
j = inportb(D12_DATA); //讀取幀數(shù)目的高8位
i += (j<<8);
if(bEPPflags.bits.in_isr == 0)
ENABLE();
return i; //返目當(dāng)前幀數(shù)目
}
#endif
269
270
271 /************************************************************
272 ** 函數(shù)名稱(chēng): D12_ReadEndpoint()
273 ** 功能描述: 讀取端點(diǎn)數(shù)據(jù)
274 ** 輸 入: INT8U endp: 端點(diǎn)索引號(hào),取值 0 ~ 5
275 INT8U len: 要讀取的數(shù)據(jù)長(zhǎng)度
276 INT8U * buf: 接收數(shù)據(jù)指針
277 ** 輸 出: 實(shí)際讀得的字節(jié)數(shù)
278 ************************************************************/
279 INT8U D12_ReadEndpoint(INT8U endp,INT8U len,INT8U * buf)
280 {
281 1 INT8U i, j;
282 1
283 1 if(bEPPflags.bits.in_isr == 0)
284 1 DISABLE();
285 1
286 1 outportb(D12_COMMAND, endp); //發(fā)送選擇端點(diǎn)命令
287 1 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) { //如果緩沖區(qū)為空
288 2 if(bEPPflags.bits.in_isr == 0)
289 2 ENABLE();
290 2 return 0; //則返回讀到0字節(jié)
291 2 }
292 1
293 1 outportb(D12_COMMAND, 0xF0); //發(fā)送讀緩沖區(qū)命令
294 1 j = inportb(D12_DATA); //讀取保留字節(jié)
295 1 j = inportb(D12_DATA); //讀取數(shù)據(jù)字節(jié)的數(shù)目/長(zhǎng)度
296 1
297 1 if(j > len) //如果大于要求讀的字節(jié)數(shù)目
298 1 j = len; //則只讀取要求的字節(jié)長(zhǎng)度
299 1
300 1 for(i=0; i<j; i++)
301 1 *(buf+i) = inportb(D12_DATA); //讀取要求的字節(jié)數(shù)目/長(zhǎng)度
302 1
C51 COMPILER V7.06 D12CI 12/20/2004 10:45:21 PAGE 6
303 1 outportb(D12_COMMAND, 0xF2); //清緩沖區(qū),新的信息包才可以重新被接受
304 1
305 1 if(bEPPflags.bits.in_isr == 0)
306 1 ENABLE();
307 1
308 1 return j; //返回讀到的字節(jié)數(shù)
309 1 }
310
311 /************************************************************
312 ** 函數(shù)名稱(chēng): D12_WriteEndpoint()
313 ** 功能描述: 把數(shù)據(jù)寫(xiě)入端點(diǎn)
314 ** 輸 入: INT8U endp: 端點(diǎn)索引號(hào),取值 0 ~ 5
315 INT8U len: 要寫(xiě)入的數(shù)據(jù)長(zhǎng)度
316 INT8U * buf: 發(fā)送數(shù)據(jù)指針
317 ** 輸 出: 實(shí)際寫(xiě)入的字節(jié)數(shù)
318 ************************************************************/
319 INT8U D12_WriteEndpoint(INT8U endp, INT8U len,INT8U * buf)
320 {
321 1 INT8U i;
322 1
323 1 if(bEPPflags.bits.in_isr == 0)
324 1 DISABLE();
325 1
326 1 outportb(D12_COMMAND, endp); //發(fā)送選擇端點(diǎn)命令
327 1 i = inportb(D12_DATA); //可選地讀取一個(gè)字節(jié)
328 1
329 1 outportb(D12_COMMAND, 0xF0); //發(fā)送寫(xiě)緩沖區(qū)命令
330 1 outportb(D12_DATA, 0); //寫(xiě)入一個(gè)保留字節(jié)
331 1 outportb(D12_DATA, len); //寫(xiě)入即將寫(xiě)入的字節(jié)數(shù)目
332 1
333 1 for(i=0; i<len; i++)
334 1 outportb(D12_DATA, *(buf+i)); //寫(xiě)入指定的字節(jié)
335 1
336 1 outportb(D12_COMMAND, 0xFA); //使緩沖區(qū)有效
337 1
338 1 if(bEPPflags.bits.in_isr == 0)
339 1 ENABLE();
340 1
341 1 return len; //返回寫(xiě)入的字節(jié)數(shù)
342 1 }
343
344 /************************************************************
345 ** 函數(shù)名稱(chēng): D12_AcknowledgeEndpoint()
346 ** 功能描述: 應(yīng)答Setup
347 ** 輸 入: INT8U endp: 端點(diǎn)索引號(hào),取值 0 ~ 5
348 ** 輸 出: 無(wú)
349 ************************************************************/
350 void D12_AcknowledgeEndpoint(INT8U endp)
351 {
352 1 outportb(D12_COMMAND, endp); //選擇端點(diǎn)
353 1 outportb(D12_COMMAND, 0xF1); //應(yīng)答Setup指令
354 1 if(endp == 0)
355 1 outportb(D12_COMMAND, 0xF2); //清空該端點(diǎn)緩沖區(qū)
356 1 }
357
358 /************************************************************
359 ** 函數(shù)名稱(chēng): void D12_ClearBuff()
360 ** 功能描述: 清指定端點(diǎn)的緩沖區(qū)(包括雙緩沖區(qū))
361 ** 輸 入: INT8U endp: 端點(diǎn)索引號(hào),取值 0 ~ 5
362 ** 輸 出: 無(wú)
363 ************************************************************/
364 #if D12_ClearBuff_EN
C51 COMPILER V7.06 D12CI 12/20/2004 10:45:21 PAGE 7
void D12_ClearBuff(INT8U endp)
{
outportb(D12_COMMAND, endp); //選擇端點(diǎn)
outportb(D12_COMMAND, 0xF2); //清空第1個(gè)緩沖區(qū)
if (endp >= 4){
outportb(D12_COMMAND, endp); //選擇端點(diǎn)
outportb(D12_COMMAND, 0xF2); //清空第2個(gè)緩沖區(qū)
}
}
#endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 715 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 22
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -