📄 text2.lst
字号:
A51 MACRO ASSEMBLER TEXT2 12/26/2008 21:32:05 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN Text2.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Text2.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2 ;********************************************************************************
00A0 3 RS EQU p2.0;液晶接口的定义
00A1 4 RW EQU p2.1;
00A2 5 E EQU p2.2;
0031 6 HOUR EQU 31H;小时定义
0032 7 MIN EQU 32H;分定义
0033 8 SEC EQU 33H;秒定义
0035 9 X EQU 35H;LCD存放地址
00A4 10 K1 BIT P2.4
00A5 11 K2 BIT P2.5
00A6 12 K3 BIT P2.6
00A7 13 K4 BIT P2.7
00B7 14 WLED EQU P3.7;LED控制位
15 ;=====================================================================================
0000 16 org 0000h; 原程序其始地址
0000 020025 17 LJMP MAIN
000B 18 ORG 000BH ; TO定时器的中断入口地址
000B 0201F5 19 LJMP INTT0
20 ;=======================================================================================
21 ;LCD初始化设置
22 ;================================================================
0025 23 org 0025h ;主程序入口地址
0025 758170 24 MAIN: MOV SP ,#70H;设置堆栈
0028 758001 25 MOV p0,#01H ;清屏
002B 1180 26 CALL ENABLE ; 写入指令
002D 758038 27 MOV p0,#38H ;功能设置
0030 1180 28 CALL ENABLE
0032 75800C 29 MOV p0,#0CH ;显示开关控制
0035 1180 30 CALL ENABLE
0037 758006 31 MOV p0,#06H ;+1;AC地址计数器自动加一
003A 1180 32 CALL ENABLE
33 ;=======================================================================================
34 ;LCD查表显示和定时器初始化
35 ;=======================================================================================
003C 36 SET_LCD:
003C 9000BF 37 MOV DPTR,#TABLE1; 查表显示1
003F 753001 38 MOV 30H,#1
0042 12008B 39 LCALL WRITE1; LCD显示输出
0045 9000D0 40 MOV DPTR,#TABLE2; 查表显示2
0048 753002 41 MOV 30H,#2
004B 12008B 42 LCALL WRITE1 ;LCD显示输出
004E 1200FB 43 LCALL INTT ;变量初始化
0051 1201E6 44 LCALL INTT_TIME ;TO定时器初始化
45 ;MOV p0,#80H;第一行的开始位置
46 ;cALL ENABLE
47 ;MOV DPTR,#TABLE1;显示
48 ;CALL WRITE1;到TABLE1取码
49 ;MOV p0,#0C0H;第二行的位置
50 ;CALL ENABLE
51 ;MOV DPTR,#TABLE2;显示
52 ;CALL WRITE1;到TABLE2 取码
53 ;MOV p0,#0C2H;光标定位0C0H
54 ;CALL ENABLE
0054 80FE 55 AA:SJMP AA ;等待中断
56 ;==========================================================================================
=
A51 MACRO ASSEMBLER TEXT2 12/26/2008 21:32:05 PAGE 2
57 ;键盘扫描
58 ;====================================================================================
0056 20A414 59 LOP: JB K1,L1 ;键盘扫描子程序
0059 120246 60 lcall BUSY ;是否为忙的子程序
005C 1200ED 61 LCALL LED_BL ;LED闪烁表示工作状态
005F 9000DD 62 MOV DPTR,#MADJ ;查表显示
0062 753001 63 MOV 30H,#1
0065 12008B 64 LCALL WRITE1
0068 120105 65 LCALL SET_TIME; 设置时间
66 ; INC HOUR
67 ;MOV 50H,HOUR
68 ;MOV A,50H
69 ;CJNE A,#24,LOP1
70 ;CLR HOUR
006B 80E9 71 Jmp LOP
006D 20A502 72 L1: JB K2,L2
73 ;INC MIN
74 ;MOV 51H,MIN
75 ;MOV A,MIN
76 ;CJNE A,#60,LOP1
77 ;CLR MIN
0070 80E4 78 JMP LOP
0072 20A605 79 L2: JB K3,L3 ;K3键保留未做任何动作
0075 30A6FD 80 JNB K3,$
81 ;INC SEC
82 ;MOV 52H,SEC
83 ;MOV A,52H
84 ;CJNE A,#60H,LOP1
85 ;CLR SEC
0078 80DC 86 JMP LOP
007A 20A702 87 L3: JB K4,L4
007D 80D7 88 JMP LOP
007F 89 L4: ;JMP LOP1
007F 22 90 LOP1: RET
91 ;==========================================================================================
======
92 ;写入指令
93 ;============================================================
0080 C2A0 94 ENABLE: CLR RS ;送命令 ;写入指令
0082 C2A1 95 CLR RW ;写入数据
0084 C2A2 96 CLR E ;写入数据
0086 11B6 97 CALL DELAY
0088 D2A2 98 SETB E
008A 22 99 RET
100 ;==========================================================================================
======
101 ;查表输出显示
102 ;=============================================================================
008B E530 103 WRITE1: MOV A,30H ;LCD二行输出的查表显示
008D B40108 104 CJNE A,#1,LINE2
0090 758080 105 LINE1: MOV P0,#80H ;LCD第一行显示的首地址
0093 120080 106 LCALL ENABLE ; 写入指令
0096 019E 107 AJMP XX
0098 7580C0 108 LINE2: MOV P0,#0C0H ;LCD第二行显示的首地址
009B 120080 109 LCALL ENABLE ; 写入指令
009E 7900 110 XX: MOV R1,#00H ;显示table中的值
00A0 E9 111 A1: MOV A,R1;到table取码
00A1 93 112 MOVC A,@A+DPTR
00A2 11A9 113 call wRITE2 ;显示到lcd
00A4 09 114 INC R1
00A5 B400F8 115 CJNE A,#00H,A1 ;是否到00h
00A8 22 116 RET
00A9 F580 117 WRITE2: MOV p0,A ;显示
00AB D2A0 118 SETB RS ;写入数据
00AD C2A1 119 CLR RW ;写入数据
00AF C2A2 120 CLR E ;写入数据
A51 MACRO ASSEMBLER TEXT2 12/26/2008 21:32:05 PAGE 3
00B1 11B6 121 CALL DELAY ;短延时产生户用信号
00B3 D2A2 122 SETB E ;写入地址
00B5 22 123 RET
124 ;==========================================================================================
=========
00B6 7B05 125 DELAY: MOV R3,#5; 2.5MS延时
00B8 7FFF 126 D1: MOV R7,#0FFH
00BA DFFE 127 DJNZ R7,$
00BC DBFA 128 DJNZ R3,D1
00BE 22 129 RET
130 ;==========================================================================================
=======
00BF 20434849 131 table1: db" CHINA--DA SHUN ",00H
00C3 4E412D2D
00C7 44412053
00CB 48554E20
00CF 00
00D0 5A484520 132 table2: db"ZHE BIAN JI ",00H
00D4 4249414E
00D8 204A4920
00DC 00
00DD 4B323A48 133 MADJ: DB"K2:H K3:M K4:OK",00H
00E1 204B333A
00E5 4D204B34
00E9 3A4F4B00
134 ;==========================================================================================
========
135 ;工作灯闪烁表示LCD程序运行
136 ;===========================================================================
00ED 7C04 137 LED_BL: MOV R4,#4 ; LED闪烁四次
00EF B2B7 138 LEO: CPL WLED
00F1 7D64 139 MOV R5,#100;MOV R5,#100
00F3 1200B6 140 LEO1: LCALL DELAY
00F6 DDFB 141 DJNZ R5,LEO1
00F8 DCF5 142 DJNZ R4,LEO
00FA 22 143 RET
144 ;==========================================================================================
=========
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -