?? d12ci.lst
字號:
if(bEPPflags.bits.in_isr == 0)
ENABLE();
return c;
}
#endif
197
198 /************************************************************
199 ** 函數名稱: D12_ReadLastTransactionStatus()
200 ** 功能描述: 讀取最后處理狀態寄存器
201 ** 輸 入: INT8U bEndp: 端點索引號,取值0 ~ 5
202 ** 輸 出: 端點最后處理的狀態
203 ************************************************************/
204 INT8U D12_ReadLastTransactionStatus(INT8U bEndp)
205 {
206 1 outportb(D12_COMMAND, 0x40 + bEndp); //輸出讀取最后處理狀態寄存器命令
207 1 return inportb(D12_DATA); //讀取狀態
208 1 }
209
210 /************************************************************
211 ** 函數名稱: D12_SetEndpointStatus()
212 ** 功能描述: 設置端點狀態
213 ** 輸 入: INT8U bEndp: 端點索引號,取值0 ~ 5
214 INT8U bStalled: 狀態值
215 ** 輸 出: 端點狀態
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); //發送設置端點狀態命令
223 1 outportb(D12_DATA, bStalled); //設置端點狀態
224 1
225 1 if(bEPPflags.bits.in_isr == 0)
226 1 ENABLE();
227 1 }
228
229 /************************************************************
230 ** 函數名稱: D12_SendResume()
231 ** 功能描述: 傳輸恢復
232 ** 輸 入: 無
233 ** 輸 出: 無
234 ************************************************************/
235 #if D12_SendResume_EN
void D12_SendResume(void)
{
outportb(D12_COMMAND, 0xF6); //設置發送恢復
}
#endif
C51 COMPILER V7.06 D12CI 12/03/2004 14:32:23 PAGE 5
241
242
243 /************************************************************
244 ** 函數名稱: D12_ReadCurrentFrameNumber()
245 ** 功能描述: 讀取當前幀號
246 ** 輸 入: 無
247 ** 輸 出: 當前幀號
248 ************************************************************/
249 #if D12_ReadCurrentFrameNumber_EN
INT16U D12_ReadCurrentFrameNumber(void)
{
INT16U i,j;
if(bEPPflags.bits.in_isr == 0)
DISABLE();
outportb(D12_COMMAND, 0xF5); //發送讀取當前幀數目命令
i= inportb(D12_DATA); //讀取幀數目的低8位
j = inportb(D12_DATA); //讀取幀數目的高8位
i += (j<<8);
if(bEPPflags.bits.in_isr == 0)
ENABLE();
return i; //返目當前幀數目
}
#endif
269
270
271 /************************************************************
272 ** 函數名稱: D12_ReadEndpoint()
273 ** 功能描述: 讀取端點數據
274 ** 輸 入: INT8U endp: 端點索引號,取值 0 ~ 5
275 INT8U len: 要讀取的數據長度
276 INT8U * buf: 接收數據指針
277 ** 輸 出: 實際讀得的字節數
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); //發送選擇端點命令
287 1 if((inportb(D12_DATA) & D12_FULLEMPTY) == 0) { //如果緩沖區為空
288 2 if(bEPPflags.bits.in_isr == 0)
289 2 ENABLE();
290 2 return 0; //則返回讀到0字節
291 2 }
292 1
293 1 outportb(D12_COMMAND, 0xF0); //發送讀緩沖區命令
294 1 j = inportb(D12_DATA); //讀取保留字節
295 1 j = inportb(D12_DATA); //讀取數據字節的數目/長度
296 1
297 1 if(j > len) //如果大于要求讀的字節數目
298 1 j = len; //則只讀取要求的字節長度
299 1
300 1 for(i=0; i<j; i++)
301 1 *(buf+i) = inportb(D12_DATA); //讀取要求的字節數目/長度
302 1
C51 COMPILER V7.06 D12CI 12/03/2004 14:32:23 PAGE 6
303 1 outportb(D12_COMMAND, 0xF2); //清緩沖區,新的信息包才可以重新被接受
304 1
305 1 if(bEPPflags.bits.in_isr == 0)
306 1 ENABLE();
307 1
308 1 return j; //返回讀到的字節數
309 1 }
310
311 /************************************************************
312 ** 函數名稱: D12_WriteEndpoint()
313 ** 功能描述: 把數據寫入端點
314 ** 輸 入: INT8U endp: 端點索引號,取值 0 ~ 5
315 INT8U len: 要寫入的數據長度
316 INT8U * buf: 發送數據指針
317 ** 輸 出: 實際寫入的字節數
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); //發送選擇端點命令
327 1 i = inportb(D12_DATA); //可選地讀取一個字節
328 1
329 1 outportb(D12_COMMAND, 0xF0); //發送寫緩沖區命令
330 1 outportb(D12_DATA, 0); //寫入一個保留字節
331 1 outportb(D12_DATA, len); //寫入即將寫入的字節數目
332 1
333 1 for(i=0; i<len; i++)
334 1 outportb(D12_DATA, *(buf+i)); //寫入指定的字節
335 1
336 1 outportb(D12_COMMAND, 0xFA); //使緩沖區有效
337 1
338 1 if(bEPPflags.bits.in_isr == 0)
339 1 ENABLE();
340 1
341 1 return len; //返回寫入的字節數
342 1 }
343
344 /************************************************************
345 ** 函數名稱: D12_AcknowledgeEndpoint()
346 ** 功能描述: 應答Setup
347 ** 輸 入: INT8U endp: 端點索引號,取值 0 ~ 5
348 ** 輸 出: 無
349 ************************************************************/
350 void D12_AcknowledgeEndpoint(INT8U endp)
351 {
352 1 outportb(D12_COMMAND, endp); //選擇端點
353 1 outportb(D12_COMMAND, 0xF1); //應答Setup指令
354 1 if(endp == 0)
355 1 outportb(D12_COMMAND, 0xF2); //清空該端點緩沖區
356 1 }
357
358 /************************************************************
359 ** 函數名稱: void D12_ClearBuff()
360 ** 功能描述: 清指定端點的緩沖區(包括雙緩沖區)
361 ** 輸 入: INT8U endp: 端點索引號,取值 0 ~ 5
362 ** 輸 出: 無
363 ************************************************************/
364 #if D12_ClearBuff_EN
C51 COMPILER V7.06 D12CI 12/03/2004 14:32:23 PAGE 7
void D12_ClearBuff(INT8U endp)
{
outportb(D12_COMMAND, endp); //選擇端點
outportb(D12_COMMAND, 0xF2); //清空第1個緩沖區
if (endp >= 4){
outportb(D12_COMMAND, endp); //選擇端點
outportb(D12_COMMAND, 0xF2); //清空第2個緩沖區
}
}
#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)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -