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

📄 av_2717_015.dt

📁 一个双路马达驱动与8LED显示的电动玩具!
💻 DT
📖 第 1 页 / 共 2 页
字号:
			SUB		A,REG_M_100US
			JBS		STATUS,C
			RET
			
			CLR		REG_M_100US
			INC		COUNT_M_10MS
			BS		FLAG1,DELAY_ON_M_FLAG
			RET
;*******************************************************
MOTOR_M_POS_NEG:
			
			MOV		A,G_T_REG			;正转周期
			SUB		A,COUNT_M_10MS
			JBS		STATUS,C
			JMP		$+3
			
			CLR		COUNT_M_10MS
			RET
			
			
			MOV		A,POS_REG		;正转关闭时间
			SUB		A,COUNT_M_10MS
			JBS		STATUS,C
			JMP		$+3
			
			CALL	MOTOR_M_DRIVE
			RET
			
			CALL	MOTOR_M_DRIVE
			BC		R6_BUF,MOTOR_M_LM		;方向改变时延时
			RET

;**********************************************************			

DIS_MODE:
			JBS		FLAG1,STATIC_FLAG		;"静态"显示
			JMP		DIS_DYNAMIC			;"动态"显示
			
			CALL	LED_STATIC_MODE
			RET
			
DIS_DYNAMIC:
			CALL	LED_DYNAMIC_MODE
			RET
			
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;*********************************************************

LED_STATIC_DUTY0:
        	MOV     A,SPEED_M
        	CALL    STATIC_TABE_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G
        	CALL	STATIC_TABE_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0E		
        	MOV		R5_BUF,A	;P50
        	RET
LED_STATIC_DUTY1:
        	MOV     A,SPEED_M
        	CALL    STATIC_TABF_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G
        	CALL	STATIC_TABF_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0D		
        	MOV		R5_BUF,A	;P51
        	RET
LED_STATIC_DUTY2:
       	 	MOV     A,SPEED_M
        	CALL    STATIC_TABG_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G
        	CALL	STATIC_TABG_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0B		
        	MOV		R5_BUF,A	;P52
        	RET
LED_STATIC_DUTY3: 
        	MOV     A,SPEED_M
        	CALL    STATIC_TABH_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G
        	CALL	STATIC_TABH_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X07		
        	MOV		R5_BUF,A	;P53
        	RET
        	
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
LED_DYNAMIC_MODE:
			MOV		A,@0X28
			SUB		A,REG_10MS		;每位显示60MS
			JBS		STATUS,C
			JMP		LED_DYNAMIC_STA
			
			CLR		REG_10MS

SPEED_M_DIS:			
			MOV		SPEED_M,SPEED_M
			JBS		STATUS,Z
			JMP		$+3			
			
			CLR		SPEED_M_DUTY
			JMP		SPEED_G_DIS
			
			DEC		SPEED_M_DUTY			;由高到低显示
			MOV		SPEED_M_DUTY,SPEED_M_DUTY
			JBS		STATUS,Z
			JMP		$+3
			
			MOV		A,@0X04
			MOV		SPEED_M_DUTY,A

SPEED_G_DIS:
			MOV		SPEED_G,SPEED_G
			JBS		STATUS,Z
			JMP		$+3
			
			CLR		SPEED_G_DUTY
			JMP		LED_DYNAMIC_STA
			
			INC		SPEED_G_DUTY
			MOV		A,@0X05
			SUB		A,SPEED_G_DUTY
			JBS		STATUS,C
			JMP		LED_DYNAMIC_STA	
			
			MOV		A,@0X01
			MOV		SPEED_G_DUTY,A
			JMP		LED_DYNAMIC_STA
			
;------------------------------------------------------
;*****************************************************
LED_DYNAMIC_DUTY0:
        	MOV     A,SPEED_M_DUTY
        	CALL    DYNAMIC_TABE_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G_DUTY
        	CALL	DYNAMIC_TABE_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0E		
        	MOV		R5_BUF,A	;P50
        	RET
LED_DYNAMIC_DUTY1:
        	MOV     A,SPEED_M_DUTY
        	CALL    DYNAMIC_TABF_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G_DUTY
        	CALL	DYNAMIC_TABF_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0D		
        	MOV		R5_BUF,A	;P51
        	RET
