com.asm

来自「税控收款机软件。包括底层驱动和上层的应用一起。是一个完整的税控收款机软件方案」· 汇编 代码 · 共 1,005 行 · 第 1/2 页

ASM
1,005
字号
	DW	0026EH
	DW	00264H
	DW	08261H
	DW	00220H
	DW	08225H
	DW	0822FH
	DW	0022AH
	DW	0823BH
	DW	0023EH
	DW	00234H
	DW	08231H
	DW	08213H
	DW	00216H
	DW	0021CH
	DW	08219H
	DW	00208H
	DW	0820DH
	DW	08207H
	DW	00202H
	RSEG  ?PR?COM
Com003D:
L?0062:
	USING	0
L?0063:
	MOV  	R7,SBUF
	CLR  	RI
	MOV  	R3,pRecBuff?554
	INC  	pRecBuff?554+02H
	MOV  	A,pRecBuff?554+02H
	MOV  	R2,pRecBuff?554+01H
	RET  	
L?0064:
	USING	0
	MOV  	T2CON,#034H
	MOV  	RCAP2H,#0FFH
	MOV  	RCAP2L,#0D8H
	MOV  	PCON,#0CH
	MOV  	SCON2,#050H
	MOV  	SCON,#050H
	CLR  	ES
	RET  	
L?0065:
	USING	0
L?0066:
	DEC  	A
	MOV  	R1,A
	MOV  	A,R7
	LJMP 	?C?CSTPTR
L?0067:
	USING	0
	MOV  	A,#LOW (RecBuff)
	ADD  	A,R6
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (RecBuff)
	MOV  	DPH,A
	RET  	
	RSEG  ?PR?_crcbuf?COM
_crcbuf:
	USING	0
	MOV  	len?040,R6
	MOV  	len?040+01H,R7
	MOV  	buf?041,R3
	MOV  	buf?041+01H,R2
	MOV  	buf?041+02H,R1
	CLR  	A
	MOV  	crc?043,A
	MOV  	crc?043+01H,A
	MOV  	i?042,A
	MOV  	i?042+01H,A
?C0001:
	CLR  	C
	MOV  	A,i?042+01H
	SUBB 	A,len?040+01H
	MOV  	A,i?042
	SUBB 	A,len?040
	JNC  	?C0002
	MOV  	R3,buf?041
	INC  	buf?041+02H
	MOV  	A,buf?041+02H
	MOV  	R2,buf?041+01H
	JNZ  	?C0052
	INC  	buf?041+01H
?C0052:
	DEC  	A
	MOV  	R1,A
	LCALL	?C?CLDPTR
	MOV  	R5,A
	MOV  	A,crc?043
	MOV  	R7,A
	MOV  	A,R7
	XRL  	A,R5
	MOV  	R5,A
	MOV  	R4,#00H
	ADD  	A,ACC
	MOV  	R7,A
	MOV  	A,R4
	RLC  	A
	MOV  	R6,A
	MOV  	A,#LOW (crctab)
	ADD  	A,R7
	MOV  	DPL,A
	MOV  	A,#HIGH (crctab)
	ADDC 	A,R6
	MOV  	DPH,A
	MOV  	A,crc?043+01H
	MOV  	R6,A
	CLR  	A
	MOVC 	A,@A+DPTR
	XRL  	A,R6
	MOV  	crc?043,A
	MOV  	A,#01H
	MOVC 	A,@A+DPTR
	MOV  	crc?043+01H,A
	INC  	i?042+01H
	MOV  	A,i?042+01H
	JNZ  	?C0001
	INC  	i?042
?C0053:
	SJMP 	?C0001
?C0002:
	MOV  	R6,crc?043
	MOV  	R7,crc?043+01H
?C0004:
	RET  	
	RSEG  ?PR?Com_Init?COM
Com_Init:
	LCALL	L?0064
	MOV  	DPTR,#UPSD_xreg+012H
	MOV  	A,#080H
	MOVX 	@DPTR,A
	RET  	
	RSEG  ?PR?_rs232_send_byte?COM
_rs232_send_byte:
	MOV  	SBUF,R7
?C0006:
	JNB  	TI,?C0006
?C0007:
	CLR  	TI
	RET  	
	RSEG  ?PR?rs232_s?COM
rs232_s:
	USING	0
	CLR  	ES
	MOV  	R7,#04FH
	LCALL	_rs232_send_byte
	MOV  	R7,#04BH
	LCALL	_rs232_send_byte
	MOV  	DPTR,#chCommData+03H
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_rs232_send_byte
	INC  	DPTR
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_rs232_send_byte
	CLR  	A
	MOV  	R6,A
