📄 d12hal.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
** 文 件 名: D12HAL.c
** 最后修改日期: 2004年7月2日
** 描 述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 设备控制驱动层
** 版 本: V1.0
**********************************************************************************************************/
#include "config.h"
#include "D12Config.h"
/************************************************************
** 函数名称: void Init_D12Port(void)
** 功能描述: 初始化D12与LPC2200的连接端口
** 输 入: 无
** 输 出: 无
************************************************************/
void Init_D12Port(void)
{
USBRST_GPIO(); //使能USBRST为通用IO口
SUSP_GPIO(); //使能SUSP为通用IO口
USBRST_OUT(); //USBRST为输出IO口
SUSP_OUT(); //SUSP为输出IO口
INIT_INTD12(); //INT_USB为中断输入口
}
/************************************************************
** 函数名称: void Rst_D12(void)
** 功能描述: 复位D12
** 输 入: 无
** 输 出: 无
************************************************************/
void Rst_D12(void)
{
INT32U i;
CLR_USBRST(); //USBRST置0
for(i = 0;i < 0x2ffff; i++); //软件延时
SET_USBRST(); //USBRST置1
for(i = 0;i < 0xfff; i++); //软件延时
CLR_SUSP(); //SUSP置0
}
/************************************************************
** 函数名称: void bus_delay(void)
** 功能描述: 总线延时
** 输 入: 无
** 输 出: 无
************************************************************/
void bus_delay(void)
{
//INT8U i;
//i = D12_NOP; //对总线进行操作
//i = 0;
D12_READ_SET();
D12_WRITE_SET();
D12_CS_SET();
//D12_CS_CLR();
D12_DAT(); //数据地址
}
/************************************************************
** 函数名称: void outportc(INT8U Data)
** 功能描述: 输出命令
** 输 入: INT8U Data: 命令字节
** 输 出: 无
************************************************************/
void outportc(INT8U Data)
{
INT32U i;
bus_delay(); //总线延时
D0_GPIO();
OUTPUT_DATA();
if( (Data&0x01) != 0) IO0SET = D0;
else IO0CLR = D0;
if( (Data&0x02) != 0) IO0SET = D1;
else IO0CLR = D1;
if( (Data&0x04) != 0) IO0SET = D2;
else IO0CLR = D2;
if( (Data&0x08) != 0) IO0SET = D3;
else IO0CLR = D3;
if( (Data&0x10) != 0) IO0SET = D4;
else IO0CLR = D4;
if( (Data&0x20) != 0) IO0SET = D5;
else IO0CLR = D5;
if( (Data&0x40) != 0) IO0SET = D6;
else IO0CLR = D6;
if( (Data&0x80) != 0) IO0SET = D7;
else IO0CLR = D7;
D12_COM();
D12_WRITE_CLR();
D12_CS_CLR();
i = 0;
bus_delay(); //总线延时
//发送命令
}
/************************************************************
** 函数名称: void outportd(INT8U Data)
** 功能描述: 输出数据
** 输 入: INT8U Data: 数据字节
** 输 出: 无
*************************************************************/
void outportd(INT8U Data)
{
INT32U i;
bus_delay(); //总线延时
D0_GPIO();
OUTPUT_DATA();
if( (Data&0x01) != 0) IO0SET = D0;
else IO0CLR = D0;
if( (Data&0x02) != 0) IO0SET = D1;
else IO0CLR = D1;
if( (Data&0x04) != 0) IO0SET = D2;
else IO0CLR = D2;
if( (Data&0x08) != 0) IO0SET = D3;
else IO0CLR = D3;
if( (Data&0x10) != 0) IO0SET = D4;
else IO0CLR = D4;
if( (Data&0x20) != 0) IO0SET = D5;
else IO0CLR = D5;
if( (Data&0x40) != 0) IO0SET = D6;
else IO0CLR = D6;
if( (Data&0x80) != 0) IO0SET = D7;
else IO0CLR = D7;
D12_WRITE_CLR();
D12_DAT();
D12_CS_CLR();
i = 0; //软件延时
bus_delay(); //总线延时
}
/************************************************************
** 函数名称: INT8U inportd(void)
** 功能描述: 读入数据
** 输 入: 无
** 输 出: 读到的数据
*************************************************************/
INT8U inportd(void)
{
INT32U i;
INT8U Data;
D0_GPIO();
INPUT_DATA();
//bus_delay(); //总线延时
//OSTimeDly(OS_TICKS_PER_SEC/10);
D12_READ_CLR();
D12_CS_CLR();
if((IO0PIN&D0) != 0) Data = Data | 0x01;
else Data = Data & 0xFE;
if((IO0PIN&D1) != 0) Data = Data | 0x02;
else Data = Data & 0xFD;
if((IO0PIN&D2) != 0) Data = Data | 0x04;
else Data = Data & 0xFB;
if((IO0PIN&D3) != 0) Data = Data | 0x08;
else Data = Data & 0xF7;
if((IO0PIN&D4) != 0) Data = Data | 0x10;
else Data = Data & 0xEF;
if((IO0PIN&D5) != 0) Data = Data | 0x20;
else Data = Data & 0xDF;
if((IO0PIN&D6) != 0) Data = Data | 0x40;
else Data = Data & 0xBF;
if((IO0PIN&D7) != 0) Data = Data | 0x80;
else Data = Data & 0x7F;
i = 0;
D12_READ_SET();
D12_CS_SET();
return Data; //读取数据
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -