📄 lcd.lst
字号:
A51 MACRO ASSEMBLER LCD 09/13/2007 01:36:53 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN LCD.OBJ
ASSEMBLER INVOKED BY: C:\tools\Keil\C51\BIN\A51.EXE LCD.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;实验名称:字符型LCD接口实验
2 ; 功能:在LCD上显示
3 ; AT89S51 DEMO
4 ; www.mcuprog.com
5 ; 作者:http://www.mcuprog.com
6 ; 05-02-01
7 ;
8
00A2 9 E BIT P2.2
00A1 10 RW BIT P2.1
00A0 11 RS BIT P2.0
0080 12 LCDPORT EQU P0
0030 13 CMD_BYTE EQU 30H
0031 14 DAT_BYTE EQU 31H
15
0000 16 ORG 0000H
0000 0150 17 AJMP MAIN
0050 18 ORG 0050H
0050 758160 19 MAIN: MOV SP,#60H
0053 120082 20 LCALL INITLCD
0056 1200AD 21 LCALL DISPMSG1
0059 1200C5 22 LCALL DISPMSG2
005C 80FE 23 SJMP $
24
25 ;LCD1602要用到的一些子程序
26 ;写命令(入口参数CMD_BYTE)
005E C2A0 27 WRITE_CMD: CLR RS
0060 C2A1 28 CLR RW
0062 E530 29 MOV A,CMD_BYTE
0064 F580 30 MOV LCDPORT,A
0066 D2A2 31 SETB E
0068 00 32 NOP
0069 00 33 NOP
006A C2A2 34 CLR E
006C 1200DD 35 LCALL DELAY
006F 22 36 RET
37
38 ;写显示数据(入口参数DAT_BYTE)
0070 D2A0 39 WRITE_DAT: SETB RS
0072 C2A1 40 CLR RW
0074 E531 41 MOV A,DAT_BYTE
0076 F580 42 MOV LCDPORT,A
0078 D2A2 43 SETB E
007A 00 44 NOP
007B 00 45 NOP
007C C2A2 46 CLR E
007E 1200DD 47 LCALL DELAY
0081 22 48 RET
49
50 ;LCD显示初始化
0082 753030 51 INITLCD: MOV CMD_BYTE,#30H
0085 12005E 52 LCALL WRITE_CMD
0088 753030 53 MOV CMD_BYTE,#30H
008B 12005E 54 LCALL WRITE_CMD
008E 753030 55 MOV CMD_BYTE,#30H
0091 12005E 56 LCALL WRITE_CMD
0094 753038 57 MOV CMD_BYTE,#38H ;设定工作方式
0097 12005E 58 LCALL WRITE_CMD
A51 MACRO ASSEMBLER LCD 09/13/2007 01:36:53 PAGE 2
009A 75300C 59 MOV CMD_BYTE,#0CH ;显示状态设置
009D 12005E 60 LCALL WRITE_CMD
00A0 753001 61 MOV CMD_BYTE,#01H ;清屏
00A3 12005E 62 LCALL WRITE_CMD
00A6 753006 63 MOV CMD_BYTE,#06H ;输入方式设置
00A9 12005E 64 LCALL WRITE_CMD
00AC 22 65 RET
66 ;在第一行显示表格1的内容
00AD 753080 67 DISPMSG1: MOV CMD_BYTE,#80H
00B0 12005E 68 LCALL WRITE_CMD
00B3 7F10 69 MOV R7,#10H
00B5 7E00 70 MOV R6,#00H
00B7 900200 71 MOV DPTR,#TAB1
00BA EE 72 DISPMSG1_1: MOV A,R6
00BB 93 73 MOVC A,@A+DPTR
00BC F531 74 MOV DAT_BYTE,A
00BE 120070 75 LCALL WRITE_DAT
00C1 0E 76 INC R6
00C2 DFF6 77 DJNZ R7,DISPMSG1_1
00C4 22 78 RET
79
80 ;在第二行显示表格1的内容
00C5 7530C0 81 DISPMSG2: MOV CMD_BYTE,#0C0H
00C8 12005E 82 LCALL WRITE_CMD
00CB 7F10 83 MOV R7,#10H
00CD 7E00 84 MOV R6,#00H
00CF 900210 85 MOV DPTR,#TAB2
00D2 EE 86 DISPMSG2_1: MOV A,R6
00D3 93 87 MOVC A,@A+DPTR
00D4 F531 88 MOV DAT_BYTE,A
00D6 120070 89 LCALL WRITE_DAT
00D9 0E 90 INC R6
00DA DFF6 91 DJNZ R7,DISPMSG2_1
00DC 22 92 RET
93
94 ;延时子程序
00DD 7DA0 95 DELAY: MOV R5,#0A0H
00DF 00 96 DELAY1: NOP
00E0 DDFD 97 DJNZ R5,DELAY1
00E2 22 98 RET
99
0200 100 ORG 0200H
101 ;要显示的内容
0200 20204154 102 TAB1: DB " AT89S51 DEMO "
0204 38395335
0208 31204445
020C 4D4F2020
0210 7777772E 103 TAB2: DB "www.mcuprog.com "
0214 6D637570
0218 726F672E
021C 636F6D20
104 END
A51 MACRO ASSEMBLER LCD 09/13/2007 01:36:53 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
CMD_BYTE . . . . . N NUMB 0030H A
DAT_BYTE . . . . . N NUMB 0031H A
DELAY. . . . . . . C ADDR 00DDH A
DELAY1 . . . . . . C ADDR 00DFH A
DISPMSG1 . . . . . C ADDR 00ADH A
DISPMSG1_1 . . . . C ADDR 00BAH A
DISPMSG2 . . . . . C ADDR 00C5H A
DISPMSG2_1 . . . . C ADDR 00D2H A
E. . . . . . . . . B ADDR 00A0H.2 A
INITLCD. . . . . . C ADDR 0082H A
LCDPORT. . . . . . D ADDR 0080H A
MAIN . . . . . . . C ADDR 0050H A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
RS . . . . . . . . B ADDR 00A0H.0 A
RW . . . . . . . . B ADDR 00A0H.1 A
SP . . . . . . . . D ADDR 0081H A
TAB1 . . . . . . . C ADDR 0200H A
TAB2 . . . . . . . C ADDR 0210H A
WRITE_CMD. . . . . C ADDR 005EH A
WRITE_DAT. . . . . C ADDR 0070H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -