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

📄 153.dt

📁 舞台灯光控制
💻 DT
字号:
INCLUDE "EM78P153.INC" 
;INCLUDE "MACRO.DT"

KEY1	EQU		1
KEY2	EQU		2
KEY3	EQU		3
KEY_DOWN	EQU	6
KEY_UP		EQU	7
/***************位定义**********************************************************************************************/
	/*扫描子程序标志位(位为1时有效)
		7				6				5				4				3				2	      1			0
	KEY_UP   	     KEY_DOWN		------------	--------		   KEY3		       KEY2        KEY1	   -----		-
	*/
	FLAG_KEY		  EQU	11H
	DELAY_MS0		EQU		12H
	DELAY_CONT		EQU		13H
	LP_CONT			EQU		14H
	ACT_CONT		EQU		15H
	KEY_MAYBE_DOWN_CONT	EQU	16H
	DELAY_MS1		EQU		17H
/*****************<PROGRAM STAR>***********************************************************************************/
	ORG 0X000
	JMP	INIT
ORG	008H
	JMP	TCC_INT
/************中断服务子程序****************************************************************************************/
TCC_INT:	
	CLR	RF
	MOV	A,@0X82 	;重赋TCC初值(8ms)
	MOV	TCC,A
	/********KEY_SCAN***********************/
	JBC	FLAG_KEY,KEY_UP
	JMP	CHECK
	JBC	P5,1
	JMP	MAYBE_DOWN
	JBC	P5,2
	JMP	MAYBE_DOWN
	JBC	P5,3
	JMP	MAYBE_DOWN
	MOV	A,@2
	MOV	KEY_MAYBE_DOWN_CONT,A
	JMP	OUT_TCC
MAYBE_DOWN:
	DJZ	KEY_MAYBE_DOWN_CONT
	JMP	OUT_TCC
	MOV	A,@2
	MOV	KEY_MAYBE_DOWN_CONT,A
	BS	FLAG_KEY,KEY_UP
	BS	FLAG_KEY,KEY_DOWN
	JBC	P5,1
	BS	FLAG_KEY,KEY3
	JBC	P5,2
	BS	FLAG_KEY,KEY2
	JBC	P5,3
	BS	FLAG_KEY,KEY1

CHECK: 
	JBC	P5,1                                                 
	JMP	OUT_TCC
	JBC	P5,2
	JMP	OUT_TCC
	JBC	P5,3
	JMP	OUT_TCC
	BC	FLAG_KEY,KEY_UP
OUT_TCC:			
 	RETI
/**************<INIT>**********************************************************************************************/
INIT:
	/*IOCF-中断屏蔽寄存器
	  7		6		5		4		3		2		1		0
	  -		-		-		-		-	   EXIE	   ICIE	   TCIE
	  EXIF:0:EXIF中断屏蔽				ICIE:0:ICIF中断屏蔽			TCIE:	0:TCIF中断屏蔽
	  		1:EXIF中断允许    				  1:IEIF中断允许					1:TCIF中断允许
	*/ 
	MOV	A,@00000000B
	IOW	IOCF
	/*IOCE-WDT控制寄存器
	  7		6		5		4		3		2		1		0
	 WDTE  EIS		-		-		-	    -	    -       -
	  
	  WDTE:0:WDT禁止				EIS(P60/INT功能控制位):0:P60为双向I/O管脚			
	  		1:WDT使能    				  					  1:INT外部中断引脚				
	*/
	MOV	A,@00000000B
	IOW	IOCE
	;I/O端口控制寄存器 1:I/O引脚为高阻状态(输入)  0:引脚为输出
	MOV	A,@11111110B
	IOW	IOC5
	CLR	P5
	MOV	A,@11111001B
	IOW	IOC6
	BC	P6,1
	BC	P6,2
	/*IOCD-上拉控制寄存器
		7		6		5		4		3		2		1		0
	   PH7     PH6	   PH5	   PH4		-	   PH2	   PH1     PH0
	  
	  0:内部上拉使能				
	  1:内部上拉禁止
	  分别对应P6口的各个引脚
	*/
	;MOV	A,@00000110B
	;IOW	IOCD
	/*CONT-控制寄存器
	  7		6		5		4		3		2		1		0
	  -    INT		TS		TE		PAB	   PSR2	   PSR1    PSR0
	  PSR2~PSR0:TCC/WDT预分频器位
	  PSR2  |  PSR1  |  PSR0	|	TCC Rate	|	WDT Rate
	  ------------------------------------------------------
	    0   |   0    |    0     |      1:2     |    1:1
	  ------------------------------------------------------
	    0   |   0    |    1     |      1:4     |    1:2	
	  ------------------------------------------------------
	    0   |   1    |    0     |      1:8     |    1:4
	  ------------------------------------------------------
	    0   |   1    |    1     |      1:16    |    1:8
	  ------------------------------------------------------
	    1   |   0    |    0     |      1:32    |    1:16
	  ------------------------------------------------------
	    1   |   0    |    1     |      1:64    |    1:32	
	  ------------------------------------------------------
	    1   |   1    |    0     |      1:128   |    1:64
	  ------------------------------------------------------
	    1   |   1    |    1     |      1:256   |    1:128	
	  
	  PAB(预分频分配位) 0:TCC	1:WDT
	  TE (TCC信号边沿选择位) 0:上升沿加1 	1:下降沿加1
	  TS (TCC信号源选择位)   0:内部指令周期时钟  1:外部输入信号
	  INT (中断使能标志位)   0:由DISI指令或硬件中断屏蔽    1:由ENI/RETI指令屏蔽	
	*/
	MOV A,@0x00
	CONTW
	DISI
	CLR	FLAG_KEY
	MOV	A,@2
	MOV	KEY_MAYBE_DOWN_CONT,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
/***************MAIN**********************************************************************************************/
/*通过判断标志位FLAG_CH来确定该执行的子程序*/
MAIN:
	JBC FLAG_KEY,KEY1
	JMP	ACTIVE1
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3
	JMP	MAIN
/******************************************************************************/
/*LED1 1S内闪亮4次,然后LED2闪亮4次 */
ACTIVE1:
	BC	P6,1
	BC	P6,2	
	BC	FLAG_KEY,KEY1
	BC	FLAG_KEY,KEY2
	BC	FLAG_KEY,KEY3
	MOV	A,@6
	MOV	LP_CONT,A
ACTIVE1_LP1:	
	BS	P6,1
	MOV	A,@4
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3
	
	BC	P6,1
	MOV	A,@4
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3

	DJZ	LP_CONT
	JMP	ACTIVE1_LP1
	BC	P6,1
	
	MOV	A,@6
	MOV	LP_CONT,A
ACTIVE1_LP2:	
	BS	6,2
	MOV	A,@4
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3

	BC	P6,2
	MOV	A,@4
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3
	DJZ	LP_CONT
	JMP	ACTIVE1_LP2
	
	JMP	ACTIVE1
/**********************************************************************/
ACTIVE2:
	BC	P6,1
	BC	P6,2	
	BC	FLAG_KEY,KEY1
	BC	FLAG_KEY,KEY2
	BC	FLAG_KEY,KEY3
	BS	P6,1
	MOV	A,@20
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	JBC	FLAG_KEY,KEY1
	JMP	ACTIVE1
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3

	BC	P6,1
	BS	P6,2
	MOV	A,@20
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	JBC	FLAG_KEY,KEY1
	JMP	ACTIVE1
	JBC	FLAG_KEY,KEY3
	JMP	ACTIVE3
	JMP	ACTIVE2
/*****************************************************************************/
ACTIVE3:
	BC	P6,1
	BC	P6,2	
	BC	FLAG_KEY,KEY1
	BC	FLAG_KEY,KEY2
	BC	FLAG_KEY,KEY3
	BS	P6,1
	BS	P6,2
	MOV	A,@20
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	JBC	FLAG_KEY,KEY1
	JMP	ACTIVE1
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2

	BC	P6,1
	BC	P6,2
	MOV	A,@20
	MOV	DELAY_CONT,A
	CALL	DELAY
	BC	FLAG_KEY,KEY_DOWN
	JBC	FLAG_KEY,KEY1
	JMP	ACTIVE1
	JBC	FLAG_KEY,KEY2
	JMP	ACTIVE2
	JMP	ACTIVE3
;---------------------------------------------------------
;----10MS
DELAY:
	JBC	FLAG_KEY,KEY_DOWN
	JMP	OUT
	MOV	A,@20
	MOV	DELAY_MS1,A
L_MS:
	MOV	A,@200
	MOV	DELAY_MS0,A
LOOP_D:
	NOP
	NOP
	NOP
	DJZ	DELAY_MS0
	JMP	LOOP_D
	DJZ	DELAY_MS1
	JMP	L_MS
	DJZ	DELAY_CONT
	JMP	DELAY
OUT:
	RET
;--------------------------------------------------------------------------------------------------------------------	
	END

⌨️ 快捷键说明

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