📄 xps2_l.h
字号:
/* $Id: xps2_l.h,v 1.1 2006/02/16 23:45:09 moleres Exp $ *//******************************************************************************** XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"* AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND* SOLUTIONS FOR XILINX DEVICES. BY PROVIDING THIS DESIGN, CODE,* OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,* APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION* THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,* AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE* FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY DISCLAIMS ANY* WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS* FOR A PARTICULAR PURPOSE.** (c) Copyright 2002 Xilinx Inc.* All rights reserved.*******************************************************************************//*****************************************************************************//**** @file xps2_l.h** This header file contains identifiers and low-level driver functions (or* macros) that can be used to access the device. The user should refer to the* hardware device specification for more details of the device operation.* High-level driver functions are defined in xps2.h.** <pre>* MODIFICATION HISTORY:** Ver Who Date Changes* ----- ---- -------- -----------------------------------------------* 1.00a ch 06/18/02 First release* </pre>*******************************************************************************/#ifndef XPS2_L_H /* prevent circular inclusions */#define XPS2_L_H /* by using protection macros */#ifdef __cplusplusextern "C" {#endif/***************************** Include Files ********************************/#include "xbasic_types.h"#include "xio.h"/************************** Constant Definitions ****************************//* PS/2 register offsets */#define XPS2_RESET_OFFSET 0 /* reset register, write only */#define XPS2_STATUS_OFFSET 4 /* status register, read only */#define XPS2_RX_REG_OFFSET 8 /* receive register, read only */#define XPS2_TX_REG_OFFSET 12 /* transmit register, write only */#define XPS2_INTSTA_REG_OFFSET 16 /* int status register, read only */#define XPS2_INTCLR_REG_OFFSET 20 /* int clear register, write only */#define XPS2_INTMSET_REG_OFFSET 24 /* mask set register, read/write */#define XPS2_INTMCLR_REG_OFFSET 28 /* mask clear register, write only *//* reset register bit positions */#define XPS2_CLEAR_RESET 0x00#define XPS2_RESET 0x01/* status register bit positions */#define XPS2_ST_RX_FULL 0x01#define XPS2_ST_TX_FULL 0x02/* interrupt register bit positions *//* used for the INTSTA, INTCLR, INTMSET, INTMCLR register */#define XPS2_INT_WDT_TOUT 0x01#define XPS2_INT_TX_NOACK 0x02#define XPS2_INT_TX_ACK 0x04#define XPS2_INT_TX_ALL 0x06#define XPS2_INT_RX_OVF 0x08#define XPS2_INT_RX_ERR 0x10#define XPS2_INT_RX_FULL 0x20#define XPS2_INT_RX_ALL 0x38#define XPS2_INT_ALL 0x3f/**************************** Type Definitions ******************************//***************** Macros (Inline Functions) Definitions ********************//******************************************************************************* Low-level driver macros. The list below provides signatures to help the* user use the macros.** void XPs2_mReset(Xuint32 BaseAddress)* Xuint8 XPs2_mGetStatus(Xuint32 BaseAddress)** Xuint8 XPs2_mGetIntrStatus(Xuint32 BaseAddress)* void XPs2_mClearIntr(Xuint32 BaseAddress, Xuint8 ClearMask)* Xboolean XPs2_mIsIntrEnabled(Xuint32 BaseAddress, Xuint8 EnabledMask)* void XPs2_mEnableIntr(Xuint32 BaseAddress, Xuint8 EnableMask)* void XPs2_mDisableIntr(Xuint32 BaseAddress, Xuint8 DisableMask)** Xboolean XPs2_mIsReceiveEmpty(Xuint32 BaseAddress)* Xboolean XPs2_mIsTransmitFull(Xuint32 BaseAddress)******************************************************************************//****************************************************************************//*** Reset the PS/2 port.** @param BaseAddress contains the base address of the device.** @return None.** @note None.*******************************************************************************/#define XPs2_mReset(BaseAddress) \ XIo_Out8(((BaseAddress) + XPS2_RESET_OFFSET), XPS2_RESET); \ XIo_Out8(((BaseAddress) + XPS2_RESET_OFFSET), XPS2_CLEAR_RESET)/****************************************************************************//*** Read the PS/2 status register.** @param BaseAddress contains the base address of the device.** @return The value read from the register.** @note None.*******************************************************************************/#define XPs2_mGetStatus(BaseAddress) \ (XIo_In8((BaseAddress) + XPS2_STATUS_OFFSET))/****************************************************************************//*** Read the interrupt status register.** @param BaseAddress contains the base address of the device.** @return The value read from the register.** @note None.*******************************************************************************/#define XPs2_mGetIntrStatus(BaseAddress) \ (XIo_In8((BaseAddress) + XPS2_INTSTA_REG_OFFSET))/****************************************************************************//*** Clear pending interrupts.** @param BaseAddress contains the base address of the device.* Bitmask for interrupts to be cleared. A "1" clears the interrupt.** @return None.** @note None.*******************************************************************************/#define XPs2_mClearIntr(BaseAddress, ClearMask) \ XIo_Out8((BaseAddress) + XPS2_INTCLR_REG_OFFSET, (ClearMask))/****************************************************************************//*** Check for enabled interrupts.** @param BaseAddress contains the base address of the device.* Bitmask for interrupts to be checked.** @return XTRUE if the interrupt is enabled, XFALSE otherwise.** @note None.*******************************************************************************/#define XPs2_mIsIntrEnabled(BaseAddress, EnabledMask) \ (XIo_In8((BaseAddress) + XPS2_INTMSET_REG_OFFSET) & (EnabledMask))/****************************************************************************//*** Enable Interrupts.** @param BaseAddress contains the base address of the device.* Bitmask for interrupts to be enabled.** @return None.** @note None.*******************************************************************************/#define XPs2_mEnableIntr(BaseAddress, EnableMask) \ XIo_Out8((BaseAddress) + XPS2_INTMSET_REG_OFFSET, (EnableMask))/****************************************************************************//*** Disable Interrupts.** @param BaseAddress contains the base address of the device.* Bitmask for interrupts to be disabled.** @return None.** @note None.*******************************************************************************/#define XPs2_mDisableIntr(BaseAddress, DisableMask) \ XIo_Out8((BaseAddress) + XPS2_INTMCLR_REG_OFFSET, (DisableMask))/****************************************************************************//*** Determine if there is receive data in the receiver.** @param BaseAddress contains the base address of the device.** @return XTRUE if there is receive data, XFALSE otherwise.** @note None.*******************************************************************************/#define XPs2_mIsReceiveEmpty(BaseAddress) \ (!(XPs2_mGetStatus(BaseAddress) & XPS2_ST_RX_FULL))/****************************************************************************//*** Determine if a byte of data can be sent with the transmitter.** @param BaseAddress contains the base address of the device.** @return XTRUE if a byte can be sent, XFALSE otherwise.** @note None.*******************************************************************************/#define XPs2_mIsTransmitFull(BaseAddress) \ (XPs2_mGetStatus(BaseAddress) & XPS2_ST_TX_FULL)/************************** Variable Definitions ****************************//************************** Function Prototypes *****************************/void XPs2_SendByte(Xuint32 BaseAddress, Xuint8 Data);Xuint8 XPs2_RecvByte(Xuint32 BaseAddress);/****************************************************************************/#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -