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

📄 51led8x8.src

📁 51单片机下
💻 SRC
字号:
	A8255 EQU 7CFFH
	B8255 EQU 7DFFH
	C8255 EQU 7EFFH
	D8255 EQU 7FFFH

	TIMER0 EQU 30H
	TIMER1 EQU 31H
	
	ORG 0000H
	LJMP START
	ORG 0003H
	LJMP INTERRUPT_0
	ORG 0013H
	LJMP INTERRUPT_1
	ORG 0030H
START:
	MOV SP,#60H
	MOV IE,#10000101B;中断致能,EA=EX1=EX0=1
	MOV IP,#00000100B;设定外部中断0 为低优先权,设定外部中断1 为高优先权
	SETB IT0;设定外部中断0 为负缘触发
	SETB IT1;设定外部中断1 为负缘触发
	LCALL DELAY1S
MAIN:
	MOV DPTR,#D8255;8255控制口
	MOV A,#80H;A、B、C都为输出方式0
	MOVX @DPTR,A
	MOV A,#55H
LOOP:
	MOV R7,#00H
	MOV R6,#00H
LOOPB1:
	MOV A,#0FFH
	MOV DPTR,#C8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PB
	MOV A,R6
	MOVC A,@A+DPTR
	MOV DPTR,#B8255
	MOVX @DPTR,A
	LCALL DELAY50
	INC R6
	CJNE R6,#08H,LOOPB1
LOOPC1:
	MOV A,#0FFH
	MOV DPTR,#B8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PC
	MOV A,R7
	MOVC A,@A+DPTR
	MOV DPTR,#C8255
	MOVX @DPTR,A
	LCALL DELAY50
	INC R7
	CJNE R7,#08H,LOOPC1
LOOPC2:
	MOV A,#0FFH
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PC
	MOV A,R7
	DEC A
	MOVC A,@A+DPTR
	MOV DPTR,#C8255
	MOVX @DPTR,A
	LCALL DELAY50
	DEC R7
	CJNE R7,#00H,LOOPC2
	MOV R6,#07H
LOOPB2:
	MOV A,#0FFH
	MOV DPTR,#C8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PB
	MOV A,R6
	DEC A
	MOVC A,@A+DPTR
	MOV DPTR,#B8255
	MOVX @DPTR,A
	LCALL DELAY50
	DEC R6
	CJNE R6,#00H,LOOPB2

	SJMP LOOP

;DELAY 1s
DELAY1S:
	MOV TIMER1,#250
DELAY1:	
	MOV TIMER0,#250
	DJNZ TIMER0,$
	DJNZ TIMER1,DELAY1
	RET

;延时 50ms
DELAY50:
	MOV TIMER1,#120
DELAY101:	
	MOV TIMER0,#100;2'
	DJNZ TIMER0,$;2'
	DJNZ TIMER1,DELAY101;2'
	RET

;======================================================	
;中断服务程序0
INTERRUPT_0:
	;PUSH 06H
	;PUSH 07H
	PUSH ACC
	MOV R5,#05H
	MOV DPTR,#D8255;8255控制口
	MOV A,#80H;A、B、C都为输出方式0
	MOVX @DPTR,A
INT0_LOOP:
	MOV R3,#0
	MOV R4,#0
INT0_LOOPB1:
	MOV A,#0FFH
	MOV DPTR,#C8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PB_INT0
	MOV A,R3
	MOVC A,@A+DPTR
	MOV DPTR,#B8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	INC R3
	CJNE R3,#02H,INT0_LOOPB1
INT0_LOOPC1:
	MOV A,#0FFH
	MOV DPTR,#B8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PC_INT0
	MOV A,R4
	MOVC A,@A+DPTR
	MOV DPTR,#C8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	INC R4
	CJNE R4,#02H,INT0_LOOPC1	
INT0_LOOPC2:
	MOV A,#0FFH
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PC_INT0
	MOV A,R4
	DEC A
	MOVC A,@A+DPTR
	MOV DPTR,#C8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	DEC R4
	CJNE R4,#00H,INT0_LOOPC2
	MOV R3,#02
INT0_LOOPB2:
	MOV A,#0FFH
	MOV DPTR,#C8255
	MOVX @DPTR,A
	MOV DPTR,#A8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PB_INT0
	MOV A,R3
	DEC A
	MOVC A,@A+DPTR
	MOV DPTR,#B8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	LCALL DELAY50
	DEC R3
	CJNE R3,#00H,INT0_LOOPB2	

	DEC R5
	MOV A,R5
	JZ INT0_END
	LCALL INT0_LOOP
INT0_END:
	POP ACC
	;POP 07H
	;POP 06H

	RETI

;中断服务程序1
INTERRUPT_1:
	;PUSH 06H
	PUSH ACC
	MOV R2,#00H
	MOV DPTR,#D8255;8255控制口
	MOV A,#80H;A、B、C都为输出方式0
	MOVX @DPTR,A
INT1_LOOP:
	MOV R1,#0	
INT1_LOOPA1:
	MOV A,#00H
	MOV DPTR,#C8255
	MOVX @DPTR,A
	MOV DPTR,#B8255
	MOVX @DPTR,A
	MOV DPTR,#TAB_PA_INT1
	MOV A,R1
	MOVC A,@A+DPTR
	MOV DPTR,#A8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	INC R1
	CJNE R1,#08H,INT1_LOOPA1
	
INT1_LOOPA2:
	MOV DPTR,#TAB_PA_INT1
	MOV A,R1
	DEC A
	MOVC A,@A+DPTR
	MOV DPTR,#A8255
	MOVX @DPTR,A
	LCALL DELAY50
	LCALL DELAY50
	DEC R1
	CJNE R1,#00H,INT1_LOOPA2

	INC R2
	CJNE R2,#05H,INT1_LOOP

	POP ACC
	;POP 06H
	
	RETI

TAB_PB:
	DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH
TAB_PC:
	DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,7FH

TAB_PB_INT0:
 	DB 0F0H,0FH
TAB_PC_INT0:
	DB 0F0H,0FH

TAB_PA_INT1:
	DB 80H,40H,20H,10H,08H,04H,02H,01H

	END

⌨️ 快捷键说明

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