📄 serial port.lst
字号:
A51 MACRO ASSEMBLER SERIAL_PORT 12/19/2006 21:05:32 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN SERIAL PORT.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE SERIAL PORT.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;******************************************************************
2 ;* *
3 ;* ME500单片机开发系统演示程序 - 12864 图片与文字显示 *
4 ;* *
5 ;* ST7920控制芯片(汉字库),串口模式。 *
6 ;* *
7 ;* 版本: V1.0 (2006/11/20) *
8 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
9 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界)*
10 ;* 时间: 2006/12/15 *
11 ;* *
12 ;*【版权】COPYRIGHT(C)伟纳电子 www.willar.com ALL RIGHTS RESERVED *
13 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
14 ;* *
15 ;******************************************************************
16
17 ;********************* 12864引脚定义 *********************
18
00A0 19 CS EQU P2.0
00A1 20 SID EQU P2.1
00A2 21 SCLK EQU P2.2
00A3 22 PSB EQU P2.3
00A5 23 RST EQU P2.5
24
25 ;**********************************************************
26
0030 27 LCD_X EQU 30H ;GDRAM水平坐标
0031 28 LCD_Y EQU 31H ;GDRAM垂直坐标
0032 29 TEMP EQU 32H
0033 30 COUNT1 EQU 33H
0034 31 COUNT2 EQU 34H
0035 32 COUNT3 EQU 35H
33
34 ;**********************************************************
35
0000 36 ORG 0000H
0000 020030 37 LJMP MAIN
0030 38 ORG 0030H
39
40 ;**********************************************************
0030 41 MAIN:
0030 758160 42 MOV SP,#60H
0033 1184 43 CALL LCD_INIT
0035 317D 44 CALL DELAY5MS
45
0037 7480 46 MOV A,#80H
0039 9001A5 47 MOV DPTR,#MENU1
003C 11EA 48 CALL WR_STRING
49
003E 7490 50 MOV A,#90H
0040 9001B5 51 MOV DPTR,#MENU2
0043 11EA 52 CALL WR_STRING
53
0045 7488 54 MOV A,#88H
0047 9001C5 55 MOV DPTR,#MENU3
004A 11EA 56 CALL WR_STRING
57
004C 7498 58 MOV A,#98H
A51 MACRO ASSEMBLER SERIAL_PORT 12/19/2006 21:05:32 PAGE 2
004E 9001D5 59 MOV DPTR,#MENU4
0051 11EA 60 CALL WR_STRING
61
0053 7BC8 62 MOV R3,#200
0055 63 MAIN1:
0055 317D 64 CALL DELAY5MS
0057 317D 65 CALL DELAY5MS
0059 DBFA 66 DJNZ R3,MAIN1
67
005B 3144 68 CALL FLASH ;闪烁
005D 316D 69 CALL CLEAR_LCD ;清屏
70
005F 9001E5 71 MOV DPTR,#TU_TAB1 ;显示图形1
0062 11FE 72 CALL PHO_DISP
73
0064 7BC8 74 MOV R3,#200 ;
0066 75 MAIN2:
0066 317D 76 CALL DELAY5MS
0068 317D 77 CALL DELAY5MS
006A DBFA 78 DJNZ R3,MAIN2
79
006C 3144 80 CALL FLASH ;闪烁
006E 316D 81 CALL CLEAR_LCD ;清屏
82
0070 9005E5 83 MOV DPTR,#TU_TAB2 ;显示图形2
0073 11FE 84 CALL PHO_DISP
85
0075 7BC8 86 MOV R3,#200
0077 87 MAIN3:
0077 317D 88 CALL DELAY5MS
0079 317D 89 CALL DELAY5MS
007B DBFA 90 DJNZ R3,MAIN3
91
007D 3144 92 CALL FLASH ;闪烁
007F 316D 93 CALL CLEAR_LCD ;清屏
94
0081 80AD 95 JMP MAIN
96
0083 22 97 RET
98
99 ;**********************************************************
100
101 ; LCD 初始化
102
103 ;**********************************************************
0084 104 LCD_INIT:
0084 317D 105 CALL DELAY5MS ;延时15ms
0086 317D 106 CALL DELAY5MS
0088 317D 107 CALL DELAY5MS
108
008A C2A3 109 CLR PSB ;串口驱动模式
008C D2A0 110 SETB CS ;片选 高电平有效
008E C2A2 111 CLR SCLK ;时钟置于低电平
112
0090 C2A5 113 CLR RST ;LCD复位
0092 317D 114 CALL DELAY5MS
0094 D2A5 115 SETB RST
116
0096 7430 117 MOV A,#30H ;基本指令操作
0098 11A7 118 CALL WR_OPERAT
119
009A 7406 120 MOV A,#06H
009C 11A7 121 CALL WR_OPERAT
122
009E 740C 123 MOV A,#0CH ;开显示,关光标,不闪烁
00A0 11A7 124 CALL WR_OPERAT
A51 MACRO ASSEMBLER SERIAL_PORT 12/19/2006 21:05:32 PAGE 3
125
00A2 7401 126 MOV A,#01H ;清屏
00A4 11A7 127 CALL WR_OPERAT
00A6 22 128 RET
129 ;**********************************************************
130
131 ; 写指令子程序
132
133 ;**********************************************************
00A7 134 WR_OPERAT:
00A7 F5F0 135 MOV B,A ;暂存数据
00A9 74F8 136 MOV A,#0F8H ;写F8H控制命令
00AB 11DB 137 CALL WR_BYTE
00AD 3188 138 CALL DELAY1MS
139
00AF E5F0 140 MOV A,B
00B1 54F0 141 ANL A,#0F0H ;写控制命令的高4位
00B3 11DB 142 CALL WR_BYTE
00B5 3188 143 CALL DELAY1MS
144
00B7 E5F0 145 MOV A,B
00B9 C4 146 SWAP A
00BA 54F0 147 ANL A,#0F0H ;写控制命令的低4位
00BC 11DB 148 CALL WR_BYTE
00BE 3188 149 CALL DELAY1MS
00C0 22 150 RET
151 ;**********************************************************
152
153 ; 写数据子程序
154
155 ;**********************************************************
00C1 156 WR_DATA:
00C1 F5F0 157 MOV B,A ;暂存数据
00C3 74FA 158 MOV A,#0FAH ;写FAH控制命令
00C5 11DB 159 CALL WR_BYTE
00C7 3193 160 CALL DELAY
161
00C9 E5F0 162 MOV A,B
00CB 54F0 163 ANL A,#0F0H ;写数据的高4位
00CD 11DB 164 CALL WR_BYTE
00CF 3193 165 CALL DELAY
166
00D1 E5F0 167 MOV A,B
00D3 C4 168 SWAP A
00D4 54F0 169 ANL A,#0F0H ;写数据的低4位
00D6 11DB 170 CALL WR_BYTE
00D8 3193 171 CALL DELAY
00DA 22 172 RET
173 ;**********************************************************
174
175 ; 写一个字节子程序
176 ;
177 ;**********************************************************
00DB 178 WR_BYTE:
00DB 7D08 179 MOV R5,#8
00DD 180 WR_BYTE1:
00DD 33 181 RLC A
00DE 92A1 182 MOV SID,C
00E0 D2A2 183 SETB SCLK
00E2 00 184 NOP
00E3 00 185 NOP
00E4 00 186 NOP
00E5 C2A2 187 CLR SCLK
00E7 DDF4 188 DJNZ R5,WR_BYTE1
00E9 22 189 RET
190
A51 MACRO ASSEMBLER SERIAL_PORT 12/19/2006 21:05:32 PAGE 4
191 ;**********************************************************
192
193 ; 写字符串子程序
194
195 ;**********************************************************
00EA 196 WR_STRING:
00EA 11A7 197 CALL WR_OPERAT
00EC 7C10 198 MOV R4,#16
00EE 199 WR_STRING1:
00EE E4 200 CLR A
00EF 93 201 MOVC A,@A+DPTR
00F0 11C1 202 CALL WR_DATA
00F2 A3 203 INC DPTR
00F3 7B08 204 MOV R3,#08H ;加入80ms的延时
00F5 205 WAIT: ;使你能够看清楚显示的过程
00F5 317D 206 CALL DELAY5MS
00F7 317D 207 CALL DELAY5MS
00F9 DBFA 208 DJNZ R3,WAIT
209
00FB DCF1 210 DJNZ R4,WR_STRING1
00FD 22 211 RET
212
213 ;**********************************************************
214
215 ; 显示图像子程序
216
217 ;**********************************************************
00FE 218 PHO_DISP:
00FE 753502 219 MOV COUNT3,#02H
0101 753080 220 MOV LCD_X,#80H
0104 221 PHO_DISP1:
0104 753180 222 MOV LCD_Y,#80H
0107 753420 223 MOV COUNT2,#20H
010A 224 PHO_DISP2:
010A 753310 225 MOV COUNT1,#10H
010D 12012F 226 LCALL WR_ZB
0110 227 PHO_DISP3:
0110 E4 228 CLR A
0111 93 229 MOVC A,@A+DPTR
0112 1200C1 230 LCALL WR_DATA
0115 A3 231 INC DPTR
0116 D533F7 232 DJNZ COUNT1,PHO_DISP3
0119 0531 233 INC LCD_Y
011B D534EC 234 DJNZ COUNT2,PHO_DISP2
011E 753088 235 MOV LCD_X,#88H
0121 D535E0 236 DJNZ COUNT3,PHO_DISP1
237
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -