📄 up51s007.lst
字号:
0086 00 191 NOP
0087 00 192 NOP
0088 00 193 NOP
0089 00 194 NOP
008A A291 195 MOV C,SDA ; 保存应答位到C
008C C290 196 CLR SCL
008E 22 197 RET
198 ; END OF SHOUT
199
200 ;===============================================================================
---- 201 RSEG CODE_SEG
008F 202 WRITE_BYTE:
203 ; 在指定地址写入数据
204 ; 传入参数: R7 --- 写入数据的地址
205 ; 传入参数: R5 --- 要写入的数据
206 ; 返回值:无
207
208 USING 0
209
008F AC07 210 MOV R4,AR7
0091 120000 F 211 LCALL START
212
0094 7FA0 213 MOV R7,#OP_WRITE ; 写入器件地址和写命令
0096 120000 F 214 LCALL SHOUT
215
0099 AF04 216 MOV R7,AR4 ; 地址
009B 120000 F 217 LCALL SHOUT
218
009E AF05 219 MOV R7,AR5 ; 数据
00A0 120000 F 220 LCALL SHOUT
221
00A3 120000 F 222 LCALL STOP
223
00A6 7F0A 224 MOV R7,#10 ; 写入周期, 延时10ms
00A8 020000 F 225 LJMP DELAYMS
226
227 ; END OF WRITE_BYTE
228
229 ;===============================================================================
---- 230 RSEG CODE_SEG
00AB 231 FILL_BYTE:
232 ; 填充数据到EEPROM内
233 ; 传入参数: R7 --- 要填充的数据
234 ; 返回值:无
235
236 USING 0
237
00AB 8F00 F 238 MOV TMP3,R7
239
00AD E4 240 CLR A
00AE F500 F 241 MOV TMP2,A
00B0 242 FILL_LP:
00B0 AD00 F 243 MOV R5,TMP3
00B2 AF00 F 244 MOV R7,TMP2
00B4 120000 F 245 LCALL WRITE_BYTE
246
00B7 0500 F 247 INC TMP2
00B9 E500 F 248 MOV A,TMP2
00BB C3 249 CLR C
00BC 947F 250 SUBB A,#07FH
00BE 40F0 251 JC FILL_LP
252
253 ; END OF FILL_BYTE
254
255 ;===============================================================================
---- 256 RSEG CODE_SEG
A51 MACRO ASSEMBLER UP51S007 12/13/2004 09:20:33 PAGE 5
00C0 257 READ_CURRENT:
258 ; 在当前地址读取
259 ; 传入参数:无
260 ; 返回值:R7 --- 读出的数据
261
262 USING 0
00C0 120000 F 263 LCALL START
264
00C3 7FA1 265 MOV R7,#OP_READ ; 写入器件地址和读取命令
00C5 120000 F 266 LCALL SHOUT
267
00C8 120000 F 268 LCALL SHIN ; 读取数据,保存在R7
269
00CB 120000 F 270 LCALL STOP
271
00CE 22 272 RET
273 ; END OF read_current
274
275 ;===============================================================================
---- 276 RSEG CODE_SEG
00CF 277 READ_RANDOM:
278 ; 在指定地址读取
279 ; 传入参数:R7 --- 地址
280 ; 返回值:R7 --- 读出的数据
281
282 USING 0
00CF AD07 283 MOV R5,AR7 ; 暂存地址
284
00D1 120000 F 285 LCALL START
286
00D4 7FA0 287 MOV R7,#OP_WRITE ; 写入器件地址和写入命令
00D6 120000 F 288 LCALL SHOUT
289
00D9 AF05 290 MOV R7,AR5 ; 写入地址
00DB 120000 F 291 LCALL SHOUT
292
00DE 120000 F 293 LCALL READ_CURRENT ; 在当前地址读取
294
00E1 22 295 RET
296 ; END OF READ_RANDOM
297
298 ;===============================================================================
299
---- 300 RSEG CODE_SEG
00E2 301 DELAYMS:
302 ; 延时子程序
303 ; 传入参数:R7 --- 延时值(MS)
304 ; 返回值:无
305
00E2 EF 306 MOV A,R7
00E3 6009 307 JZ END_DLYMS
00E5 308 DLY_LP1:
00E5 7EB9 309 MOV R6,#185
00E7 310 DLY_LP2:
00E7 00 311 NOP
00E8 00 312 NOP
00E9 00 313 NOP
00EA DEFB 314 DJNZ R6,DLY_LP2
00EC DFF7 315 DJNZ R7,DLY_LP1
316
00EE 317 END_DLYMS:
00EE 22 318 RET
319
320 ; END OF DELAYMS
321
322 ;===============================================================================
A51 MACRO ASSEMBLER UP51S007 12/13/2004 09:20:33 PAGE 6
---- 323 RSEG CODE_SEG
00EF 324 DIS_CODE:
325 ; 写入到AT24C01的数据串
326
00EF 7E 327 DB 07EH
00F0 BD 328 DB 0BDH
00F1 DB 329 DB 0DBH
00F2 E7 330 DB 0E7H
00F3 DB 331 DB 0DBH
00F4 BD 332 DB 0BDH
00F5 7E 333 DB 07EH
00F6 FF 334 DB 0FFH
335
336
337 END
A51 MACRO ASSEMBLER UP51S007 12/13/2004 09:20:33 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
ADDR . . . . . . . D ADDR 0000H R SEG=DATA_SEG
AR4. . . . . . . . D ADDR 0004H A
AR5. . . . . . . . D ADDR 0005H A
AR7. . . . . . . . D ADDR 0007H A
CODE_SEG . . . . . C SEG 00F7H REL=UNIT
DATA_SEG . . . . . D SEG 0003H REL=UNIT
DELAYMS. . . . . . C ADDR 00E2H R SEG=CODE_SEG
DIS_CODE . . . . . C ADDR 00EFH R SEG=CODE_SEG
DLY_LP1. . . . . . C ADDR 00E5H R SEG=CODE_SEG
DLY_LP2. . . . . . C ADDR 00E7H R SEG=CODE_SEG
END_DLYMS. . . . . C ADDR 00EEH R SEG=CODE_SEG
FILL_BYTE. . . . . C ADDR 00ABH R SEG=CODE_SEG
FILL_LP. . . . . . C ADDR 00B0H R SEG=CODE_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
MAIN_LP1 . . . . . C ADDR 000FH R SEG=CODE_SEG
MAIN_LP2 . . . . . C ADDR 0027H R SEG=CODE_SEG
MAX_ADDR . . . . . N NUMB 007FH A
OP_READ. . . . . . N NUMB 00A1H A
OP_WRITE . . . . . N NUMB 00A0H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
READ_CURRENT . . . C ADDR 00C0H R SEG=CODE_SEG
READ_RANDOM. . . . C ADDR 00CFH R SEG=CODE_SEG
SCL. . . . . . . . B ADDR 0090H.0 A
SDA. . . . . . . . B ADDR 0090H.1 A
SHIN . . . . . . . C ADDR 0056H R SEG=CODE_SEG
SHIN_LP. . . . . . C ADDR 0058H R SEG=CODE_SEG
SHOUT. . . . . . . C ADDR 006BH R SEG=CODE_SEG
SHOUT_LP . . . . . C ADDR 006DH R SEG=CODE_SEG
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
START. . . . . . . C ADDR 003AH R SEG=CODE_SEG
STOP . . . . . . . C ADDR 0049H R SEG=CODE_SEG
TMP2 . . . . . . . D ADDR 0001H R SEG=DATA_SEG
TMP3 . . . . . . . D ADDR 0002H R SEG=DATA_SEG
WL007. . . . . . . N NUMB -----
WRITE_BYTE . . . . C ADDR 008FH R SEG=CODE_SEG
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -