?? d12ci.c
字號:
/****************************************Copyright (c)**************************************************
** 廣州周立功單片機發展有限公司
** 研 究 所
** 產品一部
**
** http://www.zlgmcu.com
**
** 文 件 名: D12CI.c
** 最后修改日期: 2004年7月2日
** 描 述: USB驅動程序軟件包: PDIUSBD12 設備端驅動程序 接口控制驅動層
** 版 本: V1.0
**********************************************************************************************************/
#include "D12Config.h"
#include "D12HAL.h"
#include "d12ci.h"
/************************************************************
** 函數名稱: INT16U readchipid(void)
** 功能描述: 讀取芯片ID
** 輸 入: 無
** 輸 出: 芯片的ID號
************************************************************/
INT16U readchipid(void)
{
INT8U i;
INT16U chipid;
outportc(0xFD); //發送讀PDIUSBD12芯片ID號命令
i = inportd(); //讀取ID號低字節
chipid = inportd(); //讀取ID號高位字節
chipid = chipid * 256 + i; //組成16位的PDIUSBD12芯片ID號
return chipid;
}
/*****************************************
與CPU 無關, 與 USB相關的函數
*****************************************/
/************************************************************
** 函數名稱: void D12_SetAddressEnable(INT8U bAddress,INT8U bEnable)
** 功能描述: 設置地址/使能
** 輸 入: INT8U bAddress: 地址
INT8U bEnable : 0 --- 禁止
1 --- 使能
** 輸 出: 無
************************************************************/
void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable)
{
outportc(0xD0); //輸出設置地址/使能指令
if(bEnable)
bAddress |= 0x80; //bit7置1,使能
outportd(bAddress); //輸出設置值
}
/************************************************************
** 函數名稱: void D12_SetEndpointEnable(INT8U bEnable)
** 功能描述: 設置端點使能
** 輸 入: INT8U bEnable : 0 --- 禁止
1 --- 允許
** 輸 出: 無
************************************************************/
void D12_SetEndpointEnable(INT8U bEnable)
{
outportc(0xD8); //輸出設置端點使能指令
if(bEnable)
outportd(0x01); //設置端點允許
else
outportd(0x00); //設置端點禁止
}
/************************************************************
** 函數名稱: void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
** 功能描述: 模式設置
** 輸 入: INT8U bConfig: 配置字節信息
INT8U bClkDiv: 分頻系數
** 輸 出: 無
************************************************************/
void D12_SetMode(INT8U bConfig,INT8U bClkDiv)
{
outportc(0xF3); //輸出設置模式指令
outportd(bConfig); //輸出配置字節信息
outportd(bClkDiv); //輸出時鐘分頻因數字節
}
/************************************************************
** 函數名稱: void D12_SetDMA(INT8U bMode)
** 功能描述: 設置DMA工作方式設置
** 輸 入: INT8U bMode: 設置值
** 輸 出: 無
************************************************************/
void D12_SetDMA(INT8U bMode)
{
outportc(0xFB); //設置DMA工作方命令
outportd(bMode); //輸出設置值
}
/************************************************************
** 函數名稱: INT16U D12_ReadInterruptRegister(void)
** 功能描述: 讀取中斷寄存器值
** 輸 入: 無
** 輸 出: 中斷寄存器值
************************************************************/
INT16U D12_ReadInterruptRegister(void)
{
INT8U b1;
INT16U j;
outportc(0xF4); //讀取中斷寄存器命令
b1 = inportd(); //讀取低8位字節
j = inportd(); //讀取高8位字節
j = j * 256;
j += b1; //組合為16位
return j;
}
/************************************************************
** 函數名稱: INT8U D12_SelectEndpoint(INT8U bEndp)
** 功能描述: 端點選擇,將內部指針初始化到選擇的緩沖區起始位置
** 輸 入: INT8U bEndp: 端點索引號,取值0 ~ 5
** 輸 出: 讀出的字節
************************************************************/
INT8U D12_SelectEndpoint(INT8U bEndp)
{
INT8U c;
outportc(bEndp); //端點選擇
c = inportd(); //讀出一個字節
return c;
}
/************************************************************
** 函數名稱: INT8U D12_ReadEndpointStatus(INT8U bEndp)
** 功能描述: 讀取端點狀態
** 輸 入: INT8U bEndp: 端點索引號,取值0 ~ 5
** 輸 出: 端點狀態
************************************************************/
INT8U D12_ReadEndpointStatus(INT8U bEndp)
{
INT8U c;
outportc(0x80 + bEndp); //讀取端點狀態命令
c = inportd(); //讀取端點狀態
return c;
}
/************************************************************
** 函數名稱: INT8U D12_ReadLastTransactionStatus(INT8U bEndp)
** 功能描述: 讀取最后處理狀態寄存器
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -