⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zlg_avalon_ps2mouse.c

📁 周立功SOPC 嵌入式系统实验教程书籍配套光盘 PS2鼠标驱动代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN ELECTRONIC CO.,LTD.
**                                      Research centre
**                         http://www.zyinside.com, http://www.zlgmcu.com
**
**---------------------------------------File Info-----------------------------------------------------
** File name:			  zlg_avalon_ps2mouse.c
** Latest modified Date:  2006-05-13
** Latest Version:		  1.0
** Descriptions:		  Provide function for the ps2mouse Core  
**                        
**
**------------------------------------------------------------------------------------------------------
** Created by:			  ZhouShuwu
** Created date:		  2006-05-13
** Version:				  1.0
** Descriptions:		  The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#include "zlg_avalon_ps2mouse.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include "system.h"
#include  <stdio.h>

/******************************************************************
*      与硬件相关的宏定义,用户根据实际情况修改
******************************************************************/
// PS2MOUSE_BASE是用户添加并命名的外设基地址,在SYSTEM中定义,用户需要根据不同的命名来修改此处
#ifndef PS2MOUSE_BASE             //这是CYMOMETER核的基地址
#define PS2KEYBOARD_BASE  0xffffffff //user's definition here
#endif

#if PS2MOUSE_BASE == 0xffffffff
#error "No definition of PS2MOUSE_BASE core.\n"
#endif

#ifndef PS2MOUSE_IRQ             //这是CYMOMETER核的基地址
#define PS2MOUSE_IRQ  0xffff //user's definition here
#endif

#if PS2MOUSE_IRQ == 0xffff
#error "No definition of PS2MOUSE IRQ.\n"
#endif

extern alt_u32 ps2mouse_addr;

volatile alt_u32  MouseData = 0;    
volatile alt_u32  MouseDone = 0;      // 信号量:通知外部中断事件发生          
/*********************************************************************************************************
** Function name:	  alt_u32 ReadMouseData(void)
**
** Descriptions:	  read data from the ps2mouse core 
**
** input parameters:  none                      
**
** Returned value : data of ps2mouse
    |  D31……D22  |     D21    |    D20      |     D19      | 
    |   always 0   | data_ready | left_button | right_button | 
    ---------------------------------------------------------
    |      D18      |  D17……D9  |  D8……D0   |
    | middle_button | y_increment | x_increment |
** Used global variables:	None
** Calling modules:		    None
**
** Created by:				ZhouShuwu
** Created Date:			2006/05/13
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
alt_u32 ReadMouseData(void)
{
	return(IORD_ZLG_AVALON_PS2MOUSE_DATA(ps2mouse_addr));
}

/********************************************************************
* 名    称:Mouse_interrupt()
* 功    能:MOUSE事件中断服务子程序,通过全局变量将读取数据告知外界
* 入口参数:context,一般用于传递中断状态寄存器的值,这里未使用 
*           id,中断号,这里未使用
* 出口参数:无
********************************************************************/
static void MouseIRQ(void* context, alt_u32 id)
{  
   /* 读数据并清中断 */
   MouseData = ReadMouseData();
   MouseDone++; 
}

/********************************************************************
* 名    称:MouseInit()
* 功    能:MOUSE初始化
* 入口参数:none
*           none
* 出口参数:无
********************************************************************/  
void MouseInit(void)
{
     /* 注册中断服务子程序 */
    alt_irq_register(PS2MOUSE_IRQ, NULL, MouseIRQ);
}    


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -