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

📄 main.lst

📁 LCD动画制作
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  MAIN                                                                 03/11/2009 11:45:06 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN main.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE main.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     
                       2     
                       3     
                       4     
                       5     
                       6     
                       7     
                       8     
                       9     
                      10     
                      11     
0000                  12             ORG     0000H
0000 758150           13             MOV     SP,     #50H
0003 020006           14             LJMP    MAIN
                      15     
0006                  16     MAIN:
0006 1200A2           17             LCALL   Lcd12864Init
                      18     
0009                  19     Mloop:
                      20             
0009 9000D2           21             MOV     DPTR,   #bird1
000C 12005C           22             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
                      23     
000F 120053           24             LCALL   DELAY_50MS
0012 9004D2           25             MOV     DPTR,   #bird2
0015 12005C           26             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
                      27     
0018 120053           28             LCALL   DELAY_50MS
001B 9008D2           29             MOV     DPTR,   #bird3
001E 12005C           30             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
0021 120053           31             LCALL   DELAY_50MS
0024 900CD2           32             MOV     DPTR,   #bird4
0027 12005C           33             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
002A 120053           34             LCALL   DELAY_50MS
002D 9010D2           35             MOV     DPTR,   #bird5
0030 12005C           36             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
0033 120053           37             LCALL   DELAY_50MS
0036 9014D2           38             MOV     DPTR,   #bird6
0039 12005C           39             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
003C 120053           40             LCALL   DELAY_50MS
003F 9018D2           41             MOV     DPTR,   #bird7
0042 12005C           42             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
0045 120053           43             LCALL   DELAY_50MS
0048 901CD2           44             MOV     DPTR,   #bird8
004B 12005C           45             LCALL   Lcd12864DrawImage               ;Lcd12864DrawImage(&image);
                      46     ;       sjmp $
004E 120053           47             LCALL   DELAY_50MS
0051 80B6             48             SJMP    Mloop
                      49     
                      50     
                      51     
                      52     
0053                  53     DELAY_50MS:                             ;延时50ms
0053 7DFF             54     DL2:    MOV     R5,     #0FFH
0055 00               55     DL1:    NOP                             ;内循环
0056 00               56             NOP
0057 DDFC             57             DJNZ    R5,     DL1
0059 DCF8             58             DJNZ    R4,     DL2
A51 MACRO ASSEMBLER  MAIN                                                                 03/11/2009 11:45:06 PAGE     2

                      59     
005B 22               60             RET
                      61     
                      62     ;--------------------------------------------------------------------------
                      63     ;-----------------------------LCD12864-ASM---------------------------------
                      64     ;--------------------------------------------------------------------------
                      65     
                      66     
                      67     
                      68     
                      69     
                      70     ;------------------------lcd12864相关定义-----------------------------------
  00A0                71     E               BIT     P2.0
  00A1                72     RW              BIT     P2.1
  00A2                73     RS              BIT     P2.2
  00A3                74     CS1             BIT     P2.3
  00A4                75     CS2             BIT     P2.4
  0080                76     DBPort          EQU     P0
                      77     ;-----------------------------------------------;命令
  003E                78     DISP_OFF        EQU     3eH                     ;关显示
  003F                79     DISP_ON         EQU     3FH                     ;开显示
  0040                80     DISP_X          EQU     40H                     ;起始行
  00B8                81     DISP_PAGE       EQU     0B8H                    ;起始页
  00C0                82     DISP_Y          EQU     0C0H                    ;起始列
                      83     ;-----------------------------------------------;内存使用
                      84     
                      85     
                      86             
                      87     ;********************************************************送一幅128x64点阵图到lcd显示(CODE)
005C                  88     Lcd12864DrawImage:
005C 7D00             89             MOV     R5,     #0                      ;循环计数清零for(j=0;;) 
005E                  90     IMGL1:  
                      91     ;--------------------------------------------------------------------------
005E D2A3             92             SETB    CS1
0060 C2A4             93             CLR     CS2
                      94     ;--------------------------------------------------------------------------
0062 C3               95             CLR     C
0063 ED               96             MOV     A,      R5
0064 24B8             97             ADD     A,      #DISP_PAGE
0066 FF               98             MOV     R7,     A
0067 1200B1           99             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_PAGE+j(R5));
                     100     ;--------------------------------------------------------------------------
006A 7F40            101             MOV     R7,     #DISP_X
006C 1200B1          102             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_X);
                     103     ;--------------------------------------------------------------------------
006F 7C00            104             MOV     R4,     #0                      ;循环计数清零for(i=0;;)         
                     105     ;--------------------------------------------------------------------------
0071 E4              106     IMGL21: CLR     A
0072 93              107             MOVC    A,      @A+DPTR
0073 FF              108             MOV     R7,     A
0074 1200BF          109             LCALL   Lcd12864WriteData               ;Lcd12864WriteData(*DPTR);
0077 A3              110             INC     DPTR                            ;DPTR++
                     111     ;--------------------------------------------------------------------------
0078 0C              112             INC     R4
0079 EC              113             MOV     A,      R4                      ;
007A B440F4          114             CJNE    A,      #64,    IMGL21          ;if(++R4 != 64) goto IMGL21;
                     115     ;--------------------------------------------------------------------------
