📄 wg34l.asm
字号:
PUSH PSW
SETB F0
SJMP INT_Comm
INT1_VCT:
PUSH PSW
CLR F0
INT_Comm:
PUSH ACC
PUSH B
PUSH 00H
PUSH 07H
MOV A,28H
ADD A,#03H
MOV 28H,A ; [(28H)+3] -> (28H)
JNC INT_Comm1
INC 27H ; if [(28H)+3] > ffh, then [(27H)+1] -> (27H)
INT_Comm1:
MOV A,0AH
MOV B,#08H
DIV AB
MOV 0CH,A ; (0CH) = [(0AH) / 8] , Byte pointer
MOV A,B
MOV 0BH,A ; (0BH) = (0AH) % 8 , Bit offset for Byte
MOV A,#01H
MOV R7,0BH
INC R7
SJMP INT_Comm3
INT_Comm2:
CLR C
RLC A
INT_Comm3:
DJNZ R7,INT_Comm2 ; (Acc) <= 0000 0001B << (0BH)
MOV 0DH,A ; (Acc) -> (0DH)
JNB F0,INT_Comm4 ; Judge isn't INT0 or INT1 Interrupt?
; INT1 Interrupt
MOV A,0CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ORL A,0DH
MOV @R0,A
SJMP INT_Comm5
INT_Comm4:
; INT0 Interrupt
MOV A,0DH
CPL A
MOV R7,A
MOV A,0CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ANL A,R7
MOV @R0,A
INT_Comm5:
MOV A,TL0
CLR C
SUBB A,#0EH
JC INT_Comm6
; (TL0) > 13
MOV A,TL0
CLR C
SUBB A,#30H
JNC INT_Comm6
; 13 < (TL0) < 48
INC 0AH
SJMP INT_Comm13
INT_Comm6:
; (TL0) < 14 or (TL0) > 47
MOV A,TL0
CLR C
SUBB A,#30H
JC INT_Comm12 ; if (TL0) < 14, then Jump
; (TL0) > 47
MOV A,TL0
CLR C
SUBB A,#55H
JNC INT_Comm12 ; if (TL0) > 84, then Jump
; 47 < (TL0) < 85
INC 0AH
MOV A,0AH
CLR C
SUBB A,#7FH ; [(0AH) - 7FH] -> (Acc)
JNC INT_Comm11 ; (0AH) < 7FH ?
; (0AH) < 7FH
MOV A,0AH
MOV B,#08H
DIV AB
MOV 0CH,A
MOV A,B
MOV 0BH,A
MOV A,#01H
; A << (0bh)
MOV R7,0BH
INC R7
SJMP INT_Comm8
INT_Comm7:
CLR C
RLC A
INT_Comm8:
DJNZ R7,INT_Comm7 ; (0000 0001B) << (0BH)
MOV 0DH,A
JNB F0,INT_Comm9
MOV A,0CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ORL A,0DH
MOV @R0,A
SJMP INT_Comm10
INT_Comm9:
MOV A,0DH
CPL A
MOV R7,A
MOV A,0CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ANL A,R7
MOV @R0,A
INT_Comm10:
INC 0AH
INT_Comm11:
SJMP INT_Comm13
INT_Comm12:
; (TL0) < 14 or (TL0) > 84; Note: 84 / 14 = 6
MOV R7,#00H
MOV 09H,R7
MOV 0AH,R7
INT_Comm13:
; 13 < (TL0) < 48
MOV A,0AH
RLC A
JNC INT_CommRet
; if (0AH) > 80H, Then Stop Count and Disable INT0,INT1
MOV 09H,#01H
CLR TR0
CLR EX1
CLR EX0
; lcall GetSRAM
INT_CommRet:
MOV TL0,#00H
POP 07H
POP 00H
POP B
POP ACC
POP PSW
RETI
;---------------------------------------------------------------
;
;---------------------------------------------------------------
; Name : UART_VCT
; Description : Receive One Data (10/11(if SCON= bits) from Host
;UART_VCT:
; PUSH PSW
; PUSH ACC
; PUSH B
; PUSH 00H
; CLR ES
; MOV 0AH,#00H
; JNB RI,UART_VCT_Ret
; CLR RI
; MOV B,SBUF
; MOV A,B
;
; XRL A,#RS_SOH
; JNZ UART_VCT1
; Receive data = RS_SOH, Then Init Value
; MOV 52H,#00H ; Receive Buffer Pointer, SerialBufPoint = 0
; MOV 55H,#01H ; RecFlag = 1
; MOV 53H,#09H ;
; setb Buzer
; SJMP UART_VCT_Ret
;UART_VCT1:
; MOV A,55H ; if RecFlag = 1, Then Continue Receive data, or not don't care the data
; DEC A
; JNZ UART_VCT_Ret
; MOV A,B
; XRL A,#RS_EOH
; JNZ UART_VCT2
; Receive Data = RS_EOH, Then Active Flag bit
; mov A,3eh
; xrl A,#Module_Type
; jnz UART_VCT_Ret
; mov A,3fh
; xrl A,08h
; jz UART_VCT10
; mov A,3fh
; xrl A,#'0'
; jnz UART_VCT_Ret
;UART_VCT10:
; MOV 54H,#01H ; SerialFlag = 1, Receive data OK!
; MOV 55H,#00H ; RecFlag = 0
; clr GRN_LED
; SJMP UART_VCT_Ret
;UART_VCT2:
; MOV A,52H
; CLR C
; SUBB A,#MAX_SERIAL_BUFFER ; check receive buffer isn't fill? MAX_SERIAL_BUFFER
; JNC UART_VCT_Ret
; MOV A,B
; XRL 53H,A ; Cal Bcc
; MOV A,52H
; ADD A,#3EH
; MOV R0,A
; MOV @R0,B
; INC 52H
;UART_VCT_Ret:
; SETB ES
; POP 00H
; POP B
; POP ACC
; POP PSW
; RETI
;---------------------------------------------------------------
;---------------------------------------------------------------
PutChar:
setb WDI
clr WDI
MOV SBUF,A
XRL 53H,A
PutChar1:
JNB TI,$
CLR TI
RET
;---------------------------------------------------------------
; Input : 59H (Bits counter) = 40H(64)
S03DE:
MOV A,10H
ANL A,#01H
MOV 57H,A ; (57H) = 0 or 1
MOV A,10H
CLR C
RRC A ; (10H) >> 1
MOV 10H,A ; move (10H) LSB to (57H)
MOV 56H,#01H
L03ED:
MOV A,59H
MOV B,#08H
DIV AB
SETB C
SUBB A,56H ; (59H) % 8 -> (Acc), Then (Acc) - 1 - (56H)
JC L0424
MOV A,56H
ADD A,#10H
MOV R0,A
MOV A,@R0 ; (11H) - (18H)
ANL A,#01H
MOV 58H,A
MOV A,@R0
CLR C
RRC A
MOV R7,A
MOV @R0,07H ; move (@R0) LSB to (58H) , and move to (R7)
MOV A,58H
JZ L0417
; this bit = '1'
MOV A,56H
ADD A,#0FH
MOV R0,A
MOV A,@R0
ORL A,#80H
MOV @R0,A
SJMP L0420
L0417:
MOV A,56H
ADD A,#0FH
MOV R0,A
MOV A,@R0
ANL A,#7FH
MOV @R0,A
L0420:
INC 56H
SJMP L03ED
L0424:
MOV A,57H
JZ L042F
LCALL S0436
ORL A,#80H
MOV @R0,A
RET
L042F:
LCALL S0436
ANL A,#7FH
MOV @R0,A
RET
;---------------------------------------------------------------
S0436:
MOV A,59H
MOV B,#08H
DIV AB
ADD A,#0FH
MOV R0,A
MOV A,@R0
RET
;---------------------------------------------------------------
; Input : 5EH save Bytes Data in this register
; 5FH bit offset for byte
; Outout : Acc, =0, this bit is '0'; or not this bit is '1'
; Description : get a bit from byte 5eh and offset (5fh)
S0441:
MOV A,#01H
MOV R7,5FH
INC R7
SJMP L044A
L0448:
CLR C
RLC A
L044A:
DJNZ R7,L0448 ; (56H) <- 0000 0001B << (5FH)
MOV 56H,A
MOV A,5EH
ANL 56H,A ; (56H) & (5EH)
MOV A,56H
JZ L0459
MOV A,#01H
RET
L0459:
CLR A
RET
;---------------------------------------------------------------
S045B:
MOV A,57H
MOV B,#08H
DIV AB
MOV 0CH,A
MOV 0BH,B
RET
;---------------------------------------------------------------
S0467:
; (59H) = 80h / 40h
MOV 57H,#00H
L046A:
MOV A,57H
CLR C
SUBB A,#7FH
JNC L0496
LCALL S045B
MOV A,0CH
ADD A,#10H
MOV R0,A
MOV 5EH,@R0
MOV 5FH,0BH
LCALL S0441 ;
MOV 58H,A
INC 5FH
LCALL S0441 ;
XRL A,58H
JNZ L048E
CLR A
RET
L048E:
MOV A,57H
ADD A,#02H
MOV 57H,A
SJMP L046A
L0496:
MOV A,#01H
RET
;---------------------------------------------------------------
S0499:
MOV A,57H
MOV B,#10H
DIV AB
MOV 5CH,A
MOV A,B
MOV B,#02H
DIV AB
MOV 5DH,A
MOV A,#01H
MOV R7,5DH
INC R7
SJMP L04B2
L04B0:
CLR C
RLC A
L04B2:
DJNZ R7,L04B0
MOV 58H,A
MOV A,5FH
DEC A
JNZ L04C5
MOV A,5CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ORL A,58H
MOV @R0,A
RET
L04C5:
MOV A,58H
CPL A
MOV R7,A
MOV A,5CH
ADD A,#10H
MOV R0,A
MOV A,@R0
ANL A,R7
MOV @R0,A
RET
;---------------------------------------------------------------
S04D2:
MOV 59H,#40H
MOV 5AH,#00H
L04D8:
MOV A,5AH
CLR C
SUBB A,#41H
JC L04E2
LJMP L054C
L04E2:
MOV 60H,#00H
MOV 5EH,10H
MOV 5FH,#00H
LCALL S0441
JZ L04F3
MOV 60H,#01H
L04F3:
MOV 5BH,#01H
L04F6:
MOV A,5BH
CLR C
SUBB A,#08H
JNC L050D
MOV 5FH,5BH
LCALL S0441
DEC A
JZ L0509
MOV 60H,#01H
L0509:
INC 5BH
SJMP L04F6
L050D:
MOV 5EH,11H
MOV 5FH,#00H
LCALL S0441
MOV 58H,A
MOV 5FH,#01H
LCALL S0441
MOV 5FH,A
MOV A,58H
DEC A
JNZ L052A
MOV A,5FH
DEC A
JZ L052D
L052A:
MOV 60H,#01H
L052D:
MOV A,60H
JNZ L0545
MOV 5AH,#00H
L0534:
MOV A,5AH
CLR C
SUBB A,#0AH
JNC L0542
LCALL S03DE
INC 5AH
SJMP L0534
L0542:
MOV A,#01H
RET
L0545:
LCALL S03DE
INC 5AH
SJMP L04D8
L054C:
CLR A
RET
;---------------------------------------------------------------
Compare_CardCode:
push 01h
mov R7,#04h
mov R0,#31h
mov R1,#2ah
Compare_CardCode1:
mov A,@R0
xrl A,@R1
jnz Compare_CardCode2
inc R0
inc R1
djnz R7,Compare_CardCode1
pop 01h
clr A
ret
Compare_CardCode2:
mov R7,#04h
mov R0,#31h
mov R1,#2ah
Compare_CardCode3:
mov A,@R1
mov @R0,A
inc R0
inc R1
djnz R7,Compare_CardCode3
pop 01h
mov A,#01h
ret
;---------------------------------------------------------------
;S054E:
; CLR A
; MOV 57H,A
; MOV 56H,A
;L0553:
; MOV A,56H
; CLR C
; SUBB A,#04H
; JNC L0568
; LCALL S0584
; MOV A,@R0
; XRL A,R7
; JZ L0564
; MOV 57H,#01H
;L0564:
; INC 56H
; SJMP L0553
;L0568:
; MOV A,57H
; JZ L0582
; MOV 56H,#00H
;L056F:
; MOV A,56H
; CLR C
; SUBB A,#04H
; JNC L057F
; LCALL S0584
; MOV @R0,07H
; INC 56H
; SJMP L056F
;L057F:
; MOV A,#01H
; RET
;L0582:
; CLR A
; RET
;---------------------------------------------------------------
;S0584:
; MOV A,56H
; ADD A,#2AH
; MOV R0,A
; MOV A,@R0
; MOV R7,A
; MOV A,56H
; ADD A,#31H
; MOV R0,A
; RET
;---------------------------------------------------------------
S0591:
MOV A,#00H
MOV 57H,A
MOV 5AH,A
MOV 5BH,A
MOV 2EH,A
; Clear Old Tag code buffer
MOV 2DH,A
MOV 2CH,A
MOV 2BH,A
MOV 2AH,A
;
MOV 56H,A
L05A5:
MOV A,56H
CLR C
SUBB A,#36H
JC L05AF
LJMP L062C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -