⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yeijng.lst

📁 汇编书写的LCD1602显示程序
💻 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 + -