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