📄 newatu.asm
字号:
CALL WRITE_MSG
CALL DISABLE_FSK
JMP REC_NUM_END
RECPROC30: CALL WRITE_MSG
REC_NUM_END:
MOV A,#2
ADD A,REC_NUM_H
CJNE A,#200,REC_NUEND1
CLR A
REC_NUEND1:
MOV REC_NUM_H,A
; cjne a,REC_NUM_T,REC_NUM_END10
nop
RET
REC_NUM_END5:JMP REC_NUM_END
REC_NUM_END10: JMP RECPROC
CMD_PROC: MOV DPH,#CMD_P_H
MOV DPL,CMD_HEAD
MOVX A,@DPTR ;GET CMD
MOV R6,A
INC DPL
MOVX A,@DPTR
MOV R7,A ;GET CHANNELEL
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
CJNE R6,#CALL_OUT,CMD_PROC10
MOV A,@R0
CJNE A,#IDLE,CMD_PROC8
CMD_PROC2: ;offhook 摘机
CALL DISABLE_FSK
CALL OFF_PROC
INC OFFCOUNTL
MOV A,OFFCOUNTL
JNZ CMD_PROC80
INC OFFCOUNTH
JMP CMD_PROC80
CMD_PROC8: MOV PKT1,#CMD_ERR
MOV PKT2,R7
MOV PKT3,A
CALL WRITE_MSG
JMP CMD_PROC80
CMD_PROC10: CJNE R6,#OFFHOOK,CMD_PROC20
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV A,@R0
CJNE A,#TALKING,CMD_PROC2
JMP CMD_PROC8
CMD_PROC20: CJNE R6,#ONHOOK,CMD_PROC30
CALL ON_PROC
MOV A,#IDLE
MOV @R0,A
INC ONCOUNTL
MOV A,OFFCOUNTL
JNZ CMD_PROC80
INC ONCOUNTH
JMP CMD_PROC80
CMD_PROC30: CJNE R6,#55H,CMD_PROC40
MOV PKT1,#55H
MOV PKT2,#5 ;report revsion of the board
MOV PKT3,#0
MOV PKT4,#0
CALL WRITE_MSG
JMP CMD_PROC80
MOV DPH,#MSG_P_H
MOV A,MSG_TAIL
MOV DPL,A
MOV A,PKT1
MOVX @DPTR,A
INC DPTR
MOV A,PKT2
MOVX @DPTR,A
INC DPTR
MOV A,PKT3
MOVX @DPTR,A
INC DPTR
MOV A,PKT4
MOVX @DPTR,A
INC DPTR
MOV MSG_TAIL,DPL
MOV A,DPH
CJNE A,#30H,CMD_PROC39
MOV A,#20H
CMD_PROC39:
JMP CMD_PROC80
CMD_PROC40: MOV DPH,#1
MOV DPL,BACK_P
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
MOV A,BACK_P
ADD A,#4
MOV BACK_P,A
NOP
CMD_PROC80:
MOV A,CMD_HEAD
ADD A,#2
MOV CMD_HEAD,A
RET
LINE_PROC: MOV FLL_BUFB,FLL_BUF
MOV FLH_BUFB,FLH_BUF
MOV RLL_BUFB,RLL_BUF
MOV RLH_BUFB,RLH_BUF
MOV DPTR,#RING_FLL
MOVX A,@DPTR
MOV FLL_BUF,A
MOV DPTR,#RING_FLH
MOVX A,@DPTR
MOV FLH_BUF,A
MOV DPTR,#RING_RLL
MOVX A,@DPTR
MOV RLL_BUF,A
MOV DPTR,#RING_RLH
MOVX A,@DPTR
MOV RLH_BUF,A
MOV R7,#0
LINE_PROC5: MOV C,R_FL
MOV A,FLH_BUF
RRC A
MOV FLH_BUF,A
MOV A,FLL_BUF
RRC A
MOV FLL_BUF,A
MOV R_FL,C
;
MOV C,R_FLB
MOV A,FLH_BUFB
RRC A
MOV FLH_BUFB,A
MOV A,FLL_BUFB
RRC A
MOV FLL_BUFB,A
MOV R_FLB,C
;
MOV C,R_RL
MOV A,RLH_BUF
RRC A
MOV RLH_BUF,A
MOV A,RLL_BUF
RRC A
MOV RLL_BUF,A
MOV R_RL,C
;
MOV C,R_RLB
MOV A,RLH_BUFB
RRC A
MOV RLH_BUFB,A
MOV A,RLL_BUFB
RRC A
MOV RLL_BUFB,A
MOV R_RLB,C
CJNE R7,#10H,LINE_PROC10
JMP LINE_PROCEND
LINE_PROC10: MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV A,@R0
CJNE A,#IDLE,LINE_PROC20
JNB R_FL,LINE_PROC12
JNB R_RL,LINE_PROC11
JMP LINE_PROC100
LINE_PROC11: NOP
LINE_PROC12: JB R_FLB,LINE_PROC19
JB R_RL,LINE_PROC19
MOV A,#RING_1
MOV @R0,A
MOV PKT1,#RING_1
MOV PKT2,R7
MOV PKT3,#IDLE
MOV PKT4,#0
CALL WRITE_MSG
LINE_PROC19: JMP LINE_PROC100
LINE_PROC20: CJNE A,#RING_1,LINE_PROC30
CALL ENABLE_FSK ;
JNB R_FL,LINE_PROC19
JNB R_RL,LINE_PROC19
JNB R_FLB,LINE_PROC19
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV @R0,#RING_STOP
; ;ENABLE FSK ENABLE
MOV A,#OFF_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
JMP LINE_PROC100
LINE_PROC30: CJNE A,#RING_STOP,LINE_PROC40
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV A,@R0
MOV R4,A
MOV A,#OFF_TIMER
ADD A,R7
MOV R0,A
MOV A,@R0
INC A
MOV @R0,A
MOV R5,A
JNZ LINE_PROC31
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV A,@R0
INC A
MOV R4,A
MOV @R0,A
LINE_PROC31: JNB R_FL,LINE_PROC36
JNB R_RL,LINE_PROC36
JNB R_FLB,LINE_PROC36
MOV A,R4
JZ LINE_PROC19
; CJNE R5,#110,LINE_PROC33
;LINE_PROC33: JC LINE_PROC34
; CALL DISABLE_FSK
LINE_PROC34: MOV A,R4
CJNE A,#2,LINE_PROC35
LINE_PROC35: jc LINE_PROC19
MOV A,#OFF_TIMER
CLR FSK_EN
CALL DISABLE_FSK
MOV A,#OFF_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV @R0,#IDLE
MOV PKT1,#RING_STOP
MOV PKT2,R7
MOV PKT3,#RING_N
MOV PKT4,#0
CALL WRITE_MSG
JMP LINE_PROC200
LINE_PROC36:
CALL DISABLE_FSK
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV @R0,#RING_N
MOV PKT3,#RING_STOP
MOV PKT2,R7
MOV PKT1,#RING_1
MOV PKT4,#0
CALL WRITE_MSG
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#OFF_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
JMP LINE_PROC200
LINE_PROC40: CJNE A,#RING_N,LINE_PROC50
JNB R_FL,LINE_PROC200
JNB R_RL,LINE_PROC200
JNB R_FLB,LINE_PROC200
MOV A,#OFF_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#ON_TIMER
ADD A,R7
MOV R0,A
MOV @R0,#0
MOV A,#LINE_STATE
ADD A,R7
MOV R0,A
MOV @R0,#RING_STOP
JMP LINE_PROC200
LINE_PROC50: CJNE A,#TALKING,LINE_PROC100
;check polarity channge
mov c,r_fl
orl c,r_flb
jnc LINE_PROC100
mov c,r_fl
anl c,r_flb
jc LINE_PROC100
;have a polarity channge
;
; call get_chan
MOV PKT3,#TALKING
MOV PKT2,R7
MOV PKT1,#polarity
MOV PKT4,#0
CALL WRITE_MSG
jmp LINE_PROC100
line_proc60:
MOV a,FLH_BUFB;,FLH_BUF
xrl a,FLH_BUF
jz LINE_PROC100
MOV a,RLH_BUFB;,RLH_BUF
xrl a,RLH_BUF
jz LINE_PROC100
;have a polarity channge
call get_chan5
LINE_PROC100:
LINE_PROC200:
INC R7
JMP LINE_PROC5
LINE_PROCEND:
RET
ENABLE_FSK55: MOV A,R7
MOV R6,A
INC R6
MOV A,#10H
SUBB A,R7
MOV R5,A
ENABLE_FSK5:
MOV A,FSK_ENH_BUF
RRC A
MOV FSK_ENH_BUF,A
MOV A,FSK_ENL_BUF
RRC A
MOV FSK_ENL_BUF,A
DJNZ R6,ENABLE_FSK5
MOV C,FSK_EN
ENABLE_FSK10:
MOV A,FSK_ENH_BUF
RRC A
MOV FSK_ENH_BUF,A
MOV A,FSK_ENL_BUF
RRC A
MOV FSK_ENL_BUF,A
DJNZ R5,ENABLE_FSK5
; ;ENABLE OR DISABLE FSKENABLE SINGEL
MOV DPTR,#FSKENL
MOV A,FSK_ENL_BUF
MOVX @DPTR,A
JZ TEST10
NOP
TEST10:
MOV DPTR,#FSKENH
MOV A,FSK_ENH_BUF
MOVX @DPTR,A
JZ TEST20
NOP
TEST20:
RET
ENABLE_FSK:
CJNE R7,#8,ENFSK5
ENFSK5: JNC EN_FSK80
MOV A,FSK_ENL_BUF
CJNE R7,#0,ENFSK01
SETB ACC.0
JMP ENFSK8
ENFSK01:CJNE R7,#1,ENFSK02
SETB ACC.1
JMP ENFSK8
ENFSK02:CJNE R7,#2,ENFSK03
SETB ACC.2
JMP ENFSK8
ENFSK03:CJNE R7,#3,ENFSK04
SETB ACC.3
JMP ENFSK8
ENFSK04:CJNE R7,#4,ENFSK05
SETB ACC.4
JMP ENFSK8
ENFSK05:CJNE R7,#5,ENFSK06
SETB ACC.5
JMP ENFSK8
ENFSK06:CJNE R7,#6,ENFSK07
SETB ACC.6
JMP ENFSK8
ENFSK07:SETB ACC.7
ENFSK8: MOV FSK_ENL_BUF,A
MOV DPTR,#FSKENL
; MOV A,#0FFH
MOVX @DPTR,A
JMP ENFSKEND
EN_FSK80:
MOV A,FSK_ENH_BUF
CJNE R7,#08,ENFSK801
SETB ACC.0
JMP ENFSK88
ENFSK801:CJNE R7,#9,ENFSK802
SETB ACC.1
JMP ENFSK88
ENFSK802:CJNE R7,#0AH,ENFSK803
SETB ACC.2
JMP ENFSK88
ENFSK803:CJNE R7,#0BH,ENFSK804
SETB ACC.3
JMP ENFSK88
ENFSK804:CJNE R7,#0CH,ENFSK805
SETB ACC.4
JMP ENFSK88
ENFSK805:CJNE R7,#0DH,ENFSK806
SETB ACC.5
JMP ENFSK88
ENFSK806:CJNE R7,#0EH,ENFSK807
SETB ACC.6
JMP ENFSK88
ENFSK807:CJNE R7,#0fH,ENFSKEND
SETB ACC.7
ENFSK88: MOV FSK_ENL_BUF,A
MOV DPTR,#FSKENH
; MOV A,#0FFH
MOVX @DPTR,A
ENFSKEND: RET
GET_CARD_NO: MOV DPTR,#8009H
MOVX A,@DPTR
ANL A,#0FH
; ORL A,#50H
MOV CARD_NUM,A
RET
CLEAR_WDT: MOV DPTR,#800BH
MOVX @DPTR,A
RET
WRITE_MSG:
;MOV DPH,#MSG_P_H
; MOV A,MSG_TAIL
; MOV DPL,A
MOV DPH,MSG_TAIL_H
MOV DPL,MSG_TAIL
MOV P0,DPL
MOV A,PKT1
MOVX @DPTR,A
INC DPTR
MOV P0,DPL
MOV A,PKT2
MOVX @DPTR,A
INC DPTR
MOV P0,DPL
MOV A,PKT3
MOVX @DPTR,A
INC DPTR
MOV P0,DPL
MOV A,PKT4
MOVX @DPTR,A
INC DPTR
MOV MSG_TAIL,DPL
MOV A,DPH
CJNE A,#30H,WRITE_MSG50
MOV A,#20H
WRITE_MSG50:
MOV MSG_TAIL_H,A
INC MSG_SUM
JMP WRITE_MSGEND
MOV DPH,#1
MOV DPL,BACK_P
MOV A,PKT1
MOVX @DPTR,A
INC DPTR
MOV A,PKT2
MOVX @DPTR,A
INC DPTR
MOV A,PKT3
MOVX @DPTR,A
INC DPTR
MOV A,PKT4
MOVX @DPTR,A
INC DPTR
MOV BACK_P,DPL
WRITE_MSG5: MOV A,PKT1
MOVX @DPTR,A
INC DPL
MOV A,PKT2
MOVX @DPTR,A
INC DPL
MOV A,PKT3
MOVX @DPTR,A
INC DPL
MOV A,PKT4
MOVX @DPTR,A
INC DPL
MOV MSG_TAIL,DPL
WRITE_MSGEND:
RET
DISABLE_FSK:
CJNE R7,#8,DIS_FSK5
DIS_FSK5: JNC DIS_FSK80
MOV A,FSK_ENL_BUF
CJNE R7,#0,DIS_FSK01
CLR ACC.0
JMP DIS_FSK8
DIS_FSK01:CJNE R7,#1,DIS_FSK02
CLR ACC.1
JMP DIS_FSK8
DIS_FSK02:CJNE R7,#2,DIS_FSK03
CLR ACC.2
JMP DIS_FSK8
DIS_FSK03:CJNE R7,#3,DIS_FSK04
CLR ACC.3
JMP DIS_FSK8
DIS_FSK04:CJNE R7,#4,DIS_FSK05
CLR ACC.4
JMP DIS_FSK8
DIS_FSK05:CJNE R7,#5,DIS_FSK06
CLR ACC.5
JMP DIS_FSK8
DIS_FSK06:CJNE R7,#6,DIS_FSK07
CLR ACC.6
JMP DIS_FSK8
DIS_FSK07:CLR ACC.7
DIS_FSK8: MOV FSK_ENL_BUF,A
MOV DPTR,#FSKENL
MOVX @DPTR,A
JMP DIS_FSKEND
DIS_FSK80:
MOV A,FSK_ENH_BUF
CJNE R7,#08,DIS_FSK801
CLR ACC.0
JMP DIS_FSK88
DIS_FSK801:CJNE R7,#9,DIS_FSK802
CLR ACC.1
JMP DIS_FSK88
DIS_FSK802:CJNE R7,#0AH,DIS_FSK803
CLR ACC.2
JMP DIS_FSK88
DIS_FSK803:CJNE R7,#0BH,DIS_FSK804
CLR ACC.3
JMP DIS_FSK88
DIS_FSK804:CJNE R7,#0CH,DIS_FSK805
CLR ACC.4
JMP DIS_FSK88
DIS_FSK805:CJNE R7,#0DH,DIS_FSK806
CLR ACC.5
JMP DIS_FSK88
DIS_FSK806:CJNE R7,#0EH,DIS_FSK807
CLR ACC.6
JMP DIS_FSK88
DIS_FSK807:
CJNE R7,#0fH,DIS_FSKEND
CLR ACC.7
DIS_FSK88: MOV FSK_ENL_BUF,A
MOV DPTR,#FSKENH
MOVX @DPTR,A
DIS_FSKEND: RET
OFF_PROC:
CJNE R7,#8,OFF_HOK5
OFF_HOK5: JNC OFF_HOK80
MOV A,OFFHOOKL_BUF
CJNE R7,#0,OFF_HOK01
SETB ACC.0
JMP OFF_HOK8
OFF_HOK01:CJNE R7,#1,OFF_HOK02
SETB ACC.1
JMP OFF_HOK8
OFF_HOK02:CJNE R7,#2,OFF_HOK03
SETB ACC.2
JMP OFF_HOK8
OFF_HOK03:CJNE R7,#3,OFF_HOK04
SETB ACC.3
JMP OFF_HOK8
OFF_HOK04:CJNE R7,#4,OFF_HOK05
SETB ACC.4
JMP OFF_HOK8
OFF_HOK05:CJNE R7,#5,OFF_HOK06
SETB ACC.5
JMP OFF_HOK8
OFF_HOK06:CJNE R7,#6,OFF_HOK07
SETB ACC.6
JMP OFF_HOK8
OFF_HOK07:SETB ACC.7
OFF_HOK8: MOV OFFHOOKL_BUF,A
MOV DPTR,#OFFHOOKL
MOVX @DPTR,A
JMP OFF_HOKEND
OFF_HOK80:
MOV A,OFFHOOKH_BUF
CJNE R7,#08,OFF_HOK801
SETB ACC.0
JMP OFF_HOK88
OFF_HOK801:CJNE R7,#9,OFF_HOK802
SETB ACC.1
JMP OFF_HOK88
OFF_HOK802:CJNE R7,#0AH,OFF_HOK803
SETB ACC.2
JMP OFF_HOK88
OFF_HOK803:CJNE R7,#0BH,OFF_HOK804
SETB ACC.3
JMP OFF_HOK88
OFF_HOK804:CJNE R7,#0CH,OFF_HOK805
SETB ACC.4
JMP OFF_HOK88
OFF_HOK805:CJNE R7,#0DH,OFF_HOK806
SETB ACC.5
JMP OFF_HOK88
OFF_HOK806:CJNE R7,#0EH,OFF_HOK807
SETB ACC.6
JMP OFF_HOK88
OFF_HOK807:SETB ACC.7
OFF_HOK88: MOV OFFHOOKH_BUF,A
MOV DPTR,#OFFHOOKH
MOVX @DPTR,A
OFF_HOKEND:
MOV A,#TALKING
MOV @R0,A
RET
ON_PROC:
CJNE R7,#8,ON_HOOK5
ON_HOOK5: JNC ON_HOOK80
MOV A,OFFHOOKL_BUF
CJNE R7,#0,ON_HOOK01
CLR ACC.0
JMP ON_HOOK8
ON_HOOK01:CJNE R7,#1,ON_HOOK02
CLR ACC.1
JMP ON_HOOK8
ON_HOOK02:CJNE R7,#2,ON_HOOK03
CLR ACC.2
JMP ON_HOOK8
ON_HOOK03:CJNE R7,#3,ON_HOOK04
CLR ACC.3
JMP ON_HOOK8
ON_HOOK04:CJNE R7,#4,ON_HOOK05
CLR ACC.4
JMP ON_HOOK8
ON_HOOK05:CJNE R7,#5,ON_HOOK06
CLR ACC.5
JMP ON_HOOK8
ON_HOOK06:CJNE R7,#6,ON_HOOK07
CLR ACC.6
JMP ON_HOOK8
ON_HOOK07:CLR ACC.7
ON_HOOK8: MOV OFFHOOKL_BUF,A
MOV DPTR,#OFFHOOKL
MOVX @DPTR,A
JMP ON_HOOKEND
ON_HOOK80:
MOV A,OFFHOOKH_BUF
CJNE R7,#08,ON_HOOK801
CLR ACC.0
JMP ON_HOOK88
ON_HOOK801:CJNE R7,#9,ON_HOOK802
CLR ACC.1
JMP ON_HOOK88
ON_HOOK802:CJNE R7,#0AH,ON_HOOK803
CLR ACC.2
JMP ON_HOOK88
ON_HOOK803:CJNE R7,#0BH,ON_HOOK804
CLR ACC.3
JMP ON_HOOK88
ON_HOOK804:CJNE R7,#0CH,ON_HOOK805
CLR ACC.4
JMP ON_HOOK88
ON_HOOK805:CJNE R7,#0DH,ON_HOOK806
CLR ACC.5
JMP ON_HOOK88
ON_HOOK806:CJNE R7,#0EH,ON_HOOK807
CLR ACC.6
JMP ON_HOOK88
ON_HOOK807:CLR ACC.7
ON_HOOK88: MOV OFFHOOKH_BUF,A
MOV DPTR,#OFFHOOKH
MOVX @DPTR,A
ON_HOOKEND: RET
nop
get_chan: anl a,b
jz get_chanend
mov b,#8
clr c
mov r2,a
check_bit: mov a,r2
rlc a
mov r2,a
jnc check_bit5
;????????????
MOV PKT3,#TALKING
MOV PKT2,b ;channel nummber
dec pkt2
MOV PKT1,#polarity
MOV PKT4,#0
CALL WRITE_MSG
check_bit5: djnz b,check_bit
get_chanend:
ret
get_chan5: anl a,b
jz get_chanend5
mov b,#8
clr c
mov r2,a
check_bit50:mov a,r2
rlc a
mov r2,a
jnc check_bit55
;????????????
MOV PKT3,#TALKING
MOV PKT2,b ;channel nummber
dec pkt2
push acc
mov a,#8
add a,pkt2
mov pkt2,a
pop acc
MOV PKT1,#polarity
MOV PKT4,#0
CALL WRITE_MSG
check_bit55: djnz b,check_bit50
get_chanend5:
ret
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -