| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1371 人关注过本帖
标题:最简单鼠标驱动.
只看楼主 加入收藏
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
结帖率:78.95%
收藏
 问题点数:0 回复次数:6 
最简单鼠标驱动.
[CODE]
/*
(1)、功能00H
功能描述:初始化鼠标,该操作只需要执行一次
入口参数:AX=00H
出口参数:AX=0000H——不支持鼠标功能,FFFFH——支持鼠标功能
BX=鼠标按钮个数(在支持鼠标功能时)
在支持鼠标功能的情况下,鼠标还被设置如下参数: 1、鼠标指针放在屏幕中央
2、如果当前鼠标指针是显示的,则操作后,鼠标指针被隐藏
3、鼠标指针的显示页为0
4、根据屏幕的显示模式显示鼠标指针:文本—反向显示矩形块,图形—尖头形状
5、水平象素比=8:8,垂直象素比=16:8
6、设置水平和垂直的显示边界为当前显示模式的最大边界
7、允许光笔仿真
8、双速门槛值=64
(2)、功能01H
功能描述:显示鼠标指针,通常在鼠标初始化后,用此功能显示其指针
入口参数:AX=01H
出口参数:无
(3)、功能02H
功能描述:隐藏鼠标指针,一般在程序结束时,调用此功能
入口参数:AX=02H
出口参数:无

作者:ioriliao
编写日期:2008.01.05
修改日期:2008.01.05

编译环境:bc3.0
*/
#include <stdio.h>
void mouse_init(void);
void mouse_show(void);
void mouse_hide(void);
typedef void (*fun)(void);
typedef enum{mouseInit, mouseShow, mouseHide}ctrlType;
fun* fun_count[]={mouse_init, mouse_show, mouse_hide};
void mouse_control(ctrlType ctrltype);

int main(void)
{
    mouse_control(mouseInit);
    mouse_control(mouseShow);
    getchar();
    mouse_control(mouseHide);
    return 0;
}
//mouse init
void mouse_init(void)
{
    unsigned int axx,bxx;
    asm mov ax,0x0;
    asm int 0x33;
}
//mouse show
void mouse_show(void)
{
    unsigned int x,y;
    asm mov ax,0x1;
    asm int 0x33;
}
//void mouse hide
void mouse_hide(void)
{
    asm mov ax,0x2;
    asm int 0x33;
}
//mouse control
void mouse_control(ctrlType ctrltype)
{
    fun* function=fun_count;
        function[ctrltype]();
}
[/CODE]
在此献下丑.
小弟才疏学浅,望硬件编程的前辈们高手们多多指点.

[[italic] 本帖最后由 ioriliao 于 2008-1-5 20:33 编辑 [/italic]]
搜索更多相关主题的帖子: 鼠标 指针 驱动 屏幕 
2008-01-05 20:29
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
收藏
得分:0 
bc里有没有封装好的系统中断调用函数?
2008-01-05 20:44
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
这个我就不大清楚了灭火兄,不过好像有个库叫dos.h有类似的函数么?
对于C的库我真的知道比较少.
2008-01-05 21:21
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
收藏
得分:0 
那就说不好了,毕竟dos.h不是标准C的库,而且标准C也没有系统调用的函数。不过TC有,所以就不用内联汇编了,呵呵。只要填写寄存器联合,然后调用中断就可以了。不过GCC也没有这样的函数,也需要内联。
2008-01-05 23:16
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
收藏
得分:0 
个人认为还是使用有内联汇编会比较有意思点...
对于C的各种函数库我了解得很少,我除了对C的语法
是了解之外(还不算很通呢),其它的可以说是一无所知了.
2008-01-05 23:27
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
收藏
得分:0 
用汇编效率还是很高的.
2008-01-06 00:01
不忘
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2012-7-18
收藏
得分:0 
    BC3.0与TC3.0差不多吧,楼主?我在TC3.0上试一下你的程序。谢楼主分享啦!
2012-07-19 11:14
快速回复:最简单鼠标驱动.
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015415 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved