📄 text2.lst
字号:
A51 MACRO ASSEMBLER TEXT2 05/11/2008 14:57:33 PAGE 1
MACRO ASSEMBLER A51 V7.02a
OBJECT MODULE PLACED IN .\obj\Text2.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE src\Text2.asm SET(SMALL) DEBUG PRINT(.\lst\Text2.lst) OBJECT(.\obj\Text2.o
bj) EP
LOC OBJ LINE SOURCE
1 ;IO口定义
0080 2 _WR BIT P0.0
0081 3 _RD BIT P0.1
0082 4 CSL BIT P0.2
0083 5 RS BIT P0.3
0084 6 RST BIT P0.4
0085 7 BUSY BIT P0.5
00B2 8 KEY BIT P3.2
9 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0090 10 DBUS EQU P1
0030 11 REGNAME EQU 30H
0031 12 REGDATA EQU 31H
0032 13 REGDATA1 EQU 32H
0033 14 LCM_X EQU 33H
0034 15 LCM_Y EQU 34H
0035 16 LCM_DATA1 EQU 35H
0036 17 LCM_DATA2 EQU 36H
0037 18 COUNT1 EQU 37H
0038 19 COUNT2 EQU 38H
20 ;#define PORTB P1
21 ;sbit WRT =P0^0;//低电平有效//
22 ;sbit RAD =P0^1;//低电平有效//
23 ;sbit CS =P0^2;//低电平有效//
24 ;sbit RS =P0^3;//1:数据寄存器 0:指令寄存器//
25 ;sbit RESET=P0^4;//低电平有效//正常工作应为高电平//
26 ;sbit BUSY =P0^5;//默认高电平为忙//
27 ;sbit INT =P0^6;//默认高电平触发中断//
28 ;====================================================================
29 ;程序代码开始
0000 30 ORG 0000H
0000 0140 31 AJMP MAIN
32 ;==============================================================
0040 33 ORG 0040H
0040 34 MAIN:
0040 1201D9 35 LCALL DELAY2
0043 758160 36 MOV SP,#60H
0046 C2B2 37 CLR KEY ;如果执行此语句,将全速运行,否则要按一次按键才能显示下一个画面
0048 C284 38 CLR RST
004A 1201D9 39 LCALL DELAY2
004D 1201D9 40 LCALL DELAY2
0050 D284 41 SETB RST
42 ;;;;;;;;;;;;;;;;;主程序部分;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0052 120082 43 LCALL LCM_INIT ;初始化
44 ;---------------清除显示数据:文本和图形
0055 1200F2 45 LCALL CLR_P1
0058 120116 46 LCALL CLR_P2
47 ;---------------全屏显示:横条
005B 1201D9 48 LCALL DELAY2
005E 900236 49 MOV DPTR,#TABOFTEXT
0061 1200A0 50 LCALL HZ_DIS ;显示汉字表中的汉字
0064 1201D1 51 TEST_PRO: LCALL DELAY1
0067 1201D9 52 LCALL DELAY2
006A 1201D9 53 LCALL DELAY2
006D 1201D9 54 LCALL DELAY2
0070 1201D9 55 LCALL DELAY2
0073 1201D9 56 LCALL DELAY2
0076 1201D9 57 LCALL DELAY2
A51 MACRO ASSEMBLER TEXT2 05/11/2008 14:57:33 PAGE 2
0079 1201D9 58 LCALL DELAY2
007C 1201D9 59 LCALL DELAY2
007F 020064 60 LJMP TEST_PRO
61 ;;;;;;;;;;;;;;;;;;;;主程序部分结束;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
62 ;****************************************************
0082 63 LCM_INIT:
0082 1201D9 64 LCALL DELAY2
65 ; MOV REGNAME,#00H
66 ; MOV REGDATA,#0F0H
67 ; LCALL WRITE_COM ;软件复位
0085 1201D1 68 LCALL DELAY1
0088 9001E7 69 MOV DPTR,#INITTAB
008B E4 70 IIINIT: CLR A
008C 93 71 MOVC A,@A+DPTR
008D F530 72 MOV REGNAME,A
008F C3 73 CLR C
0090 94FF 74 SUBB A,#0FFH
0092 600B 75 JZ OUTINT
0094 E4 76 CLR A
0095 A3 77 INC DPTR
0096 93 78 MOVC A,@A+DPTR
0097 F531 79 MOV REGDATA,A
0099 120184 80 LCALL WRITE_COM
009C A3 81 INC DPTR
009D 018B 82 AJMP IIINIT
009F 22 83 OUTINT: RET
84 ;==============================================
00A0 85 HZ_DIS:
00A0 753000 86 MOV REGNAME,#00H
00A3 7531CD 87 MOV REGDATA,#0CDH ;字符模式
00A6 120184 88 LCALL WRITE_COM
00A9 753708 89 MOV COUNT1,#8 ;字符表中共8行汉字
00AC 753300 90 MOV LCM_X,#00H ;设显示行列地址
00AF 753400 91 MOV LCM_Y,#00H ;
00B2 120171 92 HZ_DP0: LCALL LOCAL_XY ;
00B5 75381E 93 HZ_DIS1:MOV COUNT2,#30 ;一行字节计数(含标点15个汉字,合计30个字节)
00B8 E4 94 HZ_DIS11:CLR A
00B9 93 95 MOVC A,@A+DPTR
00BA 1201A4 96 LCALL WRITE_DAT
00BD A3 97 INC DPTR
00BE D538F7 98 DJNZ COUNT2,HZ_DIS11
00C1 E534 99 MOV A,LCM_Y
00C3 2410 100 ADD A,#16 ;指向下一行地址
00C5 F534 101 MOV LCM_Y,A
00C7 D537E8 102 DJNZ COUNT1,HZ_DP0
00CA 22 103 RET
104 ;=====================================================
00CB 105 BMP_DIS:
00CB 753000 106 MOV REGNAME,#00H
00CE 7531C5 107 MOV REGDATA,#0C5H ;图形模式
00D1 120184 108 LCALL WRITE_COM
00D4 753780 109 MOV COUNT1,#128 ;垂直 =128点
00D7 753300 110 MOV LCM_X,#00H ;画 BMP 图
00DA 753400 111 MOV LCM_Y,#00H
00DD 120171 112 BMP_D1: LCALL LOCAL_XY ;设显示定行列地址
00E0 75381E 113 MOV COUNT2,#30 ;水平 30X8=240点
00E3 E4 114 BMP_D2: CLR A
00E4 93 115 MOVC A,@A+DPTR
00E5 1201A4 116 LCALL WRITE_DAT
00E8 A3 117 INC DPTR
00E9 D538F7 118 DJNZ COUNT2,BMP_D2
00EC 0534 119 INC LCM_Y ;指向下一行地址
00EE D537EC 120 DJNZ COUNT1,BMP_D1
00F1 22 121 RET
122 ;======================================================
00F2 123 CLR_P1: ;清除文本层显示数据
A51 MACRO ASSEMBLER TEXT2 05/11/2008 14:57:33 PAGE 3
00F2 753000 124 MOV REGNAME,#00H
00F5 7531CD 125 MOV REGDATA,#0CDH ;文本模式
00F8 120184 126 LCALL WRITE_COM
00FB 753300 127 MOV LCM_X,#00H
00FE 753400 128 MOV LCM_Y,#00H
0101 120171 129 LCALL LOCAL_XY ;设行列地址
0104 753710 130 MOV COUNT1,#16;垂直16行文本
0107 75381E 131 CLR_P11:MOV COUNT2,#30 ;水平40个字节宽
010A 7400 132 CLR_P12:MOV A,#00H;MOV A,#020H
010C 1201A4 133 LCALL WRITE_DAT
010F D538F8 134 DJNZ COUNT2,CLR_P12
0112 D537F2 135 DJNZ COUNT1,CLR_P11
0115 22 136 RET
137 ;======================================================
0116 138 CLR_P2: ;清除图形层显示数据
0116 753000 139 MOV REGNAME,#00H
0119 7531C5 140 MOV REGDATA,#0C5H ;图形模式
011C 120184 141 LCALL WRITE_COM
011F 753300 142 MOV LCM_X,#00H
0122 753400 143 MOV LCM_Y,#00H
0125 120171 144 LCALL LOCAL_XY ;设行列地址
0128 753780 145 MOV COUNT1,#128 ;垂直 =240行
012B 75381E 146 CLR_P21:MOV COUNT2,#30 ;水平40X8=320点
012E E4 147 CLR_P22:CLR A
012F 7400 148 MOV A,#00H
0131 1201A4 149 LCALL WRITE_DAT
0134 D538F7 150 DJNZ COUNT2,CLR_P22
0137 D537F1 151 DJNZ COUNT1,CLR_P21
013A 22 152 RET
153 ;======================================================
013B 154 TEST_LCD: ;图形模式下测试LCD屏
013B 753000 155 MOV REGNAME,#00H
013E 7531C5 156 MOV REGDATA,#0C5H ;图形模式
0141 120184 157 LCALL WRITE_COM
0144 753740 158 MOV COUNT1,#64;;;;;;;;;;;;;;;;;;;;
0147 753400 159 MOV LCM_Y,#00H;
014A 753300 160 TEST_1: MOV LCM_X,#00H
014D 120171 161 LCALL LOCAL_XY
0150 75381E 162 MOV COUNT2,#30;;;;;;;;;;;;;;;;;;;
0153 E535 163 TEST_2: MOV A,LCM_DATA1
0155 1201A4 164 LCALL WRITE_DAT
0158 D538F8 165 DJNZ COUNT2,TEST_2
015B 0534 166 INC LCM_Y
015D 120171 167 LCALL LOCAL_XY
0160 75381E 168 MOV COUNT2,#30
0163 E536 169 TEST_3: MOV A,LCM_DATA2
0165 1201A4 170 LCALL WRITE_DAT
0168 D538F8 171 DJNZ COUNT2,TEST_3
016B 0534 172 INC LCM_Y
016D D537DA 173 DJNZ COUNT1,TEST_1
0170 22 174 RET
175 ;==============================================================
0171 176 LOCAL_XY:
0171 753060 177 MOV REGNAME,#60H ;设定显示列地址
0174 853331 178 MOV REGDATA,LCM_X
0177 120184 179 LCALL WRITE_COM
017A 753070 180 MOV REGNAME,#70H ;设定显示行地址
017D 853431 181 MOV REGDATA,LCM_Y
0180 120184 182 LCALL WRITE_COM
0183 22 183 RET
184 ;==============================================================
0184 185 WRITE_COM:
0184 E530 186 MOV A,REGNAME
0186 12018F 187 LCALL WRITE_REG
0189 E531 188 MOV A,REGDATA
018B 12018F 189 LCALL WRITE_REG
A51 MACRO ASSEMBLER TEXT2 05/11/2008 14:57:33 PAGE 4
018E 22 190 RET
191 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
018F 192 WRITE_REG:
018F F590 193 MOV DBUS,A
0191 C282 194 CLR CSL
0193 D281 195 SETB _RD
0195 C283 196 CLR RS
0197 C280 197 CLR _WR
0199 00 198 NOP
019A 00 199 NOP
019B 00 200 NOP
019C 00 201 NOP
019D D280 202 SETB _WR
019F D283 203 SETB RS
01A1 D282 204 SETB CSL
01A3 22 205 RET
206 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01A4 207 WRITE_DAT:
01A4 F590 208 MOV DBUS,A
01A6 C282 209 CLR CSL
01A8 D281 210 SETB _RD
01AA D283 211 SETB RS
01AC C280 212 CLR _WR
01AE 00 213 NOP
01AF 00 214 NOP
01B0 00 215 NOP
01B1 00 216 NOP
01B2 D280 217 SETB _WR
01B4 D283 218 SETB RS
01B6 D282 219 SETB CSL
01B8 22 220 RET
221 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01B9 222 READ_RS:
01B9 E530 223 MOV A,REGNAME ;读缓存器
01BB 12018F 224 LCALL WRITE_REG
01BE 7590FF 225 MOV DBUS,#0FFH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -