📄 lcd.lst
字号:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 1
MCS-51 Family Cross Assembler A S E M - 5 1 V 1.2
=====================================================
Source File: LCD.ASM
Object File: LCD.HEX
List File: LCD.LST
Line I Addr Code Source
1: ; LCD Display Driver Demo.
2: ; Timing code assumes 6MHz Clock
3: ;
4: ;***********************************************
5: ;指定LCD地址 LCD Registers addresses
6: ;LCD_CMD_WR equ 0 ;写命令寄存器
7: ;LCD_DATA_WR equ 1 ;写数据寄存器
8: ;LCD_BUSY_RD equ 2 ;读忙标志及RAM地址
9: ;LCD_DATA_RD equ 3 ;读RAM数据
10:
11: ;指定LCD命令 LCD Commands
12: ;LCD_CLS equ 1 ;清屏
13: ;LCD_HOME equ 2 ;光标归位
14: ;LCD_SETMODE equ 4 ;输入模式
15: ;LCD_SETVISIBLE equ 8 ;显示致能、禁能
16: ;LCD_SHIFT equ 16 ;显示、光标移位
17: ;LCD_SETFUNCTION equ 32 ;功能设定
18: ;LCD_SETCGADDR equ 64 ;字符器RAM地址设定
19: ;LCD_SETDDADDR equ 128 ;显示数据存储器RAM地址设定
20: N 0000 ORG 00H
21: 0000 01 30 AJMP MAIN
22: N 0030 ORG 30H
23: ;主程序
24: 0030 MAIN:
25: 0030 75 81 5F MOV SP,#5FH ;栈指针
26: 0033 11 45 ACALL INIT ;LCD初始化
27: 0035 11 6D ACALL FIRST ;第一行显示位置
28: 0037 90 00 B4 MOV DPTR,#TABLE1;取要显示字符
29: 003A 11 60 ACALL DISPLAY ;显示
30: 003C 11 72 ACALL SECOND ;第二行显示位置
31: 003E 90 00 C9 MOV DPTR,#TABLE2;取要显示字符
32: 0041 11 60 ACALL DISPLAY ;显示
33: 0043 80 EB JMP main ;返回
34: ;初始化子程序
35: 0045 INIT:
36: 0045 11 AB ACALL DELAY;
37:
38: 0047 74 39 MOV A,#39H ;复位数据
39: 0049 11 77 ACALL WRCOM ;写命令寄存器
40: 004B 74 39 MOV A,#39H ;设定数据长度为8位
41: 004D 11 77 ACALL WRCOM ;写命令寄存器
42: ;
43: 004F 74 08 MOV A,#08H ;设定LCD不显示光标,不闪烁字符
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: 0051 11 77 ACALL WRCOM ;写命令寄存器
45: ;
46: 0053 74 01 MOV A,#01H ;清屏
47: 0055 11 77 ACALL WRCOM ;
48: ;
49: 0057 74 06 MOV A,#06H ;设定输入模式
50: 0059 11 77 ACALL WRCOM ;
51: ;
52: 005B 74 0C MOV A,#0CH ;显示致能,不显示光标
53: 005D 11 77 ACALL WRCOM ;
54: 005F 22 RET
55: ;显示子程序
56: 0060 DISPLAY:
57: 0060 79 00 MOV R1,#00H ;取第一个字符
58: 0062 NEXT:
59: 0062 E9 MOV A,R1 ;
60: 0063 93 MOVC A,@A+DPTR ;
61: 0064 B4 23 01 CJNE A,#23H,DSP;判断是否显示完全部字符(“#”对应代码是0010 0011B=23H)
62: 0067 22 RET
63: 0068 DSP:
64: 0068 11 88 ACALL WRDATA ;显示
65: 006A 09 INC R1 ;下一字符
66: 006B 01 62 AJMP NEXT ;
67: 006D FIRST:
68: 006D 74 80 MOV A,#10000000B;第一行显示位置
69: 006F 11 77 ACALL WRCOM ;
70: 0071 22 RET
71: ;
72: 0072 SECOND:
73: 0072 74 C0 MOV A,#11000000B;第一行显示位置
74: 0074 11 77 ACALL WRCOM;
75: 0076 22 RET
76: ;写命令寄存器
77: 0077 WRCOM:
78: 0077 11 99 ACALL BUSY;
79: 0079 75 A0 F8 MOV P2,#11111000B;
80: 007C 00 NOP
81: 007D D2 A2 SETB P2.2;
82: 007F F5 80 MOV P0,A;
83: 0081 00 NOP
84: 0082 C2 A2 CLR P2.2;
85: 0084 12 00 AB CALL DELAY
86: 0087 22 RET
87: ;写数据寄存器
88: 0088 WRDATA:
89: 0088 11 99 ACALL BUSY;
90: 008A 75 A0 F9 MOV P2,#11111001B;
91: 008D 00 NOP
92: 008E D2 A2 SETB P2.2;
93: 0090 F5 80 MOV P0,A;
94: 0092 00 NOP
95: 0093 C2 A2 CLR P2.2;
96: 0095 12 00 AB CALL DELAY
97: 0098 22 RET
98: ;忙判断
99: 0099 BUSY:
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 0099 C0 E0 PUSH ACC;
101: 009B WAIT:
102: 009B 75 A0 FA MOV P2,#11111010B;
103: 009E 00 NOP
104: 009F D2 A2 SETB P2.2;
105: 00A1 E5 80 MOV A,P0;
106: 00A3 20 E7 F5 JB ACC.7,WAIT;
107: 00A6 C2 A2 CLR P2.2;
108: 00A8 D0 E0 POP ACC
109: 00AA 22 RET
110: ;延时
111: 00AB DELAY:
112: 00AB 7E 80 MOV R6,#80H
113: 00AD 7F 80 DL1: MOV R7,#80H
114: 00AF DF FE DJNZ R7,$
115: 00B1 DE FA DJNZ R6,DL1
116: 00B3 22 RET
117: ;显示字符
118: 00B4 20 20 41 42 TABLE1: DB " ABCDEFG HIGKLMN ";
00B8 43 44 45 46
00BC 47 20 20 48
00C0 49 47 4B 4C
00C4 4D 4E 20 20
119: 00C8 23 DB "#";
120: 00C9 20 20 4F 50 TABLE2: DB " OPQ RST UVW XYZ ";
00CD 51 20 52 53
00D1 54 20 20 55
00D5 56 57 20 58
00D9 59 5A 20 20
121: 00DD 23 DB "#"
122: END
register banks used: ---
no errors
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 4
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
AC BIT D6
ACC DATA E0
B DATA F0
BUSY CODE 0099 99
CY BIT D7
DELAY CODE 00AB 111
DISPLAY CODE 0060 56
DL1 CODE 00AD 113
DPH DATA 83
DPL DATA 82
DSP CODE 0068 63
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
FIRST CODE 006D 67
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INIT CODE 0045 35
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
MAIN CODE 0030 24
NEXT CODE 0062 58
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PS BIT BC
PSW DATA D0
PT0 BIT B9
PT1 BIT BB
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
REN BIT 9C
RESET CODE 0000
RI BIT 98
ASEM-51 V1.2 Copyright (c) 1996 by W.W. Heinz PAGE 5
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
RS0 BIT D3
RS1 BIT D4
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SECOND CODE 0072 72
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TABLE1 CODE 00B4 118
TABLE2 CODE 00C9 120
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
WAIT CODE 009B 101
WR BIT B6
WRCOM CODE 0077 77
WRDATA CODE 0088 88
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -