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