📄 hospital.lst
字号:
00C8 31BC 257 ACALL READ_93C46
258
00CA 7840 259 MOV R0,#SEND_BUFFER1
260
00CC E538 261 MOV A,BYTE1_93C ;从93C46里读出来的数据放在SEND——BUFFER1里
00CE F6 262 MOV @R0,A
00CF 08 263 INC R0
00D0 E539 264 MOV A,BYTE2_93C
00D2 F6 265 MOV @R0,A
266
00D3 753702 267 MOV ADD_93C_L,#02H ;再读12BIT的自身地址(2BYTE)
00D6 31BC 268 ACALL READ_93C46
00D8 E538 269 MOV A,BYTE1_93C
00DA F542 270 MOV DATA1,A
271
00DC E539 272 MOV A,BYTE2_93C
00DE F543 273 MOV DATA2,A
274
00E0 E542 275 MOV A,DATA1
00E2 C3 276 CLR C ;第1个BIT为0,说明是第1个数据
00E3 13 277 RRC A
00E4 F542 278 MOV DATA1,A
00E6 E543 279 MOV A,DATA2
00E8 13 280 RRC A
00E9 D3 281 SETB C ;第1个BIT为1,说明是第2个数据
00EA 13 282 RRC A
00EB 54FC 283 ANL A,#0FCH ;1111 1100
00ED 4531 284 ORL A,KEY_VALUE ;;最后把按键值放在最后一位.共4BYTE
00EF F543 285 MOV DATA2,A
286 ;此处改动是为了调试,把地址全部为0,自身的地址任意设
00F1 7840 287 MOV R0,#SEND_BUFFER1
00F3 7600 288 MOV @R0,#00H
00F5 08 289 INC R0
00F6 7600 290 MOV @R0,#00H
00F8 754200 291 MOV DATA1,#00H
00FB 754300 292 MOV DATA2,#0H
293
294
295
296
297
298 ;***********开始发送address$data**************************
299
300
00FE 301 SENDING:
302
00FE 75340A 303 MOV TIMERS,#00AH ;一共10次
0101 304 SENDING_1:
305 ;**********开始发送空白和S********************************
0101 C285 306 CLR DATAOUT
0103 5151 307 ACALL DELAY10MS
0105 D285 308 SETB DATAOUT
0107 5158 309 ACALL DELAY80US
0109 5158 310 ACALL DELAY80US
010B 5158 311 ACALL DELAY80US
312 ;ACALL DELAY80US
010D C285 313 CLR DATAOUT
010F 5158 314 ACALL DELAY80US
315 ;***********************************************************
316
0111 75320A 317 MOV TIME_ADD,#00AH ;地址是10BTI
0114 753308 318 MOV TIME_CD_NUM,#08H ;自身地址是8位,两次都是。
319
0117 7840 320 MOV R0,#SEND_BUFFER1 ;前2个BYTE是地址
0119 08 321 INC R0 ;@R0是第1个地址(前8BIT)
011A E9 322 MOV A,R1 ;@R1是第2个地址(后2BIT)
A51 MACRO ASSEMBLER HOSPITAL 02/12/00 17:23:19 PAGE 6
011B F9 323 MOV R1,A ;注意:只有R0、R1才可以使用@Rn,其他的几个不行
011C 324 SEND_ADD_NEXT:
011C C3 325 CLR C ;左移,从最高位开始发送
011D E7 326 MOV A,@R1
011E 33 327 RLC A
011F F7 328 MOV @R1,A
0120 E6 329 MOV A,@R0
0121 33 330 RLC A
0122 F6 331 MOV @R0,A
0123 4004 332 JC SEND_ADD1 ;最高位
0125 333 SEND_ADD0:
0125 319C 334 ACALL SEND0
0127 212D 335 AJMP SEND_AD_NEXT1
336
0129 337 SEND_ADD1:
0129 31AC 338 ACALL SEND1
012B 212D 339 AJMP SEND_AD_NEXT1
340
012D 341 SEND_AD_NEXT1:
342
012D D532EC 343 DJNZ TIME_ADD,SEND_ADD_NEXT
0130 2132 344 AJMP SEND_CODE
345
0132 346 SEND_CODE: ;地址发送完,发送自身地址
0132 7842 347 MOV R0,#DATA1 ;从第3个地址开始是自身地址
0134 348 SEND_NEXT:
0134 E6 349 MOV A,@R0
0135 33 350 RLC A ;从最高位开始发送
0136 F6 351 MOV @R0,A
0137 4004 352 JC SEND_CD1
0139 353 SEND_CD0:
0139 319C 354 ACALL SEND0
013B 2141 355 AJMP SEND_CD_NEXT
013D 356 SEND_CD1:
013D 31AC 357 ACALL SEND1
013F 2141 358 AJMP SEND_CD_NEXT
359
0141 360 SEND_CD_NEXT:
0141 D533F0 361 DJNZ TIME_CD_NUM,SEND_NEXT ;第几个BIT
362
363 ;一共连续发送10次
0144 D534BA 364 DJNZ TIMERS,SENDING_1
365
366 ;************;第2次发送****************
367
0147 75340A 368 MOV TIMERS,#00AH ;一共10次
369
014A 370 SENDING_2:
371 ;**********开始发送空白和S********************************
014A C285 372 CLR DATAOUT
014C 5151 373 ACALL DELAY10MS
014E D285 374 SETB DATAOUT
0150 5158 375 ACALL DELAY80US
0152 5158 376 ACALL DELAY80US
0154 5158 377 ACALL DELAY80US
378 ;ACALL DELAY80US
0156 C285 379 CLR DATAOUT
0158 5158 380 ACALL DELAY80US
381 ;***********************************************************
382
015A 75320A 383 MOV TIME_ADD,#00AH ;地址是10BTI
015D 753308 384 MOV TIME_CD_NUM,#08H ;自身地址是8位,两次都是。
385
0160 7840 386 MOV R0,#SEND_BUFFER1
0162 08 387 INC R0
0163 E8 388 MOV A,R0
A51 MACRO ASSEMBLER HOSPITAL 02/12/00 17:23:19 PAGE 7
0164 F9 389 MOV R1,A
0165 390 SD2_ADD_NEXT:
0165 C3 391 CLR C
0166 E7 392 MOV A,@R1
0167 33 393 RLC A
0168 F7 394 MOV @R1,A
0169 E6 395 MOV A,@R0
016A 33 396 RLC A
016B F6 397 MOV @R0,A
016C 4004 398 JC SD2_ADD1
016E 399 SD2_ADD0:
016E 319C 400 ACALL SEND0
0170 2176 401 AJMP SD2_AD_NEXT2
402
0172 403 SD2_ADD1:
0172 31AC 404 ACALL SEND1
0174 2176 405 AJMP SD2_AD_NEXT2
406
0176 407 SD2_AD_NEXT2:
408
0176 D532EC 409 DJNZ TIME_ADD,SD2_ADD_NEXT
0179 217B 410 AJMP SD2_CODE
411
017B 412 SD2_CODE: ;地址发送完,发送自身地址
017B 7843 413 MOV R0,#DATA2 ;第4BYTE是第2个数据:地址和KEY-VALUE
414
017D 415 SD2_NEXT:
017D E6 416 MOV A,@R0
017E 33 417 RLC A
017F F6 418 MOV @R0,A
0180 4004 419 JC SD2_CD1
0182 420 SD2_CD0:
0182 319C 421 ACALL SEND0
0184 218A 422 AJMP SD2_CD_NEXT
0186 423 SD2_CD1:
0186 31AC 424 ACALL SEND1
0188 218A 425 AJMP SD2_CD_NEXT
426
018A 427 SD2_CD_NEXT:
018A D533F0 428 DJNZ TIME_CD_NUM,SD2_NEXT
429
430 ;一共连续发送10次
018D D534BA 431 DJNZ TIMERS,SENDING_2
0190 01FE 432 ajmp sending
433
0192 D200 434 SETB SEND_FINISH ;发送完成,置位,使进入休眠状态
0194 D2E9 435 SETB EKB ;重新开启键盘中断
0196 53A27F 436 ANL AUXR1,#07FH ;CLEAR KBF
0199 D0D0 437 POP PSW
438
019B 32 439 RETI
440
441
442 ;*****************子程序*******************************************
019C 443 SEND0:
019C 7B24 444 MOV R3,#024H ;0010 01+00
019E 753606 445 MOV TIME_REP,#06H
01A1 446 SEND0_LOOP:
01A1 EB 447 MOV A,R3
01A2 33 448 RLC A
01A3 FB 449 MOV R3,A
01A4 9285 450 MOV DATAOUT,C
01A6 5158 451 ACALL DELAY80US
01A8 D536F6 452 DJNZ TIME_REP,SEND0_LOOP
01AB 22 453 RET
454
A51 MACRO ASSEMBLER HOSPITAL 02/12/00 17:23:19 PAGE 8
455
01AC 456 SEND1:
01AC 7B6C 457 MOV R3,#06CH ;0110 11+00
01AE 753606 458 MOV TIME_REP,#06H
01B1 459 SEND1_LOOP:
01B1 EB 460 MOV A,R3
01B2 33 461 RLC A
01B3 FB 462 MOV R3,A
01B4 9285 463 MOV DATAOUT,C
01B6 5158 464 ACALL DELAY80US
01B8 D536F6 465 DJNZ TIME_REP,SEND1_LOOP
01BB 22 466 RET
467
468
469
470
471 ;**************************************************************************
472 ;
473 ; 93C46 Read Program 16 BIT MODE
474 ;
475 ; Input : ADD_93C_H Address High 1 Bit
476 ; ADD_93C_L Address Low 8 Bit
477 ;
478 ; Output : BYTE1_93C First BYTE 8 Bit
479 ; BYTE2_93C Secend BYTE 8 Bit
480 ;
481 ; AFFECTED : R1 - R5 , PSW , ACC
482 ;**************************************************************************
483
01BC 484 READ_93C46:
01BC 22 485 RET ;实验!
01BD 00 486 NOP
01BE 00 487 NOP
01BF 512D 488 ACALL CS1_93C ; CS 1
01C1 00 489 NOP
01C2 00 490 NOP
491
01C3 7D03 492 MOV R5,#03H
01C5 E537 493 MOV A,ADD_93C_L
01C7 547E 494 ANL A,#07EH
01C9 FC 495 MOV R4,A
496
01CA 7A0C 497 MOV R2,#0CH ; COMMAND 11 BIT
01CC 00 498 NOP
01CD 00 499 NOP
500
01CE 501 READ_ADDR46:
01CE C287 502 CLR SK_93C ; SK LOW
01D0 8DE0 503 MOV ACC,R5
01D2 A2E3 504 MOV C,ACC.3
01D4 9290 505 MOV DI_93C,C
506
01D6 00 507 NOP
01D7 D287 508 SETB SK_93C ; SK HIGH
509
01D9 EC 510 MOV A,R4
01DA 33 511 RLC A
01DB FC 512 MOV R4,A
513
01DC ED 514 MOV A,R5
01DD 33 515 RLC A
01DE FD 516 MOV R5,A
01DF 00 517 NOP
01E0 00 518 NOP
01E1 DAEB 519 DJNZ R2,READ_ADDR46
01E3 00 520 NOP
A51 MACRO ASSEMBLER HOSPITAL 02/12/00 17:23:19 PAGE 9
01E4 00 521 NOP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -