📄 lcd1303.lst
字号:
A51 MACRO ASSEMBLER LCD1303 01/07/2007 20:57:10 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN LCD1303.OBJ
ASSEMBLER INVOKED BY: C:\Keil7.06\C51\BIN\A51.EXE LCD1303.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;文件名:LCD1303.ASM
2 ;程序功能:显示字符串
00B5 3 RS bit P3.5
00B6 4 RW bit P3.6
00B7 5 E bit P3.7
0090 6 LCD EQU P1
7
0000 8 MAIN: ;主程序
0000 1110 9 ACALL INIT_LCD ;调用初始化子程序
10
0002 759081 11 MOV LCD,#81H ;写入显示起始地址
0005 1125 12 ACALL WR_COMM ;调用写指令子程序
0007 900057 13 MOV DPTR,#LINE ;字符串地址送入DPTR
000A 7806 14 MOV R0,#6 ;字符串的字符数
000C 114B 15 ACALL DISP ;调用查表子程序
000E 80FE 16 JMP $ ;动态停机
17
0010 18 INIT_LCD: ;LCM初始化设定
0010 759001 19 MOV LCD,#00000001B ;清屏并光标复位
0013 1125 20 ACALL WR_COMM ;调用写指令子程序
0015 759038 21 MOV LCD,#00111000B;设置8位、2行、5x7点阵
0018 1125 22 ACALL WR_COMM ;调用写指令子程序
001A 75900F 23 MOV LCD,#00001111B ;显示器开,光标允许闪烁
001D 1125 24 ACALL WR_COMM ;调用写指令子程序
001F 759006 25 MOV LCD,#00000110B ;文字不动,光标自动右移
0022 1125 26 ACALL WR_COMM ;调用写指令子程序
0024 22 27 RET
28
0025 29 WR_COMM: ;写指令子程序
0025 C2B5 30 CLR RS ;RS=0,选择指令寄存器
0027 C2B6 31 CLR RW ;RW=0,选择写模式
0029 C2B7 32 CLR E ;E=0,禁止读/写LCM
002B 1130 33 ACALL CHECK_BF ;调用判LCM忙碌子程序
002D D2B7 34 SETB E ;E=1,允许读/写LCM
002F 22 35 RET
36
0030 37 CHECK_BF: ;判断是否忙碌子程序
0030 7590FF 38 MOV LCD, #0FFH ;此时不接受外来指令
0033 C2B5 39 CLR RS ;RS=0,选择指令寄存器
0035 D2B6 40 SETB RW ;RW=1,选择读模式
0037 C2B7 41 CLR E ;E=0,禁止读/写LCM
0039 00 42 NOP ;延时1微秒
003A D2B7 43 SETB E ;E=1,允许读/写LCM
003C 2097F1 44 JB LCD.7,CHECK_BF ;忙碌循环等待
003F 22 45 RET
46
0040 47 WR_DATA: ;写数据子程序
0040 D2B5 48 SETB RS ;RS=1,选择数据寄存器
0042 C2B6 49 CLR RW ;RW=0,选择写模式
0044 C2B7 50 CLR E ;E=0,禁止读/写LCM
0046 1130 51 ACALL CHECK_BF ;调用判断忙碌子程序
0048 D2B7 52 SETB E ;E=1,允许读/写LCM
004A 22 53 RET
54
004B 55 DISP: ;查表显示子程序
004B 7900 56 MOV R1,#0 ;查表地址初始值
004D E9 57 NEXT: MOV A,R1 ;将表地址初值赋予A
004E 93 58 MOVC A,@A+DPTR ;查表将字符串内容送入A
A51 MACRO ASSEMBLER LCD1303 01/07/2007 20:57:10 PAGE 2
004F F590 59 MOV LCD,A ;将字符串内容送入LCD
0051 09 60 INC R1 ;地址值加1
0052 1140 61 ACALL WR_DATA ;调用写入数据子程序
0054 D8F7 62 DJNZ R0,NEXT ;判断查表是否6次?
0056 22 63 RET ;子程序返回
64
0057 48656C6C 65 LINE: DB 'Hello!',00H ;字符串
005B 6F2100
66
67 END ;程序结束
A51 MACRO ASSEMBLER LCD1303 01/07/2007 20:57:10 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
CHECK_BF . . . . . C ADDR 0030H A
DISP . . . . . . . C ADDR 004BH A
E. . . . . . . . . B ADDR 00B0H.7 A
INIT_LCD . . . . . C ADDR 0010H A
LCD. . . . . . . . D ADDR 0090H A
LINE . . . . . . . C ADDR 0057H A
MAIN . . . . . . . C ADDR 0000H A
NEXT . . . . . . . C ADDR 004DH A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
RS . . . . . . . . B ADDR 00B0H.5 A
RW . . . . . . . . B ADDR 00B0H.6 A
WR_COMM. . . . . . C ADDR 0025H A
WR_DATA. . . . . . C ADDR 0040H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -