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

📄 程序.txt

📁 在C51下编写的时钟函数
💻 TXT
📖 第 1 页 / 共 4 页
字号:
	MOV DOWN,#3
	SJMP LAP200
LAP21:
      CJNE A,#2,EXIT22
LAP200:	CJNE R0,#TIME32,LAP22
LAP22:JC LAP23
	MOV R0,#TIME1
	MOV R1,#TIME01
	SJMP LAP24
LAP23:  INC R0
	INC R1
LAP24:  MOV DISPLAY2,@R0
	MOV DISPLAY1,@R1
	LCALL DISPLAY
	LCALL S_DISP
EXIT22:POP PSW
SJMP EXIT43                ;下键处理程序
LAP004: JB 04H,EXIT43
	JNB 05H,EXIT43
	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#31,LAP427
LAP427: JC LAP426
	MOV DISCOUNT,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT43
LAP426:INC DISCOUNT
	MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	ADD A,#32
	MOV R1,A
	MOV DISPLAY2,@R0
	MOV DISPLAY1,@R1
	LCALL DISPLAY
	LCALL S_DISP
EXIT43:RET
END

;查询定时程序:上键处理程序
PROC PROUP
PROUP:JNB 01H,LAP003
	PUSH PSW
	SETB RS0
	CLR RS1
	;SETB 07H  ;已经进入上下键查询的标志
	INC UP
        MOV A,UP
	CJNE A,#20,LAP25
LAP25:JC LAP26
	MOV UP,#3
	SJMP LAP2B
LAP26:MOV A,UP
      CJNE A,#2,EXIT021
LAP2B:	CJNE R0,#TIME1,LAP27
	MOV R0,#TIME32
	MOV R1,#TIME032
	SJMP LAP29
LAP27:JNC LAP28
	MOV R0,TIME32
	MOV R1,TIME032
	SJMP LAP29
LAP28:DEC R0
	DEC R1
LAP29:MOV DISPLAY2,@R0
	MOV DISPLAY1,@R1
	LCALL DISPLAY
	LCALL S_DISP
EXIT021:POP PSW
SJMP EXIT20                  ;上键处理程序入口条件:04h=0,05h=1
LAP003: JB 04H,EXIT20
	JNB 05H,EXIT20
	MOV FLASHPLAY,#0
	MOV A,DISCOUNT
	CJNE A,#0,LAP425
	MOV DISCOUNT,#31
	MOV DISPLAY2,TIME32
	MOV DISPLAY1,TIME032
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT20
LAP425: DEC DISCOUNT
	MOV R0,#TIME1
	MOV A,DISCOUNT
	ADD A,R0
	MOV R0,A
	ADD A,#32
	MOV R1,A
	MOV DISPLAY2,@R0
	MOV DISPLAY1,@R1
	LCALL DISPLAY
	LCALL S_DISP
EXIT20:RET
END

PROC PROCHANG
PROCHANG:
	PUSH PSW
	JNB 04H,LAP40
	JNB 05H,LAP41
	CLR 04H
	CLR 05H
	SJMP EXIT40
LAP41:  CLR 04H
	SETB 05H
	MOV DISCOUNT,#0
	MOV FLASHPLAY,#0
	MOV DISPLAY2,TIME1
	MOV DISPLAY1,TIME01
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT40

LAP40:JB 05H,LAP42
	SETB 04H
        MOV DISCOUNT,#0
        MOV FLASHPLAY,#0
	MOV DISPLAY2,YEAR2
	MOV DISPLAY1,YEAR1
	LCALL DISPLAY
	LCALL S_DISP
	SJMP EXIT40
LAP42:CLR 05H
	LCALL PAIXU
	LCALL GUOLU
	LCALL PAIXU
EXIT40:POP PSW
EXIT040:RET
END

PROC FLASHSCAN
FLASHSCAN:
	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV LIGHT,@R1
	CPL FLASH
	JNB FLASH,LAP43
	SJMP EXIT41
LAP43:
	MOV @R1,#0FFH
	LCALL S_DISP
        MOV @R1,LIGHT
        SJMP FEXIT41
EXIT41:
	MOV @R1,LIGHT
        LCALL S_DISP
FEXIT41:RET
END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PROC PRO0
PRO0:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#0	  ;存储改变的数值

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

	MOV DPTR,#LEDTAB
	MOV A,#0
	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,#0	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#0
	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 PRO1
PRO1:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#1	  ;存储改变的数值

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

	MOV DPTR,#LEDTAB
	MOV A,#1
	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,#1	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#1
	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 PRO2
PRO2:   JNB 04H,LAP006
	JB 05H,EXIT45
	MOV R0,#STORE
	MOV A,FLASHPLAY
	ADD A,R0
	MOV R0,A
	MOV @R0,#2	  ;存储改变的数值

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

	MOV DPTR,#LEDTAB
	MOV A,#2
	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,#2	  ;存储改变的数值

	MOV R1,#DISPBUF
	MOV A,FLASHPLAY
	ADD A,R1
	MOV R1,A
	MOV DPTR,#LEDTAB
	MOV A,#2
	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

⌨️ 快捷键说明

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