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

📄 hy12864b.lst

📁 Keil c工程
💻 LST
字号:
A51 MACRO ASSEMBLER  HY12864B                                                             04/15/2004 21:41:00 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN .\out\HY12864B.obj
ASSEMBLER INVOKED BY: D:\Program Files\keil\C51\BIN\A51.EXE a\HY12864B.A51 SET(SMALL) DEBUG PRINT(.\lst\HY12864B.lst) OB
                      JECT(.\out\HY12864B.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;'define HY_12864B
                       2     ;
                       3     ;rebuild on 2004/03/08
                       4     ;hy12864b and no character mold(HD61202/HD61203) lcd compatible provided
                       5     ;pin4:RS(CS) connect to A1
                       6     ;pin5:RW     connect to A0
                       7     ;
                       8     ;!!the follow is important ,please vary the address 0x4000 accord to your hardware!!
                       9     ;for example,if your A_LCD address is 0x2000,modify it to 'A_LCD_WC_L   EQU     2004H',as f
                             ollows
                      10     ; 
                      11     ;pin6:EN=(!A_LCD)&(!(WRn&RDn)  ;HARDWARE connect:WRn and RDn is 8031 P3.6,P3.7 respectively
                             ;
                      12     ;                               A_LCD is 74138 output Y2n,also as 8031 address of 0x4000
                      13     ;                               74138 input A connect to 8031 P2.7(A15),B to P2.6(A14),C to
                              P2.5(A13)
                      14     ;
                      15     ;pin7:DB0       connect to D0
                      16     ;...            ...
                      17     ;pin14:DB7      connect to D7
                      18     ;pin15:CS1      connect to A2
                      19     ;pin16:CS2      connect to A3
                      20     ;pin17:RESETn   not used
                      21     ;
                      22     ;D0-D7 is the data bus,and A0-A15 is the address bus(so you must use a 74373)
                      23     ;
                      24     
                      25     ;****address define*******
                      26     ;you can only modify this part accord to your hardware 
  4004                27     A_LCD_WC_L   EQU     4004H   ;写指令代码地址(右)
  4005                28     A_LCD_RC_L   EQU     4005H   ;读状态字地址(右)
  4006                29     A_LCD_WD_L   EQU     4006H   ;写显示数据地址(右)
  4007                30     A_LCD_RD_L   EQU     4007H   ;读显示数据地址(右)
                      31     
  4008                32     A_LCD_WC_R   EQU     4008H   ;写指令代码地址(左)
  4009                33     A_LCD_RC_R   EQU     4009H   ;读状态字地址(左),BUSY(D7),ON/OFF(D5),RESET(D4)
                      34                                  ;ON BUSY OR  RESET STATE,ONLY READ STATE INSTRUCTION VALID
  400A                35     A_LCD_WD_R   EQU     400aH   ;写显示数据地址(左)
  400B                36     A_LCD_RD_R   EQU     400bH   ;读显示数据地址(左)
                      37     
                      38     
                      39     ;// ***************命令字定义 *************** //
  003E                40     LCD_SET_SHOW_OFF    EQU         3EH                                             ;//开关显示
  003F                41     LCD_SET_SHOW_ON     EQU         3FH                                             ;开显示
  00C0                42     LCD_SET_START_LINE  EQU         0C0H                                            ;//设置起始
                             行(0-63)
  00B8                43     LCD_SET_PAGE_NUMBER EQU         0B8H                                            ;//设置页号
                             (0-7)
  0040                44     LCD_SET_Y_ADDR      EQU         40H                                             ;//设置列地
                             址(0-63)
                      45     
  0080                46     TOTAL_X_PIXELS      EQU         80H
  0040                47     TOTAL_Y_PIXELS      EQU         40H
  0008                48     TOTAL_PAGES         EQU         8H
  0040                49     BLOCK_WIDTH         EQU         40H
  0004                50     BIGGEST_CHAR_HEIGHT EQU         4H      ;最大的字符占四行,PAGE_COUNT:32(0),24(1),16(2),8(3)
  0000                51     PAGE_COUNT32        EQU         0       ;32*32
A51 MACRO ASSEMBLER  HY12864B                                                             04/15/2004 21:41:00 PAGE     2

  0001                52     PAGE_COUNT24        EQU         1       ;24*24 OR 16*24
  0002                53     PAGE_COUNT16        EQU         2       ;16*16 OR 8*16
  0003                54     PAGE_COUNT8         EQU         3       ;8*8
                      55     ;***************************************************
                      56     
                      57     
                      58     ;COM       DATA      20H    ;指令寄存器
                      59     ;DAT       DATA      21H    ;数据寄存器
                      60     ;COUNT     DATA      33H ;计数器
                      61     ;PAGE_COUNT DATA     35H
                      62     ;LR        BIT  20H     ;0:L ,1:R
                      63     
                      64     NAME HY12864B
                      65     
                      66     ;?PR?RESET?HY12864B        SEGMENT CODE 
                      67     ?PR?INITIAL?HY12864B      SEGMENT CODE
                      68     ?PR?_CLEARPAGE?HY12864B   SEGMENT CODE
                      69     ;?DT?_CLEARPAGE?HY12864B   SEGMENT DATA OVERLAYABLE
                      70     ?PR?_ROLL?HY12864B        SEGMENT CODE
                      71     ;?DT?_ROLL?HY12864B        SEGMENT DATA OVERLAYABLE
                      72     ?PR?_CHAR_PR?HY12864B     SEGMENT CODE
                      73     ?DT?_CHAR_PR?HY12864B     SEGMENT DATA OVERLAYABLE
                      74     ?BI?_CHAR_PR?HY12864B     SEGMENT BIT  OVERLAYABLE
                      75     ?DT?HY12864B              SEGMENT DATA OVERLAYABLE
                      76     ?C0?CHARLIB?HY12864B      SEGMENT CODE
                      77     
                      78     ?PR?_DrawAByteLeft?HY12864B   SEGMENT CODE
                      79     ?PR?_DrawAByteRight?HY12864B   SEGMENT CODE
                      80     
                      81     ;       PUBLIC RESET
                      82             PUBLIC INITIAL
                      83             PUBLIC _CLEARPAGE
                      84             PUBLIC _ROLL
                      85             PUBLIC _CHAR_PR
                      86             PUBLIC _DrawAByteLeft
                      87             PUBLIC _DrawAByteRight
                      88     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                      89     
                      90     ;       RSEG ?DT?_ROLL?HY12864B
                      91     ;?_ROLL?HY12864B?BYTE:
                      92     ;       START_LINE:  DS  1
                      93             
----                  94             RSEG ?DT?_CHAR_PR?HY12864B
0000                  95     ?_CHAR_PR?HY12864B?BYTE:
0000                  96             COLUMN:        DS       1
0001                  97             PAGE0:         DS       1       
0002                  98             CODE0:         DS       1
                      99     
----                 100             RSEG ?BI?_CHAR_PR?HY12864B
0000                 101     ?BI?_CHAR_PR?HY12864B?BIT:
0000                 102             LR:   DBIT      1       
                     103     
----                 104             RSEG ?DT?HY12864B
0000                 105     ?DT?HY12864B?BYTE:
0000                 106             COM:   DS          1
0001                 107             DAT:   DS          1
0002                 108             COUNT: DS          1
0003                 109             PAGE_COUNT:DS      1
                     110     
                     111     
                     112     ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
                     113     
                     114     ;      RSEG ?PR?RESET?HY12864B
                     115     
                     116     ;0,复位子程序
                     117     ;RESET:    MOV DPTR,#2000H      ;RESET
A51 MACRO ASSEMBLER  HY12864B                                                             04/15/2004 21:41:00 PAGE     3

                     118     ;         MOV A,#7FH
                     119     ;         MOVX @DPTR,A
                     120     ;         NOP
                     121     ;         NOP
                     122     ;         MOV R7,#010H
                     123     ;RESET1:          MOV R6,#0FFH
                     124     ;         DJNZ R6,$
                     125     ;         DJNZ R7,RESET1
                     126     ;         NOP
                     127     ;         NOP
                     128     ;         MOV A,#0FFH
                     129     ;         MOVX @DPTR,A
                     130     ;         RET
                     131     
----                 132             RSEG ?PR?INITIAL?HY12864B
                     133     ;1、 初始化子程序
0000 7500C0   F      134     INITIAL:  MOV        COM,#LCD_SET_START_LINE     ;设置显示起始行为第一行
0003 120000   F      135               LCALL      LcdWriteCmdL
0006 120000   F      136               LCALL      LcdWriteCmdR
0009 75003F   F      137               MOV        COM,#LCD_SET_SHOW_ON     ;开显示设置
000C 120000   F      138               LCALL      LcdWriteCmdL
000F 120000   F      139               LCALL      LcdWriteCmdR
0012 22              140               RET
                     141             
----                 142             RSEG ?PR?_CLEARPAGE?HY12864B
                     143     
                     144     ;2、清显示RAM区(清屏)子程序 
0000 EF              145     _CLEARPAGE:MOV       A,R7                       ;每次清一行,参数由R7传递
0001 44B8            146              ORL        A,#LCD_SET_PAGE_NUMBER        ;"或"页面地址设置代码,1011 1000B
0003 F500     F      147              MOV        COM,A                       ;页面地址设置
0005 120000   F      148              LCALL      LcdWriteCmdL
0008 120000   F      149              LCALL      LcdWriteCmdR
000B 750040   F      150              MOV        COM,#LCD_SET_Y_ADDR         ;列地址设置为"0"
000E 120000   F      151              LCALL      LcdWriteCmdL
0011 120000   F      152              LCALL      LcdWriteCmdR
0014 7B40            153              MOV        R3,#40H                     ;一页清64个字节
0016 750000   F      154     CLEAR2:  MOV        DAT,#00H                    ;显示数据为"0"
0019 120000   F      155              LCALL      LcdWriteDataL
001C 120000   F      156              LCALL      LcdWriteDataR
001F DBF5            157              DJNZ       R3,CLEAR2                   ;页内字节清零循环
0021 22              158              RET
                     159     
----                 160             RSEG ?PR?_DrawAByteLeft?HY12864B
                     161     ;DRAW PICTURE
0000 EF              162     _DrawAByteLeft:MOV       A,R7                   
0001 44B8            163              ORL        A,#LCD_SET_PAGE_NUMBER        ;"或"页面地址设置代码,1011 1000B
0003 F500     F      164              MOV        COM,A                       ;页面地址设置
0005 120000   F      165              LCALL      LcdWriteCmdL
0008 ED              166              MOV        A,R5
0009 4440            167              ORL        A,#LCD_SET_Y_ADDR
000B F500     F      168              MOV        COM,A
000D 120000   F      169              LCALL      LcdWriteCmdL
0010 8B00     F      170              MOV        DAT,R3                      ;显示数据
0012 120000   F      171              LCALL      LcdWriteDataL
0015 22              172              RET
                     173     
----                 174              RSEG ?PR?_DrawAByteRight?HY12864B
                     175     ;DRAW PICTURE
0000 EF              176     _DrawAByteRight:MOV       A,R7                  
0001 44B8            177              ORL        A,#LCD_SET_PAGE_NUMBER        ;"或"页面地址设置代码,1011 1000B
0003 F500     F      178              MOV        COM,A                       ;页面地址设置
0005 120000   F      179              LCALL      LcdWriteCmdR
0008 ED              180              MOV        A,R5
0009 4440            181              ORL        A,#LCD_SET_Y_ADDR
000B F500     F      182              MOV        COM,A
000D 120000   F      183              LCALL      LcdWriteCmdR
A51 MACRO ASSEMBLER  HY12864B                                                             04/15/2004 21:41:00 PAGE     4

0010 8B00     F      184              MOV        DAT,R3                      ;显示数据
0012 120000   F      185              LCALL      LcdWriteDataR
0015 22              186              RET
                     187     
----                 188             RSEG ?PR?_ROLL?HY12864B
                     189     
                     190     ;3,翻页卷动
0000 EF              191     _ROLL:   MOV       A,R7                         ;传递参数为行起始地址START_LINE,参数由R7传

⌨️ 快捷键说明

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