LED_DYNAMIC_DUTY2:
       	 	MOV     A,SPEED_M_DUTY
        	CALL    DYNAMIC_TABG_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G_DUTY
        	CALL	DYNAMIC_TABG_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X0B		
        	MOV		R5_BUF,A	;P52
        	RET
LED_DYNAMIC_DUTY3: 
        	MOV     A,SPEED_M_DUTY
        	CALL    DYNAMIC_TABH_M
        	MOV		DIS_TEMP,A
        	MOV		A,SPEED_G_DUTY
        	CALL	DYNAMIC_TABH_G
        	OR		DIS_TEMP,A  ;存P66,P67
        	
        	MOV		A,R6_BUF
        	AND		A,@0X3F
        	MOV		R6_BUF,A
        	
        	MOV		A,DIS_TEMP
        	AND		A,@0XC0		;取P66,P67
        	OR		R6_BUF,A	;保留PORT6其他值
        	
        	MOV		A,@0X07		
        	MOV		R5_BUF,A	;P53
        	RET		       	
;******************************************************
DELAY:
			MOV		A,@0X32
			MOV		DIS_TEMP,A
			DJZ		DIS_TEMP
			JMP		$-1
			RET
;**************************************************************************	
INT_TCC:
 			MOV		ACC_BUF,A			;push the ACC and STATUS to stack
 			SWAP	ACC_BUF
 			SWAPA	STATUS
 			MOV		R3_BUF,A
 			
 			MOV		A,@0XAA
 			MOV		TCC,A
 			
 			JBC		RF,TCIF			;test the TCC interrupt 
 			JMP		INT_TCC1
 			
			MOV		A,@0X01			;enable the TCC interrupt and diseable other interrupt flag
			IOW		0X0F
			MOV		0X0F,A
			JMP		INT_EXIT1
			
INT_TCC1: 					
 			INC		REG_G_100US
 			INC		REG_M_100US
 			INC		FLAG_100US
 			INC		DUTY_100US
 			
 			MOV		A,@0X14			;扫描频率/1MS
 			SUB		A,DUTY_100US
 			JBS		STATUS,C
 			JMP		$+7
 			
 			CLR		DUTY_100US
 			INC		LED_DUTY
 			MOV		A,@0X04
 			SUB		A,LED_DUTY
 			JBC		STATUS,C
 			CLR		LED_DUTY
 			
 			MOV		SPEED_G,SPEED_G		;test  sleep  mode
 			JBS		STATUS,Z
 			CLR		SLEEP_FLAG
 			
 			MOV		SPEED_M,SPEED_M
 			JBS		STATUS,Z
 			CLR		SLEEP_FLAG			;SPEED_M速度为0时才计SLEEP
 			
 			MOV		A,@0X64
 			SUB		A,FLAG_100US
 			JBS		STATUS,C
 			JMP		INT_EXIT
 			
 			
 			INC		SLEEP_FLAG
 			CLR		FLAG_100US
 			INC		REG_10MS
 			
 			MOV		STATIC_TIME,STATIC_TIME
 			JBS		STATUS,Z
 			JMP		$+3
 			
 			BC		FLAG1,STATIC_FLAG		;动态显示
 			JMP		KEY_IN
 			
 			DEC		STATIC_TIME				;静态显示3S
 			BS		FLAG1,STATIC_FLAG
 			MOV		A,@0X04
 			MOV		SPEED_M_DUTY,A
 			MOV		A,@0X01
 			MOV		SPEED_G_DUTY,A
 			
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&E	
;按键扫描,矩阵式按键		
 			
KEY_IN:								;key_scan
			MOV		A,@0XF8
			IOW		P6CR
			
P50_TEST:
			MOV		A,@0X0E
			MOV		PORT5,A
			CALL	DELAY			;延时等待稳定
			
UP1_TEST:							;up_key(P63为UP键)
			NOP
			NOP
			JBS		PORT6,5
			JMP		UP1_ON
			
UP1_OFF:
			JBS		KEY_FLAG,UP1_FLAG
			JMP		UP1_OFF1
			BC		KEY_FLAG,UP1_FLAG
			JMP		DOWN1_TEST
			
UP1_OFF1:
			JBS		KEY_STATE,UP1_STATE
			JMP		DOWN1_TEST
			BC		KEY_STATE,UP1_STATE
			BC		KEY_FLAG,UP1_STATIC
			JMP		DOWN1_TEST
			
UP1_ON:
			JBC		KEY_FLAG,UP1_FLAG
			JMP		UP1_ON1
			BS		KEY_FLAG,UP1_FLAG
			JMP		KEY_EXIT
			
UP1_ON1:
			JBC		KEY_STATE,UP1_STATE
			JMP		UP1_DO_LONG
			BS		KEY_STATE,UP1_STATE
			
UP1_DO:
			JBC		KEY_FLAG,UP1_STATIC
			JMP		$+4
			
			MOV		A,@0XFA
			MOV		STATIC_TIME,A
			BS		KEY_FLAG,UP1_STATIC
			
			MOV		A,@0X32
			MOV		KEY_TIME,A
			MOV		A,@0X04
			SUB		A,SPEED_G
			JBS		STATUS,C
			INC		SPEED_G
			JMP		KEY_EXIT
			
UP1_DO_LONG:
			DEC		KEY_TIME
			MOV		KEY_TIME,KEY_TIME
			JBC		STATUS,Z
			BC		KEY_STATE,UP1_STATE
			JMP		KEY_EXIT
;---------------------------------------------------------	
DOWN1_TEST:	
			NOP
			NOP						;up_key(P63为UP键)
			JBS		PORT6,4
			JMP		DOWN1_ON
			
DOWN1_OFF:
			JBS		KEY_FLAG,DOWN1_FLAG
			JMP		DOWN1_OFF1
			BC		KEY_FLAG,DOWN1_FLAG
			JMP		P51_TEST
			
DOWN1_OFF1:
			JBS		KEY_STATE,DOWN1_STATE
			JMP		P51_TEST
			BC		KEY_STATE,DOWN1_STATE
			BC		KEY_FLAG,DOWN1_STATIC
			JMP		P51_TEST
			
DOWN1_ON:
			JBC		KEY_FLAG,DOWN1_FLAG
			JMP		DOWN1_ON1
			BS		KEY_FLAG,DOWN1_FLAG
			JMP		KEY_EXIT
			
DOWN1_ON1:
			JBC		KEY_STATE,DOWN1_STATE
			JMP		DOWN1_DO_LONG
			BS		KEY_STATE,DOWN1_STATE
			
DOWN1_DO:
			JBC		KEY_FLAG,DOWN1_STATIC
			JMP		$+4
			
			MOV		A,@0XFA
			MOV		STATIC_TIME,A
			BS		KEY_FLAG,DOWN1_STATIC
			
			MOV		A,@0X32
			MOV		KEY_TIME,A
			MOV		SPEED_G,SPEED_G
			JBS		STATUS,Z
			DEC		SPEED_G			;不为0减1
			JMP		KEY_EXIT
			
DOWN1_DO_LONG:
			DEC		KEY_TIME
			MOV		KEY_TIME,KEY_TIME
			JBC		STATUS,Z
			BC		KEY_STATE,DOWN1_STATE
			JMP		KEY_EXIT
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&			
P51_TEST:
			MOV		A,@0X0D
			MOV		PORT5,A
			CALL	DELAY

UP2_TEST:							;up_key(P63为UP键)
			JBS		PORT6,5
			JMP		UP2_ON
			
UP2_OFF:
			JBS		KEY_FLAG,UP2_FLAG
			JMP		UP2_OFF1
			BC		KEY_FLAG,UP2_FLAG
			JMP		DOWN2_TEST
			
UP2_OFF1:
			JBS		KEY_STATE,UP2_STATE
			JMP		DOWN2_TEST
			BC		KEY_STATE,UP2_STATE
			BC		KEY_FLAG,UP2_STATIC
			JMP		DOWN2_TEST
			
UP2_ON:
			JBC		KEY_FLAG,UP2_FLAG
			JMP		UP2_ON1
			BS		KEY_FLAG,UP2_FLAG
			JMP		KEY_EXIT
			
UP2_ON1:
			JBC		KEY_STATE,UP2_STATE
			JMP		UP2_DO_LONG
			BS		KEY_STATE,UP2_STATE
			
