?? usbecd.c
字號:
/*
;************************************************************************************************************
;* 江西師范大學物理通訊電子學院
;*
;* 創 新 中 心
;*
;*--------------------------------------------- 文件信息 ----------------------------------------------------
;* 文件名稱 : USBecd.c
;* 文件功能 : 定義了一些對PDIUSBD12操作的函數
;* 補充說明 : USB設備控制驅動(PDIUSBD12 Equipment Control Drive)、與硬件有直接聯系。
;*-------------------------------------------- 最新版本信息 -------------------------------------------------
;* 修改作者 : zhouhong
;* 修改日期 : 2006-11-8
;* 版本聲明 : V1.0.0
;*-------------------------------------------- 歷史版本信息 -------------------------------------------------
;* 文件作者 : zhouhong
;* 創建日期 : 2006-11-8
;* 版本聲明 : V1.0.0
;*-----------------------------------------------------------------------------------------------------------
;************************************************************************************************************
;*/
#ifndef _USBECD_C_
#define _USBECD_C_
#include "..\INC\USBecd.h"
/*
*************************************************************************************************************
- 函數名稱 : bus_delay(void)
- 函數說明 : 總線延時
- 輸入參數 : 無
- 輸出參數 : 無
*************************************************************************************************************
*/
void bus_delay(void)
{
INT8U delay=5;
while(delay--)
;
}
/*
*************************************************************************************************************
- 函數名稱 : outportc(INT8U Data)
- 函數說明 : 向PDIUSBD12發送命令子程序
- 輸入參數 : Data 要發送的命令
- 輸出參數 : 無
*************************************************************************************************************
*/
void outportc(INT8U Data)
{
bus_delay();
USBD12_COMMAND_ADDRESS=Data;
}
/*
*************************************************************************************************************
- 函數名稱 : outportc(INT8U Data)
- 函數說明 : 向PDIUSBD12發送數據子程序
- 輸入參數 : Data 要發送的數據
- 輸出參數 : 無
*************************************************************************************************************
*/
void outportd(INT8U Data)
{
bus_delay();
USBD12_DATA_ADDRESS=Data;
}
/*
*************************************************************************************************************
- 函數名稱 : outportc()
- 函數說明 : 從PDIUSBD12讀取數據子程序
- 輸入參數 : 無
- 輸出參數 : 要讀取的數據
*************************************************************************************************************
*/
INT8U inportd(void)
{
bus_delay();
return USBD12_DATA_ADDRESS;
}
/*
*************************************************************************************************************
- 函數名稱 : D12_ReadChipID
- 函數說明 : 讀取芯片ID號
- 輸入參數 : 無
- 輸出參數 : 返加芯片ID號
*************************************************************************************************************
*/
INT16U D12_ReadChipID(void)
{
INT8U i;
INT16U chipID;
outportc(USB_COMMAND_READ_CHIPID); //發送讀PDIUSBD12 芯片ID 命令
i=inportd(); //讀取ID號低位字節
chipID=inportd();
chipID=(chipID<<8)+i; //組成16位的PDIUSBD12芯片ID號
return chipID;
}
/*
*************************************************************************************************************
- 函數名稱 : D12_SetAddressEnable(INT8U bAddress,INT8U bEnable)
- 函數說明 : 設置PDIUSBD12地址/使能
- 輸入參數 : bAddress:地址 bEnable: 使能標志
- 輸出參數 : 無
*************************************************************************************************************
*/
void D12_SetAddressEnable(INT8U bAddress,INT8U bEnable)
{
outportc(USB_COMMAND_SET_ADDRESS_ENABLE); //輸出設置地址/使能命令
if(bEnable)
bAddress|=0x80; //bit7 使能
outportd(bAddress); //輸出地址
}
/*
*************************************************************************************************************
- 函數名稱 : D12_SetEndpointEnable(INT8U bEnable)
- 函數說明 : 設置PDIUSBD12端點使能
- 輸入參數 : bEnable:端點使能標志
- 輸出參數 : 無
*************************************************************************************************************
*/
void D12_SetEndpointEnable(INT8U bEnable)
{
outportc(USB_COMMAND_SET_ENDPOINT_ENABLE); //輸出設置端點使能命令
if(bEnable)
outportd(0x01); //設置端點使能
else
outportd(0x00); //設置端點禁止
}
/*
*************************************************************************************************************
- 函數名稱 : D12_SetMode(INT8U bConfig,INT8U bClkDiv)
- 函數說明 : 設置PDIUSBD12的模式
- 輸入參數 : bConfig:配置字節,bClkDiv:時鐘分頻系數字節
- 輸出參數 : 無
*************************************************************************************************************
*/
void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
{
outportc( USB_COMMAND_SET_MODE); //輸出設置模式命令
outportd(bConfig); //輸出配置字節信息
outportd(bClkDiv); //輸出時鐘分頻因數字節
}
/*
*************************************************************************************************************
- 函數名稱 : D12_SetDMA(INT8U bMode)
- 函數說明 : 設置PDIUSBD12的DMA模式
- 輸入參數 : bMode:DMA的模式
- 輸出參數 : 無
*************************************************************************************************************
*/
void D12_SetDMA(INT8U bMode)
{
outportc(USB_COMMAND_SET_DMA); //輸出設置DMA工作模式命令
outportd(bMode);
}
/*
*************************************************************************************************************
- 函數名稱 : D12_ReadInterruptRegister(void)
- 函數說明 : 讀取PDIUSBD12中斷寄存器的值.
- 輸入參數 : 無
- 輸出參數 : PDIUSBD12中斷寄存器的值
*************************************************************************************************************
*/
INT16U D12_ReadInterruptRegister(void)
{
INT8U i;
INT16U interruptValue;
outportc(USB_COMMAND_READ_INTERRUPT); //輸出讀取中斷寄存器命令
i=inportd(); //讀取低8位
interruptValue=inportd(); //讀取高8位
interruptValue=(interruptValue<<8)+i; //組合為16位
return interruptValue;
}
/*
*************************************************************************************************************
- 函數名稱 : D12_SelectEndpoint(INT8U bEndp)
- 函數說明 : PDIUSBD12選擇端點
- 輸入參數 : bEndp:端點號
- 輸出參數 : 緩沖區狀態,端點狀態
*************************************************************************************************************
*/
INT8U D12_SelectEndpoint(INT8U bEndp)
{
INT8U endpointStatus;
outportc(USB_COMMAND_SELECT_ENDPOINT+bEndp); //輸出選擇端點命令
endpointStatus=inportd(); //讀取端點狀態
return endpointStatus;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -