?? 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 ;* 標(biāo)題: 偉納電子ME300B單片機(jī)開發(fā)系統(tǒng)演示程序 - AT93C46讀寫演示程序 *
3 ;* 文件: wl006.asm *
4 ;* 日期: 2004-1-5 *
5 ;* 版本: 1.0 *
6 ;* 作者: 偉納電子 - Freeman *
7 ;* 郵箱: freeman@willar.com *
8 ;* 網(wǎng)站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* AT93C46讀寫演示程序 *
12 ;* 從地址0x00開始寫入數(shù)據(jù)“www.willar.com”, 然后再讀出 *
13 ;* *
14 ;* 注意:在擦除或?qū)懭霐?shù)據(jù)之前,必須先寫入EWEN指令,93C46右邊的JP7跳線 *
15 ;* 用于8位和16位模式選擇,默認(rèn)為8位模式 *
16 ;* *
17 ;* *
18 ;********************************************************************************
19 ;* 【版權(quán)】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
20 ;* 【聲明】 此程序僅用于學(xué)習(xí)與參考,引用請注明版權(quán)和作者信息! *
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) ; 設(shè)置堆棧
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 ; 擦除全部內(nèi)容
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 ; 數(shù)據(jù)到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個(gè)字節(jié),判斷是否完成
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: ; 循環(huán)讀取AT93C46內(nèi)容,并輸出到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 ; 循環(huán)讀取地址為0x00~0x07
91
003B 7FFA 92 MOV R7,#250
003D 120000 F 93 LCALL DELAYMS ; 延時(shí)250ms
94
0040 80ED 95 SJMP MAIN_LP
96
97
98 ;===============================================================================
---- 99 RSEG CODE_SEG
0042 100 WRITE:
101 ; 定入數(shù)據(jù)到AT93C46
102 ; 傳入?yún)?shù):R7 --- 要寫入數(shù)據(jù)的地址
103 ; 傳入?yún)?shù):R5 --- 要寫入的數(shù)據(jù)
104 ; 返回值:無
105
106 USING 0
0042 8D00 F 107 MOV INDATA,R5 ; 暫存要寫入的數(shù)據(jù)
108
0044 AD07 109 MOV R5,AR7 ; 地址
0046 7F40 110 MOV R7,#040H ; 寫入指令
0048 120000 F 111 LCALL INOP ; 調(diào)用INOP子程序,寫入指令和地址
112
004B AF00 F 113 MOV R7,INDATA ; 數(shù)據(jù)
004D 120000 F 114 LCALL SHIN ; 移入數(shù)據(jù)
115
0050 C2B4 116 CLR CS
117
0052 7F0A 118 MOV R7,#10
0054 020000 F 119 LJMP DELAYMS ; 延時(shí)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內(nèi)的數(shù)據(jù)
126 ; 傳入?yún)?shù):R7 --- 地址
127 ; 返回值:R7 --- 讀取的數(shù)據(jù)
128
129 USING 0
130
0057 AD07 131 MOV R5,AR7
0059 7F80 132 MOV R7,#080H
005B 120000 F 133 LCALL INOP ; 調(diào)用INOP子程序,寫入指令和地址
134
005E 120000 F 135 LCALL SHOUT ; 調(diào)用SHOUT,讀出數(shù)據(jù)保存到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 ; 傳入?yún)?shù):無
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 ; 傳入?yún)?shù):無
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 ; 擦除所有內(nèi)容
185 ; 傳入?yún)?shù):無
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -