lamp6.txt

来自「本设计是在车辆通行繁忙的十字交叉路口设置的灯火控制系统」· 文本 代码 · 共 330 行

TXT
330
字号

Z8279	EQU	0FF82H
D8279	EQU	0FF80H
LEDMOD	EQU	00H
LEDFEQ	EQU	2FH
LEDCLS	EQU	0C1H
LEDWR0	EQU	80H
READKB  EQU     40H
	ORG 0000H
	LJMP	FUWU
	ORG 0040H
FUWU:	LCALL INIT8279
WAIT:	LCALL GETKEY
	CJNE A,#0FFH,WAIT
	MOV A,B
	CJNE A,#0AH, BB
	LJMP START	
BB:	MOV A,B
	CJNE A,#0BH,CC
	LJMP	ERROR
CC:	MOV A,B
	CJNE A,#0CH,DD
	LJMP  KEYC
DD:	MOV A,B
	CJNE A,#0DH ,WAIT
	LJMP KEYD	
	RET
GETKEY: PUSH DPH
	PUSH DPL 
	PUSH PSW
	MOV DPTR,#Z8279
	MOVX A,@DPTR
	ANL A,#07H
	JNZ GETVAL
	MOV A,#00H
	SJMP NKBHIT
GETVAL:
	MOV A,#READKB
	MOVX @DPTR,A
	MOV DPTR,#D8279
	MOVX A,@DPTR
	ANL A,#3FH
	MOV B ,A
	MOV A,#0FFH
NKBHIT: POP PSW
	POP DPL
	POP DPH
	RET
KEYA:	MOV R5,B
	MOV R4,#06H
	LCALL DISLED
	RET		
KEYB:	MOV R5,#0BH
	MOV R4,#06H
	LCALL DISLED
	RET
KEYC:	LCALL INIT8279
	MOV R5,#0CH
	MOV R4,#06H
	LCALL DISLED
WAIT1:	LCALL GETKEY
	CJNE A,#0FFH,WAIT1
	MOV R5,B
	MOV R4,#01H
	LCALL DISLED
WAIT2:	LCALL GETKEY
	CJNE A,#0FFH,WAIT2
	MOV R5,B
	MOV R4,#0
        LCALL DISLED
	
	RET	
KEYD:	MOV A,81H
	MOV B,#10
	MUL AB
	MOV B,80H	
	ADD A,B
	MOV 16H,A
	MOV 11H,16H
	LJMP CIRCLE
	RET
START:	MOV DPTR,#8406H
	MOV A,	#80H
	MOVX @DPTR,A
	LCALL STATUS0
CIRCLE: LCALL STATUS1
	 LCALL STATUS2
	 LCALL STATUS3
	 LCALL STATUS4
	 LJMP CIRCLE
STATUS0:
	MOV DPTR , #8400H
	MOV A,#0FH
	MOVX @DPTR, A
	MOV R2,#10
	LCALL DELAY 
	RET
STATUS1:
	MOV DPTR , #8400H
	MOV A,#96H
	MOVX @DPTR, A
	MOV 11H,16H
	LCALL INIT8279
STA1:   LCALL LC 
	MOV 15H,#07H
	MOV 14H,#06H
	;LCALL INIT8279
	LCALL DISPLAY
	DJNZ 11H,STA1
	RET
STATUS2:
	MOV DPTR , #8400H
	MOV R3,#03H
FLASH:
	MOV A,#9FH
	MOVX @DPTR,A
	MOV R2,#03H
	LCALL DELAY
	MOV A,#96H
	MOVX @DPTR,A
	MOV R2,#03H
	LCALL DELAY
	DJNZ R3,FLASH
	MOV A,#06H
	MOVX @DPTR,A
	LCALL INIT8279
	MOV 11H,#5
STA2:	LCALL LC
	MOV 14H,#4
	LCALL DISPLAY
	DJNZ 11H,STA2
	RET
STATUS3:
	MOV DPTR , #8400H
	MOV A,#69H
	MOVX @DPTR, A
	MOV 11H,#35
	LCALL INIT8279
STA3:   LCALL LC
	MOV 15H,#03H
	MOV 14H, #02H	
	LCALL DISPLAY
	DJNZ 11H,STA3
	RET
STATUS4:
	MOV DPTR , #8400H
	MOV R3,#03H
FLASH1:
	MOV A,#6FH
	MOVX @DPTR,A
	MOV R2,#03H
	LCALL DELAY
	MOV A,#69H
	MOVX @DPTR,A
	MOV R2,#03H
	LCALL DELAY
	DJNZ R3,FLASH1
	MOV A,#09H
	MOVX @DPTR,A
	MOV 11H,#05H
	LCALL INIT8279
STA4:	LCALL LC
	MOV 14H,#00H
	LCALL DISPLAY
	DJNZ 11H,STA4 
	RET

INIT8279:
	MOV	DPTR,#Z8279
	MOV	A,#LEDMOD
	MOVX	@DPTR,A
	MOV	A,#LEDFEQ
	MOVX	@DPTR,A
	MOV	A,#LEDCLS
	MOVX	@DPTR,A
	LCALL	DELAY
	RET
DISLED:
	PUSH	DPH
	PUSH	DPL
	PUSH	ACC
	MOV	A,#LEDWR0
	ADD	A,R4
	MOV	DPTR,#Z8279
	MOVX	@DPTR,A
	MOV	DPTR,#LEDSEG
	MOV	A,R5
	MOVC	A,@A+DPTR
	MOV	DPTR,#D8279
	MOVX	@DPTR,A
	POP	ACC
	POP	DPL
	POP	DPH
	RET
DELAY:
	PUSH	0
	PUSH	1
       PUSH     2
DELAY1:	MOV	1,#0H
DELAY2:MOV 0,#0B2H
	DJNZ	0,$
	DJNZ	1,DELAY2
        DJNZ    2,DELAY1  
        POP     2
	POP	1
	POP	0
	RET
DISPLAY:

	MOV R5,12H
	MOV R4,15H
	LCALL DISLED
	MOV R5,13H
	MOV R4,14H	
	LCALL DISLED
	MOV R2,#10
	LCALL DELAY
	MOV R5,#00H
	MOV R4,14H
	LCALL DISLED
	RET
LC:	MOV A, 11H
	MOV B,#0AH
	DIV AB
	MOV 12H,A
	MOV 13H,B
	RET
ERROR:	LCALL STATUS0
	MOV R5,#10H
	MOV R4,#05H
	LCALL DISLED
	MOV R5,#11H
	MOV R4,#04H
	LCALL DISLED
	MOV R5,#12H
	MOV R4,#03H
	LCALL DISLED
	MOV R5,#13H
	MOV R4,#02H
	LCALL DISLED
	RET	
CTRL:
	SETB	PSW.1
	LCALL	GETKEY
	CJNE	A,#0FFH,CTRL
	MOV	A,B
	CJNE	A,#14,GP1
	LJMP	JIAN1
 GP1:	MOV	A,B
	CJNE	A,#15,GP2
	SJMP	JIAN2
 GP2:	MOV	A,B
	CJNE	A,#40,GP3
	SJMP	JIAN3
 GP3:	MOV	A,B
	CJNE	A,#41,GP4
	SJMP	JIAN4
 GP4:	LJMP	RG
 JIAN1:	LCALL	RGSAN
	LCALL	DG1
	LJMP	RG
 JIAN2:	LCALL	RGSAN
	LCALL	DG2
	LJMP	RG
 JIAN3:	LCALL	RGSAN
	LCALL	DG3
	LJMP	RG
 JIAN4:	LCALL	RGSAN
	LCALL	DRED
	LJMP	RG
 RGSAN:	MOV	DPTR,#8406H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	DPTR,#8400H
	MOV	R3,#2
 SAN3:	MOV	A,#0C7H
	MOVX	@DPTR,A
	LCALL	DELAY9
	MOV	A,#00H
	MOVX	@DPTR,A
	LCALL	DELAY9
	DJNZ	R3,SAN3
	RET
 DG1:	MOV	R1,#DML1
	MOV	R2,#07H
	LCALL	RGSOX
	RET
 DG2:	MOV	R1,#DML2
	MOV	R2,#0C5H
	LCALL	RGSOX
	RET
 DG3:	MOV	R1,#DML3
	MOV	R2,#0C7H
	LCALL	RGSOX
	RET
 DRED:	MOV	R1,#8FH
	MOV	R2,#0C0H
	LCALL	RGSOX
	RET
 RGSOX:	
	MOV	DPTR,#8406H
	MOV	A,#80H
	MOVX	@DPTR,A
	MOV	DPTR,#8402H
	MOV	A,R2
	MOVX	@DPTR,A
	RET

 DELAY9:	PUSH	2
	PUSH	1
	PUSH	0
	MOV	R2,#03
 DELAY10:	MOV	R1,#00H
 DELAY20:	MOV	R0,#0B2H
	DJNZ	R0,$
	DJNZ	R1,DELAY20
	DJNZ	R2,DELAY10
	POP	0
	POP	1
	POP	2
	RET
	

LEDSEG: DB  3FH,06H,5BH,4FH,66H,6DH,7DH,07H;'0,1,2,3,4,5,6,7,'
        DB  7FH,6FH,77H,7CH,39H,5EH,79H,71H;'8,9,A,B,C,D,E,F,'
	DB  73H,40H,40H,73H;'P,-,-,P,'
	END
			

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?