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

📄 鼠标.lst

📁 鼠标应用程序示范 MCU AT89S51 XAL 12MHz 本程序可以实现鼠标的功能,并将位置显示在LCD上
💻 LST
📖 第 1 页 / 共 4 页
字号:
                                                                    页     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 + -