📄 use_photoelectricity_mouse_driver.h
字号:
# ifndef _USE_PHOTOELECTRICITY_MOUSE_DRIVER_H_
# define _USE_PHOTOELECTRICITY_MOUSE_DRIVER_H_
/*****************************************************************
* 声明库名称:光电鼠标驱动配置库 *
* 版本: v0.01 *
* 作者: I ROBOT *
* 创建日期: Copyright (C) 2008年10月29日 *
*----------------------------------------------------------------*
* [支持库] *
* 支持库名称: *
* 支持库版本: *
* 支持库说明: *
*----------------------------------------------------------------*
* [版本更新] *
* 更新: I ROBOT *
* 更新日期: *
* 版本: *
*----------------------------------------------------------------*
* [版本历史] *
* v0.01 创建版本,配置光电鼠标与AVR的接口与采样方式 *
*----------------------------------------------------------------*
* [使用说明] *
* 1.配置光电鼠标与MCU的接口与采样方式 *
*****************************************************************/
/********************
* 头 文 件 配 置 区 *
********************/
# include "AVR_Environment_Configure.h"
/********************
* 系 统 宏 定 义 *
********************/
/*---------------------------------------------*
* Photoelectricity_Mouse采样方式配置 *
*---------------------------------------------*/
//TODO:在这里配置Photoelectricity_Mouse的采样方式
# ifndef SAMPLING_METHODS_CONFIGURE
# define SAMPLING_METHODS_CONFIGURE
# define USE_ONLY_PIN_CONFIGURE
//# define USE_PIN_AND_EINT_CONFIGURE
//# define USE_EINT_AND_USART_CONFIGURE
# endif
/********************
* 常 数 宏 定 义 *
********************/
/*---------------------------------------------*
* Photoelectricity_Mouse数据常量宏定义 *
*---------------------------------------------*/
# ifndef PHOTOELECTRICITY_MOUSE_CONST_DATA
# define PHOTOELECTRICITY_MOUSE_CONST_DATA
# define FRAME_LENGTH_11 11
# define MOUSE_DATA_SIZE 3
# define MOUSE_LEFT_KEY 0
# define MOUSE_RIGHT_KEY 1
# define MOUSE_MID_KEY 2
# define MOUSE_X_SIGN 4
# define MOUSE_Y_SIGN 5
# define MOUSE_X_OVF 6
# define MOUSE_Y_OVF 7
# define MOUSE_DATA_MAX 256
# define ERROR_DATA 10
# define MOUSE_DA0_BIT 1
# define MOUSE_DA7_BIT 8
# define ODD_PARITY 1
# endif
/*---------------------------------------------*
* Photoelectricity_Mouse指令宏定义 *
*---------------------------------------------*/
# ifndef PHOTOELECTRICITY_MOUSE_INSTRUCTION
# define PHOTOELECTRICITY_MOUSE_INSTRUCTION
# define MOUSE_RESET 0XFF
# define MOUSE_LIVE 0XF4
# define MOUSE_ACK_BYTE1 0xFA
# define MOUSE_ACK_BYTE2 0XAA
# define MOUSE_ACK_BYTE3 0X00
# endif
/********************
* 动 作 宏 定 义 *
********************/
/*---------------------------------------------*
* MCU与Photoelectricity_Mouse接口宏定义 *
*---------------------------------------------*/
# ifndef MCU_PHOTOELECTRICITY_MOUSE_INTERFACE
# define MCU_PHOTOELECTRICITY_MOUSE_INTERFACE
//TODO:在这里添加只使用端口配置的接口配置代码
# ifdef USE_ONLY_PIN_CONFIGURE
# define MOUSE_CLK_HIGH (PORTB |= BIT(PD1))
# define MOUSE_CLK_LOW (PORTB &= ~BIT(PB1))
# define MOUSE_DATA_HIGH (PORTB |= BIT(PB0))
# define MOUSE_DATA_LOW (PORTB &= ~BIT(PB0))
# endif
//TODO:在这里添加使用端口和外中断配置的接口配置代码
# ifdef USE_PIN_AND_EINT_CONFIGURE
# endif
//TODO:在这里添加只使用外中断和串口配置的接口配置代码
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
# endif
/*---------------------------------------------*
* MCU与Photoelectricity_Mouse数据流宏定义 *
*---------------------------------------------*/
# ifndef MCU_PHOTOELECTRICITY_MOUSE_DATA_STREAM
# define MCU_PHOTOELECTRICITY_MOUSE_DATA_STREAM
//TODO:在这里添加只使用端口配置的数据流代码
# ifdef USE_ONLY_PIN_CONFIGURE
# define DATA_FROM_MOUSE do\
{\
DDRB &= ~BIT(PB0);\
PORTB |= BIT(PB0);\
}\
while (0);
# define DATA_FROM_AVR (DDRB |= BIT(PB0))
# define CLK_FROM_MOUSE do\
{\
DDRB &= ~BIT(PB1);\
PORTB |= BIT(PB1);\
}\
while (0);
# define CLK_FROM_AVR (DDRB |= BIT(PB1))
# define AVR_READ_MOUSE_CLK (PINB&BIT(PB1))
# define AVR_READ_MOUSE_DATA (PINB&BIT(PB0))
# endif
//TODO:在这里添加使用端口和外中断配置的数据流代码
# ifdef USE_PIN_AND_EINT_CONFIGURE
# endif
//TODO:在这里添加只使用外中断和串口配置的数据流代码
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
# endif
/*---------------------------------------------*
* MCU与Photoelectricity_Mouse操作宏定义 *
*---------------------------------------------*/
# ifndef MCU_PHOTOELECTRICITY_MOUSE_CONTROL_INSTRUCTION
# define MCU_PHOTOELECTRICITY_MOUSE_CONTROL_INSTRUCTION
# define WAIT_MOUSE_CLK_LOW do\
{\
while (AVR_READ_MOUSE_CLK);\
}\
while (0);
# define WAIT_MOUSE_CLK_HIGH do\
{\
while (!(AVR_READ_MOUSE_CLK));\
}\
while (0);
# endif
/********************
* 模块结构体定义区 *
********************/
struct Mouse_Struct
{
INT16 x;
INT16 y;
BOOL b_Left_Key_Down;
BOOL b_Right_Key_Down;
};
/********************
* 函 数 声 明 区 *
********************/
/*---------------------------------------------*
* 公 有 函 数 声 明 区 *
*---------------------------------------------*/
void Mouse_Hardware_Configure(void);
static void MCU_Register_Configure(void);
static void MCU_Port_Configure(void);
static UINT16 Group_Frame(UINT8 chData);
static void Translate_Frame_To_Mouse(UINT8 chData);
static UINT8 Reiceve_Mouse_Frame(void);
void Mouse_Init(void);
/*---------------------------------------------*
* 私 有 函 数 声 明 区 *
*---------------------------------------------*/
//TODO:在这里添加只使用端口配置的函数声明
# ifdef USE_ONLY_PIN_CONFIGURE
struct Mouse_Struct *Mouse_Data_Process(void);
# endif
//TODO:在这里添加使用端口和外中断配置的函数声明
# ifdef USE_PIN_AND_EINT_CONFIGURE
static void INT0_ISR_Mouse_Frame_Receive(void);
# endif
//TODO:在这里添加使用外中断和串口配置的函数声明
# ifdef USE_EINT_AND_USART_CONFIGURE
# endif
/********************
* 模块函数声明区 *
********************/
/********************
* 模块变量声明区 *
********************/
/********************
* 全局变量声明区 *
********************/
# endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -