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

📄 led.asm

📁 基于89C51的六位led秒表汇编语言原程序
💻 ASM
字号:

SECOND1 EQU     50H
SECOND2 EQU     55H
MINU1   EQU     60H
MINU2   EQU     65H
HOUR1   EQU     70H
HOUR2   EQU     75H
COUT    EQU     35H
KEYNO   EQU     36H   ;显示位判断
BIT1    BIT     25H     ;功能设定键
ORG	0000H
LJMP	BEGIN
ORG     000BH
LJMP    T0INT
ORG	0030H
BEGIN:  MOV     SP,#40H
        MOV     26H,#015H
        MOV     27H,#015H
        MOV     P2,#0F0H
        MOV     SECOND1,#08H
        MOV     SECOND2,#00H
        MOV     MINU1,#08H
        MOV     MINU2,#00H
        MOV     HOUR1,#08H
        MOV     HOUR2,#00H
        MOV     COUT,#0AH
        MOV     KEYNO,#01H
        SETB    BIT1
;        MOV	TH0,#00H
 ;      MOV     TL0,#01H ;T0定时100MS
        MOV	TMOD,#01H
        MOV	IE,#02H
	SETB	EA
	SETB	TR0
;===========主程序==========
MLOP:   LCALL   KEYIN
        LCALL   LED1DISP
        LCALL   LED2DISP
        LCALL   LED3DISP
        LCALL   LED4DISP
        LCALL   LED5DISP
        LCALL   LED6DISP
	LJMP	MLOP
;========KEYPAD================
KEYIN:  MOV	 DPTR,#10H
	MOVX	A,@DPTR
	CPL	A
	ANL	A,#1FH
        JZ	RET100     ;没有键按下
	LCALL	DELAY
	MOVX	A,@DPTR
	CPL	A
	ANL	A,#1FH
	JZ	RET100
        PUSH    ACC
KEY1:   MOVX    A,@DPTR
        CPL     A
        ANL     A,#1FH
        JNZ     KEY1
        LCALL   DELAY
        POP     ACC
	JB  ACC.0,PKEY1   ;SET KEY
        JB  ACC.1,PKEY2   ;<<<<<<
	JB  ACC.2,PKEY3   ;>>>>>>
        JB  ACC.3,PKEY4   ;++++++
        JB  ACC.4,PKEY51  ;------
RET100:  RET
PKEY1:  CPL     BIT1
        JB      BIT1,RET1
        RET
PKEY2:  JB     BIT1,RET1
        MOV     A, KEYNO
        ADD     A,#01H
        MOV     KEYNO,A
	XRL     A,#07H
        JNZ     RET1
       	MOV	KEYNO,#01H
        RET
PKEY3:  JB     BIT1,RET1
        MOV     A, KEYNO
        SUBB     A,#01H
        MOV     KEYNO,A
	XRL     A,#00H
        JNZ     RET1
        MOV     KEYNO,#06H
        RET
PKEY4:  JB     BIT1,RET1
        MOV	A,KEYNO
        XRL	A,#01H
	JZ	LED11
        MOV	A,KEYNO
	XRL	A,#02H
	JZ	LED21
        MOV	A,KEYNO
	XRL	A,#03H
	JZ	LED31
        MOV	A,KEYNO
	XRL	A,#04H
	JZ	LED41
        MOV	A,KEYNO
	XRL	A,#05H
	JZ	LED51
        MOV	A,KEYNO
	XRL	A,#06H
	JZ	LED61
        MOV	A,KEYNO
	RET
RET1:     RET
PKEY51:LCALL	PKEY5
		RET
LED11:  MOV     A,SECOND1
        INC	A
        MOV     SECOND1,A
        XRL     A,#0AH
        JNZ     RET1
	MOV    SECOND1,#00H
		 RET
LED21:  MOV     A,SECOND2
        INC	A
        MOV     SECOND2,A
        XRL     A,#06H
        JNZ     RET1
	MOV  SECOND2,#00H
	    RET
LED31:  MOV     A,MINU1
        INC	A
        MOV     MINU1,A
        XRL     A,#0AH
        JNZ     RET1
	MOV	MINU1,#00H
		 RET
LED41: MOV     A,MINU2
       INC	A
       MOV     MINU2,A
       XRL     A,#06H
       JNZ     RET1
       MOV     MINU2,#00H
	  RET
LED51:  MOV	A,HOUR1
	INC	A
	MOV	HOUR1,A
	XRL	A,#0AH
	JNZ	RET1
	MOV	HOUR1,#00H
	RET
LED61:  MOV	A,HOUR2
	INC	A
	MOV	HOUR2,A
	XRL	A,#03H
	JNZ	RET1
	MOV	HOUR2,#00H
	RET
PKEY5:  JB     BIT1,RET1
	MOV	A,KEYNO
	XRL	A,#01H
	JZ		LED12
        MOV	A,KEYNO
	XRL	A,#02H
	JZ	LED22
        MOV	A,KEYNO
	XRL	A,#03H
	JZ	LED32
        MOV	A,KEYNO
	XRL	A,#04H
	JZ	LED42
        MOV	A,KEYNO
	XRL	A,#05H
	JZ	LED52
        MOV	A,KEYNO
	XRL	A,#06H
	JZ	LED62
        MOV	A,KEYNO
		RET
LED12:  MOV	A,SECOND1
	XRL	A,#00H
	JZ		LED121
	DEC	A
	MOV	SECOND1,A
	RET
LED121:  MOV	SECOND1,#09H
		RET
LED22:  MOV	A,SECOND2
	XRL	A,#00H
	JZ	LED221
	DEC	A
	MOV 	SECOND2,A
		RET
LED221:  MOV	SECOND2,#05H
		RET
LED32:  MOV	A,MINU1
	XRL	A,#00H
	JZ	LED321
	DEC	A
	MOV	MINU1,A
	RET
LED321:  MOV	MINU1,#09H
		RET
LED42:  MOV	A,MINU2
	XRL	A,#00H
	JZ		LED421
	DEC	A
	MOV	MINU2,A
		RET
LED421:  MOV	MINU2,#05H
		RET
LED52:  MOV	A,HOUR1
	XRL	A,#00H
	JZ	LED521
	DEC	A
	MOV	HOUR1,A
		RET
LED521:  MOV	HOUR1,#09H
		RET
LED62:  MOV	A,HOUR2
	XRL     A,#00H
	JZ	LED621
	DEC	A
	MOV	HOUR2,A
		RET
LED621:  MOV	HOUR2,#02H
		RET
;===LED DISPLAY=========
LED1DISP:JB      BIT1,L1
	MOV	A,KEYNO
	XRL	A,#01H
	JNZ	L1
        DEC     26H
        MOV     A,26H
       JZ      H1
       LJMP    L1
H1:  MOV     26H,#01H
     DEC     27H
     MOV     A,27H
     JNZ     RET2
     MOV     26H,#015H
     MOV     27H,#015H
L1:     MOV     DPTR,#MLED
        MOV     A,SECOND1
        MOVC    A,@A+DPTR
        LCALL   CLUP ;送外部LED1数据
        MOV     P2,#00H
        SETB     P2.7
        LCALL   DELAY1
RET2:   RET

LED2DISP:JB      BIT1,L2
	MOV	A,KEYNO
	XRL	A,#02H
	JNZ	L2
        DEC     26H
        MOV     A,26H
        JZ      H2
        LJMP    L2
H2:  MOV     26H,#01H
     DEC     27H
     MOV     A,27H
     JNZ     RET3
     MOV     26H,#015H
     MOV     27H,#015H
L2:  MOV     DPTR,#MLED
     MOV     A,SECOND2
     MOVC    A,@A+DPTR
     LCALL   CLUP ;送外部LED2数据
     MOV     P2,#00H
     SETB    P2.6
     LCALL    DELAY1
RET3:   RET

LED3DISP:JB      BIT1,L3
	MOV	A,KEYNO
	XRL	A,#03H
	JNZ	L3
        DEC     26H
        MOV     A,26H
        JZ      H3
        LJMP    L3
H3:     MOV     26H,#01H
        DEC     27H
        MOV     A,27H
        JNZ     RET4
        MOV     26H,#015H
        MOV     27H,#015H
L3:     MOV     DPTR,#MLED
        MOV     A,MINU1
        MOVC    A,@A+DPTR
        LCALL   CLUP  ;送外部LED3数?
	MOV     P2,#00H
        SETB    P2.5
        LCALL    DELAY1
RET4:   RET

LED4DISP:JB      BIT1,L4
	MOV	A,KEYNO
	XRL	A,#04H
	JNZ	L4
        DEC     26H
        MOV     A,26H
        JZ      H4
        LJMP    L4
H4:     MOV     26H,#01H
        DEC     27H
        MOV     A,27H
        JNZ     RET5
        MOV     26H,#015H
        MOV     27H,#015H
L4:     MOV     DPTR,#MLED
        MOV     A,MINU2
        MOVC    A,@A+DPTR
        LCALL   CLUP  ;送外部LED4数据
	MOV     P2,#00H
        SETB    P2.4
        LCALL    DELAY1
RET5:   RET

LED5DISP:JB      BIT1,L5
	MOV	A,KEYNO
	XRL	A,#05H
	JNZ	L5
        DEC     26H
        MOV     A,26H
        JZ      H5
        LJMP    L5
H5:     MOV     26H,#01H
        DEC     27H
        MOV     A,27H
        JNZ     RET6
        MOV     26H,#015H
        MOV     27H,#015H
L5:     MOV     DPTR,#MLED
        MOV     A,HOUR1
        MOVC    A,@A+DPTR
        LCALL  CLDOWN ;送外部LED5数据
        MOV     P2,#00H
        SETB    P2.7
        LCALL    DELAY1
RET6:   RET

LED6DISP:JB      BIT1,L6
	MOV	A,KEYNO
	XRL	A,#06H
	JNZ	L6
        DEC     26H
        MOV     A,26H
        JZ      H6
        LJMP    L6
H6:     MOV     26H,#01H
        DEC     27H
        MOV     A,27H
        JNZ     RET7
        MOV     26H,#015H
        MOV     27H,#015H
L6:     MOV     DPTR,#MLED
        MOV     A,HOUR2
        MOVC    A,@A+DPTR
        LCALL   CLDOWN  ;送外部LED6数据
	MOV     P2,#00H
        SETB    P2.6
        LCALL   DELAY1
RET7:   RET
CLUP:   PUSH    ACC
        MOV     R0,#08H
        MOV     A,#00H
        MOVX    @R0,A
        POP     ACC
        MOV     R1,#00H
        MOVX    @R1,A
        RET
CLDOWN: PUSH    ACC
        MOV     R0,#00H
        MOV     A,#00H
        MOVX    @R0,A
        POP     ACC
        MOV     R0,#08H
        MOVX    @R0,A
        RET
;=========延时程序=====
DELAY1:	MOV	R7,#020H
D11:	MOV	R6,#010H
D21:	DJNZ	R6,D21
	DJNZ	R7,D11
	RET
DELAY:	MOV	R7,#15H
D1:	MOV	R6,#0FFH
D2:	DJNZ	R6,D2
	DJNZ	R7,D1
	RET
;========LED寄存器数据更新=======
LED1:   PUSH    ACC
        MOV     A,SECOND1
        ADD     A,#01H
        MOV     SECOND1,A
        XRL     A,#0AH
        JNZ     RET0
LED2:   MOV     SECOND1,#00H
        MOV     A,SECOND2
        ADD     A,#01H
        MOV     SECOND2,A
        XRL     A,#06H
        JNZ     RET0
LED3:   MOV     SECOND2,#00H
        MOV     A,MINU1
        ADD     A,#01H
        MOV     MINU1,A
        XRL     A,#0AH
        JNZ     RET0
LED4:   MOV     MINU1,#00H
        MOV     A,MINU2
        ADD     A,#01H
        MOV     MINU2,A
        XRL     A,#06H
        JNZ     RET0
LED5:   MOV     MINU2,#00H
        MOV     A,HOUR1
        ADD     A,#01H
        MOV     HOUR1,A
        MOV     B,A
        MOV     A,HOUR2
        XRL     A,#02H
        JZ     DAY1
        XRL     A,#0AH
        JNZ     RET0
LED6:   MOV     HOUR1,#00H
        MOV     A,HOUR2
        ADD     A,#01H
        MOV     HOUR2,A
        XRL     A,#02H
        JNZ     RET0
DAY1:   MOV     A,B
        XRL     A,#04H
        JNZ     RET0
        MOV     HOUR1,#00H
        MOV     HOUR2,#00H
RET0:   POP     ACC
        RET
;=======定时中断==========
T0INT:  PUSH    ACC
                MOV	TH0,#00H
        MOV     TL0,#01H 
        DJNZ    COUT, RETI1
        MOV     COUT,#0AH
        LCALL   LED1
RETI1:  POP     ACC
        RETI
MLED:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB	7FH,6FH
	END

⌨️ 快捷键说明

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