📄 wl006.lst
字号:
A51 MACRO ASSEMBLER WL006 04/20/2004 11:57:07 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN wl006.OBJ
ASSEMBLER INVOKED BY: d:\Keil\C51\BIN\A51.EXE wl006.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ; /*******************************************************************************
2 ; * *
3 ; * File : wl006.asm *
4 ; * Date : 2004-4-19 *
5 ; * Version : 1.1 *
6 ; * *
7 ; * Author : Freeman freeman@willar.com *
8 ; * Company : Willar www.willar.com *
9 ; * *
10 ; ********************************************************************************
11 ; * Descriptoon: *
12 ; * AT93C46读写演示程序 *
13 ; * 从地址0x00开始写入数据“www.willar.com”, 然后再读出 *
14 ; * *
15 ; * 注意:在擦除或写入数据之前,必须先写入EWEN指令 *
16 ; * *
17 ; * *
18 ; *******************************************************************************/
19 NAME WL006
20
21 CODE_SEG SEGMENT CODE
22 DATA_SEG SEGMENT DATA
23 STACK_SEG SEGMENT IDATA
24
---- 25 RSEG DATA_SEG
26
0000 27 INDATA: DS 1
0001 28 ADDR: DS 1
29
---- 30 RSEG STACK_SEG
0000 31 STACK: DS 20
32
33
0094 34 CS BIT P1.4
0090 35 SK BIT P1.0
0092 36 DI BIT P1.2
0093 37 DO BIT P1.3
38
39 ;===============================================================================
---- 40 CSEG AT 0000H
0000 020000 F 41 JMP MAIN
42
43 ;===============================================================================
---- 44 RSEG CODE_SEG
0000 45 MAIN:
46 USING 0
0000 758100 F 47 MOV SP,#(STACK-1) ; 设置堆栈
48
0003 C294 49 CLR CS ; 初始化端口
0005 C290 50 CLR SK
0007 D292 51 SETB DI
0009 D293 52 SETB DO
53
000B 120000 F 54 LCALL EWEN ; 使能写入操作
000E 120000 F 55 LCALL ERASE ; 擦除全部内容
56
0011 E4 57 CLR A ; 写入显示代码到AT93C46
0012 F500 F 58 MOV ADDR,A
A51 MACRO ASSEMBLER WL006 04/20/2004 11:57:07 PAGE 2
0014 59 WRITE_LP:
0014 E500 F 60 MOV A,ADDR
0016 900000 F 61 MOV DPTR,#DIS_CODE
0019 93 62 MOVC A,@A+DPTR
63
001A FD 64 MOV R5,A ; 数据到R5
001B AF00 F 65 MOV R7,ADDR ; 地址到R7
001D 120000 F 66 LCALL WRITE
67
0020 0500 F 68 INC ADDR ; 地址加1
0022 E500 F 69 MOV A,ADDR
0024 C3 70 CLR C
0025 9408 71 SUBB A,#08H ; 共8个字节,判断是否完成
0027 40EB 72 JC WRITE_LP
73
0029 120000 F 74 LCALL EWDS ; 禁止写入操作
75
76
002C E4 77 CLR A
002D F500 F 78 MOV ADDR,A
79
002F 80 MAIN_LP: ; 循环读取AT93C46内容,并输出到P0口
002F AF00 F 81 MOV R7,ADDR
0031 120000 F 82 LCALL READ
83
0034 8F80 84 MOV P0,R7
0036 0500 F 85 INC ADDR
0038 530007 F 86 ANL ADDR,#07H ; 循环读取地址为0x00~0x07
87
003B 7FFA 88 MOV R7,#250
003D 120000 F 89 LCALL DELAYMS ; 延时250ms
90
0040 80ED 91 SJMP MAIN_LP
92
93
94 ;===============================================================================
---- 95 RSEG CODE_SEG
0042 96 WRITE:
97 ; 定入数据到AT93C46
98 ; 传入参数:R7 --- 要写入数据的地址
99 ; 传入参数:R5 --- 要写入的数据
100 ; 返回值:无
101
102 USING 0
0042 8D00 F 103 MOV INDATA,R5 ; 暂存要写入的数据
104
0044 AD07 105 MOV R5,AR7 ; 地址
0046 7F40 106 MOV R7,#040H ; 写入指令
0048 120000 F 107 LCALL INOP ; 调用INOP子程序,写入指令和地址
108
004B AF00 F 109 MOV R7,INDATA ; 数据
004D 120000 F 110 LCALL SHIN ; 移入数据
111
0050 C294 112 CLR CS
113
0052 7F0A 114 MOV R7,#10
0054 020000 F 115 LJMP DELAYMS ; 延时10ms,Twp
116 ; END OF WRITE
117
118 ;===============================================================================
---- 119 RSEG CODE_SEG
0057 120 READ:
121 ; 读取AT93C46内的数据
122 ; 传入参数:R7 --- 地址
123 ; 返回值:R7 --- 读取的数据
124
A51 MACRO ASSEMBLER WL006 04/20/2004 11:57:07 PAGE 3
125 USING 0
126
0057 AD07 127 MOV R5,AR7
0059 7F80 128 MOV R7,#080H
005B 120000 F 129 LCALL INOP ; 调用INOP子程序,写入指令和地址
130
005E 120000 F 131 LCALL SHOUT ; 调用SHOUT,读出数据保存到R7
132
0061 C294 133 CLR CS
134
0063 22 135 RET
136 ; END OF READ
137
138 ;===============================================================================
---- 139 RSEG CODE_SEG
0064 140 EWEN:
141 ; 写入使能指令
142 ; 传入参数:无
143 ; 返回值:无
144
145 USING 0
146
0064 7D60 147 MOV R5,#060H
0066 E4 148 CLR A
0067 FF 149 MOV R7,A
0068 120000 F 150 LCALL INOP
151
006B C294 152 CLR CS
153
006D 22 154 RET
155 ; END OF EWEN
156
157
158 ;===============================================================================
---- 159 RSEG CODE_SEG
006E 160 EWDS:
161 ; 写入禁止指令
162 ; 传入参数:无
163 ; 返回值:无
164
165 USING 0
166
006E E4 167 CLR A
006F FD 168 MOV R5,A
0070 FF 169 MOV R7,A
0071 120000 F 170 LCALL INOP
171
0074 C294 172 CLR CS
173
0076 22 174 RET
175 ; END OF EWDS
176
177 ;===============================================================================
---- 178 RSEG CODE_SEG
0077 179 ERASE:
180 ; 擦除所有内容
181 ; 传入参数:无
182 ; 返回值:无
183
184 USING 0
185
0077 7D40 186 MOV R5,#040H
0079 E4 187 CLR A
007A FF 188 MOV R7,A
007B 120000 F 189 LCALL INOP
190
A51 MACRO ASSEMBLER WL006 04/20/2004 11:57:07 PAGE 4
007E 7F1E 191 MOV R7,#01EH
0080 120000 F 192 LCALL DELAYMS
193
0083 C294 194 CLR CS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -