📄 m41t11.asm
字号:
$NOMOD51
NAME M41T11
POINTPULSEPIN BIT 090H.6
P1 DATA 090H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
P4 DATA 0C0H
T1 BIT 0B0H.5
T2 BIT 090H.0
EA BIT 0A8H.7
WDKEY DATA 0AEH
UISTA DATA 0E8H
ENI1 BIT 0D8H.6
IE DATA 0A8H
a0 BIT 0E0H.0
P1_0 BIT 090H.0
a1 BIT 0E0H.1
P1_1 BIT 090H.1
a2 BIT 0E0H.2
P1_2 BIT 090H.2
P3_0 BIT 0B0H.0
a3 BIT 0E0H.3
P1_3 BIT 090H.3
CARD_IO BIT 0C0H.0
P4_0 BIT 0C0H.0
P3_1 BIT 0B0H.1
a4 BIT 0E0H.4
P1_4 BIT 090H.4
P4_1 BIT 0C0H.1
P3_2 BIT 0B0H.2
a5 BIT 0E0H.5
P1_5 BIT 090H.5
P4_2 BIT 0C0H.2
P3_3 BIT 0B0H.3
EXF2 BIT 0C8H.6
WDRST DATA 0A6H
a6 BIT 0E0H.6
P1_6 BIT 090H.6
P4_3 BIT 0C0H.3
P3_4 BIT 0B0H.4
a7 BIT 0E0H.7
P1_7 BIT 090H.7
P4_4 BIT 0C0H.4
P3_5 BIT 0B0H.5
ES BIT 0A8H.4
S1SETUP DATA 0D1H
P4_5 BIT 0C0H.5
P3_6 BIT 0B0H.6
S2SETUP DATA 0D2H
IP DATA 0B8H
P4_6 BIT 0C0H.6
P3_7 BIT 0B0H.7
P4_7 BIT 0C0H.7
RI BIT 098H.0
ADAT DATA 096H
ADDR BIT 0D8H.3
INT0 BIT 0B0H.2
CY BIT 0D0H.7
UDR0 DATA 0EFH
INT1 BIT 0B0H.3
TI BIT 098H.1
UDT0 DATA 0E7H
UDT1 DATA 0E6H
RXD2 BIT 090H.2
ACON DATA 097H
RCAP2H DATA 0CBH
TXD2 BIT 090H.3
PS BIT 0B8H.4
SP DATA 081H
T2EX BIT 090H.1
DDCADR DATA 0D6H
ASCL DATA 095H
DDCSDA BIT 0C0H.0
OV BIT 0D0H.2
PWM0 DATA 0A2H
DDCDAT DATA 0D5H
PWM1 DATA 0A3H
RCAP2L DATA 0CAH
A15 BIT 0B0H.2
PWM2 DATA 0A4H
PWM3 DATA 0A5H
C_T2 BIT 0C8H.1
EOPF BIT 0E8H.1
PSCL0H DATA 0B2H
RCLK BIT 0C8H.5
UADR DATA 0EEH
DDCCON DATA 0D7H
TCLK BIT 0C8H.4
DDCSCL BIT 0C0H.1
PSCL0L DATA 0B1H
PWMCH0 BIT 0C0H.3
SBUF DATA 099H
PCON DATA 087H
PWMCH1 BIT 0C0H.4
UIEN DATA 0E9H
PWMCH2 BIT 0C0H.5
PWMCH3 BIT 0C0H.6
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
USCL DATA 0E1H
IE0 BIT 088H.1
USTA DATA 0EDH
IE1 BIT 088H.3
RAMBUF DATA 0D4H
RSTF BIT 0E8H.5
B DATA 0F0H
CP_RL2 BIT 0C8H.0
CR0 BIT 0D8H.0
CR1 BIT 0D8H.1
CR2 BIT 0D8H.7
ACC DATA 0E0H
PrnCS BIT 090H.5
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
ET2 BIT 0A8H.5
TF1 BIT 088H.7
TF2 BIT 0C8H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
PRN_D9 BIT 0B0H.5
EX1 BIT 0A8H.2
IT1 BIT 088H.2
TB8 BIT 098H.3
TH2 DATA 0CDH
P BIT 0D0H.0
IEA DATA 0A7H
A_0 BIT 0E0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
B_0 BIT 0F0H.0
A_1 BIT 0E0H.1
SM1 BIT 098H.6
TL1 DATA 08BH
B_1 BIT 0F0H.1
A_2 BIT 0E0H.2
SM2 BIT 098H.5
TL2 DATA 0CCH
B_2 BIT 0F0H.2
A_3 BIT 0E0H.3
B_3 BIT 0F0H.3
A_4 BIT 0E0H.4
RESUMF BIT 0E8H.0
PT0 BIT 0B8H.1
B_4 BIT 0F0H.4
A_5 BIT 0E0H.5
I2CSC BIT 0B0H.7
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
B_5 BIT 0F0H.5
A_6 BIT 0E0H.6
CARD_IO_SAM BIT 0C0H.4
I2CSD BIT 0B0H.6
PT2 BIT 0B8H.5
TR0 BIT 088H.4
RS1 BIT 0D0H.4
PWMCON DATA 0A1H
B_6 BIT 0F0H.6
A_7 BIT 0E0H.7
TR1 BIT 088H.6
B_7 BIT 0F0H.7
TR2 BIT 0C8H.2
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
IPA DATA 0B7H
S1ADR DATA 0DBH
DPH DATA 083H
S2ADR DATA 0DFH
S1DAT DATA 0DAH
SUSPND BIT 0E8H.7
S2DAT DATA 0DEH
DPL DATA 082H
DDCVSYNC BIT 0C0H.2
PRN_LIFT_RIGHT BIT 090H.7
EXEN2 BIT 0C8H.3
SBUF2 DATA 09BH
RXD0F BIT 0E8H.3
REN BIT 098H.4
S1CON DATA 0D8H
RXD1F BIT 0E8H.2
UCON0 DATA 0EAH
S2CON DATA 0DCH
SCON2 DATA 09AH
TXD0F BIT 0E8H.4
UCON1 DATA 0EBH
T2MOD DATA 0C9H
T2CON DATA 0C8H
STA BIT 0D8H.5
UCON2 DATA 0ECH
S1STA DATA 0D9H
RXD BIT 0B0H.0
S2STA DATA 0DDH
P1SFS DATA 091H
TXD BIT 0B0H.1
P3SFS DATA 093H
P4SFS DATA 094H
F0 BIT 0D0H.5
STO BIT 0D8H.4
ADC0 BIT 090H.4
ADC1 BIT 090H.5
ADC2 BIT 090H.6
PSW DATA 0D0H
ADC3 BIT 090H.7
?PR?upsd_i2c_init?M41T11 SEGMENT CODE
?PR?_upsd_i2c_xmit?M41T11 SEGMENT CODE
?DT?_upsd_i2c_xmit?M41T11 SEGMENT DATA OVERLAYABLE
?PR?_upsd_i2c_rcv?M41T11 SEGMENT CODE
?DT?_upsd_i2c_rcv?M41T11 SEGMENT DATA OVERLAYABLE
?PR?i2c_wait_for_int?M41T11 SEGMENT CODE
?PR?i2c_isr?M41T11 SEGMENT CODE
?BI?M41T11 SEGMENT BIT
?XD?M41T11 SEGMENT XDATA
?DT?M41T11 SEGMENT DATA
?PR?M41T11 SEGMENT CODE
EXTRN CODE (Delay1)
PUBLIC i2c_master
PUBLIC i2c_timeout
PUBLIC i
PUBLIC i2c_timeout_flag
PUBLIC dummybyte
PUBLIC i2c_rcv_buf
PUBLIC i2c_xmit_buf
PUBLIC i2cwait
PUBLIC i2c_xmitr
PUBLIC i2c_isr
PUBLIC i2c_wait_for_int
PUBLIC _upsd_i2c_rcv
PUBLIC _upsd_i2c_xmit
PUBLIC upsd_i2c_init
RSEG ?DT?_upsd_i2c_xmit?M41T11
?_upsd_i2c_xmit?BYTE:
start_address?141: DS 1
data_len?142: DS 1
RSEG ?DT?_upsd_i2c_rcv?M41T11
?_upsd_i2c_rcv?BYTE:
i2c_address?243: DS 1
start_address?244: DS 1
data_len?245: DS 1
RSEG ?BI?M41T11
i2c_xmitr: DBIT 1
i2cwait: DBIT 1
i2c_timeout_flag: DBIT 1
i2c_master: DBIT 1
RSEG ?XD?M41T11
i2c_xmit_buf: DS 20
i2c_rcv_buf: DS 20
RSEG ?DT?M41T11
dummybyte: DS 1
i: DS 2
i2c_timeout: DS 1
RSEG ?PR?M41T11
Com001A:
L?0027:
USING 0
MOV A,#LOW (i2c_rcv_buf)
ADD A,i+01H
L?0028:
MOV DPL,A
CLR A
ADDC A,#HIGH (i2c_rcv_buf)
MOV DPH,A
MOV A,S2DAT
MOVX @DPTR,A
RET
L?0030:
USING 0
ORL S2CON,#040H
ANL S2CON,#0EFH
L?0031:
ORL S2CON,#020H
ANL S2CON,#0FBH
RET
L?0032:
USING 0
ADD A,#0FFH
MOV R7,A
CLR A
ADDC A,#0FFH
MOV R6,A
CLR C
MOV A,i+01H
SUBB A,R7
MOV A,i
SUBB A,R6
RET
RSEG ?PR?upsd_i2c_init?M41T11
upsd_i2c_init:
ORL P3SFS,#0C0H
ORL S2CON,#083H
CLR i2c_timeout_flag
ORL IPA,#02H
ORL IEA,#02H
RET
RSEG ?PR?_upsd_i2c_xmit?M41T11
_upsd_i2c_xmit:
USING 0
MOV start_address?141,R5
MOV data_len?142,R3
?C0002:
MOV A,S2STA
JB ACC.3,?C0002
?C0003:
SETB i2c_master
SETB i2c_xmitr
MOV S2DAT,R7
LCALL L?0030
LCALL i2c_wait_for_int
ANL S2CON,#0DFH
MOV S2DAT,start_address?141
LCALL i2c_wait_for_int
ANL S2CON,#0DFH
CLR A
MOV i,A
MOV i+01H,A
?C0004:
MOV A,data_len?142
LCALL L?0032
JNC ?C0005
LCALL L?0029
ANL S2CON,#0DFH
INC i+01H
MOV A,i+01H
JNZ ?C0004
INC i
?C0023:
SJMP ?C0004
?C0005:
ORL S2CON,#010H
LCALL L?0029
MOV S2DAT,#0FFH
RET
L?0029:
MOV A,#LOW (i2c_xmit_buf)
ADD A,i+01H
MOV DPL,A
CLR A
ADDC A,#HIGH (i2c_xmit_buf)
MOV DPH,A
MOVX A,@DPTR
MOV S2DAT,A
LCALL i2c_wait_for_int
RET
RSEG ?PR?_upsd_i2c_rcv?M41T11
_upsd_i2c_rcv:
USING 0
; SOURCE LINE # 88
MOV i2c_address?243,R7
MOV start_address?244,R5
MOV data_len?245,R3
?C0008:
MOV A,S2STA
JB ACC.3,?C0008
?C0009:
SETB i2c_master
CLR i2c_xmitr
MOV S2DAT,i2c_address?243
ORL S2CON,#040H
LCALL L?0031
LCALL i2c_wait_for_int
ANL S2CON,#0DFH
ORL S2CON,#010H
MOV S2DAT,start_address?244
LCALL i2c_wait_for_int
MOV S2DAT,#0FFH
MOV A,i2c_address?243
ORL A,#01H
MOV S2DAT,A
LCALL L?0030
LCALL i2c_wait_for_int
ANL S2CON,#0DFH
MOV S2DAT,#0FFH
ORL S2CON,#04H
LCALL i2c_wait_for_int
CLR A
MOV i,A
MOV i+01H,A
?C0010:
MOV A,data_len?245
LCALL L?0032
JNC ?C0011
MOV dummybyte,S2STA
LCALL L?0027
LCALL i2c_wait_for_int
INC i+01H
MOV A,i+01H
JNZ ?C0010
INC i
?C0024:
SJMP ?C0010
?C0011:
ANL S2CON,#0FBH
LCALL L?0027
LCALL i2c_wait_for_int
MOV dummybyte,S2STA
INC i+01H
MOV A,i+01H
JNZ ?C0025
INC i
?C0025:
ADD A,#LOW (i2c_rcv_buf)
LCALL L?0028
RET
RSEG ?PR?i2c_wait_for_int?M41T11
i2c_wait_for_int:
SETB i2cwait
CLR A
MOV i2c_timeout,A
?C0014:
JNB i2cwait,?C0017
MOV A,i2c_timeout
CLR C
SUBB A,#02H
JC ?C0016
SETB i2c_timeout_flag
CLR i2cwait
?C0016:
LCALL Delay1
INC i2c_timeout
SJMP ?C0014
?C0017:
RET
CSEG AT 00043H
LJMP i2c_isr
RSEG ?PR?i2c_isr?M41T11
USING 0
i2c_isr:
PUSH ACC
PUSH PSW
MOV PSW,#00H
PUSH AR7
USING 0
MOV A,S2STA
ANL A,#04H
MOV R7,A
CJNE R7,#01H,?C0018
MOV S2DAT,#0FFH
?C0018:
MOV A,S2STA
ANL A,#02H
MOV R7,A
CJNE R7,#01H,?C0019
MOV S2DAT,#0FFH
?C0019:
MOV C,i2c_xmitr
ANL C,i2c_master
JNC ?C0020
CLR i2cwait
?C0020:
MOV C,i2c_master
ANL C,/i2c_xmitr
JNC ?C0022
CLR i2cwait
?C0022:
POP AR7
POP PSW
POP ACC
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -