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