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

📄 程序.txt

📁 在C51下编写的时钟函数
💻 TXT
📖 第 1 页 / 共 4 页
字号:
	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP044
      LAP044:JC EXIT62
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
	CJNE R4,#24,LAP421
      LAP421:JNC ERROR5
	CJNE R5,#60,LAP422
      LAP422:JNC ERROR5
	SJMP SUCCESS5
EXIT62:SJMP EXIT42
ERROR5:MOV FLASHPLAY,#0
	SJMP LAP4007

SUCCESS5:
	MOV R0,#TIME1 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#31,LAP40005
      LAP40005:JC LAP4006
	MOV DISCOUNT,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT42
LAP4006: INC DISCOUNT
LAP4007:MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
EXIT42:RET
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PROC PRO7
PRO7:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#7	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A

	MOV DPTR,#LEDTAB
	MOV A,#7
	MOVC A,@A+DPTR
	MOV @R1,A        ;存储改变的字模

	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP44
      LAP44:JC EXIT45
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
        MOV A,DISCOUNT
     CJNE A,#0,LAP45

     NEXT27:MOV A,R5  ;对是否闰年进行判断
	JNZ NEXT828
	MOV A,R4
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
NEXT828:MOV A,R5
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
	SETB F0
	SJMP NEXT807
NEXT806:CLR F0
NEXT807:LJMP SUCCESS4   ;无论是多少都可修改

LAP45:
      CJNE A,#1,LAP46
	MOV A,R4
	JZ ERROR4
	CJNE A,#13,LAP48
      LAP48:JNC ERROR4
	JB F0,LAP800
	MOV DPTR,#TAB1
	SJMP GOON10
LAP006:LJMP LAP005
LAP800:MOV DPTR,#TAB2
GOON10: DEC A
        MOVC A,@A+DPTR
        MOV B,R5
	CJNE A,B,LAP402
LAP402: JC ERROR4
	SJMP SUCCESS4
EXIT45:LJMP EXIT42

LAP46:CJNE A,#2,LAP812
	MOV A,R4
	JZ ERROR4
	CJNE A,#8,LAP813
       LAP813:JNC ERROR4
	MOV A,R5
	CJNE A,#24,LAP818
     LAP818:JNC ERROR4
	SJMP SUCCESS4

LAP812:	MOV A,R4
	CJNE A,#60,LAP820
       LAP820:JNC ERROR4
	MOV A,R5
	CJNE A,#60,LAP821
       LAP821:JNC ERROR4
	SJMP SUCCESS4

ERROR4:MOV FLASHPLAY,#0
	SJMP LAP407
 ;EXIT45:LJMP EXIT42      ;      接力
SUCCESS4:
	MOV R0,#YEAR2 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	INC R0
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#3,LAP405
      LAP405:JC LAP406
	MOV DISCOUNT,#0
	MOV DISPLAY2,YEAR2
	MOV DISPLAY1,YEAR1
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42
LAP406: INC DISCOUNT
LAP407:	MOV R0,#YEAR2
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	INC R0
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42

LAP005:JNB 05H,EXIT62

	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#7	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#7
	MOVC A,@A+DPTR
	MOV @R1,A
	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP044
      LAP044:JC EXIT62
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
	CJNE R4,#24,LAP421
      LAP421:JNC ERROR5
	CJNE R5,#60,LAP422
      LAP422:JNC ERROR5
	SJMP SUCCESS5
EXIT62:SJMP EXIT42
ERROR5:MOV FLASHPLAY,#0
	SJMP LAP4007

SUCCESS5:
	MOV R0,#TIME1 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#31,LAP40005
      LAP40005:JC LAP4006
	MOV DISCOUNT,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT42
LAP4006: INC DISCOUNT
LAP4007:MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
EXIT42:RET
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PROC PRO8
PRO8:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#8	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A

	MOV DPTR,#LEDTAB
	MOV A,#8
	MOVC A,@A+DPTR
	MOV @R1,A        ;存储改变的字模

	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP44
      LAP44:JC EXIT45
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
        MOV A,DISCOUNT
     CJNE A,#0,LAP45

     NEXT27:MOV A,R5  ;对是否闰年进行判断
	JNZ NEXT828
	MOV A,R4
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
NEXT828:MOV A,R5
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
	SETB F0
	SJMP NEXT807
NEXT806:CLR F0
NEXT807:LJMP SUCCESS4   ;无论是多少都可修改

LAP45:
      CJNE A,#1,LAP46
	MOV A,R4
	JZ ERROR4
	CJNE A,#13,LAP48
      LAP48:JNC ERROR4
	JB F0,LAP800
	MOV DPTR,#TAB1
	SJMP GOON10
LAP006:LJMP LAP005
LAP800:MOV DPTR,#TAB2
GOON10: DEC A
        MOVC A,@A+DPTR
        MOV B,R5
	CJNE A,B,LAP402
LAP402: JC ERROR4
	SJMP SUCCESS4
EXIT45:LJMP EXIT42

LAP46:CJNE A,#2,LAP812
	MOV A,R4
	JZ ERROR4
	CJNE A,#8,LAP813
       LAP813:JNC ERROR4
	MOV A,R5
	CJNE A,#24,LAP818
     LAP818:JNC ERROR4
	SJMP SUCCESS4

LAP812:	MOV A,R4
	CJNE A,#60,LAP820
       LAP820:JNC ERROR4
	MOV A,R5
	CJNE A,#60,LAP821
       LAP821:JNC ERROR4
	SJMP SUCCESS4

ERROR4:MOV FLASHPLAY,#0
	SJMP LAP407
 ;EXIT45:LJMP EXIT42      ;      接力
SUCCESS4:
	MOV R0,#YEAR2 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	INC R0
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#3,LAP405
      LAP405:JC LAP406
	MOV DISCOUNT,#0
	MOV DISPLAY2,YEAR2
	MOV DISPLAY1,YEAR1
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42
LAP406: INC DISCOUNT
LAP407:	MOV R0,#YEAR2
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	INC R0
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42

LAP005:JNB 05H,EXIT62

	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#8	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#8
	MOVC A,@A+DPTR
	MOV @R1,A
	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP044
      LAP044:JC EXIT62
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
	CJNE R4,#24,LAP421
      LAP421:JNC ERROR5
	CJNE R5,#60,LAP422
      LAP422:JNC ERROR5
	SJMP SUCCESS5
EXIT62:SJMP EXIT42
ERROR5:MOV FLASHPLAY,#0
	SJMP LAP4007

SUCCESS5:
	MOV R0,#TIME1 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#31,LAP40005
      LAP40005:JC LAP4006
	MOV DISCOUNT,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT42
LAP4006: INC DISCOUNT
LAP4007:MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
EXIT42:RET
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PROC PRO9
PRO9:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#9	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A

	MOV DPTR,#LEDTAB
	MOV A,#9
	MOVC A,@A+DPTR
	MOV @R1,A        ;存储改变的字模

	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP44
      LAP44:JC EXIT45
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
        MOV A,DISCOUNT
     CJNE A,#0,LAP45

     NEXT27:MOV A,R5  ;对是否闰年进行判断
	JNZ NEXT828
	MOV A,R4
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
NEXT828:MOV A,R5
	RRC A
	JC NEXT806
	RRC A
	JC NEXT806
	SETB F0
	SJMP NEXT807
NEXT806:CLR F0
NEXT807:LJMP SUCCESS4   ;无论是多少都可修改

LAP45:
      CJNE A,#1,LAP46
	MOV A,R4
	JZ ERROR4
	CJNE A,#13,LAP48
      LAP48:JNC ERROR4
	JB F0,LAP800
	MOV DPTR,#TAB1
	SJMP GOON10
LAP006:LJMP LAP005
LAP800:MOV DPTR,#TAB2
GOON10: DEC A
        MOVC A,@A+DPTR
        MOV B,R5
	CJNE A,B,LAP402
LAP402: JC ERROR4
	SJMP SUCCESS4
EXIT45:LJMP EXIT42

LAP46:CJNE A,#2,LAP812
	MOV A,R4
	JZ ERROR4
	CJNE A,#8,LAP813
       LAP813:JNC ERROR4
	MOV A,R5
	CJNE A,#24,LAP818
     LAP818:JNC ERROR4
	SJMP SUCCESS4

LAP812:	MOV A,R4
	CJNE A,#60,LAP820
       LAP820:JNC ERROR4
	MOV A,R5
	CJNE A,#60,LAP821
       LAP821:JNC ERROR4
	SJMP SUCCESS4

ERROR4:MOV FLASHPLAY,#0
	SJMP LAP407
 ;EXIT45:LJMP EXIT42      ;      接力
SUCCESS4:
	MOV R0,#YEAR2 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	INC R0
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#3,LAP405
      LAP405:JC LAP406
	MOV DISCOUNT,#0
	MOV DISPLAY2,YEAR2
	MOV DISPLAY1,YEAR1
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42
LAP406: INC DISCOUNT
LAP407:	MOV R0,#YEAR2
	MOV A,DISCOUNT
	ADD A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	INC R0
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
	LJMP EXIT42

LAP005:JNB 05H,EXIT62

	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#9	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#9
	MOVC A,@A+DPTR
	MOV @R1,A
	LCALL S_DISP
	INC FLASHPLAY
        MOV A,FLASHPLAY
     CJNE A,#4,LAP044
      LAP044:JC EXIT62
	MOV R0,#STORE
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R4,A
	INC R0
	MOV A,@R0
	ADD A,R4
	MOV R4,A
	INC R0
	MOV A,@R0
	MOV B,#10
	MUL AB
	MOV R5,A
	INC R0
	MOV A,@R0
	ADD A,R5
	MOV R5,A
	CJNE R4,#24,LAP421
      LAP421:JNC ERROR5
	CJNE R5,#60,LAP422
      LAP422:JNC ERROR5
	SJMP SUCCESS5
EXIT62:SJMP EXIT42
ERROR5:MOV FLASHPLAY,#0
	SJMP LAP4007

SUCCESS5:
	MOV R0,#TIME1 ;成功修改时间后,把改后的值放入
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV A,R4
	MOV @R0,A
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV A,R5
	MOV @R0,A

	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#31,LAP40005
      LAP40005:JC LAP4006
	MOV DISCOUNT,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT42
LAP4006: INC DISCOUNT
LAP4007:MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	MOV DISPLAY2,@R0
	MOV A,R0
	ADD A,#32
	MOV R0,A
	MOV DISPLAY1,@R0
	LCALL DISPLAY
	LCALL S_DISP
EXIT42:RET
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PROC PAIXU
PAIXU:	MOV R6,#30
	MOV R5,#32
LAP653: DEC R5
	MOV A,R5
	MOV R7,A
	MOV R0,#TIME1
LAP652:	MOV A,@R0
	INC R0
	MOV B,@R0
	CJNE A,B,LAP650
	 MOV A,R0
	 ADD A,#32
	 MOV R1,A
     	 MOV A,@R1
     	 DEC R1
      	 MOV B,@R1
         CJNE A,B,LAP654
LAP654:	  JNC LAP651
          XCH A,B
	  MOV @R1,B
	  INC R1
	  MOV @R1,A
	SJMP LAP651
LAP650:JC LAP651
    	XCH A,B
	MOV @R0,B
	DEC R0
	MOV @R0,A
	MOV A,R0
	ADD A,#32
	MOV R1,A
	MOV A,@R1
	INC R1
	XCH A,@R1
	DEC R1
	MOV @R1,A
	INC R0
LAP651: DJNZ R7,LAP652
	DEC R6
	DJNZ R6,LAP653
RET
END

;检测相同时间程序,若有相同程序只保留一个,其余置88
PROC GUOLU
GUOLU:	MOV R0,#TIME1
	MOV R7,#31
LAP656: MOV A,@R0
	INC R0
	MOV B,@R0
	CJNE A,B,LAP655
	MOV A,R0
	ADD A,#32
	MOV R1,A
	MOV A,@R1
	DEC R1
	MOV B,@R1
	CJNE A,B,LAP655
	MOV @R1,#88
	DEC R0
	MOV @R0,#88
	INC R0
LAP655: DJNZ R7,LAP656
RET
END

TAB1:      ;非闰年表
DB 31,28,31,30,31,30
DB 31,31,30,31,30,31

TAB2:      ;闰年表
DB 31,29,31,30,31,30
DB 31,31,30,31,30,31

LEDTAB:                 ;八段LED共阳数码管字模
;数码  0     1     2     3     4     5    6    7
DB     0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H

;数码  8     9     A     B     C     D     E     F
DB     80H,  90H,  88H, 83H,  0C6H, 0A1H, 86H, 0FFH


⌨️ 快捷键说明

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