📄 hy12864b.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 + -