📄 yeijng.lst
字号:
A51 MACRO ASSEMBLER YEIJNG 02/18/2009 20:37:14 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN yeijng.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE yeijng.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2
3
4
5
6
00B7 7 LCM_RS EQU P3.7 ;//定义接口
00B6 8 LCM_RW EQU P3.6
00B5 9 LCM_E EQU P3.5
10
0090 11 LCM_Data EQU P1 ;数据接口
12
0000 13 ORG 0000H ;从0000H处开始
0000 802E 14 SJMP MAIN ;跳转到MAIN处
15
0030 16 ORG 0030H ;主程序从0030H处开始
0030 758170 17 MAIN: MOV SP,#70H ;堆栈指针指向70H
0033 12006D 18 LCALL INITIAL ;调用启动LCM子程序进行初始化
0036 1200B4 19 LCALL CLS ;调用清除LCM子程序
0039 7480 20 MOV A,#80H ;向A送立即数80H设定显示地址为第一行第一列
003B 120094 21 LCALL WRITE_COM ;调用写指令到LCM子程序
003E 900051 22 MOV DPTR,#LINE1 ;将第一行字符串的启始地址送如DPTR中
0041 1200C3 23 LCALL DISP ;调用显示字符串到LCM子程序
0044 74C0 24 MOV A,#0C0H ;向A送立即数0C0H设定显示地址为第二行第一列
0046 120094 25 LCALL WRITE_COM ;调用写指令到LCM子程序
0049 900061 26 MOV DPTR,#LINE2 ;将第二行字符串的启始地址送如DPTR中
004C 1200C3 27 LCALL DISP ;调用显示字符串到LCM子程序
004F 80FE 28 SJMP $ ;程序动态停机
29
0051 20777777 30 LINE1: DB " www.52c51.com ",00H ;第一行字符串
0055 2E353263
0059 35312E63
005D 6F6D2000
0061 20202031 31 LINE2: DB " 1602A ",00H ;第二行字符串
0065 36303241
0069 20202000
32
006D 7438 33 INITIAL: MOV A,#38H ;启动LCM子程序
006F 120094 34 LCALL WRITE_COM
0072 740E 35 MOV A,#0EH
0074 120094 36 LCALL WRITE_COM
0077 7406 37 MOV A,#06H
0079 120094 38 LCALL WRITE_COM
007C 22 39 RET
40
007D C0E0 41 CHECK_BUSY: PUSH ACC ;查询忙碌信号子程序
007F C2B5 42 BUSY_LOOP: CLR LCM_E
0081 D2B6 43 SETB LCM_RW
0083 C2B7 44 CLR LCM_RS
0085 D2B5 45 SETB LCM_E
0087 E590 46 MOV A,LCM_Data
0089 C2B5 47 CLR LCM_E
008B 20E7F1 48 JB ACC.7,BUSY_LOOP
008E D0E0 49 POP ACC
0090 1200BA 50 LCALL DEL
0093 22 51 RET
52
0094 12007D 53 WRITE_COM: LCALL CHECK_BUSY;写指令到LCM子程序
A51 MACRO ASSEMBLER YEIJNG 02/18/2009 20:37:14 PAGE 2
0097 C2B5 54 CLR LCM_E
0099 C2B7 55 CLR LCM_RS
009B C2B6 56 CLR LCM_RW
009D D2B5 57 SETB LCM_E
009F F590 58 MOV LCM_Data,A
00A1 C2B5 59 CLR LCM_E
00A3 22 60 RET
61
00A4 12007D 62 WRITE_DATA: LCALL CHECK_BUSY ;写数据到LCM子程序
00A7 C2B5 63 CLR LCM_E
00A9 D2B7 64 SETB LCM_RS
00AB C2B6 65 CLR LCM_RW
00AD D2B5 66 SETB LCM_E
00AF F590 67 MOV LCM_Data,A
00B1 C2B5 68 CLR LCM_E
00B3 22 69 RET
70
00B4 7401 71 CLS: MOV A,#01H ;清除LCM子程序
00B6 120094 72 LCALL WRITE_COM
00B9 22 73 RET
74
00BA 7E05 75 DEL: MOV R6,#5 ;2.7ms延时子程序
00BC 7FF8 76 D1: MOV R7,#248
00BE DFFE 77 DJNZ R7,$
00C0 DEFA 78 DJNZ R6,D1
00C2 22 79 RET
80
00C3 C0E0 81 DISP: PUSH ACC ;将A的内容压栈
00C5 E4 82 DISP_LOOP: CLR A ;A清零
00C6 93 83 MOVC A,@A+DPTR ;查表将字符串内容送入A
00C7 6006 84 JZ END_DISP ;若查到的内容为0则终止查表
00C9 1200A4 85 LCALL WRITE_DATA ;调用写数据到LCM子程序
00CC A3 86 INC DPTR ;DPTR加1指向下一个对象
00CD 80F6 87 SJMP DISP_LOOP ;跳转到DISP_LOOP循环执行
00CF D0E0 88 END_DISP: POP ACC ;弹出压栈内容至A
00D1 22 89 RET
90
91 END ;程序结束
A51 MACRO ASSEMBLER YEIJNG 02/18/2009 20:37:14 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
BUSY_LOOP. . . . . C ADDR 007FH A
CHECK_BUSY . . . . C ADDR 007DH A
CLS. . . . . . . . C ADDR 00B4H A
D1 . . . . . . . . C ADDR 00BCH A
DEL. . . . . . . . C ADDR 00BAH A
DISP . . . . . . . C ADDR 00C3H A
DISP_LOOP. . . . . C ADDR 00C5H A
END_DISP . . . . . C ADDR 00CFH A
INITIAL. . . . . . C ADDR 006DH A
LCM_DATA . . . . . D ADDR 0090H A
LCM_E. . . . . . . B ADDR 00B0H.5 A
LCM_RS . . . . . . B ADDR 00B0H.7 A
LCM_RW . . . . . . B ADDR 00B0H.6 A
LINE1. . . . . . . C ADDR 0051H A
LINE2. . . . . . . C ADDR 0061H A
MAIN . . . . . . . C ADDR 0030H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
SP . . . . . . . . D ADDR 0081H A
WRITE_COM. . . . . C ADDR 0094H A
WRITE_DATA . . . . C ADDR 00A4H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -