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

📄 k1-k4-test.lst

📁 单片机中LED显示/数码管显示/键盘控制/蜂鸣器输出/中断应用/定时器和计数器/串口通信/键控看门狗/数据交换
💻 LST
字号:
A51 MACRO ASSEMBLER  K1_K4_TEST                                                           12/21/2006 15:16:33 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN K1-K4-TEST.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE K1-K4-TEST.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************
                       2     ;*                                                                  *
                       3     ;* ME500单片机开发系统演示程序 -  按键扫描程序                      *
                       4     ;*                                                                  *
                       5     ;* 作者:  伟纳电子 - Freeman                                        *
                       6     ;* 邮箱:  freeman@willar.com                                        *
                       7     ;* 作者: gguoqing (Email: gguoqing@willar.com)                     *
                       8     ;* 日期:  2004-1-5                                                  *
                       9     ;*                                                                  *
                      10     ;* 改编: gguoqing                                                  * 
                      11     ;* 版本: V1.0 (2006/11/20)                                         *
                      12     ;* 作者: gguoqing (Email: gguoqing@willar.com)                     *
                      13     ;* 时间: 2006/10/15                                                *
                      14     ;*                                                                  *
                      15     ;*【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
                      16     ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
                      17     ;*                                                                  *
                      18     ;********************************************************************
                      19     ;*                                                                  *
                      20     ;* 描述:                                                            *
                      21     ;*       按键扫描程序                                               *
                      22     ;*       上电时, 点亮P00口和P20口的LED                              *
                      23     ;*       按下K1时, P0口LED向右移一位                                *
                      24     ;*       按下K2时, P0口LED向左移一位                                *
                      25     ;*       按下K1时, P2口LED向右移一位                                *
                      26     ;*       按下K2时, P2口LED向左移一位                                *
                      27     ;*                                                                  *
                      28     ;********************************************************************
                      29     
  0040                30            KEY_S  EQU  40H
  0041                31            KEY_V  EQU  41H
                      32     
  0094                33            K1  BIT  P1.4            ; 
  0095                34            K2  BIT  P1.5            ; 
  0096                35            K3  BIT  P1.6
  0097                36            K4  BIT  P1.7
                      37     
0000                  38            ORG  0000H
0000 802E             39            JMP  MAIN
0030                  40            ORG  0030H
                      41     
                      42     ;**********************************************************
                      43     
                      44     ; 主程序
                      45     
                      46     ;**********************************************************     
                      47     
0030                  48     MAIN:
0030 758160           49             MOV     SP,#60H         ; 设置栈指针
0033 7580FE           50             MOV     P0,#0FEH        ; 初始点亮LED P00
0036 75A0FE           51             MOV     P2,#0FEH        ; 初始点亮LED P20
0039 75410F           52             MOV     KEY_V,#0FH      ; 初始键值
                      53     
003C                  54     KEY_CHKSW:                      ; 循环检测按键是否按下                                  
003C 1157             55             ACALL   SCAN_KEY        ; 输入按键状态
003E F540             56             MOV     KEY_S,A
0040 6541             57             XRL     A,KEY_V         ; 检查按键值是否改变
0042 60F8             58             JZ      KEY_CHKSW       ; 若无键被按,则跳回KEY_CHKSW
A51 MACRO ASSEMBLER  K1_K4_TEST                                                           12/21/2006 15:16:33 PAGE     2

                      59             
0044 7F0A             60             MOV     R7,#10          ; 延时10ms
0046 1190             61             ACALL   DELAYMS         ; 延时去抖
0048 1157             62             ACALL   SCAN_KEY        ; 再次检查按键值
004A F540             63             MOV     KEY_S,A
004C 6541             64             XRL     A,KEY_V
004E 60EC             65             JZ      KEY_CHKSW
                      66             
0050 854041           67             MOV     KEY_V,KEY_S     ; 保存按键状态
0053 1169             68             ACALL   PROC_KEY                ;
0055 80E5             69             SJMP    KEY_CHKSW
                      70     
                      71     ;*********************************************************
                      72     
                      73     ; 扫描按键子程序
                      74     
                      75     ; 传入参数: 无
                      76     ; 返回值:   A --- 按键状态
                      77     
                      78     ;*********************************************************
0057                  79     SCAN_KEY:                               
0057 E4               80             CLR  A
0058 A294             81             MOV  C,K1
005A 92E0             82             MOV  ACC.0,C
005C A295             83             MOV  C,K2
005E 92E1             84             MOV  ACC.1,C
0060 A296             85             MOV  C,K3
0062 92E2             86             MOV  ACC.2,C
0064 A297             87             MOV  C,K4
0066 92E3             88             MOV  ACC.3,C
0068 22               89             RET
                      90     
                      91     ;*********************************************************
                      92     
                      93     ; 按键处理子程序
                      94     
                      95     ; 传入参数: KEY_V --- 按键值
                      96     ; 返回值:   无
                      97     
                      98     ;*********************************************************      
0069                  99     PROC_KEY:
0069 E541            100             MOV     A,KEY_V
006B 30E00A          101             JNB     ACC.0,PROC_K1
006E 30E10D          102             JNB     ACC.1,PROC_K2
0071 30E210          103             JNB     ACC.2,PROC_K3
0074 30E313          104             JNB     ACC.3,PROC_K4
0077 22              105             RET
                     106             
0078                 107     PROC_K1:                                ; 按键K1处理程序
0078 E580            108             MOV     A,P0                    ; 右移
007A 03              109             RR      A
007B F580            110             MOV     P0,A
007D 22              111             RET
                     112             
007E                 113     PROC_K2:                                ; 按键K2处理程序
007E E580            114             MOV     A,P0                    ; 左移
0080 23              115             RL      A
0081 F580            116             MOV     P0,A     
0083 22              117             RET
0084                 118     PROC_K3:                                ; 按键K3处理程序
0084 E5A0            119             MOV     A,P2                    ; 右移
0086 03              120             RR      A
0087 F5A0            121             MOV     P2,A
0089 22              122             RET
                     123             
008A                 124     PROC_K4:                                ; 按键K4处理程序
A51 MACRO ASSEMBLER  K1_K4_TEST                                                           12/21/2006 15:16:33 PAGE     3

008A E5A0            125             MOV     A,P2                    ; 左移
008C 23              126             RL      A
008D F5A0            127             MOV     P2,A     
008F 22              128             RET
                     129     
                     130     ;*********************************************************
                     131     
                     132     ; 延时子程序
                     133     
                     134     ; 传入参数:R7 --- 延时值(MS) 
                     135     ; 返回值:  无
                     136     ;*********************************************************      
0090                 137     DELAYMS:
                     138     
                     139     
0090 EF              140             MOV     A,R7
0091 6009            141             JZ      END_DLYMS       
0093                 142     DLY_LP1:
0093 7EB9            143             MOV     R6,#185
0095                 144     DLY_LP2:
0095 00              145             NOP
0096 00              146             NOP
0097 00              147             NOP
0098 DEFB            148             DJNZ    R6,DLY_LP2
009A DFF7            149             DJNZ    R7,DLY_LP1
009C                 150     END_DLYMS:
009C 22              151             RET 
                     152             
                     153     ;*********************************************************
                     154             END
A51 MACRO ASSEMBLER  K1_K4_TEST                                                           12/21/2006 15:16:33 PAGE     4

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
DELAYMS. . . . . .  C ADDR   0090H   A   
DLY_LP1. . . . . .  C ADDR   0093H   A   
DLY_LP2. . . . . .  C ADDR   0095H   A   
END_DLYMS. . . . .  C ADDR   009CH   A   
K1 . . . . . . . .  B ADDR   0090H.4 A   
K2 . . . . . . . .  B ADDR   0090H.5 A   
K3 . . . . . . . .  B ADDR   0090H.6 A   
K4 . . . . . . . .  B ADDR   0090H.7 A   
KEY_CHKSW. . . . .  C ADDR   003CH   A   
KEY_S. . . . . . .  N NUMB   0040H   A   
KEY_V. . . . . . .  N NUMB   0041H   A   
MAIN . . . . . . .  C ADDR   0030H   A   
P0 . . . . . . . .  D ADDR   0080H   A   
P1 . . . . . . . .  D ADDR   0090H   A   
P2 . . . . . . . .  D ADDR   00A0H   A   
PROC_K1. . . . . .  C ADDR   0078H   A   
PROC_K2. . . . . .  C ADDR   007EH   A   
PROC_K3. . . . . .  C ADDR   0084H   A   
PROC_K4. . . . . .  C ADDR   008AH   A   
PROC_KEY . . . . .  C ADDR   0069H   A   
SCAN_KEY . . . . .  C ADDR   0057H   A   
SP . . . . . . . .  D ADDR   0081H   A   


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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