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

📄 dsh.dt

📁 义隆单片机EM78P153S编写的一款定时程序(汇编)
💻 DT
字号:
/*************************************************************/
/*           用EM78P153S编写一个定时程序                     */
/*功能:初始显示:00;第一次按下K显示:05 ,步进为5直到20;   */
/*再按一下,显示00;再按同上循环显示。		      	     */     
/*注:以上动作只能在3S内有效,3S后进入定时,并每一分钟减1 显示*/
/***************位定义*******************/
	Z		EQU	2
	C		EQU	0
	TCIE     EQU	0
	OUT      EQU	0	;P50 输出 
	KEY      EQU	1	;P51 输入 
	V0       EQU	2	;P52 输出 
	V1       EQU	3	;P53 输出 
	T3   	EQU	1	;FLAG.1,3S定时标志位 
	T5   	EQU	2	;FLAG.2,5M定时标志位 
	T10  	EQU	3	;FLAG.3,10M定时标志位 
	T15  	EQU	4	;FLAG.4,15M定时标志位 
	T20  	EQU	5	;FLAG.5,20M定时标志位 
	T01  	EQU	6	;FLAG.6,1M定时标志位 
	H0   	EQU    7	;FLAG.7,回零标志位 
/*************寄存器定义*****************/	
	TCC     EQU     01H
	PC      EQU     02H
    STATUS  EQU     03H
	DDR5    EQU     05H
	DDR6    EQU     06H
	P5      EQU     05H
	P6      EQU     06H
	IOCE	EQU	 0EH
	RF  	EQU 	0FH
	IOCF	EQU 	0FH
;-------------------------------------------
	XH  	EQU 	10H	;显示缓冲器 
	FLAG0   EQU     11H	;标志位寄存器	
	T1MH    EQU 	12H	;1M定时存器 
	T1ML	EQU 	13H
	T3SL    EQU 	14H	;3S定时寄存器 
	T3SH	EQU	 15H
	TT5M	EQU	 16H	;5M定时寄存器 
	TT10M   EQU 	17H	;10M定时寄存器 
	TT15M   EQU	 18H	;15M定时寄存器 
	TT20M   EQU 	19H	;20M定时 寄存器 
	FLAG	EQU	 1AH
	DEL1	EQU 	1BH
	DEL2	EQU	 1CH
/**************************************/
		ORG	000H
		MOV	A,@00H
		IOW	IOCE	;清看门狗 
		JMP	MAIN
		ORG	008H
		JMP	TCC_INT
/************中断服务子程序**************/
TCC_INT:
		NOP		
		CLR	RF
		MOV	A,@0X82 	;重赋TCC初值(8ms)
		MOV	TCC,A
        JBC	FLAG0,0	 ;左右显示控制标志位	
		JMP	XXR		 ;显右 
		CALL   XL		  ;显左 
		JMP	SM
XXR:	CALL   XR
SM:     JBC	FLAG,T3
		CALL   DEL3S	   ;3S定时	
		JBC	FLAG,T5
		CALL   T5M		 ;5M定时 
		JBC	FLAG,T10
		CALL   T10M		;10M定时 
		JBC	FLAG,T15
		CALL   T15M		;15M定时 
		JBC	FLAG,T20
		CALL   T20M		;20M定时					
IOUT:   RETI
/***************数码表0--9***************/
TAB:
	ADD PC,A
	RETL	@0X88	;0
	RETL	@0XF9	;1
	RETL	@0X4C	;2
	RETL	@0X68	;3
	RETL	@0X39	;4
	RETL	@0X2A	;5
	RETL	@0X0A	;6
	RETL	@0XF8	;7
	RETL	@0X08	;8
	RETL	@0X28	;9
	RETL	@0X88	;10
	RETL	@0X88	;11
	RETL	@0X88	;12
	RETL	@0X88	;13
	RETL	@0X88	;14
	RETL	@0X88	;15
/***************数显0-20****************/	
TAB1:
	ADD PC,A
	RETL	@00H	;0
	RETL	@01H	;1
	RETL	@02H	;2
	RETL	@03H	;3
	RETL	@04H	;4
	RETL	@05H	;5
	RETL	@06H	;6
	RETL	@07H	;7
	RETL	@08H	;8
	RETL	@09H	;9
	RETL	@10H	;10
	RETL	@11H	;11
	RETL	@12H	;12
	RETL	@13H	;13
	RETL	@14H	;14
	RETL	@15H	;15
	RETL	@16H	;16
	RETL	@17H	;17
	RETL	@18H	;18
	RETL	@19H	;19
	RETL	@20H	;20
;--------------------------------------10MS
D10MS:	MOV	A,@26
	  	MOV	DEL1,A
LP0:	  MOV	A,@0FAH
		  MOV	DEL2,A		
LP1:	  DJZ	DEL2
		  JMP	LP1
		  DJZ	DEL1
		  JMP	LP0
		  RET
;----------------------------------------左显			
XL: 	BS 	 P5,V0
		BC      P5,V1	
		SWAPA   XH
		AND     A,@0FH
		CALL    TAB
		MOV     P6,A
		INC	 FLAG0	;下一次显右 
		RET
;------------------------------------------右显 
XR:	 BS 	 P5,V1
		BC 	 P5,V0
		MOV     A,@0FH
		AND     A,XH
		CALL    TAB
		MOV     P6,A
		INC 	FLAG0	;下一次显左 
		RET
/*********************主程序*************************/	
MAIN:
		MOV    A,@00000010B    ;P50,P52,P53输出;P51输入 
		IOW    DDR5
		BS	 P5,V0
		BS	 P5,V1
		BC	 P5,OUT		  ;风扇禁止工作		
		MOV    A,@00001000B    ;P60-P62.P64-P67输出,P63输入 
		IOW	DDR6
		MOV	A,@00H
		MOV	XH,A
		CLR	FLAG
		CLR	FLAG0
		CLR	DEL1
		CLR	DEL2
		CLR	T3SH
	    CLR	T3SL
		MOV	A,@0X69		;1分钟定时赋初值 
		MOV	T1ML,A
		MOV	A,@0X18
		MOV	T1MH,A
		MOV	A,@5
		MOV	TT5M,A
		MOV	A,@10
		MOV	TT10M,A
		MOV	A,@15
		MOV	TT15M,A
		MOV	A,@20
		MOV	TT20M,A
		MOV	A,@0X05	    ;分频器给TCC,分频比为1:64
		CONTW
		MOV	A,@01H		 ;使能TCC中断 
		IOW	IOCF
		CLR	RF	 	    ;清除TCC溢出标志位 
		MOV	A,@0X82		;赋TCC初值(8ms)
		MOV	TCC,A		
		ENI
;----------------------------------------------------------------		

KEYSCAN:	 	
		JBC	P5,1
		JMP	KEYSCAN
		CALL   D10MS
		JBC	P5,1
		JMP	KEYSCAN
		JBS	P5,1
		JMP	$-1     

	 	MOV	A,@50H
	 	MOV	T3SL,A
	 	MOV	A,@01H
	 	MOV	T3SH,A
	 	BS 	FLAG,T3		;启动3S定时 
	 	JBC	FLAG,H0		;3S结束?
	 	JMP	HL		     ;3S后有键回零 

BJ00:	MOV	A,@00H
	 	XOR	A,XH
	 	JBS	STATUS,Z
		 JMP	BJ05
	 	BS 	P5,OUT		 ;有健风扇工作 
 		MOV	A,@05H
 		MOV	XH,A
 		BS	 FLAG,T5
 		BC 	FLAG,T10
 		BC 	FLAG,T15
 		BC 	FLAG,T20 
		 JMP	KEYSCAN

BJ05:    MOV	A,@05H
	 	XOR	A,XH
	 	JBS	STATUS,Z
	 	JMP	BJ10
	 	BS 	P5,OUT		  ;有健风扇工作 
	 	MOV	A,@10H
	     MOV	XH,A
	     BC 	FLAG,T5
	 	BS 	FLAG,T10
	     BC 	FLAG,T15
	 	BC 	FLAG,T20
	 	JMP	KEYSCAN

BJ10:	MOV	A,@10H
		 XOR	A,XH
		 JBS	STATUS,Z
		 JMP	BJ15
		 BS	 P5,OUT		;有健风扇工作 
	 	MOV	A,@15H
	 	MOV	XH,A
	 	BC 	FLAG,T5
	 	BC	 FLAG,T10
		 BS 	FLAG,T15
		 BC 	FLAG,T20
		 JMP	KEYSCAN

BJ15:	MOV	A,@15H
	 	XOR	A,XH
	 	JBS	STATUS,Z
	 	JMP	BJ20
	 	BS 	P5,OUT		;有健风扇工作 
	 	MOV	A,@20H
	 	MOV	XH,A
	 	BC 	FLAG,T5
	 	BC 	FLAG,T10
	 	BC 	FLAG,T15
	 	BS	 FLAG,T20
	 	JMP	KEYSCAN
	 	
BJ20:	MOV	A,@20H
	 	XOR	A,XH
	 	JBS	STATUS,Z
	 	JMP	HL
		 BS 	P5,OUT		;有健风扇工作 
		 MOV	A,@20H
	 	MOV	XH,A
		 BC	 FLAG,T5
	 	BC 	FLAG,T10
	 	BC	 FLAG,T15
	 	BS 	FLAG,T20				
	 	JMP	KEYSCAN

HL:	 CLR	XH
	    BC	 FLAG,H0
		BC	 FLAG,T5
	    BC 	FLAG,T10
	    BC 	FLAG,T15
	    BC 	FLAG,T20
		BC 	P5,OUT
		MOV	A,@0X69	
		MOV	T1ML,A
		MOV	A,@0X18
		MOV	T1MH,A
		MOV	A,@5
		MOV	TT5M,A
		MOV	A,@10
		MOV	TT10M,A
		MOV	A,@15
		MOV	TT15M,A
		MOV	A,@20
		MOV	TT20M,A
	    JMP	KEYSCAN

;-------------------------------------3S
DEL3S:   DJZ	T3SL	
		 JMP	EXIT0
		 MOV	A,@00H
		 XOR	A,T3SH
		 JBC	STATUS,Z
		 JMP	DEL0
	 	MOV	A,@0FFH
	 	MOV	T3SL,A	
	 	DEC	T3SH
		 JMP	EXIT0

DEL0:    BS 	FLAG,H0
	 	BC     FLAG,T3
EXIT0:   RET
;------------------------------------1分钟 
T1M:	DJZ	T1ML	
		JMP	EXIT1
		MOV	A,@00H
		XOR	A,T1MH
		JBC	STATUS,Z
		JMP	T1M0
	    MOV	A,@0FFH
		MOV	T1ML,A	
		DEC	T1MH
		JMP	EXIT1

T1M0:   BS	 FLAG,T01
		MOV	A,@0X69
		MOV	T1ML,A
		MOV	A,@0X18
		MOV	T1MH,A
EXIT1:  RET
;------------------------------------5分钟			
T5M:    CALL   T1M	
		JBS	FLAG,T01
		JMP	T5M0
		BC	 FLAG,T01
		DJZ	TT5M
		JMP	T5M0
		BC 	FLAG,H0
		BC 	FLAG,T5
		BC 	P5,OUT
		MOV	A,@5
		MOV	TT5M,A
		JMP	T5M1
T5M0:   MOV	A,TT5M
  	  MOV	XH,A
		JMP	EXIT2
T5M1:   CLR    XH
EXIT2:  RET
;-----------------------------------10分钟 
T10M:   CALL   T1M	
		JBS	FLAG,T01
		JMP	T10M0
		BC	 FLAG,T01
		DJZ	TT10M
		JMP	T10M0
		BC 	FLAG,H0
		BC 	FLAG,T10
		BC 	P5,OUT
		MOV	A,@10
		MOV	TT10M,A
		JMP	T10M1
T10M0:  MOV	A,TT10M
		CALL   TAB1
		MOV	XH,A
		JMP	EXIT3
T10M1:  CLR    	XH
EXIT3:  RET
;----------------------------------15分钟 
T15M:   CALL   T1M	
		JBS	FLAG,T01
		JMP    T15M0
		BC	 FLAG,T01
		DJZ	TT15M
		JMP	T15M0
		BC	 FLAG,H0
		BC	 FLAG,T15
		BC	 P5,OUT
		MOV	A,@15
		MOV	TT15M,A
		JMP	T15M1
T15M0:  MOV	A,TT15M
		CALL   TAB1
		MOV	XH,A
		JMP	EXIT4
T15M1:  CLR     XH
EXIT4:  RET
;----------------------------------20分钟 
T20M:   CALL   T1M	
		JBS	FLAG,T01
		JMP	T20M0
		BC	 FLAG,T01
		DJZ	TT20M
		JMP	T20M0
		BC 	FLAG,H0
		BC	 FLAG,T20
		BC	 P5,OUT
		MOV	A,@20
		MOV	TT20M,A
		JMP	T20M1
T20M0:  MOV	A,TT20M
		CALL   TAB1
		MOV	XH,A
		JMP	EXIT5
T20M1:  CLR    	XH
EXIT5:  RET

;--------------------------------------------------
		END

⌨️ 快捷键说明

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