📄 ex08.lst
字号:
0086 190 INOP:
A51 MACRO ASSEMBLER EX08 05/23/2005 23:22:42 PAGE 4
191 ; 写入操作码
192 ; 传入参数:R7高两位 --- 指令码的高两位
193 ; 传入参数:R5低七位 --- 指令码的低7位或地址
194 ; 返回值:无
195
196 USING 0
197
0086 C292 198 CLR SK ; 开始位
0088 D290 199 SETB DI
008A D291 200 SETB CS
008C 00 201 NOP
008D 00 202 NOP
008E D292 203 SETB SK
0090 00 204 NOP
0091 00 205 NOP
0092 C292 206 CLR SK ; 开始位结束
207
0094 EF 208 MOV A,R7 ; 先移入指令码高位
0095 33 209 RLC A
0096 9290 210 MOV DI,C
0098 D292 211 SETB SK
009A 33 212 RLC A
009B C292 213 CLR SK
009D 9290 214 MOV DI,C ; 移入指令码次高位
009F D292 215 SETB SK
00A1 00 216 NOP
00A2 00 217 NOP
00A3 C292 218 CLR SK
219
220
00A5 ED 221 MOV A,R5 ; 移入余下的指令码或地址数据
00A6 33 222 RLC A
00A7 FD 223 MOV R5,A ; R5左移一位
224
00A8 E4 225 CLR A
00A9 FF 226 MOV R7,A
00AA 227 INOP_LP:
00AA ED 228 MOV A,R5 ; 移入R5的高7位
00AB 33 229 RLC A
00AC 9290 230 MOV DI,C
00AE D292 231 SETB SK
00B0 ED 232 MOV A,R5
00B1 33 233 RLC A
00B2 FD 234 MOV R5,A
00B3 C292 235 CLR SK
236
00B5 0F 237 INC R7
00B6 BF07F1 238 CJNE R7,#07H,INOP_LP ; 判断是否7位全移完
239
00B9 D290 240 SETB DI
241
00BB 22 242 RET
243 ; END OF INOP
244
245 ;===============================================================================
---- 246 RSEG CODE_SEG
00BC 247 SHIN:
248 ; 从MCU移出数据到AT93C46
249 ; 传入参数:R7 --- 要移入的数据
250 ; 返回值:无
251
252 USING 0
253
00BC E4 254 CLR A
00BD FE 255 MOV R6,A
00BE EE 256 MOV A,R6
A51 MACRO ASSEMBLER EX08 05/23/2005 23:22:42 PAGE 5
00BF EF 257 MOV A,R7
00C0 258 SHIN_LP:
00C0 33 259 RLC A
00C1 9290 260 MOV DI,C
00C3 D292 261 SETB SK
00C5 00 262 NOP
00C6 00 263 NOP
00C7 C292 264 CLR SK
265
00C9 0E 266 INC R6
00CA BE08F3 267 CJNE R6,#08H,SHIN_LP ; 共8位,判断是否完成
268
00CD D290 269 SETB DI
00CF 22 270 RET
271 ; END OF SHIN
272
273 ;===============================================================================
274
---- 275 RSEG CODE_SEG
00D0 276 SHOUT:
277 ; 从AT93C46移出数据MCU
278 ; 传入参数:无
279 ; 返回值:R7 --- 读出的数据
280
281 USING 0
282
00D0 E4 283 CLR A
00D1 FE 284 MOV R6,A
00D2 285 SHOUT_LP:
00D2 D292 286 SETB SK
00D4 00 287 NOP
00D5 00 288 NOP
00D6 C292 289 CLR SK
00D8 A293 290 MOV C,DO
00DA 33 291 RLC A
00DB 0E 292 INC R6
00DC BE08F3 293 CJNE R6,#08H,SHOUT_LP ; 共8位,判断是否完成
00DF F507 294 MOV AR7,A
295
00E1 22 296 RET
297 ; END OF SHOUT
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 ; END OF DELAYMS
320
321 ;===============================================================================
322 ; 写入到AT93C46的数据串
A51 MACRO ASSEMBLER EX08 05/23/2005 23:22:42 PAGE 6
323
---- 324 RSEG CODE_SEG
00EF 325 DIS_CODE:
00EF 7E 326 DB 07EH
00F0 BD 327 DB 0BDH
00F1 DB 328 DB 0DBH
00F2 E7 329 DB 0E7H
00F3 DB 330 DB 0DBH
00F4 BD 331 DB 0BDH
00F5 7E 332 DB 07EH
00F6 FF 333 DB 0FFH
334
335 END
A51 MACRO ASSEMBLER EX08 05/23/2005 23:22:42 PAGE 7
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ADDR . . . . . . . D ADDR 0001H R SEG=DATA_SEG
AR7. . . . . . . . D ADDR 0007H A
CODE_SEG . . . . . C SEG 00F7H REL=UNIT
CS . . . . . . . . B ADDR 0090H.1 A
DATA_SEG . . . . . D SEG 0002H REL=UNIT
DELAYMS. . . . . . C ADDR 00E2H R SEG=CODE_SEG
DI . . . . . . . . B ADDR 0090H.0 A
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
DO . . . . . . . . B ADDR 0090H.3 A
END_DLYMS. . . . . C ADDR 00EEH R SEG=CODE_SEG
ERASE. . . . . . . C ADDR 0077H R SEG=CODE_SEG
EWDS . . . . . . . C ADDR 006EH R SEG=CODE_SEG
EWEN . . . . . . . C ADDR 0064H R SEG=CODE_SEG
INDATA . . . . . . D ADDR 0000H R SEG=DATA_SEG
INOP . . . . . . . C ADDR 0086H R SEG=CODE_SEG
INOP_LP. . . . . . C ADDR 00AAH R SEG=CODE_SEG
MAIN . . . . . . . C ADDR 0000H R SEG=CODE_SEG
MAIN_LP. . . . . . C ADDR 002FH R SEG=CODE_SEG
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
READ . . . . . . . C ADDR 0057H R SEG=CODE_SEG
SHIN . . . . . . . C ADDR 00BCH R SEG=CODE_SEG
SHIN_LP. . . . . . C ADDR 00C0H R SEG=CODE_SEG
SHOUT. . . . . . . C ADDR 00D0H R SEG=CODE_SEG
SHOUT_LP . . . . . C ADDR 00D2H R SEG=CODE_SEG
SK . . . . . . . . B ADDR 0090H.2 A
SP . . . . . . . . D ADDR 0081H A
STACK. . . . . . . I ADDR 0000H R SEG=STACK_SEG
STACK_SEG. . . . . I SEG 0014H REL=UNIT
WRITE. . . . . . . C ADDR 0042H R SEG=CODE_SEG
WRITE_LP . . . . . C ADDR 0014H 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 + -