?? lcd.lst
字號:
A51 MACRO ASSEMBLER LCD 04/19/2005 11:36:55 PAGE 1
MACRO ASSEMBLER A51 V7.03
OBJECT MODULE PLACED IN F:\仿真器\實驗板\實驗例程\LCD顯示\ASM\LCD.OBJ
ASSEMBLER INVOKED BY: D:\KEIL\C51\BIN\A51.EXE F:\仿真器\實驗板\實驗例程\LCD顯示\ASM\LCD.ASM DB SB
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
00B5 9 E BIT P3.5
00B6 10 RW BIT P3.6
00B7 11 RS BIT P3.7
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 C2B7 27 WRITE_CMD: CLR RS
0060 C2B6 28 CLR RW
0062 E530 29 MOV A,CMD_BYTE
0064 F580 30 MOV LCDPORT,A
0066 D2B5 31 SETB E
0068 00 32 NOP
0069 00 33 NOP
006A C2B5 34 CLR E
006C 1200DD 35 LCALL DELAY
006F 22 36 RET
37
38 ;寫顯示數據(入口參數DAT_BYTE)
0070 D2B7 39 WRITE_DAT: SETB RS
0072 C2B6 40 CLR RW
0074 E531 41 MOV A,DAT_BYTE
0076 F580 42 MOV LCDPORT,A
0078 D2B5 43 SETB E
007A 00 44 NOP
007B 00 45 NOP
007C C2B5 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 04/19/2005 11:36:55 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 900211 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 41543839 102 TAB1: DB "AT89S51/52 DEMO "
0204 5335312F
0208 35322044
020C 454D4F20
0210 20
0211 7777772E 103 TAB2: DB "www.mcuyjf.com "
0215 6D637579
0219 6A662E63
021D 6F6D20
104 END
A51 MACRO ASSEMBLER LCD 04/19/2005 11:36:55 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 00B0H.5 A
INITLCD. . . . . . C ADDR 0082H A
LCDPORT. . . . . . D ADDR 0080H A
MAIN . . . . . . . C ADDR 0050H A
P0 . . . . . . . . D ADDR 0080H A
P3 . . . . . . . . D ADDR 00B0H A
RS . . . . . . . . B ADDR 00B0H.7 A
RW . . . . . . . . B ADDR 00B0H.6 A
SP . . . . . . . . D ADDR 0081H A
TAB1 . . . . . . . C ADDR 0200H A
TAB2 . . . . . . . C ADDR 0211H 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 + -