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 + -
显示快捷键?