首 页       用户登录  |  用户注册
设为首页
加入收藏
联系我们
按字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
按声母检索 A B C D E F G H J K L M N O P Q R S T W X Y Z 数字 符号
您的位置: 5VAR论文频道论文中心理工论文电子通信
   80C196单片机鼠标接口程序设计实例      ★★★ 【字体: 】  
80C196单片机鼠标接口程序设计实例
收集整理:佚名    来源:本站整理  时间:2009-01-10 22:22:02   点击数:[]    

始化阶段,首先检查鼠标是否存在,根据结果设置标志位,以备以后取鼠标信息时判断用;根据需要设定鼠标初始化位置、按钮原始状态;最后设置串行接口参数(帧格式等)并开放鼠标中断。鼠标发送信息时,第三个字节为一个完整的信息报告。但80C196每接收到一个字节,就产生一次中断,然后根据当前字节是否大于40H确定其性质。若是信息报告的首字节,则还要进一步通过有效性检验后保存;若不是首字节,则必须经过一系列检验后保存起来。收到三个字节后立即进行命令分析和执行。具体处理过程可参看源程序。用户模块通过特定接口模块(图2(b))获得鼠标当前位置和按钮状,并可通过进位标志C=0/1判断鼠标是否安装。

下面是图2、3程序流程图如图对应的程序清单。该程序要求80C196单片机的工作频率为12MHz;如果采有其它工作频率,通过修改串行口的波特率设置参数以及延时程序的时间常数即可。

;8098特殊功能寄存器预定义

R0 EQU 00H:Word

SBUD EQU 07H:Byte

INT_MASK EQU 08H:Byte

INT_PEND EQU 09H:Byte

BAUD_RT EQU 0EH:Byte

IOP2 EQU 10H:Byte

SP_CON EQU 11H:Byte

SP_STAT EQU 11H:Byte

IOC1 EQU 16H:Byte

SP EQU 18H:Word

;通用寄存器预定义

RSEG AT ICH

AX: DSW 1

DX: DSW 1

AL EQU AX:BYTE

AH EQU (AX+1):BYTE

DL EQU DX:BYTE

DH EQU (DX+1):BYTE

SCRNW EQU 640 ;显示屏宽度

SCRNH EQU 480 ;显示屏高度

;变量区

RSEG AT 20H

M_X :DSW 1 ;光标X值

M_Y :DSW 1 :光标Y值

M_BUF :DSB 4 ;接收缓冲区

M_P : DSW 1 ;接收指针

BX :DSW 1

LRB_OK:DSB 1 ;鼠标状态

;Bit7:存在,Bit5,左键,Bit4:右键

CSEG AT 2000H

DCW INIT

CSEG AT 200CH

DCW SIOINT

DCW INIT

DCW 0

DCB 0,0,0,0,0,0

DCB 08DH

DCB 000H

DCB 027H,0FEH

CSEG AT 2080H

INIT:LD SP,#0100H ;设堆栈指针

LD M_X,#SCRNW/2;初始化指针

LD M_Y,#SCRNH/2

ANDB LRB_OK,#7CH

LD M_P,#M_BUF

CLRB INT_PEND ;清除中断

LDB INT_MASK,#40H ;开串行中断

LDB AL,SP_STAT ;清除RI/TI

LDB SP_CON,#09H ;设串口模式

LDB BAUD_RT,#9BH ;1200,12MHz

LDB BAUD_RT,#80H

EI

ANDB IOP2,#0FEH ;P2.2=0

LD AX,#8000H ;延迟200ms

DLY0:DEC AX

JNE DLY0

LDB AL,LRB_OK

LBS AL,7,M_OK

ANDB INT_MASK,#0BFH

M_OK:NOP

; … … …

;清单二:取鼠标消息,

AL=鼠标及按钮状态,BX=X,DX=Y GET_M:ANDB INT_MASK,#0BFH

LDB AL,LRB_OK ;取鼠标信息

LD BX,M_X

LD DX,M_Y

ORB INT_MASK,#40H

RET

;清单三:串口中断服务程序

SIOINT:PUSHF ;中断服务

PUSH AX

LDB AL,SBUF

LDB AH,SP_STAT

JBS AL,6,ISB0 ;第一个字节

CMP M_P,#M_BUF

JNE SIO_1

SJMP C99 ;缓冲区空,出错

SIO_1:CMP M_P,#M_BUF+2

JH C98 ;缓冲区满,出错

STB AL,[M_P]+ ;存储收到字节

CMP M_P,#M_BUF+3

JNE C99

LD M_P,#M_BUF ;已收到完整命令

GOLR:LDB AL,1[M_P] ;处理X方向位移

SHLB AL,#2

EXTB AL

SHRA AX,#2

ADD M_X,AX

CKL:CMP M_X,#0

JGE CKR

CLR M_X

CKR:CMP M_X ,#SCRNW

JLT GOUD

LD M_X,#SCRNW

GOUD:LDB AL,2[M_P] ;处理Y方向位数

SHLB AL,#2

EXTB AL

SHRA AX,#2

ADD M_Y,AX

CKU:CMP M_Y,#0

JGE CKD

CLR M_Y

CKD:CMP M_Y,#SCRNH

JLT ELRUD

LD M_Y,#SCRNH

ELRUD:SJMP C98

ISB0:STB AL,M_BUF

ANDB AL,#0FH

CMPB AL,#03H

JE C97 ;=X3H,

CMPB AL,#0CH

JE C97 ;=XCH

CMPB AL,#0DH

JNE C98 ;<>XDH

ORB LRB_OK,#80H ;确认鼠标正常

C97:ANDB AL,M_BUF,#30H

ANDB LRB_OK,#80H

ORB LRB_OK,AL ;更新左右键状态

LD M_P,#M_BUF+1

SJMP C99

C98:LD M_P,#0000H

C99:POP AX

POPF

RET

END




上一页  [1] [2] 


Tags:


文章转载请注明来源于:5VAR论文频道 http://paper.5var.com。本站内容整理自互联网,如有问题或合作请Email至:support@5var.com
或联系QQ37750965
提供人:佚名
  • 上一篇文章:TM卡信息纽扣在预付费水表中的应用

  • 下一篇文章:基于P89C51RD2IAP功能的数据存取与软件升级
  • 返回上一页】【打 印】【关闭窗口
    中查找“80C196单片机鼠标接口程序设计实例”更多相关内容 5VAR论文频道
    中查找“80C196单片机鼠标接口程序设计实例”更多相关内容 5VAR论文频道
    最新热点 最新推荐 相关新闻
  • ››嵌入式系统的通信规约管理平台设计...
  • ››一种基于七号信令的局间话单采集系...
  • ››对于变频器的制动技术分析
  • ››电子文件管理元数据宏观结构多维分...
  • ››浅论卫星电视接收机的常见故障的检...
  • ››信息时代网络用户信息检索焦虑的心...
  • ››论GIS在高校房产管理中的实际应用
  • ››关于电力通信发展战略的思考 金李莎...
  • ››2G、3G切换精细化优化分析思路探讨...
  • ››光纤自动化生产的需求与时机
  • ››80C196KC-ADMC401接口电路设计及其...
  • ››80C196MC在中频感应电源中的应用
  • ››80C196MC的外设事务服务器及其应用...
  • ››80C196单片机鼠标接口程序设计实例...
  •   文章-网友评论:(评论内容只代表网友观点,与本站立场无关!)
    关于本站 - 网站帮助 - 广告合作 - 下载声明 - 网站地图
    Copyright © 2006-2033 5Var.Com. All Rights Reserved .