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

📄 wl005.lst

📁 周立功的51单片机试验例程,我当年就是靠这个学会单片机的
💻 LST
字号:
A51 MACRO ASSEMBLER  WL005                                                                02/17/2004 12:02:07 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*                                                                              *
                       3     ;*    File       : wl005.asm                                                    *
                       4     ;*    Date       : 2004-1-5                                                     *
                       5     ;*    Version    : 1.0                                                          *
                       6     ;*                                                                              *
                       7     ;*    Author     : Freeman          freeman@willar.com                          *
                       8     ;*    Company    : Willar           www.willar.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
                      21     
----                  22             RSEG    DATA_SEG
0000                  23     KEY_S:  DS      1
0001                  24     KEY_V:  DS      1
                      25     
----                  26             RSEG    STACK_SEG
0000                  27     STACK:  DS      20
                      28     
                      29     
  00B2                30     AN1     BIT     P3.2            ; 
  00B3                31     AN2     BIT     P3.3            ; 
                      32     
                      33     
----                  34             CSEG    AT      0000H
0000 020000   F       35             JMP     MAIN
                      36     
                      37     ;===============================================================================        
----                  38             RSEG    CODE_SEG
0000                  39     MAIN:
0000 758100   F       40             MOV     SP,#(STACK-1)           ; 设置栈指针
0003 7580FE           41             MOV     P0,#0FEH                ; 初始点亮LED P00
0006 750003   F       42             MOV     KEY_V,#03H              ; 初始键值
                      43     
0009                  44     KEY_CHKSW:                              ; 循环检测按键是否按下                             
                                  
0009 1100     F       45             ACALL   SCAN_KEY                ; 输入按键状态
000B F500     F       46             MOV     KEY_S,A
000D 6500     F       47             XRL     A,KEY_V                 ; 检查按键值是否改变
000F 60F8             48             JZ      KEY_CHKSW               ; 若无键被按,则跳回KEY_CHKSW
                      49             
0011 7F0A             50             MOV     R7,#10                  ; 延时10ms
0013 1100     F       51             ACALL   DELAYMS                 ; 延时去抖
0015 1100     F       52             ACALL   SCAN_KEY                ; 再次检查按键值
0017 F500     F       53             MOV     KEY_S,A
0019 6500     F       54             XRL     A,KEY_V
001B 60EC             55             JZ      KEY_CHKSW
                      56             
001D 850000   F       57             MOV     KEY_V,KEY_S             ; 保存按键状态
A51 MACRO ASSEMBLER  WL005                                                                02/17/2004 12:02:07 PAGE     2

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

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    0050H       REL=UNIT
DATA_SEG . . . . .  D SEG    0002H       REL=UNIT
DELAYMS. . . . . .  C ADDR   0043H   R   SEG=CODE_SEG
DLY_LP1. . . . . .  C ADDR   0046H   R   SEG=CODE_SEG
DLY_LP2. . . . . .  C ADDR   0048H   R   SEG=CODE_SEG
END_DLYMS. . . . .  C ADDR   004FH   R   SEG=CODE_SEG
KEY_CHKSW. . . . .  C ADDR   0009H   R   SEG=CODE_SEG
KEY_S. . . . . . .  D ADDR   0000H   R   SEG=DATA_SEG
KEY_V. . . . . . .  D ADDR   0001H   R   SEG=DATA_SEG
MAIN . . . . . . .  C ADDR   0000H   R   SEG=CODE_SEG
P0 . . . . . . . .  D ADDR   0080H   A   
P3 . . . . . . . .  D ADDR   00B0H   A   
PROC_AN1 . . . . .  C ADDR   0037H   R   SEG=CODE_SEG
PROC_AN2 . . . . .  C ADDR   003DH   R   SEG=CODE_SEG
PROC_KEY . . . . .  C ADDR   002EH   R   SEG=CODE_SEG
SCAN_KEY . . . . .  C ADDR   0024H   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 + -