wl012.lst

来自「买板子时赠的实验例子」· LST 代码 · 共 516 行 · 第 1/3 页

LST
516
字号
A51 MACRO ASSEMBLER  WL012                                                                03/29/2005 15:59:05 PAGE     1


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

LOC  OBJ            LINE     SOURCE

                       1     ;********************************************************************************
                       2     ;*  标题:  伟纳电子ME300B单片机开发系统演示程序 - 1602LCD显示秒表               *
                       3     ;*  文件:  WL012.asm                                                            *
                       4     ;*  日期:  2004-1-5                                                             *
                       5     ;*  版本:  1.0                                                                  *
                       6     ;*  作者:  gguoqing                                                             *
                       7     ;*  邮箱:  gguoqing@willar.com                                                  *
                       8     ;*  网站: http://www.willar.com                                                *
                       9     ;********************************************************************************
                      10     ;*  描述:                                                                       *
                      11     ;*          1602LCD显示秒表                                                     *
                      12     ;*          K3 --- 控制按键                                                     *
                      13     ;*                 第一次按下时,开始计时,第二次按下时,暂停计时。               *
                      14     ;*                 第三次按下时,累计计时,第四次按下时,暂停计时。               *
                      15     ;*          K4 --- 清零按键:                                                   *
                      16     ;*                 在任何状态下,按一下K4,均可清零。                           *
                      17     ;*                                                                              *
                      18     ;********************************************************************************
                      19     ;* 【版权】 Copyright(C)伟纳电子 www.willar.com  All Rights Reserved            *
                      20     ;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息!                  *
                      21     ;********************************************************************************
                      22     
                      23     
                      24     ;---------------------------------------
                      25     ;晶振 11.0592M
                      26     ;定时器0,方式1
                      27     ;计时中断程序每隔10ms中断一次
                      28     ;---------------------------------------
  000C                29               TLOW   EQU  0CH     ;定时器初值
  00DC                30               THIGH  EQU  0DCH
                      31     
  0030                32               HOUR   EQU  30H
  0031                33               MIN    EQU  31H
  0032                34               SEC    EQU  32H
  0033                35               SEC0   EQU  33H     ;10ms计数值
  0034                36               KEY_S  EQU  34H     ;为键当前的端口状况
  0035                37               KEY_V  EQU  35H     ;为键上次的端口状况
  0036                38               X      EQU  36H     ;LCD 地址变量
  0037                39               KEY_C  EQU  37H     ;键计数单元
                      40     
  0094                41               K1     EQU  P1.4
  0095                42               K2     EQU  P1.5
  0096                43               K3     EQU  P1.6
  0097                44               K4     EQU  P1.7
                      45     
  00B7                46               BEEP  EQU  P3.7
  00A0                47               RS    EQU  P2.0     ;LCD控制端口定义
  00A1                48               RW    EQU  P2.1
  00A2                49               EN    EQU  P2.2
                      50     
                      51     ;----------------------------------------------------
0000                  52               ORG   0000H
0000 800B             53               JMP  START
000B                  54               ORG  0BH
000B 01CD             55               JMP  T0_INT
                      56     ;----------------------------------------------------
000D 758160           57     START:    MOV  SP,#60H
0010 C2A2             58               CLR  EN
A51 MACRO ASSEMBLER  WL012                                                                03/29/2005 15:59:05 PAGE     2

0012 3159             59               CALL  SET_LCD
0014 11AC             60               CALL  INIT            ;初始化变量
0016 753501           61               MOV  KEY_V,#01H
0019 11C0             62               CALL  INIT_TIMER      ;初始化定时器
001B 5179             63               CALL  MENU
001D 3124             64     LOOP:     CALL   CONV           ;时间计数处理
001F 1132             65               CALL LOOP1
0021 117D             66               CALL  SKEY            ;判是否有键按下
0023 60F8             67               JZ  LOOP              ;无键按下转LOOP
0025 3124             68               CALL   CONV
0027 117D             69               CALL  SKEY
0029 60F2             70               JZ  LOOP
002B 853435           71               MOV  KEY_V,KEY_S      ;交换数据
002E 113A             72               CALL  P_KEY
0030 80EB             73               JMP  LOOP
                      74     ;-----------------------------------------------------
0032 209704           75     LOOP1:    JB  K4,LOOP2         ;判清零键是否按下
0035 5111             76               CALL  BZ
0037 80D4             77               JMP  START
0039 22               78     LOOP2:    RET
                      79     ;-----------------------------------------------------
