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

📄 1.asm

📁 用89c51的电子钟用89c51的电子钟
💻 ASM
字号:
	SW1    EQU P3.6
	SW2    EQU P3.7
	SW3    EQU P3.2
	SW4    EQU P3.3
	BU     EQU P1.0
	MS     EQU 30H
	SECS   EQU 31H
	MINUTE EQU 32H
	HOUR   EQU 33H
	DM     EQU 34H
	A1   EQU 35H
	A2   EQU 36H
	A3   EQU 37H
	S1  EQU 3AH
	M1  EQU 3BH
	H1  EQU 3CH
	TABB EQU 3DH
	
	ORG 0000H
	LJMP MAIN
	ORG 000BH
	LJMP T0INT
	ORG 0030H
	;主程序
	 MAIN:MOV S1,#0
	       MOV M1,#0
	       MOV H1,#0
	       MOV SP,#70H
	       CLR F0
	       SETB EA
	       SETB ET0
	     MOV TMOD,#01H
	     MOV TL0,#10H
	     MOV TH0,#0B6H
	     MOV MS,#0
	     MOV SECS,#0
	     MOV MINUTE,#0
	     MOV HOUR,#12H
	     SETB TR0
	LOOP: MOV R0,#SECS
	      LCALL CF
	      LCALL DISP
	      LCALL COMP
	      JB SW3,LOOP
	      LCALL SETT
	     JMP LOOP
	
	;定时设置
	SETT: LCALL CLEAR
	     LCALL BB
	SET0:MOV R0,#S1
	     LCALL CF
	     LCALL DISP
	     JNB SW3,SET0
	     SETB F0
	     MOV TABB,#40H
	SET1:MOV R0,#S1
	     LCALL CF
	     LCALL DISP
	     JNB SW1,SETH
	     JNB SW2,SETM
	     JNB SW3,SAVE
	     JB SW4,SET1
	    SJMP SEXIT 
	;设置分定时值
	SETM:MOV R0,#S1
	     LCALL CF
	     LCALL DISP
	     JNB SW2,SETM
	     MOV A,M1
	     ADD A,#1
	     DA A
	     MOV M1,A
	     CJNE A,#60H,SET1
	     MOV M1,#0
	     SJMP SET1
	;设置时定时值
	SETH:MOV R0,#S1
	     LCALL CF
	     LCALL DISP
	     JNB SW1,SETH
	     MOV A,H1
	     ADD A,#1
	     DA A
	     MOV H1,A
	     CJNE A,#24H,SET1
	     MOV H1,#0
	     SJMP SET1
	;存储定时值
	SAVE:MOV R0,#S1
	     LCALL CF
	     LCALL DISP
	     JNB SW3,SAVE
	     LCALL BB
	     MOV R0,TABB
	     MOV @R0,H1
	     INC R0
	     MOV @R0,M1
	     INC R0
	     MOV TABB,R0
	     CJNE R0,#70H,SET1
	SEXIT:LCALL BB
	     CLR F0
	     RET
	;清零程序    
	CLEAR: MOV R0,#40H
	       MOV A,#0FFH
	CLEAR1:MOV @R0,A
	       INC R0
	       CJNE R0,#70H,CLEAR1
	       RET
	;“嘀—”提示音
BB: MOV R5,#80H
BB1: MOV R6,#80H
	   DJNZ R6,$
	   CPL BU
	   DJNZ R5,BB1
	   SETB BU
	   RET
	
	;定时比较
	COMP:MOV R1,#40H
	COMP1:MOV A,@R1
	      CJNE A,HOUR,COMP5
	      INC R1
	      MOV A,@R1
	      CJNE A,MINUTE,COMP6
	      CLR BU
	comp4:MOV R0,#SECS
	     LCALL CF
	     LCALL DISP
	     MOV A,SECS     
	     JZ COMP4
	     SETB BU       
	     RET
	COMP5:INC R1
	COMP6:INC R1
	      CJNE R1,#70H,COMP1
	      RET
	
	;T0中断计时
	T0INT:PUSH ACC
	      MOV TL0,#10H
	      MOV TH0,#0B6H
	      INC MS
	      MOV A,MS
	      CJNE A,#20,T0EXIT
	      MOV MS,#0
	      JB F0,T0INT1
	      JNB SW1,VH
	      JNB SW2,VM
	T0INT1:MOV A,SECS
	      ADD A,#1
	      DA A
	      MOV SECS,A
	     CJNE A,#60H,T0EXIT
	     MOV SECS,#0
	     MOV A,MINUTE
	     ADD A,#1
	     DA A
	     MOV MINUTE,A
	
	     CJNE A,#60H,T0EXIT
	     MOV MINUTE,#0
	     MOV A,HOUR
	     ADD A,#1
	     DA A
	     MOV HOUR,A
	
	     CJNE A,#24H,T0EXIT
	     MOV HOUR,#0
	     T0EXIT:POP ACC
	     RETI
	;校分
	VM:MOV A,MINUTE
	  ADD A,#1
	  DA A
	  MOV MINUTE,A
	  CJNE A,#60H,VM1
	  MOV MINUTE,#0
	VM1:MOV SECS,#0
	  POP ACC
	RETI
	;校时
	VH:MOV A,HOUR
	  ADD A,#1
	  DA A
	  MOV HOUR,A
	  CJNE A,#24H,VH1
	  MOV HOUR,#0
	VH1:MOV SECS,#0
	  POP ACC
	RETI
	
	;拆分
	CF:  MOV R1,#DM
	     MOV R2,#3
	CF1: MOV A,@R0
	     ANL A,#0FH
	     MOV @R1,A
	     INC R1
	     MOV A,@R0
	     ANL A,#0F0H
	     SWAP A
	     MOV @R1,A
	     INC R1
	     INC R0
	     DJNZ R2,CF1
	     RET
	 
	;显示
	DISP:MOV A1,R0
        MOV A2,R1
        MOV A3,R2
	     PUSH A1
	     PUSH A2
	     PUSH A3
	     PUSH ACC
	     MOV R0,#DM
	     MOV R1,#0FEH
	DISP1:MOV DPTR,#TAB
	     MOV A,@R0
	     MOVC A,@A+DPTR
	     MOV P0,A
	     MOV P2,R1
	     MOV R6,#2
	     MOV R7,#120
	     DJNZ R7,$
	     DJNZ R6,$-4
	     INC R0
	     MOV A,R1
	     RL A
	     MOV R1,A
	     MOV P2,#0FFH
	     JB ACC.6,DISP1
	     POP ACC
        POP A3
	     POP A2
	     POP A1
	     
		  RET
	
	TAB: DB 0C0H, 0F3H ,0A4H, 0A1H ,93H, 89H , 88H,  0E3H ,80H , 81H 
        DB 0C0H, 0F3H ,0A4H, 0A1H ,93H, 89H , 88H,  0E3H ,80H , 81H 
	END
	

⌨️ 快捷键说明

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