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

📄 ledkey.lst

📁 两个常用的单片机仿真实验板
💻 LST
字号:
A51 MACRO ASSEMBLER  LEDKEY                                                               02/09/2006 13:05:42 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN ledkey.OBJ
ASSEMBLER INVOKED BY: D:\Keil\C51\BIN\A51.EXE ledkey.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

  0000                 1     UpDown BIT 00H ;上下行标志
  0001                 2     StartEnd BIT 01H ;起动及停止标志
  0021                 3     LAMPCODE EQU 21H ;存放流动的数据代码
0000                   4     ORG 0000H
0000 0130              5     AJMP MAIN
0030                   6     ORG 0030H
0030                   7     MAIN:
0030 75815F            8     MOV SP,#5FH
0033 7590FF            9     MOV P1,#0FFH
0036 C200             10     CLR UpDown ;启动时处于向上的状态
0038 C201             11     CLR StartEnd ;启动时处于停止状态
003A 752101           12     MOV LAMPCODE,#01H ;单灯流动的代码
003D 1170             13     LOOP: ACALL KEY ;调用键盘程序
003F 30D502           14     JNB F0,LNEXT ;如果无键按下,则继续
0042 1151             15     ACALL KEYPROC ;否则调用键盘处理程序
0044 1196             16     LNEXT: ACALL LAMP ;调用灯显示程序
0046 013D             17     AJMP LOOP ;反复循环,主程序到此结束
                      18     ;延时程序,键盘处理中调用
0048 7F64             19     DELAY: MOV R7,#100
004A 7E64             20     D1: MOV R6,#100
004C DEFE             21     DJNZ R6,$
004E DFFA             22     DJNZ R7,D1
0050 22               23     RET
0051                  24     KEYPROC:
0051 E5F0             25     MOV A,B ;从B 寄存器中获取键值
0053 20E20B           26     JB ACC.2,KeyStart ;分析键的代码,某位被按下,则该位为1
0056 20E30C           27     JB ACC.3,KeyOver
0059 20E40D           28     JB ACC.4,KeyUp
005C 20E50E           29     JB ACC.5,KeyDown
005F 016F             30     AJMP KEY_RET
0061                  31     KeyStart:
0061 D201             32     SETB StartEnd ;第一个键按下后的处理
0063 016F             33     AJMP KEY_RET
0065                  34     KeyOver:
0065 C201             35     CLR StartEnd ;第二个键按下后的处理
0067 016F             36     AJMP KEY_RET
0069                  37     KeyUp:
0069 D200             38     SETB UpDown ;第三个键按下后的处理
006B 016F             39     AJMP KEY_RET
006D                  40     KeyDown:
006D C200             41     CLR UpDown ;第四个键按下后的处理
006F                  42     KEY_RET:
006F 22               43     RET
0070                  44     KEY:
0070 C2D5             45     CLR F0 ;清F0,表示无键按下。
0072 43B03C           46     ORL P3,#00111100B ;将P3 口的接有键的四位置1
0075 E5B0             47     MOV A,P3 ;取P3 的值
0077 44C3             48     ORL A,#11000011B ;将其余4 位置1
0079 F4               49     CPL A ;取反
007A 60F3             50     JZ KEY_RET ;如果为0 则一定无键按下  
007C 1148             51     CALL DELAY ;否则延时去键抖
007E 43B03C           52     ORL P3,#00111100B
0081 E5B0             53     MOV A,P3
0083 44C3             54     ORL A,#11000011B
0085 F4               55     CPL A
0086 60E7             56     JZ KEY_RET
0088 F5F0             57     MOV B,A ;确实有键按下,将键值存入B 中
008A D2D5             58     SETB F0 ;设置有键按下的标志
A51 MACRO ASSEMBLER  LEDKEY                                                               02/09/2006 13:05:42 PAGE     2

                      59     ;以下的代码是可以被注释掉的,如果去掉注释,就具有判断键是否释放的功能,否则
                      60     ;没有
                      61     ;K_RET: ;ORL P3,#00111100B ;此处循环等待键的释放
                      62     ;MOV A,P3
                      63     ;ORL A,#11000011B
                      64     ;CPL A
                      65     ;JZ K_RET1 ;读取的数据取反后为0 说明键释放了
                      66     ;AJMP K_RET
                      67     ;K_RET1:CALL DELAY ;消除后沿抖动
008C 22               68     RET
008D                  69     D500MS: ;流水灯的延迟时间
008D 7FFF             70     MOV R7,#255
008F 7EFF             71     D51: MOV R6,#255
0091 DEFE             72     DJNZ R6,$
0093 DFFA             73     DJNZ R7,D51
0095 22               74     RET
0096                  75     LAMP:
0096 200105           76     JB StartEnd,LampStart ;如果StartEnd=1,则启动
0099 7590FF           77     MOV P1,#0FFH
009C 01C3             78     AJMP LAMPRET ;否则关闭所有显示,返回
009E                  79     LampStart:
009E 200012           80     JB UpDown,LAMPUP ;如果UpDown=1,则向上流动
00A1 E521             81     MOV A,LAMPCODE
00A3 23               82     RL A ;实际就是左移位而已
00A4 F521             83     MOV LAMPCODE,A
00A6 F590             84     MOV P1,A
00A8 12008D           85     LCALL D500MS
00AB 12008D           86     LCALL D500MS
00AE 12008D           87     LCALL D500MS
00B1 01C3             88     AJMP LAMPRET
00B3                  89     LAMPUP:
00B3 E521             90     MOV A,LAMPCODE
00B5 03               91     RR A ;向下流动实际就是右移
00B6 F521             92     MOV LAMPCODE,A
00B8 F590             93     MOV P1,A
00BA 12008D           94     LCALL D500MS
00BD 12008D           95     LCALL D500MS
00C0 12008D           96     LCALL D500MS
00C3                  97     LAMPRET:
00C3 22               98     RET
                      99     END
A51 MACRO ASSEMBLER  LEDKEY                                                               02/09/2006 13:05:42 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

ACC. . . . . . . .  D ADDR   00E0H   A   
B. . . . . . . . .  D ADDR   00F0H   A   
D1 . . . . . . . .  C ADDR   004AH   A   
D500MS . . . . . .  C ADDR   008DH   A   
D51. . . . . . . .  C ADDR   008FH   A   
DELAY. . . . . . .  C ADDR   0048H   A   
F0 . . . . . . . .  B ADDR   00D0H.5 A   
KEY. . . . . . . .  C ADDR   0070H   A   
KEYDOWN. . . . . .  C ADDR   006DH   A   
KEYOVER. . . . . .  C ADDR   0065H   A   
KEYPROC. . . . . .  C ADDR   0051H   A   
KEYSTART . . . . .  C ADDR   0061H   A   
KEYUP. . . . . . .  C ADDR   0069H   A   
KEY_RET. . . . . .  C ADDR   006FH   A   
LAMP . . . . . . .  C ADDR   0096H   A   
LAMPCODE . . . . .  N NUMB   0021H   A   
LAMPRET. . . . . .  C ADDR   00C3H   A   
LAMPSTART. . . . .  C ADDR   009EH   A   
LAMPUP . . . . . .  C ADDR   00B3H   A   
LNEXT. . . . . . .  C ADDR   0044H   A   
LOOP . . . . . . .  C ADDR   003DH   A   
MAIN . . . . . . .  C ADDR   0030H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
SP . . . . . . . .  D ADDR   0081H   A   
STARTEND . . . . .  B ADDR   0020H.1 A   
UPDOWN . . . . . .  B ADDR   0020H.0 A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -