📄 upsd_i2c.lst
字号:
003B E4 CLR A
003C 3400 R ADDC A,#HIGH i2c_xmit_buf
003E F583 MOV DPH,A
0040 E0 MOVX A,@DPTR
0041 F5DE MOV S2DAT,A
; SOURCE LINE # 73
0043 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 74
0046 53DCDF ANL S2CON,#0DFH
; SOURCE LINE # 75
0049 0500 R INC i+01H
004B E500 R MOV A,i+01H
004D 70D4 JNZ ?C0004
004F 0500 R INC i
0051 ?C0023:
0051 80D0 SJMP ?C0004
0053 ?C0005:
; SOURCE LINE # 76
0053 43DC10 ORL S2CON,#010H
; SOURCE LINE # 77
0056 7400 R MOV A,#LOW i2c_xmit_buf
0058 2500 R ADD A,i+01H
005A F582 MOV DPL,A
005C E4 CLR A
005D 3400 R ADDC A,#HIGH i2c_xmit_buf
005F F583 MOV DPH,A
0061 E0 MOVX A,@DPTR
0062 F5DE MOV S2DAT,A
; SOURCE LINE # 78
0064 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 79
0067 75DEFF MOV S2DAT,#0FFH
; SOURCE LINE # 80
006A 22 RET
; FUNCTION _upsd_i2c_xmit (END)
; FUNCTION _upsd_i2c_rcv (BEGIN)
; SOURCE LINE # 88
0000 8F00 R MOV i2c_address,R7
0002 8D00 R MOV start_address,R5
0004 8B00 R MOV data_len,R3
0006 ?C0008:
; SOURCE LINE # 89
0006 E5DD MOV A,S2STA
0008 20E3FB JB ACC.3,?C0008
000B ?C0009:
; SOURCE LINE # 90
000B D200 R SETB i2c_master
C51 COMPILER V7.00 UPSD_I2C 11/13/2002 09:49:12 PAGE 6
; SOURCE LINE # 91
000D C200 R CLR i2c_xmitr
; SOURCE LINE # 94
000F 8500DE R MOV S2DAT,i2c_address
; SOURCE LINE # 95
0012 43DC40 ORL S2CON,#040H
; SOURCE LINE # 96
; SOURCE LINE # 97
; SOURCE LINE # 98
0015 120000 R LCALL L?0027
; SOURCE LINE # 99
0018 53DCDF ANL S2CON,#0DFH
; SOURCE LINE # 100
001B 43DC10 ORL S2CON,#010H
; SOURCE LINE # 101
001E 8500DE R MOV S2DAT,start_address
; SOURCE LINE # 102
0021 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 103
0024 75DEFF MOV S2DAT,#0FFH
; SOURCE LINE # 106
0027 E500 R MOV A,i2c_address
0029 4401 ORL A,#01H
002B F5DE MOV S2DAT,A
; SOURCE LINE # 107
; SOURCE LINE # 108
; SOURCE LINE # 109
; SOURCE LINE # 110
; SOURCE LINE # 111
002D 120000 R LCALL ?C0026
; SOURCE LINE # 112
0030 53DCDF ANL S2CON,#0DFH
; SOURCE LINE # 113
0033 75DEFF MOV S2DAT,#0FFH
; SOURCE LINE # 114
0036 43DC04 ORL S2CON,#04H
; SOURCE LINE # 115
0039 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 117
003C E4 CLR A
003D F500 R MOV i,A
003F F500 R MOV i+01H,A
0041 ?C0010:
0041 E500 R MOV A,data_len
0043 24FF ADD A,#0FFH
0045 FF MOV R7,A
0046 E4 CLR A
0047 34FF ADDC A,#0FFH
0049 FE MOV R6,A
004A C3 CLR C
004B E500 R MOV A,i+01H
004D 9F SUBB A,R7
004E E500 R MOV A,i
0050 9E SUBB A,R6
0051 501E JNC ?C0011
; SOURCE LINE # 118
0053 85DD00 R MOV dummybyte,S2STA
; SOURCE LINE # 119
0056 7400 R MOV A,#LOW i2c_rcv_buf
0058 2500 R ADD A,i+01H
005A F582 MOV DPL,A
005C E4 CLR A
C51 COMPILER V7.00 UPSD_I2C 11/13/2002 09:49:12 PAGE 7
005D 3400 R ADDC A,#HIGH i2c_rcv_buf
005F F583 MOV DPH,A
0061 E5DE MOV A,S2DAT
0063 F0 MOVX @DPTR,A
; SOURCE LINE # 120
0064 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 121
0067 0500 R INC i+01H
0069 E500 R MOV A,i+01H
006B 70D4 JNZ ?C0010
006D 0500 R INC i
006F ?C0024:
006F 80D0 SJMP ?C0010
0071 ?C0011:
; SOURCE LINE # 122
0071 53DCFB ANL S2CON,#0FBH
; SOURCE LINE # 123
0074 7400 R MOV A,#LOW i2c_rcv_buf
0076 2500 R ADD A,i+01H
0078 F582 MOV DPL,A
007A E4 CLR A
007B 3400 R ADDC A,#HIGH i2c_rcv_buf
007D F583 MOV DPH,A
007F E5DE MOV A,S2DAT
0081 F0 MOVX @DPTR,A
; SOURCE LINE # 124
0082 120000 R LCALL i2c_wait_for_int
; SOURCE LINE # 125
0085 85DD00 R MOV dummybyte,S2STA
; SOURCE LINE # 126
0088 0500 R INC i+01H
008A E500 R MOV A,i+01H
008C 7002 JNZ ?C0025
008E 0500 R INC i
0090 ?C0025:
; SOURCE LINE # 127
0090 2400 R ADD A,#LOW i2c_rcv_buf
0092 F582 MOV DPL,A
0094 E4 CLR A
0095 3400 R ADDC A,#HIGH i2c_rcv_buf
0097 F583 MOV DPH,A
0099 E5DE MOV A,S2DAT
009B F0 MOVX @DPTR,A
; SOURCE LINE # 128
009C 22 RET
; FUNCTION _upsd_i2c_rcv (END)
; FUNCTION L?0026 (BEGIN)
0000 43DC40 ORL S2CON,#040H
0003 53DCEF ANL S2CON,#0EFH
0006 L?0027:
0006 43DC20 ORL S2CON,#020H
0009 53DCFB ANL S2CON,#0FBH
; FUNCTION i2c_wait_for_int (BEGIN)
; SOURCE LINE # 136
; SOURCE LINE # 137
000C D200 R SETB i2cwait
; SOURCE LINE # 138
000E E4 CLR A
000F F500 R MOV i2c_timeout,A
0011 ?C0014:
; SOURCE LINE # 139
C51 COMPILER V7.00 UPSD_I2C 11/13/2002 09:49:12 PAGE 8
0011 300016 R JNB i2cwait,?C0017
; SOURCE LINE # 140
0014 E500 R MOV A,i2c_timeout
0016 C3 CLR C
0017 940A SUBB A,#0AH
0019 4004 JC ?C0016
; SOURCE LINE # 141
001B D200 R SETB i2c_timeout_flag
; SOURCE LINE # 142
001D C200 R CLR i2cwait
; SOURCE LINE # 143
001F ?C0016:
; SOURCE LINE # 144
001F 7F01 MOV R7,#01H
0021 7E00 MOV R6,#00H
0023 120000 E LCALL _timer0_delay
; SOURCE LINE # 145
0026 0500 R INC i2c_timeout
; SOURCE LINE # 146
0028 80E7 SJMP ?C0014
; SOURCE LINE # 147
002A ?C0017:
002A 22 RET
; FUNCTION i2c_wait_for_int (END)
; FUNCTION i2c_isr (BEGIN)
0000 C0E0 PUSH ACC
0002 C0D0 PUSH PSW
0004 75D010 MOV PSW,#010H
; SOURCE LINE # 154
; SOURCE LINE # 155
0007 E5DD MOV A,S2STA
0009 5404 ANL A,#04H
000B FF MOV R7,A
000C BF0105 CJNE R7,#01H,?C0018
; SOURCE LINE # 158
000F 75DEFF MOV S2DAT,#0FFH
; SOURCE LINE # 159
0012 D200 R SETB bus_lost_flag
; SOURCE LINE # 160
0014 ?C0018:
; SOURCE LINE # 161
0014 E5DD MOV A,S2STA
0016 5402 ANL A,#02H
0018 FF MOV R7,A
0019 BF0105 CJNE R7,#01H,?C0019
; SOURCE LINE # 164
001C 75DEFF MOV S2DAT,#0FFH
; SOURCE LINE # 165
001F D200 R SETB slave_nack_flag
; SOURCE LINE # 166
0021 ?C0019:
; SOURCE LINE # 167
0021 A200 R MOV C,i2c_xmitr
0023 8200 R ANL C,i2c_master
0025 5002 JNC ?C0020
; SOURCE LINE # 168
0027 C200 R CLR i2cwait
; SOURCE LINE # 169
0029 ?C0020:
; SOURCE LINE # 170
0029 A200 R MOV C,i2c_master
C51 COMPILER V7.00 UPSD_I2C 11/13/2002 09:49:12 PAGE 9
002B B000 R ANL C,/i2c_xmitr
002D 5002 JNC ?C0022
; SOURCE LINE # 171
002F C200 R CLR i2cwait
; SOURCE LINE # 172
; SOURCE LINE # 173
0031 ?C0022:
0031 D0D0 POP PSW
0033 D0E0 POP ACC
0035 32 RETI
; FUNCTION i2c_isr (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 382 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 512 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 5
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -