⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hospital.lst

📁 医院语音寻孚系统的汇编源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
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 + -