📄 d12hal.c
字号:
/****************************************Copyright (c)**************************************************
** 广州周立功单片机发展有限公司
** 研 究 所
** 产品一部
**
** http://www.zlgmcu.com
**
** 文 件 名: D12HAL.c
** 最后修改日期: 2004年11月15日
** 描 述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 设备控制驱动层
** 版 本: V5.0
**********************************************************************************************************/
#include "main.h"
#include "D12Config.h"
#define NOP1() asm("nop")
/************************************************************
** 函数名称: void Init_D12Port(void)
** 功能描述: 初始化D12与LPC2200的连接端口
** 输 入: 无
** 输 出: 无
************************************************************/
void Init_D12Port(void)
{
// MCU_D12CS = 1; //释放D12
sbi(DDRC,5); //设为输出方式
sbi(PORTC,5);
//MCU_D12CS = 0; //选择D12
cbi(PORTC,5);
}
/************************************************************
** 函数名称: void Rst_D12(void)
** 功能描述: 复位D12
** 输 入: 无
** 输 出: 无
************************************************************/
void Rst_D12(void)
{
INT16U i;
for(i = 0; i < 0x100; i++); //软件延时
}
/************************************************************
** 函数名称: outportb()
** 功能描述: 向D12写入数据
** 输 入: INT16U Addr: 命令地址或数据地址
INT8U Data: 命令字节
** 输 出: 无
************************************************************/
void outportb(INT16U Addr, INT8U Data)
{
// *((INT8U xdata *) Addr) = Data;
if(Addr == D12_DATA)//send the data
{
DDRD = 0xff;
//MCU_A0 = 0;
sbi(DDRC,1); //引脚设为输出
cbi(PORTC,1);
NOP1();
NOP1();
NOP1();
//MCU_WR = 0;
sbi(DDRC,3);
cbi(PORTC,3);
NOP1();
NOP1();
NOP1();
//DATA_BUS = Data;
PORTD = Data;
NOP1();
NOP1();
NOP1();
}
else//send the command
{
//MCU_A0 = 1;
DDRD = 0xff;
sbi(DDRC,1);
sbi(PORTC,1);
NOP1();
NOP1();
NOP1();
//MCU_WR = 0;
sbi(DDRC,3);
cbi(PORTC,3);
NOP1();
NOP1();
NOP1();
// DATA_BUS = Data;
PORTD = Data;
NOP1();
NOP1();
NOP1();
}
//MCU_WR = 1;
sbi(PORTC,3);
}
/************************************************************
** 函数名称: inportd()
** 功能描述: 读入数据
** 输 入: INT16U Addr: 数据地址
** 输 出: 读到的数据
*************************************************************/
INT8U inportb(INT16U Addr)
{
//return *((INT8U xdata *) Addr);
INT8U i;
Addr = Addr; //avoid the warning
// MCU_RD = 0;
DDRD = 0x0;
PORTD=0xff;
sbi(DDRC,2);
cbi(PORTC,2);
NOP1();
NOP1();
NOP1();
// i=DATA_BUS;
i=PIND;
NOP1();
NOP1();
NOP1();
// MCU_RD = 1;
sbi(PORTC,2);
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -