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

📄 m41t11.asm

📁 税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案
💻 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 + -