007D C2A3            116             CLR     CS1
007F D2A4            117             SETB    CS2
                     118     ;--------------------------------------------------------------------------
0081 C3              119             CLR     C
0082 ED              120             MOV     A,      R5
0083 24B8            121             ADD     A,      #DISP_PAGE
0085 FF              122             MOV     R7,     A
0086 1200B1          123             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_PAGE+j(R5));
                     124     ;--------------------------------------------------------------------------
A51 MACRO ASSEMBLER  MAIN                                                                 03/11/2009 11:45:06 PAGE     3

0089 7F40            125             MOV     R7,     #DISP_X
008B 1200B1          126             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_X);
                     127     ;--------------------------------------------------------------------------
008E 7C40            128             MOV     R4,     #64                     ;循环计数清零for(i=64;;)                
                     129     ;--------------------------------------------------------------------------
0090 E4              130     IMGL22: CLR     A
0091 93              131             MOVC    A,      @A+DPTR
0092 FF              132             MOV     R7,     A
0093 1200BF          133             LCALL   Lcd12864WriteData               ;Lcd12864WriteData(*DPTR);
0096 A3              134             INC     DPTR                            ;DPTR++
                     135     ;--------------------------------------------------------------------------
0097 0C              136             INC     R4
0098 EC              137             MOV     A,      R4                      ;
0099 B480F4          138             CJNE    A,      #128,   IMGL22          ;if(++R4 != 128) goto IMGL22;
                     139     ;--------------------------------------------------------------------------
009C 0D              140             INC     R5
009D ED              141             MOV     A,      R5
009E B408BD          142             CJNE    A,      #8,     IMGL1           ;if(++R5 != 8) goto IMGL1;
                     143     ;--------------------------------------------------------------------------
00A1 22              144             RET
                     145     
                     146     
                     147     
                     148     
                     149     
                     150     
                     151     
                     152     
                     153     
                     154     
                     155     
                     156     
                     157     
                     158     
                     159     
                     160     
                     161     
                     162     
                     163     
                     164     
                     165     
                     166     
                     167     
                     168     
                     169     ;********************************************************液晶显示初始化
00A2                 170     Lcd12864Init:
00A2 D2A3            171             SETB    CS1
00A4 D2A4            172             SETB    CS2
                     173     ;---------------------------------------------------------------------------
00A6 7F3E            174             MOV     R7,     #DISP_OFF
00A8 1200B1          175             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_OFF);
                     176     ;---------------------------------------------------------------------------
00AB 7F3F            177             MOV     R7,     #DISP_ON
00AD 1200B1          178             LCALL   Lcd12864WriteCmd                ;Lcd12864WriteCmd(DISP_ON);
                     179     ;---------------------------------------------------------------------------
00B0 22              180             RET
                     181     
                     182     ;********************************************************写命令函数(R7传入)
00B1                 183     Lcd12864WriteCmd:
00B1 C2A2            184             CLR     RS
00B3 C2A1            185             CLR     RW
00B5 8F80            186             MOV     DBPort, R7
00B7 D2A0            187             SETB    E
00B9 C2A0            188             CLR     E
00BB 1200CD          189             LCALL   LcdDelay
00BE 22              190             RET
A51 MACRO ASSEMBLER  MAIN                                                                 03/11/2009 11:45:06 PAGE     4

                     191     ;********************************************************写数据函数(R7传入)
00BF                 192     Lcd12864WriteData:
00BF D2A2            193             SETB    RS
00C1 C2A1            194             CLR     RW
00C3 8F80            195             MOV     DBPort, R7
00C5 D2A0            196             SETB    E
00C7 C2A0            197             CLR     E
00C9 1200CD          198             LCALL   LcdDelay
00CC 22              199             RET
00CD                 200     LcdDelay:
00CD 7819            201             MOV     R0,     #25
00CF D8FE            202     DL:     DJNZ    R0,     DL
00D1 22              203             RET
                     204     
                     205     
                     206     
                     207     
00D2                 208     bird1:                                   ; 数据表
                     209     
00D2 00000000        210             db   00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h
00D6 00000000                
00DA 00000000                
00DE 00000000                
00E2 00000000        211             db       00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h,
                              00h
00E6 00000000                
00EA 00000000                
00EE 00000000                
00F2 00000000        212             db       00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h,
                              00h
00F6 00000000                
00FA 00000000                
00FE 00000000                
0102 00000000        213             db       00h, 00h, 00h, 00h, 00h, 00h, 00h, 80h,0E0h, 70h, 18h, 18h, 38h, 30h, 60h,
                              60h
0106 00000080                
010A E0701818                
010E 38306060                
0112 6060C0C0        214             db       60h, 60h,0C0h,0C0h, 80h, 80h, 80h, 80h, 80h, 80h, 80h,0C0h,0C0h,0C0h, 60h,
                              60h
0116 80808080                
011A 808080C0                
011E C0C06060                
0122 606060E0        215             db       60h, 60h, 60h,0E0h,0C0h,0C0h, 80h, 00h, 00h, 00h, 00h, 00h, 00h, 00h, 00h,
                              00h
0126 C0C08000                
012A 00000000                

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -