📄 鼠标.lst
字号:
页 1
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
;-----------------------------------------------
; 鼠标应用程序示范
; MCU AT89S51 XAL 12MHz
;-----------------------------------------------
;
;-----------------------------------------------
; 变量、常量、端口定义表
;-----------------------------------------------
;
MOUSEFLAG BIT 000H ;3D鼠标存在标志
MOUSEDATA DATA 021H ;鼠标读出数据寄存单元21H~24H
DATA_X DATA 025H ;水平方向调整数据
DATA_Y DATA 026H ;竖直方向调整数据
DATA_Z DATA 027H ;滚轮调整数据
PS2CLK BIT P0.1 ;接ps/2座的5脚,移位时钟
PS2DTL BIT P0.0 ;接ps/2座的1脚,移位数据
LAMP1 BIT P3.4 ;小灯1
LAMP2 BIT P3.3 ;小灯2
BEEP BIT P0.2 ;蜂鸣器
;
LAMPBLAK EQU P1.4 ;背光灯控制,=0时开,=1时关.
CS EQU P1.5 ;液晶使能,=1操作,=0禁止.
SID EQU P1.6 ;液晶串行数据输入口
SCLK EQU P1.7 ;液晶串行操作时钟口
DISDATA EQU 40H ;LCD显示单元,连续3个单元
;-----------------------------------------------
; 中断向量表
;-----------------------------------------------
ORG 0000H
0000 020030 START: LJMP MAININI ; 0000H 引向主程序初始化
;
;-----------------------------------------------
; 主程序
;-----------------------------------------------
ORG 0030H
0030 75A800 MAININI: MOV IE, #00H ;关中断
0033 75D000 MOV PSW, #00H ;选用寄存器组0
0036 758180 MOV SP, #80H ;设置堆栈指针
0039 C295 CLR CS ;液晶操
003B 12046B LCALL SETUP ;LCD初始化
003E 120437 LCALL LOGON ;开机显示画面
0041 7840 MOV R0,#40H ;40H-43H为显示数据存放单元(40H为最高位)
0043 7F0B MOV R7,#0BH
0045 7600 CLEARDISP: MOV @R0,#00H
0047 08 INC R0
0048 DFFB DJNZ R7,CLEARDISP
;
004A 7E27 MOV R6, #027H
E:\楼然苗\应用源程序\PS2论文2\论文程序\鼠标.ASM
页 2
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
004C 7F10 MOV R7, #010H
004E 120407 LCALL DELAY3D
0051 C200 CLR MOUSEFLAG
0053 120103 LCALL PS2_3DMOUSEINI ;初始化3D鼠标
0056 EF MOV A, R7
0057 7004 JNZ MAIN01
0059 D200 SETB MOUSEFLAG ;3D鼠标初始化成功
005B C2B4 CLR LAMP1
;
005D 00 MAIN01: NOP ;其它主程序
005E 00 NOP
;以下鼠标功能程序
005F 3000FB JNB MOUSEFLAG, MAIN01
0062 120067 LCALL MOUSEFUN ;鼠标功能子程序
0065 015D AJMP MAIN01
;
;-----------------鼠标功能程序------------------
0067 7821 MOUSEFUN: MOV R0, #MOUSEDATA
0069 1202D7 LCALL THREEDMOUSER
006C EF MOV A, R7
006D 7026 JNZ RETOUT
006F 20084E JB MOUSEDATA.0, MAIN021 ;鼠标左键
0072 200951 JB MOUSEDATA.1, MAIN022 ;鼠标右键
0075 200A54 JB MOUSEDATA.2, MAIN023 ;鼠标中键
FUN1:
0078 200C1E JB MOUSEDATA.4,DX ;鼠标水平右处理
007B E525 MOV A,DATA_X
007D 2522 ADD A,MOUSEDATA+1
007F F525 MOV DATA_X,A
0081 200D22 DDY: JB MOUSEDATA.5,DY ;鼠标竖直前处理
0084 E526 MOV A,DATA_Y
0086 2523 ADD A,MOUSEDATA+2
0088 F526 MOV DATA_Y,A
008A E524 DDZ: MOV A,MOUSEDATA+3 ;鼠标滚轮处理
008C 20E324 JB ACC.3,DZ
008F 5407 ANL A,#07H ;滚轮数据加0-7
0091 2527 ADD A,DATA_Z
0093 F527 MOV DATA_Z,A
0095 1200D2 RETOUT: LCALL UPLCD
0098 22 RET
;
0099 E522 DX: MOV A,MOUSEDATA+1 ;鼠标水平左处理
009B F4 CPL A
009C 2401 ADD A,#01H
009E C525 XCH A,DATA_X
00A0 9525 SUBB A,DATA_X
00A2 F525 MOV DATA_X,A
00A4 0181 AJMP DDY
E:\楼然苗\应用源程序\PS2论文2\论文程序\鼠标.ASM
页 3
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
00A6 E523 DY: MOV A,MOUSEDATA+2 ;鼠标竖直后处理
00A8 F4 CPL A
00A9 2401 ADD A,#01H
00AB C526 XCH A,DATA_Y
00AD 9526 SUBB A,DATA_Y
00AF F526 MOV DATA_Y,A
00B1 018A AJMP DDZ
00B3 F4 DZ: CPL A
00B4 2401 ADD A,#01H
00B6 540F ANL A,#0FH ;滚轮数据减1-8
00B8 C527 XCH A,DATA_Z
00BA 9527 SUBB A,DATA_Z
00BC F527 MOV DATA_Z,A
00BE 0195 AJMP RETOUT
;
00C0 00 MAIN021: NOP ;鼠标左键功能
00C1 B2B4 CPL LAMP1 ;小灯亮灭操作
00C3 020078 LJMP FUN1
00C6 00 MAIN022: NOP ;鼠标右键功能
00C7 B2B3 CPL LAMP2 ;小灯亮灭操作
00C9 020078 LJMP FUN1
00CC 00 MAIN023: NOP ;鼠标中键功能
00CD B282 CPL BEEP ;蜂呜器操作
00CF 020078 LJMP FUN1
;
;
00D2 E527 UPLCD: MOV A,DATA_Z ;处理滚轮数据显示
00D4 1200F1 LCALL BCD ;十进制数分离
00D7 7484 MOV A,#84H ;显示在液晶的第一行第5个汉字位置
00D9 120422 LCALL DATAUP ;送LCD显示
00DC E525 MOV A,DATA_X ;处理X坐标数据
00DE 1200F1 LCALL BCD ;
00E1 7491 MOV A,#91H ;显示在第二行第2个汉字位置
00E3 120422 LCALL DATAUP
00E6 E526 MOV A,DATA_Y ;处理Y坐标数据
00E8 1200F1 LCALL BCD
00EB 7494 MOV A,#94H ;显示在第二行第5个汉字位置
00ED 120422 LCALL DATAUP
00F0 22 RET
;
00F1 75F064 BCD: MOV B,#100
00F4 84 DIV AB
00F5 F540 MOV DISDATA,A ;百位数
00F7 E5F0 MOV A,B
00F9 75F00A MOV B,#10
00FC 84 DIV AB
00FD F541 MOV DISDATA+1,A ;十位数
00FF 85F042 MOV DISDATA+2,B ;个位数
E:\楼然苗\应用源程序\PS2论文2\论文程序\鼠标.ASM
页 4
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0102 22 RET
;-----------------------------------------------
; PS/2 3D鼠标初始化程序
; 返回值R7:0成功
;-----------------------------------------------
MSBYTEWAITTIMEA EQU 04H
MSBYTEWAITTIMEB EQU 0EH
MSBYTEWAITTIMEC EQU 040H
PS2_3DMOUSEINI:
0103 C0D0 PUSH PSW
0105 C0E0 PUSH ACC
0107 ED MOV A, R5
0108 C0E0 PUSH ACC
010A EE MOV A, R6
010B C0E0 PUSH ACC
010D 7FFF MOV R7, #0FFH ;复位命令
010F 120325 LCALL PS2H2DSEND
0112 EF MOV A, R7
0113 700F JNZ PS23DMS11O ;PS/2通信不成功
0115 7D04 MOV R5, #MSBYTEWAITTIMEA
0117 7E0E MOV R6, #MSBYTEWAITTIMEB
0119 7F40 MOV R7, #MSBYTEWAITTIMEC
011B 308109 PS23DMSI11: JNB PS2CLK, PS23DMSI12
011E DFFB DJNZ R7, PS23DMSI11
0120 DEF9 DJNZ R6, PS23DMSI11
0122 DDF7 DJNZ R5, PS23DMSI11
0124 0202CA PS23DMS11O: LJMP MOUSE3DOUT
0127 12039F PS23DMSI12: LCALL PS2D2HRECEIVE
012A 7D04 MOV R5, #MSBYTEWAITTIMEA
012C 7E0E MOV R6, #MSBYTEWAITTIMEB
012E 7F40 MOV R7, #MSBYTEWAITTIMEC
0130 308109 PS23DMSI14: JNB PS2CLK, PS23DMSI15
0133 DFFB DJNZ R7, PS23DMSI14
0135 DEF9 DJNZ R6, PS23DMSI14
0137 DDF7 DJNZ R5, PS23DMSI14
0139 0202CA LJMP MOUSE3DOUT
013C 12039F PS23DMSI15: LCALL PS2D2HRECEIVE
013F 7D04 MOV R5, #MSBYTEWAITTIMEA
0141 7E0E MOV R6, #MSBYTEWAITTIMEB
0143 7F40 MOV R7, #MSBYTEWAITTIMEC
0145 308109 PS23DMSI16: JNB PS2CLK, PS23DMSI17
0148 DFFB DJNZ R7, PS23DMSI16
014A DEF9 DJNZ R6, PS23DMSI16
014C DDF7 DJNZ R5, PS23DMSI16
014E 0202CA LJMP MOUSE3DOUT
0151 12039F PS23DMSI17: LCALL PS2D2HRECEIVE
0154 EF MOV A, R7
0155 7014 JNZ PS23DMS21O ;检查鼠标ID
E:\楼然苗\应用源程序\PS2论文2\论文程序\鼠标.ASM
页 5
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
0157 7FF3 MOV R7, #0F3H ;Set Sample Rate命令
0159 120325 LCALL PS2H2DSEND
015C 7D04 MOV R5, #MSBYTEWAITTIMEA
015E 7E0E MOV R6, #MSBYTEWAITTIMEB
0160 7F40 MOV R7, #MSBYTEWAITTIMEC
0162 308109 PS23DMSI21: JNB PS2CLK, PS23DMSI22
0165 DFFB DJNZ R7, PS23DMSI21
0167 DEF9 DJNZ R6, PS23DMSI21
0169 DDF7 DJNZ R5, PS23DMSI21
016B 0202CA PS23DMS21O: LJMP MOUSE3DOUT
016E 12039F PS23DMSI22: LCALL PS2D2HRECEIVE
0171 7FC8 MOV R7, #0C8H ;200
0173 120325 LCALL PS2H2DSEND
0176 7D04 MOV R5, #MSBYTEWAITTIMEA
0178 7E0E MOV R6, #MSBYTEWAITTIMEB
017A 7F40 MOV R7, #MSBYTEWAITTIMEC
017C 308109 PS23DMSI31: JNB PS2CLK, PS23DMSI32
017F DFFB DJNZ R7, PS23DMSI31
0181 DEF9 DJNZ R6, PS23DMSI31
0183 DDF7 DJNZ R5, PS23DMSI31
0185 0202CA PS23DMS31O: LJMP MOUSE3DOUT
0188 12039F PS23DMSI32: LCALL PS2D2HRECEIVE
018B 7FF3 MOV R7, #0F3H ;Set Sample Rate命令
018D 120325 LCALL PS2H2DSEND
0190 7D04 MOV R5, #MSBYTEWAITTIMEA
0192 7E0E MOV R6, #MSBYTEWAITTIMEB
0194 7F40 MOV R7, #MSBYTEWAITTIMEC
0196 308109 PS23DMSI41: JNB PS2CLK, PS23DMSI42
0199 DFFB DJNZ R7, PS23DMSI41
019B DEF9 DJNZ R6, PS23DMSI41
019D DDF7 DJNZ R5, PS23DMSI41
019F 0202CA PS23DMS41O: LJMP MOUSE3DOUT
01A2 12039F PS23DMSI42: LCALL PS2D2HRECEIVE
01A5 7F64 MOV R7, #064H ;100
01A7 120325 LCALL PS2H2DSEND
01AA 7D04 MOV R5, #MSBYTEWAITTIMEA
01AC 7E0E MOV R6, #MSBYTEWAITTIMEB
01AE 7F40 MOV R7, #MSBYTEWAITTIMEC
01B0 308109 PS23DMSI51: JNB PS2CLK, PS23DMSI52
01B3 DFFB DJNZ R7, PS23DMSI51
01B5 DEF9 DJNZ R6, PS23DMSI51
01B7 DDF7 DJNZ R5, PS23DMSI51
01B9 0202CA PS23DMS51O: LJMP MOUSE3DOUT
01BC 12039F PS23DMSI52: LCALL PS2D2HRECEIVE
01BF 7FF3 MOV R7, #0F3H ;Set Sample Rate命令
01C1 120325 LCALL PS2H2DSEND
01C4 7D04 MOV R5, #MSBYTEWAITTIMEA
01C6 7E0E MOV R6, #MSBYTEWAITTIMEB
E:\楼然苗\应用源程序\PS2论文2\论文程序\鼠标.ASM
页 6
12-16-05
15:46:38
伟福汇编器 V5.00 Copyright (c) 1989, 2001 by CHY
地址 机器码 源程序
01C8 7F40 MOV R7, #MSBYTEWAITTIMEC
01CA 308109 PS23DMSI61: JNB PS2CLK, PS23DMSI62
01CD DFFB DJNZ R7, PS23DMSI61
01CF DEF9 DJNZ R6, PS23DMSI61
01D1 DDF7 DJNZ R5, PS23DMSI61
01D3 0202CA PS23DMS61O: LJMP MOUSE3DOUT
01D6 12039F PS23DMSI62: LCALL PS2D2HRECEIVE
01D9 7F50 MOV R7, #050H ;80
01DB 120325 LCALL PS2H2DSEND
01DE 7D04 MOV R5, #MSBYTEWAITTIMEA
01E0 7E0E MOV R6, #MSBYTEWAITTIMEB
01E2 7F40 MOV R7, #MSBYTEWAITTIMEC
01E4 308109 PS23DMSI71: JNB PS2CLK, PS23DMSI72
01E7 DFFB DJNZ R7, PS23DMSI71
01E9 DEF9 DJNZ R6, PS23DMSI71
01EB DDF7 DJNZ R5, PS23DMSI71
01ED 0202CA PS23DMS71O: LJMP MOUSE3DOUT
01F0 12039F PS23DMSI72: LCALL PS2D2HRECEIVE
01F3 7FF2 MOV R7, #0F2H ;Read Device Type命令
01F5 120325 LCALL PS2H2DSEND
01F8 7D04 MOV R5, #MSBYTEWAITTIMEA
01FA 7E0E MOV R6, #MSBYTEWAITTIMEB
01FC 7F40 MOV R7, #MSBYTEWAITTIMEC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -