?? wl012.lst
字號:
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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -