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

📄 lcd1304.lst

📁 51单片机开发入门与典型实例
💻 LST
字号:
A51 MACRO ASSEMBLER  LCD1304                                                              01/07/2007 20:58:35 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN LCD1304.OBJ
ASSEMBLER INVOKED BY: C:\Keil7.06\C51\BIN\A51.EXE LCD1304.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ;文件名:LCD1304.ASM
                       2     ;程序功能:LCD循环显示   
                       3         
  00B5                 4         RS   bit P3.5
  00B6                 5         RW   bit P3.6
  00B7                 6         E    bit P3.7
  0090                 7         LCD  EQU P1                                   
                       8     
0000                   9      MAIN:                  ;主程序
0000 1140             10        ACALL INIT_LCD       ;调用初始化子程序
                      11     
0002                  12      LOOP1:                  ;循环
0002 759081           13        MOV    LCD,#81H      ;写入显示起始地址      
0005 1155             14        ACALL  WR_COMM       ;调用写指令子程序         
0007 90009E           15        MOV    DPTR,#LINE1   ;字符串地址送入DPTR       
000A 7806             16        MOV    R0,#6         ;字符串的字符数
000C 117B             17        ACALL  DISP_LCD          ;调用查表子程序
000E 1191             18        ACALL  DELAY         ;调用延时子程序
                      19     
0010 7590C0           20        MOV    LCD,#0C0H     ;写入显示起始地址  
0013 1155             21             ACALL  WR_COMM       ;调用写指令子程序
0015 9000A4           22        MOV    DPTR,#LINE2   ;字符串地址送入DPTR           
0018 780E             23        MOV    R0,#14        ;字符串的字符数
                      24     
001A 117B             25        ACALL  DISP_LCD          ;调用查表子程序
001C 1191             26        ACALL  DELAY         ;调用延时子程序
001E 118B             27        ACALL  CLS           ;调用清屏子程序
                      28      
0020 759080           29        MOV    LCD,#80H      ;写入显示起始地址        
0023 1155             30             ACALL  WR_COMM       ;调用写指令子程序
0025 9000B3           31        MOV    DPTR,#LINE3   ;字符串地址送入DPTR       
0028 7810             32        MOV    R0,#16        ;字符串的字符数
002A 117B             33        ACALL  DISP_LCD          ;调用查表子程序
002C 1191             34        ACALL  DELAY         ;调用延时子程序
                      35     
002E 7590C0           36        MOV    LCD,#0C0H     ;写入显示起始地址   
0031 1155             37        ACALL  WR_COMM  ;调用写指令子程序
0033 9000C4           38        MOV    DPTR,#LINE4   ;字符串地址送入DPTR           
0036 780A             39        MOV    R0,#10        ;字符串的字符数
0038 117B             40        ACALL  DISP_LCD          ;调用查表子程序
003A 1191             41        ACALL  DELAY         ;调用延时子程序
003C 118B             42        ACALL  CLS           ;调用清屏子程序
003E 80C2             43        JMP    LOOP1          ;无限循环                 
                      44     
0040                  45      INIT_LCD:              ;LCM初始化设定
0040 759001           46        MOV   LCD,#00000001B ;清屏并光标复位
0043 1155             47        ACALL WR_COMM        ;调用写指令子程序 
0045 759038           48        MOV   LCD,#00111000B;设置8位、2行、5x7点阵 
0048 1155             49        ACALL WR_COMM        ;调用写指令子程序 
004A 75900F           50        MOV   LCD,#00001111B ;显示器开,光标允许闪烁
004D 1155             51        ACALL WR_COMM        ;调用写指令子程序
004F 759006           52        MOV   LCD,#00000110B ;文字不动,光标自动右移 
0052 1155             53        ACALL WR_COMM        ;调用写指令子程序       
0054 22               54        RET                                           
                      55     
0055                  56      WR_COMM:               ;写指令子程序
0055 C2B5             57        CLR   RS             ;RS=0,选择指令寄存器
0057 C2B6             58        CLR   RW             ;RW=0,选择写模式
A51 MACRO ASSEMBLER  LCD1304                                                              01/07/2007 20:58:35 PAGE     2

0059 C2B7             59        CLR   E              ;E=0,禁止读/写LCM
005B 1160             60        ACALL CHECK_BF       ;调用判LCM忙碌子程序
005D D2B7             61        SETB  E              ;E=1,允许读/写LCM
005F 22               62        RET                                             
                      63     
0060                  64      CHECK_BF:             ;判断是否忙碌子程序
0060 7590FF           65        MOV  LCD, #0FFH     ;此时不接受外来指令
0063 C2B5             66        CLR  RS             ;RS=0,选择指令寄存器
0065 D2B6             67        SETB RW             ;RW=1,选择读模式
0067 C2B7             68        CLR  E              ;E=0,禁止读/写LCM
0069 00               69        NOP                 ;延时1微秒
006A D2B7             70        SETB E              ;E=1,允许读/写LCM
006C 2097F1           71        JB  LCD.7,CHECK_BF  ;忙碌循环等待 
006F 22               72        RET                                          
                      73     
0070                  74      WR_DATA:               ;写数据子程序
0070 D2B5             75        SETB RS              ;RS=1,选择数据寄存器
0072 C2B6             76        CLR RW               ;RW=0,选择写模式
0074 C2B7             77        CLR E                ;E=0,禁止读/写LCM
0076 1160             78        ACALL CHECK_BF       ;调用判断忙碌子程序
0078 D2B7             79        SETB E               ;E=1,允许读/写LCM
007A 22               80        RET                                           
                      81        
007B                  82       DISP_LCD:             ;查表显示子程序
007B 7900             83         MOV   R1,#0         ;查表地址初始值
007D E9               84       LOOP: MOV A,R1        ;将表地址初值赋予A
007E 93               85         MOVC  A,@A+DPTR     ;查表将字符串内容送入A
007F F590             86         MOV   LCD,A         ;将字符串内容送入LCD
0081 09               87         INC   R1            ;地址值加1
0082 1170             88         ACALL WR_DATA       ;调用写入数据子程序
0084 7D19             89             mov r5,#25
0086 1193             90             acall d1
0088 D8F3             91         DJNZ  R0,LOOP       ;判断查表是否6次?
008A 22               92         RET                 ;子程序返回               
                      93     
008B                  94       CLS:                  ;清显示屏
008B 759001           95         MOV  LCD,#00000001B
008E 1155             96         ACALL WR_COMM
0090 22               97         RET                                          
                      98     
0091                  99      DELAY:                 ;延时时间为3秒
0091 7D64            100         MOV   R5,#100
0093 7E64            101      D1:MOV  R6,#100
0095 7F64            102      D2:MOV  R7,#100
0097 DFFE            103         DJNZ  R7,$
0099 DEFA            104         DJNZ  R6,D2
009B DDF6            105         DJNZ  R5,D1
009D 22              106        RET                                        
                     107     
009E 48656C6C        108       LINE1:   DB 'Hello!'
00A2 6F21                    
00A4 57656C63        109       LINE2:   DB 'Welcome to LCD!'
00A8 6F6D6520                
00AC 746F204C                
00B0 434421                  
00B3 4E696365        110       LINE3:   DB 'Nice to meet you!'
00B7 20746F20                
00BB 6D656574                
00BF 20796F75                
00C3 21                      
00C4 476F6F64        111       LINE4:   DB 'Good luck!'                     
00C8 206C7563                
00CC 6B21                    
                     112     
                     113        END                    ;  程序结束
                             
A51 MACRO ASSEMBLER  LCD1304                                                              01/07/2007 20:58:35 PAGE     3

                             
                             
A51 MACRO ASSEMBLER  LCD1304                                                              01/07/2007 20:58:35 PAGE     4

SYMBOL TABLE LISTING
------ ----- -------


N A M E             T Y P E  V A L U E   ATTRIBUTES

CHECK_BF . . . . .  C ADDR   0060H   A   
CLS. . . . . . . .  C ADDR   008BH   A   
D1 . . . . . . . .  C ADDR   0093H   A   
D2 . . . . . . . .  C ADDR   0095H   A   
DELAY. . . . . . .  C ADDR   0091H   A   
DISP_LCD . . . . .  C ADDR   007BH   A   
E. . . . . . . . .  B ADDR   00B0H.7 A   
INIT_LCD . . . . .  C ADDR   0040H   A   
LCD. . . . . . . .  D ADDR   0090H   A   
LINE1. . . . . . .  C ADDR   009EH   A   
LINE2. . . . . . .  C ADDR   00A4H   A   
LINE3. . . . . . .  C ADDR   00B3H   A   
LINE4. . . . . . .  C ADDR   00C4H   A   
LOOP . . . . . . .  C ADDR   007DH   A   
LOOP1. . . . . . .  C ADDR   0002H   A   
MAIN . . . . . . .  C ADDR   0000H   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   0055H   A   
WR_DATA. . . . . .  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 + -