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

📄 up51s005.lst

📁 此代码为按键扫描程序
💻 LST
字号:
A51 MACRO ASSEMBLER  UP51S005                                                             12/12/2004 22:35:46 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN up51s005.OBJ
ASSEMBLER INVOKED BY: C:\KEIL\C51\BIN\A51.EXE up51s005.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;/*******************************************************************************
                       2     ;*                                                                              *
                       3     ;*    File       : uP51s005.asm                                                 *
                       4     ;*    Date       : 2004-9-5                                                     *
                       5     ;*    Version    : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;*    Author     : kevin           kevin@dz51.com                               *
                       8     ;*    Company    : Http://www.dz51.com                                          *
                       9     ;*                                                                              *
                      10     ;********************************************************************************
                      11     ;*    Descriptoon:                                                              *
                      12     ;*                按键演示程序                                                  *
                      13     ;*                按下AN1,单灯右移                                              *
                      14     ;*                按下AN2,单灯左移                                              *
                      15     ;*                                                                              *
                      16     ;********************************************************************************
                      17     
                      18     CODE_SEG        SEGMENT CODE
                      19     DATA_SEG        SEGMENT DATA
                      20     STACK_SEG       SEGMENT IDATA
  0030                21     leddata data 30H
                      22     
                      23     
----                  24             RSEG    DATA_SEG
0000                  25     KEY_S:  DS      1
0001                  26     KEY_V:  DS      1
                      27     
----                  28             RSEG    STACK_SEG
0000                  29     STACK:  DS      20
                      30     
                      31     
  00B2                32     AN1     BIT     P3.2            ; 
  00B3                33     AN2     BIT     P3.3            ; 
                      34     
                      35     
----                  36             CSEG    AT      0000H
0000 020000   F       37             JMP     MAIN
                      38     
                      39     ;===============================================================================        
----                  40             RSEG    CODE_SEG
0000                  41     MAIN:
0000 758100   F       42             MOV     SP,#(STACK-1)           ; 设置栈指针    
0003 7530FE           43             MOV   leddata,#0FEH             ; 初始点亮LED P00
0006 853080           44             MOV     P0,leddata              ; 初始点亮LED P00
0009 750003   F       45             MOV     KEY_V,#03H              ; 初始键值
                      46     
000C                  47     KEY_CHKSW:                              ; 循环检测按键是否按下                             
                                  
000C 1100     F       48             ACALL   SCAN_KEY                ; 输入按键状态
000E F500     F       49             MOV     KEY_S,A
0010 6500     F       50             XRL     A,KEY_V                 ; 检查按键值是否改变
0012 60F8             51             JZ      KEY_CHKSW               ; 若无键被按,则跳回KEY_CHKSW
                      52             
0014 7F0A             53             MOV     R7,#10                  ; 延时10ms
0016 1100     F       54             ACALL   DELAYMS                 ; 延时去抖
0018 1100     F       55             ACALL   SCAN_KEY                ; 再次检查按键值
001A F500     F       56             MOV     KEY_S,A
001C 6500     F       57             XRL     A,KEY_V
A51 MACRO ASSEMBLER  UP51S005                                                             12/12/2004 22:35:46 PAGE     2

001E 60EC             58             JZ      KEY_CHKSW
                      59             
0020 850000   F       60             MOV     KEY_V,KEY_S             ; 保存按键状态
0023 1100     F       61             ACALL   PROC_KEY                ;
0025 80E5             62             SJMP    KEY_CHKSW
                      63     ;===============================================================================
0027                  64     SCAN_KEY:                               
                      65     ; 扫描按键
                      66     ; 传入参数:无
                      67     ; 返回值:A --- 按键状态
                      68     
0027 E4               69             CLR     A
0028 A2B2             70             MOV     C,AN1
002A 92E0             71             MOV     ACC.0,C
002C A2B3             72             MOV     C,AN2
002E 92E1             73             MOV     ACC.1,C
0030 22               74             RET
                      75     
                      76     ;===============================================================================        
0031                  77     PROC_KEY:
                      78     ; 按键处理子程序
                      79     ; 传入参数: KEY_V --- 按键值
                      80     ; 返回值: 无
                      81     
0031 E500     F       82             MOV     A,KEY_V
0033 30E004           83             JNB     ACC.0,PROC_AN1
0036 30E10A           84             JNB     ACC.1,PROC_AN2
0039 22               85             RET
                      86             
003A                  87     PROC_AN1:                               ; 按键AN1处理程序
003A E530             88             MOV     A,leddata                       ; 右移
003C 03               89             RR      A
003D F530             90             MOV     leddata,A
003F 853080           91             MOV P0,leddata
0042 22               92             RET
                      93             
0043                  94     PROC_AN2:                               ; 按键AN2处理程序
0043 E530             95             MOV     A,leddata               ; 左移
0045 23               96             RL      A
0046 F530             97             MOV     leddata,A        
0048 853080           98             MOV  P0,leddata
004B 22               99             RET
                     100     
                     101     ;===============================================================================        
                     102     
004C                 103     DELAYMS:
                     104     ; 延时子程序
                     105     ; 传入参数:R7 --- 延时值(MS) 
                     106     ; 返回值:无
                     107     
004C EF              108             MOV     A,R7
004D 6009            109             JZ      END_DLYMS       
004F                 110     DLY_LP1:
004F 7EB9            111             MOV     R6,#185
0051                 112     DLY_LP2:
0051 00              113             NOP
0052 00              114             NOP
0053 00              115             NOP
0054 DEFB            116             DJNZ    R6,DLY_LP2
0056 DFF7            117             DJNZ    R7,DLY_LP1
                     118     
0058                 119     END_DLYMS:
0058 22              120             RET 
                     121             
                     122     ; END OF DELAYMS
                     123             
A51 MACRO ASSEMBLER  UP51S005                                                             12/12/2004 22:35:46 PAGE     3

                     124             END
A51 MACRO ASSEMBLER  UP51S005                                                             12/12/2004 22:35:46 PAGE     4

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


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

ACC. . . . . . . .  D ADDR   00E0H   A   
AN1. . . . . . . .  B ADDR   00B0H.2 A   
AN2. . . . . . . .  B ADDR   00B0H.3 A   
CODE_SEG . . . . .  C SEG    0059H       REL=UNIT
DATA_SEG . . . . .  D SEG    0002H       REL=UNIT
DELAYMS. . . . . .  C ADDR   004CH   R   SEG=CODE_SEG
DLY_LP1. . . . . .  C ADDR   004FH   R   SEG=CODE_SEG
DLY_LP2. . . . . .  C ADDR   0051H   R   SEG=CODE_SEG
END_DLYMS. . . . .  C ADDR   0058H   R   SEG=CODE_SEG
KEY_CHKSW. . . . .  C ADDR   000CH   R   SEG=CODE_SEG
KEY_S. . . . . . .  D ADDR   0000H   R   SEG=DATA_SEG
KEY_V. . . . . . .  D ADDR   0001H   R   SEG=DATA_SEG
LEDDATA. . . . . .  D ADDR   0030H   A   
MAIN . . . . . . .  C ADDR   0000H   R   SEG=CODE_SEG
P0 . . . . . . . .  D ADDR   0080H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PROC_AN1 . . . . .  C ADDR   003AH   R   SEG=CODE_SEG
PROC_AN2 . . . . .  C ADDR   0043H   R   SEG=CODE_SEG
PROC_KEY . . . . .  C ADDR   0031H   R   SEG=CODE_SEG
SCAN_KEY . . . . .  C ADDR   0027H   R   SEG=CODE_SEG
SP . . . . . . . .  D ADDR   0081H   A   
STACK. . . . . . .  I ADDR   0000H   R   SEG=STACK_SEG
STACK_SEG. . . . .  I SEG    0014H       REL=UNIT


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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