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