?C0009:
	MOV  	DPTR,#chCommData+04H
	MOVX 	A,@DPTR
	ADD  	A,#0FCH
	MOV  	R7,A
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R7
	JNC  	?C0010
	MOV  	A,#LOW (chCommData+05H)
	ADD  	A,R6
	MOV  	DPL,A
	CLR  	A
	ADDC 	A,#HIGH (chCommData+05H)
	MOV  	DPH,A
	MOVX 	A,@DPTR
	MOV  	R7,A
	LCALL	_rs232_send_byte
	INC  	R6
	SJMP 	?C0009
?C0010:
	MOV  	DPTR,#icc_buff
	MOV  	A,#04FH
	MOVX 	@DPTR,A
	INC  	DPTR
	MOV  	A,#04BH
	MOVX 	@DPTR,A
	MOV  	DPTR,#chCommData+03H
	MOVX 	A,@DPTR
	MOV  	DPTR,#icc_buff+02H
	MOVX 	@DPTR,A
	MOV  	DPTR,#chCommData+04H
	MOVX 	A,@DPTR
	MOV  	DPTR,#icc_buff+03H
	MOVX 	@DPTR,A
	ADD  	A,#0FCH
	MOV  	R7,A
	CLR  	A
	ADDC 	A,#0FFH
	MOV  	R6,A
	MOV  	R0,#LOW (icc_buff+04H)
	MOV  	R4,#HIGH (icc_buff+04H)
	MOV  	R5,#01H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (chCommData+05H)
	MOV  	R1,#LOW (chCommData+05H)
	LCALL	?C?COPY
	MOV  	DPTR,#chCommData+04H
	MOVX 	A,@DPTR
	MOV  	R7,A
	MOV  	R6,#00H
	MOV  	R3,#01H
	MOV  	R2,#HIGH (icc_buff)
	MOV  	R1,#LOW (icc_buff)
	LCALL	_crcbuf
	MOV  	R5,AR7
	MOV  	R4,AR6
	MOV  	R7,AR4
	LCALL	_rs232_send_byte
	MOV  	R7,AR5
	LJMP 	_rs232_send_byte
	RSEG  ?PR?_rs232_2s?COM
_rs232_2s:

;	语音芯片通讯格式:fe 01 00 datalen data[datalen]
;	通过串口传送此数据
	USING	0
	MOV  	d_data?448,R3
	MOV  	d_data?448+01H,R2
	MOV  	d_data?448+02H,R1
	MOV  	data_len?449,R5
	ANL  	IEA,#0EFH
	MOV  	R7,#0FEH
	LCALL	_rs232_2send_byte
	MOV  	R7,#01H
	LCALL	_rs232_2send_byte
	CLR  	A
	MOV  	R7,A
	LCALL	_rs232_2send_byte
	MOV  	R7,data_len?449
	LCALL	_rs232_2send_byte					
	CLR  	A
	MOV  	i?450,A
?C0013:
	MOV  	A,i?450
	CLR  	C
	SUBB 	A,data_len?449
	JNC  	?C0016
	MOV  	R3,d_data?448
	MOV  	R2,d_data?448+01H
	MOV  	R1,d_data?448+02H
	MOV  	DPL,i?450
	MOV  	DPH,#00H
	LCALL	?C?CLDOPTR
	MOV  	R7,A
	LCALL	_rs232_2send_byte
	INC  	i?450
	SJMP 	?C0013
?C0016:
	RET  	
CSEG	AT	00023H
	LJMP	SCon_int
	RSEG  ?PR?SCon_int?COM
	USING	0
SCon_int:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR1
	PUSH 	AR2
	PUSH 	AR3
	PUSH 	AR4
	PUSH 	AR5
	PUSH 	AR6
	PUSH 	AR7
	USING	0
		                             
	MOV  	pRecBuff?554,#01H
	MOV  	pRecBuff?554+01H,#HIGH (chCommData)
	MOV  	pRecBuff?554+02H,#LOW (chCommData)
	CLR  	ES
?C0017:
	JNB  	RI,?C0017
?C0018:                            
	LCALL	L?0062
	JNZ  	?C0054
	INC  	pRecBuff?554+01H
?C0054:
	LCALL	L?0065
	XRL  	A,#01BH
	JZ   	?C0021
	SETB 	ES
	LJMP 	?C0020
?C0021:
	JNB  	RI,?C0021
?C0022:
	LCALL	L?0062
	JNZ  	?C0055
	INC  	pRecBuff?554+01H
?C0055:
	LCALL	L?0065
	XRL  	A,#010H
	JZ   	?C0024
	SETB 	ES
	SJMP 	?C0020
?C0024:
	JNB  	RI,?C0024
?C0025:
	LCALL	L?0063
	JNZ  	?C0056
	INC  	pRecBuff?554+01H
?C0056:
	LCALL	L?0066
?C0026:
	JNB  	RI,?C0026
?C0027:
	LCALL	L?0063
	JNZ  	?C0057
	INC  	pRecBuff?554+01H
?C0057:
	LCALL	L?0066
?C0028:
	JNB  	RI,?C0028
?C0029:
	LCALL	L?0063
	JNZ  	?C0058
	INC  	pRecBuff?554+01H
?C0058:
	DEC  	A
	MOV  	R1,A
	MOV  	A,R7
	LCALL	?C?CSTPTR
	MOV  	R6,A
	CLR  	A
	MOV  	R5,A
?C0030:
	MOV  	A,R6
	ADD  	A,#0FDH
	MOV  	R4,A
	MOV  	A,R5
	CLR  	C
	SUBB 	A,R4
	JNC  	?C0031
?C0033:
	JNB  	RI,?C0033
?C0034:
	LCALL	L?0063
	JNZ  	?C0059
	INC  	pRecBuff?554+01H
?C0059:
	LCALL	L?0066
	INC  	R5
	SJMP 	?C0030
?C0031:
	MOV  	DPTR,#f_shouxie
	MOV  	A,#02H
	MOVX 	@DPTR,A
	SETB 	ES
?C0020:
	POP  	AR7
	POP  	AR6
	POP  	AR5
	POP  	AR4
	POP  	AR3
	POP  	AR2
	POP  	AR1
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
	RSEG  ?PR?Com_Init2?COM
Com_Init2:
	LCALL	L?0064
	ANL  	IEA,#0EFH
	RET  	
	RSEG  ?PR?_rs232_2send_byte?COM
_rs232_2send_byte:
	MOV  	SBUF2,R7
?C0036:
	MOV  	A,SCON2
	JNB  	ACC.1,?C0036
?C0037:
	ANL  	SCON2,#0FDH
	RET  	
CSEG	AT	0004BH
	LJMP	SCon_int2
	RSEG  ?PR?SCon_int2?COM
	USING	0
SCon_int2:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	MOV  	PSW,#00H
	PUSH 	AR0
	PUSH 	AR4
	PUSH 	AR5
	PUSH 	AR6
	PUSH 	AR7
	USING	0
	ANL  	IEA,#0EFH
?C0039:
	MOV  	A,SCON2
	JNB  	ACC.0,?C0039
?C0040:
	MOV  	R7,SBUF2
	ANL  	SCON2,#0FEH
	MOV  	A,R7
	XRL  	A,#01BH
	JZ   	?C0043
	SJMP 	?C0060
?C0043:
	MOV  	A,SCON2
	JNB  	ACC.0,?C0043
?C0044:
	MOV  	R7,SBUF2
	ANL  	SCON2,#0FEH
	CLR  	A
	MOV  	R6,A
?C0045:
	MOV  	A,R7
	ADD  	A,#01H
	MOV  	R5,A
	CLR  	A
	RLC  	A
	MOV  	R4,A
	MOV  	A,R6
	CLR  	C
	SUBB 	A,R5
	MOV  	A,R4
	XRL  	A,#080H
	MOV  	R0,A
	MOV  	A,#080H
	SUBB 	A,R0
	JNC  	?C0046
?C0048:
	MOV  	A,SCON2
	JNB  	ACC.0,?C0048
?C0049:
	LCALL	L?0067
	MOV  	A,SBUF2
	MOVX 	@DPTR,A
	ANL  	SCON2,#0FEH
	INC  	R6
	SJMP 	?C0045
?C0046:
	LCALL	L?0067
	CLR  	A
	MOVX 	@DPTR,A
	MOV  	A,R6
	DEC  	A
	CLR  	C
	RRC  	A
	MOV  	DPTR,#g_iXqHzCount
	MOVX 	@DPTR,A
	MOV  	DPTR,#f_shouxie
	MOV  	A,#01H
	MOVX 	@DPTR,A
?C0060:
	ORL  	IEA,#010H
?C0042:
	POP  	AR7
	POP  	AR6
	POP  	AR5
	POP  	AR4
	POP  	AR0
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
CSEG	AT	0000BH
	LJMP	timer0_isr
	RSEG  ?PR?timer0_isr?COM
	USING	0
timer0_isr:
	PUSH 	ACC
	PUSH 	DPH
	PUSH 	DPL
	PUSH 	PSW
	CLR  	TR0
	MOV  	A,#029H
	ADD  	A,TL0
	MOV  	TL0,A
	MOV  	A,#0FCH
	ADD  	A,TH0
	MOV  	TH0,A
	SETB 	TR0
	MOV  	DPTR,#gt?
	MOVX 	A,@DPTR
	JZ   	?C0051
	DEC  	A
	MOVX 	@DPTR,A
?C0051:
	POP  	PSW
	POP  	DPL
	POP  	DPH
	POP  	ACC
	RETI 	
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?