📄 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 + -