📄 main.h
字号:
/*--------------------------------------------------------------------------
REG52.H
Header file for generic 80C52 and 80C32 microcontroller.
Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc.
All rights reserved.
--------------------------------------------------------------------------*/
#ifndef __REG52_H__
#define __REG52_H__
/* BYTE Registers */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr IE = 0xA8;
sfr IP = 0xB8;
sfr SCON = 0x98;
sfr SBUF = 0x99;
/* 8052 Extensions */
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
/* BIT Registers */
/* PSW */
sbit CY = PSW^7;
sbit AC = PSW^6;
sbit F0 = PSW^5;
sbit RS1 = PSW^4;
sbit RS0 = PSW^3;
sbit OV = PSW^2;
sbit P = PSW^0; //8052 only
/* TCON */
sbit TF1 = TCON^7;
sbit TR1 = TCON^6;
sbit TF0 = TCON^5;
sbit TR0 = TCON^4;
sbit IE1 = TCON^3;
sbit IT1 = TCON^2;
sbit IE0 = TCON^1;
sbit IT0 = TCON^0;
/* IE */
sbit EA = IE^7;
sbit ET2 = IE^5; //8052 only
sbit ES = IE^4;
sbit ET1 = IE^3;
sbit EX1 = IE^2;
sbit ET0 = IE^1;
sbit EX0 = IE^0;
/* IP */
sbit PT2 = IP^5;
sbit PS = IP^4;
sbit PT1 = IP^3;
sbit PX1 = IP^2;
sbit PT0 = IP^1;
sbit PX0 = IP^0;
/* P3 */
sbit RD = P3^7;
sbit WR = P3^6;
sbit T1 = P3^5;
sbit T0 = P3^4;
sbit INT1 = P3^3;
sbit INT0 = P3^2;
sbit TXD = P3^1;
sbit RXD = P3^0;
/* SCON */
sbit SM0 = SCON^7;
sbit SM1 = SCON^6;
sbit SM2 = SCON^5;
sbit REN = SCON^4;
sbit TB8 = SCON^3;
sbit RB8 = SCON^2;
sbit TI = SCON^1;
sbit RI = SCON^0;
/* P1 */
sbit T2EX = P1^1; // 8052 only
sbit T2 = P1^0; // 8052 only
/* T2CON */
sbit TF2 = T2CON^7;
sbit EXF2 = T2CON^6;
sbit RCLK = T2CON^5;
sbit TCLK = T2CON^4;
sbit EXEN2 = T2CON^3;
sbit TR2 = T2CON^2;
sbit C_T2 = T2CON^1;
sbit CP_RL2 = T2CON^0;
#endif
/*
** 文 件 名: D12Config.h
** 最后修改日期: 2004年10月15日
** 描 述: PDIUSBD12 设备端驱动程序 硬件配置头文件
** 版 本: V5.0
**********************************************************************************************************/
//typedef unsigned char INT8U; /* 无符号8位整型变量 */
typedef unsigned short INT16U; /* 无符号16位整型变量 */
typedef signed short INT16; /* 有符号16位整型变量 */
typedef unsigned long INT32U; /* 无符号32位整型变量 */
typedef signed long INT32; /* 有符号32位整型变量 */
//typedef float FP32; /* 单精度浮点数(32位长度) */
//typedef double FP64; /* 双精度浮点数(64位长度) */
#define DISABLE() EA = 0 //关总中断 disable all interrupt
#define ENABLE() EA = 1 //开总中断 enable all interrupt
//PDIUSBD12命令与数据地址
#define D12_DATA 0xff02 //D12 数据地址
#define D12_COMMAND 0xff03 //D12 命令地址
sbit MCU_D12CS = P1 ^ 6; //D12 片选引脚
sbit MCU_D12RST = P1 ^ 7; //D12 复位引脚
sbit MCU_D12SUSPD = P3 ^ 3; //D12 挂起
//下面的函数较少用,如需要,可将其值改为1即可
#define D12_SendResume_EN 0
#define D12_ReadCurrentFrameNumber_EN 0
#define D12_ClearBuff_EN 0
#define D12_ReadEndpointStatus_EN 0
/*
** 文 件 名: D12CI.h
** 最后修改日期: 2004年11月15日
** 描 述: PDIUSBD12 设备端驱动程序 接口控制驱动层头文件
** 版 本: V5.0
**********************************************************************************************************/
#ifndef __D12CI_H__
#define __D12CI_H__
/** D12 相关定义 ***/
#define D12_NOLAZYCLOCK 0x02
#define D12_CLOCKRUNNING 0x04
#define D12_INTERRUPTMODE 0x08
#define D12_SOFTCONNECT 0x10
#define D12_ENDP_NONISO 0x00
#define D12_ENDP_ISOOUT 0x40
#define D12_ENDP_ISOIN 0x80
#define D12_ENDP_ISOIO 0xC0
#define D12_CLOCK_12M 0x03
#define D12_CLOCK_4M 0x0b
#define D12_SETTOONE 0x40
#define D12_SOFONLY 0x80
#define D12_DMASINGLE 0x00
#define D12_BURST_4 0x01
#define D12_BURST_8 0x02
#define D12_BURST_16 0x03
#define D12_DMAENABLE 0x04
#define D12_DMA_INTOKEN 0x08
#define D12_AUTOLOAD 0x10
#define D12_NORMALPLUSSOF 0x20
#define D12_ENDP4INTENABLE 0x40
#define D12_ENDP5INTENABLE 0x80
#define D12_INT_ENDP0OUT 0x01
#define D12_INT_ENDP0IN 0x02
#define D12_INT_ENDP1OUT 0x04
#define D12_INT_ENDP1IN 0x08
#define D12_INT_ENDP2OUT 0x10
#define D12_INT_ENDP2IN 0x20
#define D12_INT_BUSRESET 0x40
#define D12_INT_SUSPENDCHANGE 0x80
#define D12_INT_EOT 0x0100
#define D12_SETUPPACKET 0x20
#define D12_BUFFER0FULL 0x20
#define D12_BUFFER1FULL 0x40
#define D12_FULLEMPTY 0x01
#define D12_STALL 0x02
#define INT8U unsigned char
/** D12CI.c 函数 ***/
INT16U D12_ReadChipID(void);
void D12_SetAddressEnable(INT8U bAddress, INT8U bEnable);
void D12_SetEndpointEnable(INT8U bEnable);
void D12_SetMode(INT8U bConfig, INT8U bClkDiv);
void D12_SetDMA(INT8U bMode);
INT16U D12_ReadInterruptRegister(void);
INT8U D12_SelectEndpoint(INT8U bEndp);
INT8U D12_ReadLastTransactionStatus(INT8U bEndp);
INT8U D12_ReadEndpointStatus(INT8U bEndp);
void D12_SetEndpointStatus(INT8U bEndp,INT8U bStalled);
void D12_SendResume(void);
INT16U D12_ReadCurrentFrameNumber(void);
INT8U D12_ReadEndpoint(INT8U endp, INT8U len, INT8U * buf);
INT8U D12_WriteEndpoint(INT8U endp, INT8U len, INT8U * buf);
void D12_AcknowledgeEndpoint(INT8U endp);
void D12_ClearBuff(INT8U endp);
#endif
/*
** 文 件 名: Chap_9.h
** 最后修改日期: 2004年11月15日
** 描 述: USB驱动程序软件包: PDIUSBD12 设备端驱动程序 协议层头文件
** 版 本: V5.0
**********************************************************************************************************/
#ifndef __CHAP_9_H__
#define __CHAP_9_H__
#define MSB(x) (((x) >> 8) & 0xFF)
#define MAX_ENDPOINTS (INT8U)0x3
// 下面的值为 Get Status 命令的返回值
#define USB_GETSTATUS_SELF_POWERED 0x01
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED 0x02
/********* USB 状态取值 **************/
#define USB_IDLE 0
#define USB_TRANSMIT 1
#define USB_RECEIVE 2
//*************************************************************************
// Chap_9.c 使用的结构体
//*************************************************************************
/************ USB事件结构体 *********************/
typedef union _epp_flags
{
struct _flags
{
INT8U bus_reset : 1; //总线复位标志
INT8U suspend : 1; //挂起改变标志
INT8U setup_packet : 1; //收到SETUP包
INT8U remote_wakeup : 1; //远程唤醒标志(未使用)
INT8U in_isr : 1; //USB中断服务标志
INT8U control_state : 2; //控制端点处理标志
//0: IDLE 空闲状态
//1: TRANSMIT 数据发送状态
//2: RECEIVE 数据接收状态
INT8U configuration : 1; //配置标志(0: 未配置; 1: 已经配置)
//INT8U command : 1; //未使用
INT8U ep1_rxdone : 1; //端点 1 收到数据标志
INT8U ep2_rxdone : 1; //端点 2 收到数据标志
//INT8U ep2_txdone : 1; //端点 2 发送数据标志
//INT8U ep2buf_full : 1; //端点 2 接收双缓冲区满标志
} bits;
INT16U value;
} EPPFLAGS;
typedef struct _device_request
{
INT8U bmRequestType;
INT8U bRequest;
INT16U wValue;
INT16U wIndex;
INT16U wLength;
} DEVICE_REQUEST;
/*********** 控制传输结构体 ************/
#define MAX_CONTROLDATA_SIZE 8
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
INT16U wLength;
INT16U wCount;
INT8U * pData;
INT8U dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;
//定义控制传输结构变量
extern CONTROL_XFER ControlData;
//定义USB事件标志变量
extern EPPFLAGS bEPPflags;
//*************************************************************************
// USB 标准设备请求函数
//*************************************************************************
extern void get_status(void);
extern void clear_feature(void);
extern void set_feature(void);
extern void set_address(void);
extern void get_descriptor(void);
extern void get_configuration(void);
extern void set_configuration(void);
extern void get_interface(void);
extern void set_interface(void);
extern void reserved(void);
extern void stall_ep0(void);
extern void ep0_txdone(void);
extern void ep0_rxdone(void);
extern void init_unconfig(void);
extern void init_config(void);
extern void single_transmit(INT8U * pData, INT8U len);
extern void code_transmit(INT8U * pRomData, INT16U len);
extern void control_handler(void);
extern code void (*StandardDeviceRequest[])(void);
#endif
/*
** 文 件 名: D12Driver.h
** 最后修改日期: 2004年11月15日
** 描 述: PDIUSBD12 设备端驱动程序 应用层头文件
** 版 本: V5.0
**********************************************************************************************************/
#ifndef __D12DRIVER_H__
#define __D12DRIVER_H__
//全局变量
//extern INT8U idata GenEpBuf[];
extern INT8U EpBuf[64];
//extern INT8U BULKLength;
//extern INT8U *BULKpp;
typedef struct
{
unsigned char b[64];//传送缓冲数据区
unsigned int wrLength;//传送长度
// const char *pp;//CONST数据
unsigned char *p;//一般数据
unsigned char p_p;//数据选择控制
}TRANSMIT_STRUCT;
extern TRANSMIT_STRUCT XmtBuff;
/************************************************************
D12Driver.c 提供的API函数
*************************************************************/
/************************************************************
** 函数名称: BULK_submit()
** 功能描述: BULK端点传输提交
** 输 入: 无
** 输 出: 无
************************************************************/
extern Bulk_submit(INT8U *pRomData, INT16U len);
/*****************************************************************
** 函数名称: Init_D12()
** 功能描述: 设置D12与硬件的连接, 初始化D12, 复位D12
** 输 入: 无
** 输 出: 0: 初始化成功 1: 初始化失败
******************************************************************/
extern INT8U Init_D12(void);
/******************************************************************
** 函数名称: D12_WriteEndpoint()
** 功能描述: 把数据写入端点
** 输 入: INT8U endp: 端点索引号,取值 0 ~ 5
INT8U len: 要写入的数据长度
INT8U * buf: 发送数据指针
** 输 出: 实际写入的字节数
*******************************************************************/
extern INT8U D12_WriteEndpoint(INT8U endp, INT8U len, INT8U * buf);
/*******************************************************************
** 函数名称: usbserve()
** 功能描述: USB事件处理函数
** 输 入: 无
** 输 出: 无
********************************************************************/
extern void usbserve(void);
/************************************************************
** 函数名称: Get_D12_FirmwareVer()
** 功能描述: 重新连接USB总线
** 输 入: 无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -