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

📄 wg34l.asm

📁 通过51单片机的I/O口模拟WG34信号
💻 ASM
📖 第 1 页 / 共 3 页
字号:
		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 + -