|
xy_god
中级用户
疯狂的流浪者
积分 276
发帖 56
注册 2003-9-25
状态 离线
|
『楼 主』:
[原创]我写的键盘程序,呵呵,还很幼稚哦!
/************************************************/
/* 通过8042芯片与键盘通信示例程序 */
/* 作者:xy_god */
/************************************************/
#include "dos.h"
#include "stdio.h"
#include "conio.h"
int iCode=0;
int blKey=0;
void interrupt ( *oldhandler)(void);/*中断处理函数指针*/
void interrupt handler(void);
int getbit(char c,int i);
void getkeystate();
int main(void)/***********************主函数***********************/
{
int a;
oldhandler = getvect(0X09);/*取得原先键盘中断地址*/
setvect(0X09, handler);/*安装新的键盘中断*/
getkeystate();
printf("*********************************************\n"
while (1)
{
if(blKey==1)
{
blKey=0;
printf("%X",iCode);
printf("****"
getkeystate();
}
}
setvect(0X09, oldhandler);/*恢复键盘中断*/
return 0;
}/*****************************************************************/
void interrupt handler(void)/*键盘中断处理程序*/
{
blKey=1;
iCode=inport(0x60);
oldhandler();
}
int getbit(char c,int i)/*获取字节的第i位的值*/
{
int mi;
mi=c<127)
return 1;
else
return 0;
}
void getkeystate()/*获取键盘状态*/
{
int i,ic=0,bitvalue;
for(ic=0;ic<8;ic++)
{
i=inport(0x64);
bitvalue=getbit(i,ic);
switch(ic)
{
case 0:
if(bitvalue) printf("OBF=TRUE\n" else printf("OBF=FALSE\n"
break;
case 1:
if(bitvalue) printf("IBF=TRUE\n" else printf("IBF=FALSE\n"
break;
case 2:
if(bitvalue) printf("SYS=TRUE\n" else printf("SYS=FALSE\n"
break;
case 3:
if(bitvalue) printf("A2=TRUE\n" else printf("A2=FALSE\n"
break;
case 4:
if(bitvalue) printf("INTH=TRUE\n" else printf("INH=FALSE\n"
break;
case 5:
if(bitvalue) printf("TxTO=TRUE\n" else printf("TxTO=FALSE\n"
break;
case 6:
if(bitvalue) printf("RxTO=TRUE\n" else printf("RxTO=FALSE\n"
break;
case 7:
if(bitvalue) printf("PERR=TRUE\n" else printf("PERR=FALSE\n"
break;
}
}
}
|
临河居士
http://www.xygod.pc5.org |
|
2003-10-26 00:00 |
|
|
xy_god
中级用户
疯狂的流浪者
积分 276
发帖 56
注册 2003-9-25
状态 离线
|
『第
2 楼』:
这个程序是用TC2。0写的,开发环境是吴进的WIN-TC172,呵呵!
本来可读性是很好的,可是不知道怎么回事情发到论坛上就变了样,凑合看吧!
其实大家仔细看一看,这个程序和用SDK 开发WINDOWS程序是的结构很相似的,用他就可以实现DOS程序的多线程,注意,我说的是多线程,不是多任务哦,呵呵!
这是一个8042的PS2键盘的程序,等我看完关于鼠标的内容,我会写个鼠标的驱动给大家,
不过,现在真的很忙,没空写,所以要等一段时间了,真的很无奈!TMD!
|
临河居士
http://www.xygod.pc5.org |
|
2003-10-26 00:00 |
|
|
lemonhall
高级用户
OS/2女孩
积分 639
发帖 183
注册 2003-6-14
状态 离线
|
『第
3 楼』:
it's only a console program, but not a dos program.
|
REM 喜欢DOS,因为它的简单
REM 喜欢OS/2,因为它不再矫饰
REM 喜欢BASIC,因为它并不幼稚
REM 喜欢GNU,因为它杂乱无章 |
|
2003-10-27 00:00 |
|
|
xy_god
中级用户
疯狂的流浪者
积分 276
发帖 56
注册 2003-9-25
状态 离线
|
『第
4 楼』:
拜托啦,楼上的,我是用TC20写的,什么CONSOLE程序啊,纯粹的DOS程序好不啦!
你仔细看了没有啊,老天爷!
我是在模仿WIN32 SDK的程序结构啦!
|
临河居士
http://www.xygod.pc5.org |
|
2003-10-27 00:00 |
|
|
lemonhall
高级用户
OS/2女孩
积分 639
发帖 183
注册 2003-6-14
状态 离线
|
『第
5 楼』:
it's my fault, sorry.it's really a hardware programm
|
REM 喜欢DOS,因为它的简单
REM 喜欢OS/2,因为它不再矫饰
REM 喜欢BASIC,因为它并不幼稚
REM 喜欢GNU,因为它杂乱无章 |
|
2003-10-27 00:00 |
|
|
xy_god
中级用户
疯狂的流浪者
积分 276
发帖 56
注册 2003-9-25
状态 离线
|
『第
6 楼』:
我曾经用这个结构写过一个DOS图形系统,
定义了好多消息结构,也挺好玩的,
实现了多线程,不过要处理和初始化好多中断!
完全是以消息为基础的,我希望有人受到这个启发,开发一个函数库,以后开发DOS
程序的时候就有一个图形化标准了,而且程序的框架都是统一的!
|
临河居士
http://www.xygod.pc5.org |
|
2003-10-27 00:00 |
|
|
alhan
初级用户
积分 125
发帖 11
注册 2004-5-9
状态 离线
|
『第
7 楼』:
>我曾经用这个结构写过一个DOS图形系统
放上来,让我们看看.
|
|
2004-5-12 00:00 |
|