003A                  80     P_KEY:                          ;
003A E535             81               MOV  A,KEY_V
003C 20E02F           82               JB  ACC.0,P_KEY3
003F 0537             83               INC  KEY_C
0041 E537             84               MOV  A,KEY_C          ;K3键是否第一次按下?
0043 B4010A           85               CJNE  A,#01H,P_KEY1
0046 900235           86               MOV    DPTR,#MADJ    ;显示执行信息
0049 7401             87               MOV    A,#1          ;
004B 318E             88               CALL   LCD_PRINT
004D D28C             89               SETB  TR0            ;启动中断
004F 22               90               RET
0050                  91     P_KEY1:                          ;K3键是否第二次按下?
0050 E537             92               MOV   A,KEY_C
0052 B4020A           93               CJNE  A,#02H,P_KEY2
0055 900246           94               MOV   DPTR,#MADJ1      ;显示执行信息
0058 7401             95               MOV   A,#1
005A 318E             96               CALL  LCD_PRINT
005C C28C             97               CLR   TR0              ;停止中断
005E 22               98               RET
005F                  99     P_KEY2:                          ;K3键是否第三次按下?
005F E537            100               MOV   A,KEY_C
0061 B4030A          101               CJNE  A,#03H,P_KEY3
0064 900257          102               MOV   DPTR,#MADJ2      ;显示执行信息
0067 7401            103               MOV   A,#1
0069 318E            104               CALL  LCD_PRINT
006B D28C            105               SETB   TR0             ;启动中断
006D 22              106               RET
006E                 107     P_KEY3:                          ;K3键是否第四次按下?
006E E537            108               MOV   A,KEY_C
0070 B40409          109               CJNE  A,#04H,P_KEY4
0073 900268          110               MOV   DPTR,#MADJ3      ;显示执行信息
0076 7401            111               MOV   A,#1
0078 318E            112               CALL  LCD_PRINT
007A C28C            113               CLR   TR0              ;启动中断
007C 22              114     P_KEY4:   RET
                     115     ;-------------------------------------------------------
007D E4              116     SKEY:     CLR  A                ;判是否有键按下子程序
007E F534            117               MOV  KEY_S,A
0080 A296            118               MOV  C,K3
0082 33              119               RLC  A
0083 4234            120               ORL  KEY_S,A
0085 E534            121               MOV  A,KEY_S
0087 6535            122               XRL  A,KEY_V          ;有键按下,A 中内容不为零
0089 22              123               RET
                     124     ;--------------------------------------------------------
A51 MACRO ASSEMBLER  WL012                                                                03/29/2005 15:59:05 PAGE     3

008A 20202020        125     LMESS1:  DB  "                ",0  ;LCD 第一行显示消息
008E 20202020                
0092 20202020                
0096 20202020                
009A 00                      
009B 54494D45        126     LMESS2:  DB  "TIME            ",0  ;LCD 第二行显示消息
009F 20202020                
00A3 20202020                
00A7 20202020                
00AB 00                      
                     127     ;--------------------------------------------------------
00AC E4              128     INIT:    CLR  A
00AD F537            129              MOV  KEY_C,A         ;初始化控制变量
00AF F533            130              MOV  SEC0,A
00B1 F532            131              MOV  SEC,A
00B3 F531            132              MOV  MIN,A
00B5 F530            133              MOV  HOUR,A
00B7 F534            134              MOV  KEY_S,A
00B9 F535            135              MOV  KEY_V,A
00BB D2B7            136              SETB  BEEP
00BD C28C            137              CLR  TR0
00BF 22              138              RET
                     139     ;------------------------------------------------------------
00C0                 140     INIT_TIMER:                     ;初始化定时器接口
00C0 758901          141              MOV  TMOD,#01H         ;设置定时器0 工作模式为模式1
00C3 75A882          142              MOV  IE,  #82H         ;启用定时器0 中断产生
00C6 758A0C          143              MOV  TL0,#TLOW
00C9 758CDC          144              MOV  TH0,#THIGH
00CC 22              145              RET
                     146     ;-------------------------------------------------------------
00CD                 147     T0_INT:
00CD C0E0            148              PUSH  ACC           ;定时器0计时中断程序
00CF 758A0C          149              MOV  TL0,#TLOW
00D2 758CDC          150              MOV  TH0,#THIGH
00D5 0533            151              INC  SEC0

⌨️ 快捷键说明

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