
;*********************************************
;վӵаȨ
;http://www.56dz.com
;*********************************************


;*********************************************
;---------------߶
;*********************************************
SA1	EQU	P1.0		;ֹͣ0Ϊͣ
K1	EQU	P2.0		;1λץ
K2	EQU	P2.1		;2λץ
FMQ	EQU	P2.2		;
;*********************************************
;-------е------
;*********************************************
O_RL	EQU	P2.3
O_RR	EQU	P2.4
O_JIA	EQU	P2.5
O_FS	EQU	P2.6
O_SJ	EQU	P2.7
IN_NO1	EQU	P0.0
IN_NO2	EQU	P0.1
IN_NO3	EQU	P0.2
IN_UP	EQU	P0.3
IN_DOWN	EQU	P0.4
IN_JIA	EQU	P0.5
IN_WL0	EQU	P0.6
IN_WL1	EQU	P0.7
IN_WL2	EQU	P1.7
;*********************************************
;-------------
;*********************************************
ROW0	EQU	P1.6
ROW1	EQU	P1.5
COL0	EQU	P1.4
COL1	EQU	P1.3
COL2	EQU	P1.2
COL3	EQU	P1.1
SJ	EQU	P3
;*********************************************
;--------
;*********************************************
TIME_AJ	EQU	30H		;ɨʱ
TIME_2S	EQU	31H		;2,200жλ2
AJ_BZ	BIT	20H.0		;Ϊ0ʾа,±־λ
GW1_2	BIT	20H.1		;0Ϊץ1£1Ϊץ2
R_L	BIT	20H.2		;е״̬־
R_R	BIT	20H.3
GW	BIT	20H.4		;ץ־  0Ч

;*********************************************
;---洢ռ䶨-
;*********************************************
	ORG	0000H
	AJMP	START
	ORG	000BH		;ڶʱɨ谴ʾ
	AJMP	INT_T0
	ORG	0030H
;*********************************************
;     
;*********************************************
START:	MOV	SP,#60H
	CLR	FMQ
	CALL	RES_JXS		;еֳʼ
	MOV	TMOD,#00000001B	;ģʽ1
	MOV	TH0,#0DCH
	MOV	TL0,#00H	;ʱ10ms
	MOV	TIME_AJ,#00	;ÿ200msɨһ°
	SETB	EA
	SETB	ET0		;ʱT0ж
	SETB	TR0
	SETB	GW		;0Ч
	CALL	RES_XS		;ʾʼ
	SETB	AJ_BZ		;־Ϊ0ʾа
;*********************************************
;	еץ
;*********************************************
LOOP:
	JB	AJ_BZ,LOOP
	JB	GW1_2,GW2_2
	JB	IN_WL1,LOOP
L1:	CLR	O_SJ
	JB	IN_DOWN,L1
	JMP	L4

GW2_2:	CLR	O_RL
	JB	IN_NO2,GW2_2
	SETB	O_RL
	JB	IN_WL2,$
L3:	CLR	O_SJ
	JB	IN_DOWN,L3

L4:	JB	IN_WL0,$
	SETB	O_FS
	CLR	O_JIA
	JNB	IN_JIA,L4
	JNB	IN_WL0,L2
	SETB	O_JIA
	CLR	O_FS
	JMP	L4

L2:	
	SETB	O_SJ
	JNB	IN_UP,L2	;жצǷλ
	CLR	GW
 	CALL	D2MS		;ʱʱ׼ȷҲҪ׼ȷ
L5:	CLR	O_RL
	JB	IN_NO3,L5
	SETB	O_RL
	SETB	O_JIA
	CLR	O_FS		;צ
	CALL	D2MS		;ʱ
	SETB	AJ_BZ		;尴±־λ
	SETB	GW		

L6:	CLR	O_RR
	JB	IN_NO1,L6
	SETB	O_RR
	JMP	LOOP
;*********************************************
;    жϷ
;*********************************************

INT_T0:	PUSH	ACC
	PUSH	PSW
	MOV	TH0,#0DCH
	MOV	TL0,#00H
	CALL	XS
	INC	TIME_AJ
	MOV	A,TIME_AJ
	CJNE	A,#20,EXIT1
	MOV	TIME_AJ,#00
	CALL	AJ

	JB	SA1,EXIT1	;ֻͣе״̬
	MOV	C,O_RR
	MOV	R_R,C
	MOV	C,O_RL
	MOV	R_L,C
	SETB	O_RR
	SETB	O_RL

I_1:	CALL	XS
	JNB	SA1,I_1
	MOV	C,R_R		;лָе״̬
	MOV	O_RR,C
	MOV	C,R_L
	MOV	O_RL,C
EXIT1:	POP	PSW
	POP	ACC
	RETI

;------ɨ-------
AJ:	JB	K1,K2_2
	JB	IN_WL1,BAOJING
	CLR	AJ_BZ
	CLR	GW1_2
K2_2:	JB	K2,EXIT0
	JB	IN_WL2,BAOJING
	CLR	AJ_BZ
	SETB	GW1_2
EXIT0:	RET	
;------------
BAOJING:
	
	CPL	FMQ

	RET
	
;------еֳʼ------
RES_JXS:
	SETB	O_JIA		;ȡн
	CLR	O_FS		;צ
	JNB	IN_JIA,RES_JXS
	CLR	O_RL		;
	SETB	O_RR		;
	MOV	R7,#30
W3:	MOV	R6,#50
W2:	MOV	R5,#100
W1:	JNB	IN_NO1,TING
	DJNZ	R5,W1
	DJNZ	R6,W2
	DJNZ	R7,W3
	SETB	O_RL
	CLR	O_RR
	JB	IN_NO1,$
TING:	SETB	O_RR
	SETB	O_RL
	RET
;----------ʾ--------
XS:	
	JB	GW,X3
	CALL	XS1
	CALL	XS2
	CALL	XS3
X3:	CALL	RES_XS		;ʾ
	JB	IN_WL2,X2	;ʾ2λϢ
	MOV	DPTR,#TAB
	MOV	R1,#10000000B
X1:	MOV	A,#00
	MOVC	A,@A+DPTR
	MOV	SJ,A
	SETB	ROW1
	CLR	ROW1
	MOV	SJ,R1
	SETB	COL2
	CLR	COL2
	INC	DPTR
	MOV	A,R1
	RR	A
	MOV	R1,A
	CALL	D150us
	CJNE	R1,#10000000B,X1
	MOV	SJ,#00
	SETB	COL2
	CLR	COL2

X2:	JB	IN_WL1,EXIT3		;ʾ1λϢ
	MOV	DPTR,#TAB
	MOV	R1,#10000000B
X2_2:	MOV	A,#00
	MOVC	A,@A+DPTR
	MOV	SJ,A
	SETB	ROW1
	CLR	ROW1
	MOV	SJ,R1
	SETB	COL3
	CLR	COL3
	INC	DPTR
	MOV	A,R1
	RR	A
	MOV	R1,A
	CALL	D150us
	CJNE	R1,#10000000B,X2_2
	MOV	SJ,#00
	SETB	COL3
	CLR	COL3
EXIT3:	MOV	SJ,#00
	SETB	ROW1
	CLR	ROW1
	RET

XS1:	JB	IN_NO1,EXIT		;ʾץ״̬Ϣ1λ״̬
	MOV	DPTR,#TAB
	MOV	R1,#10000000B
X3_3:	MOV	A,#00
	MOVC	A,@A+DPTR
	MOV	SJ,A
	SETB	ROW0
	CLR	ROW0
	MOV	SJ,R1
	SETB	COL3
	CLR	COL3
	INC	DPTR
	MOV	A,R1
	RR	A
	MOV	R1,A
	CALL	D150us
	CJNE	R1,#10000000B,X3_3
	MOV	SJ,#00
	SETB	COL3
	CLR	COL3
	RET

XS2:	JB	IN_NO2,EXIT		;ʾץ״̬Ϣ2λ״̬
	MOV	DPTR,#TAB
	MOV	R1,#10000000B
X4_4:	MOV	A,#00
	MOVC	A,@A+DPTR
	MOV	SJ,A
	SETB	ROW0
	CLR	ROW0
	MOV	SJ,R1
	SETB	COL2
	CLR	COL2
	INC	DPTR
	MOV	A,R1
	RR	A
	MOV	R1,A
	CALL	D150us
	CJNE	R1,#10000000B,X4_4
	MOV	SJ,#00
	SETB	COL2
	CLR	COL2
	RET

XS3:	JB	IN_NO3,EXIT		;ʾץ״̬Ϣ3λ״̬
	MOV	DPTR,#TAB
	MOV	R1,#10000000B
X5_5:	MOV	A,#00
	MOVC	A,@A+DPTR
	MOV	SJ,A
	SETB	ROW0
	CLR	ROW0
	MOV	SJ,R1
	SETB	COL1
	CLR	COL1
	INC	DPTR
	MOV	A,R1
	RR	A
	MOV	R1,A
	CALL	D150us
	CJNE	R1,#10000000B,X5_5
	MOV	SJ,#00
	SETB	COL2
	CLR	COL2
EXIT:	RET
;*********************************************
RES_XS:
	MOV	SJ,#00H		;
	SETB	ROW0
	CLR	ROW0		;½ؿ74HC573
	SETB	ROW1
	CLR	ROW1
;
	SETB	COL0
	SETB	COL1
	SETB	COL2
	SETB	COL3
	CLR	COL0
	CLR	COL1
	CLR	COL2
	CLR	COL3
	RET
;*********************************************
;     ʱ
;*********************************************
D150us:	MOV	R6,#150
	DJNZ	R6,$
	RET
D2ms:	MOV	R2,#4
D2:	MOV	R4,#255
D1:	MOV	R5,#255
	DJNZ	R5,$
	DJNZ	R4,D1
	DJNZ	R2,D2
	RET

;*********************************************
TAB: 
DB  03CH,07EH,0FFH,0FFH,0FFH,0FFH,07EH,03CH;;δļ;0

;*********************************************



	END		