UP2_DO:
			JBC		KEY_FLAG,UP2_STATIC
			JMP		$+4
			
			MOV		A,@0XFA
			MOV		STATIC_TIME,A
			BS		KEY_FLAG,UP2_STATIC
			
			MOV		A,@0X32
			MOV		KEY_TIME,A
			MOV		A,@0X04
			SUB		A,SPEED_M
			JBS		STATUS,C
			INC		SPEED_M
			JMP		KEY_EXIT
			
UP2_DO_LONG:
			DEC		KEY_TIME
			MOV		KEY_TIME,KEY_TIME
			JBC		STATUS,Z
			BC		KEY_STATE,UP2_STATE
			JMP		KEY_EXIT
			
;---------------------------------------------------------	
DOWN2_TEST:							;up_key(P63为UP键)
			JBS		PORT6,4
			JMP		DOWN2_ON
			
DOWN2_OFF:
			JBS		KEY_FLAG,DOWN2_FLAG
			JMP		DOWN2_OFF1
			BC		KEY_FLAG,DOWN2_FLAG
			JMP		P52_TEST
			
DOWN2_OFF1:
			JBS		KEY_STATE,DOWN2_STATE
			JMP		P52_TEST
			BC		KEY_STATE,DOWN2_STATE
			BC		KEY_STATE,DOWN2_STATIC
			JMP		P52_TEST
			
DOWN2_ON:
			JBC		KEY_FLAG,DOWN2_FLAG
			JMP		DOWN2_ON1
			BS		KEY_FLAG,DOWN2_FLAG
			JMP		KEY_EXIT
			
DOWN2_ON1:
			JBC		KEY_STATE,DOWN2_STATE
			JMP		DOWN2_DO_LONG
			BS		KEY_STATE,DOWN2_STATE
			
DOWN2_DO:
			JBC		KEY_STATE,DOWN2_STATIC
			JMP		$+4
			
			MOV		A,@0XFA
			MOV		STATIC_TIME,A
			BS		KEY_STATE,DOWN2_STATIC
			
			MOV		A,@0X32
			MOV		KEY_TIME,A
			MOV		SPEED_M,SPEED_M
			JBS		STATUS,Z
			DEC		SPEED_M			;不为0减1
			JMP		KEY_EXIT
			
DOWN2_DO_LONG:
			DEC		KEY_TIME
			MOV		KEY_TIME,KEY_TIME
			JBC		STATUS,Z
			BC		KEY_STATE,DOWN2_STATE
			JMP		KEY_EXIT
			
;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
P52_TEST:
			MOV		A,@0X0B
			MOV		PORT5,A
			CALL	DELAY
			
F1_TEST:							
			JBS		PORT6,5
			JMP		F1_ON
			
F1_OFF:
			JBS		KEY_FLAG,F1_FLAG
			JMP		F1_OFF1
			BC		KEY_FLAG,F1_FLAG
			JMP		KEY_EXIT
			
F1_OFF1:
			JBS		KEY_STATE,F1_STATE
			JMP		KEY_EXIT
			BC		KEY_STATE,F1_STATE
			BC		KEY_STATE,F1_STATIC
			JMP		KEY_EXIT
			
F1_ON:
			JBC		KEY_FLAG,F1_FLAG
			JMP		F1_ON1
			BS		KEY_FLAG,F1_FLAG
			JMP		KEY_EXIT
			
F1_ON1:
			JBC		KEY_STATE,F1_STATE
			JMP		F1_DO_LONG
			BS		KEY_STATE,F1_STATE
			
F1_DO:
			JBC		KEY_STATE,F1_STATIC
			JMP		$+4
			
			MOV		A,@0XFA
			MOV		STATIC_TIME,A
			BS		KEY_STATE,F1_STATIC
			
			BC		FLAG1,MODE_DO_FLAG
			INC		MODE
			MOV		A,@0X04
			SUB		A,MODE
			JBS		STATUS,C
			JMP		$+3
			
			MOV		A,@0X01
			MOV		MODE,A
			
			JMP		KEY_EXIT
			
F1_DO_LONG:
			JMP		KEY_EXIT			

;-----------------------------------------------------
KEY_EXIT:
			MOV		A,@0X38
			IOW		0X06

;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
;退出中断(中断返回)						
INT_EXIT:
			MOV		A,@0X00
			MOV		RF,A
			
INT_EXIT1:	
			SWAPA	R3_BUF
			MOV		STATUS,A
			SWAPA	ACC_BUF
			RETI	

⌨️ 快捷键说明

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