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

📄 d-ht48.asm

📁 HT48E06的DOME程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	MOV		A,09H
	MOV		DELAY_RETURE,A
	JMP	DELAY_5S
RETURE_1600:
	MOV		A,PA
	SUB		A,0FFH
	SZ		ACC
	JMP		G16
	JMP		EXIT_1600W
  G16:
 	SDZ		MIN_DATA
 	JMP		K_1600
 	MOV		A,12D
	MOV		MIN_DATA,A
 	SDZ		TIME_DATA
 	JMP		K_1600
 EXIT_1600W:
 	MOV		A,0EEH
	MOV		POWER_DATA,A
	JMP		W_END
;-----------------------------------------------------------------
;5s延时子程序包含(当前功率显示,KEY_SCAN,调大 调小按键的扫描,定时按键的扫描)
DELAY_5S:
	MOV	A,250D
	MOV	DELAY1,A
 KAI:
 	CALL	DELAY_5MS
	CALL	XSHI;4X5MS
	JMP	W_KEY
 W_C:
	CALL	DING_SHI
	CALL	QU_XIAO
	MOV	A,PA
	SUB	A,0FFH
	SZ	ACC
	JMP	GOO
	JMP	EXIT_5
 GOO:
 	SDZ	DELAY1
 	JMP	KAI
 	SDZ	DELAY2
 	JMP	DELAY_5S
 EXIT_5:
	MOV	A,DELAY_RETURE
	SUB	A,01H
	JMP	X1
	JMP	RETURE_100
 X1:
	MOV	A,DELAY_RETURE
	SUB	A,02H
	JMP	X2
	JMP	RETURE_100_2
 X2:
	MOV	A,DELAY_RETURE
	SUB	A,03H
	JMP	X3
	JMP	RETURE_300
 X3:
	MOV	A,DELAY_RETURE
	SUB	A,04H
	JMP	X4
	JMP	RETURE_300_2
 X4:
	MOV	A,DELAY_RETURE
	SUB	A,05H
	JMP	X5
	JMP	RETURE_500
 X5:
	MOV	A,DELAY_RETURE
	SUB	A,06H
	JMP	X6
	JMP	RETURE_1000
 X6:
	MOV	A,DELAY_RETURE
	SUB	A,07H
	JMP	X7
	JMP	RETURE_1300
X7:
	MOV	A,DELAY_RETURE
	SUB	A,08H
	JMP	X8
	JMP	RETURE_1300_2
X8:
	MOV	A,DELAY_RETURE
	SUB	A,09H
	NOP
	JMP	RETURE_1600
;-----------------------------------------------------------------
;功率时大小按键的扫描
W_KEY:
	MOV	A,PAC
	OR	A,00001100B
	MOV	PAC,A
	SET	PA.3
	SET	PA.2
	MOV	A,PCC
	OR	A,00000001B
	MOV	PCC,A
	SET	PC.0
	
	SZ	PC.0
	JMP	EXIT_W
	SZ	PA.3
	JMP	JJ
  FF:
  	CALL	XSHI
	SZ	PA.3
	JMP	WW1
	JMP	FF
   JJ:
   	SZ	PA.2
   	JMP	EXIT_W
   AA:
   	CALL	XSHI
   	SZ	PA.2
   	JMP	WW2
   	JMP	AA
   WW1:
   	JMP	W_XIAO
   	JMP	EXIT_W
   WW2:
   	JMP	W_DA			
 EXIT_W:
	JMP	W_C
;-------------------------------------------------------------
;功率增大按键的响应
W_DA:
 	;100w按键
 W_100W:
 	MOV		A,POWER_DATA
 	SUB		A,1D
 	SZ		ACC
 	JMP		W_300W
 	JMP		POWER_300W
 	;300w按键
 W_300W:
 	MOV		A,POWER_DATA
 	SUB		A,3D
 	SZ		ACC
 	JMP		W_500W
 	JMP	POWER_500W	
 	;500w按键
 W_500W:
 	MOV		A,POWER_DATA
 	SUB		A,5D
 	SZ		ACC
 	JMP		W_1000W
 	JMP	POWER_1000W
 	;1000w按键
 W_1000W:
  	MOV		A,POWER_DATA
 	SUB		A,10D
 	SZ		ACC
 	JMP		W_1300W
 	JMP	POWER_1300W
 	;1300w按键
 W_1300W:
  	MOV		A,POWER_DATA
 	SUB		A,13D
 	SZ		ACC
 	NOP
 	JMP	POWER_1600W
;-------------------------------------------------------------
;功率减小按键的响应
W_XIAO:
	;1600w按键
	MOV		A,POWER_DATA
 	SUB		A,16D
 	SZ		ACC
 	JMP		X_1300
 	JMP		POWER_1300W
	;1300w按键
 X_1300:
  	MOV		A,POWER_DATA
 	SUB		A,13D
 	SZ		ACC
 	JMP		X_1000
 	JMP		POWER_1000W
 	;1000w按键
 X_1000:
  	MOV		A,POWER_DATA
 	SUB		A,10D
 	SZ		ACC
 	JMP		X_500
 	JMP		POWER_500W
 	;500w按键
 X_500:
 	MOV		A,POWER_DATA
 	SUB		A,5D
 	SZ		ACC
 	JMP		X_300
 	JMP		POWER_300W
 	;300w按键
 X_300:
 	MOV		A,POWER_DATA
 	SUB		A,3D
 	SZ		ACC
 	NOP
 	JMP		POWER_100W
 ;------------------------------------------------------------
 KEY_UP		PROC
  WAIT_UP:
	CALL	XSHI
	MOV	A,PA
	XOR	A,0FFH
	SZ	ACC
	JMP	WAIT_UP
 EXIT_UP:
	RET
KEY_UP		ENDP
;-------------------------------------------------------------
TIMER_1:
	MOV		A,PBC
	OR		A,00000001B
	MOV		A,PB
 	XOR		A,01H
 	SDZ		BEEP_DATA
 	JMP		EXIT_RETI
 	CLR		BEEP
 	MOV		A,0FAH
 	MOV		BEEP_DATA,A
 EXIT_RETI:
 	RETI
;-----------------------------------------------------------------------------
;取消按键的扫描
QU_XIAO		PROC
	MOV	A,PAC
	OR	A,00000100B
	MOV	PAC,A
	SET	PA.2
	
	SZ	PA.2
	JMP	EXIT_QU
	
  QU:
  	CALL	XSHI
  	SZ	PA.2
  	JMP	Q_XIAO
  	JMP	QU
  Q_XIAO:
  	CLR	PB.1
  	CLR	PC.1
  	MOV	A,0FFH
  	MOV	PA,A
 EXIT_QU:
 	RET
QU_XIAO		ENDP
;------------------------------------------------------------
DELAY_5MS	PROC
 	MOV		A,0FFH
 	MOV		DELAY_1,A
 WAIT_5MS_L:
 	MOV		DELAY_2,A
 WAIT_5MS:
 	SDZ		DELAY_2
 	JMP		WAIT_5MS
 	SDZ		DELAY_1
 	JMP		WAIT_5MS_L
 	RET
DELAY_5MS	ENDP
;-------------------------------------------------------------------
DING_SHI	PROC
	MOV	A,5D
	MOV	DING5,A
	MOV	A,0FFH
	MOV	DING1,A
	MOV	DING2,A
	MOV	A,PAC
	OR	A,00001000B
	MOV	PAC,A
	SET	PA.3
	
	SZ	PA.3
	JMP	EXIT_D
	
  DING:
  	CALL	XSHI
  	SZ	PA.3
  	JMP	SHI
  	JMP	DING
  SHI1:
  	MOV	A,0FFH
	MOV	DING1,A
  SHI0:	
  	MOV	A,0FFH
	MOV	DING2,A
  SHI:
  	call	XSHI_TIME
  	CALL	T_KEY
  	call	delay_5ms
  	
  	SDZ	DING2
  	JMP	SHI
  	SDZ	DING1
  	JMP	SHI0
  	SDZ	DING5
  	JMP	SHI1
 EXIT_D:
	RET
DING_SHI	ENDP
;-----------------------------------------------------------------
;时间大小按键的扫描
T_KEY	PROC
	MOV	A,PAC
	OR	A,00001100B
	MOV	PAC,A
	SET	PA.3
	SET	PA.2
	MOV	A,PCC
	OR	A,00000001B
	MOV	PCC,A
	SET	PC.0
	
	SZ	PC.0
	JMP	EXIT_T
	SZ	PA.3
	JMP	TT2
  FF2:
  	CALL	XSHI_TIME
	SZ	PA.3
	JMP	W1
	JMP	FF2
   TT2:
   	SZ	PA.2
   	JMP	EXIT_T
   AA2:
   	CALL	XSHI_TIME
   	SZ	PA.2
   	JMP	WW2
   	JMP	AA2
   W1:
   	CALL	T_XIAO
   	JMP	EXIT_T
   W2:
   	CALL	T_DA			
 EXIT_T:
	RET
T_KEY	ENDP
;-------------------------------------------------------------
;时间增大按键的响应
T_DA	PROC
	MOV		A,TIME_DATA
	ADD		A,5D
	SUB		A,120D
	SZ		C  ;C=0为有借位,A<120
	JMP		T_120
	ADD		A,120D
	MOV		TIME_DATA,A
	JMP		EXIT_T_DA
 T_120:
 	MOV		A,120D
 	MOV		TIME_DATA,A
 EXIT_T_DA:
	RET
T_DA	ENDP
;-------------------------------------------------------------
;时间减小按键的响应
T_XIAO	PROC
	MOV		A,TIME_DATA
	SUB		A,5D
	SZ		C  ;C=0为有借位,A<5
	JMP		T_5
	MOV		TIME_DATA,A
	JMP		EXIT_T_XIAO
 T_5:
 	MOV		A,0D
 	MOV		TIME_DATA,A
 EXIT_T_XIAO:
	RET
T_XIAO	ENDP
;-------------------------------------------------------------
;显示子程序
XSHI	PROC
 	;第四位数码管显示,PA.0为输出状态,且为1,PB2.0为输入状态
 	MOV		A,00H
 	MOV		PAC,A
 	MOV		A,11111100B
 	MOV		PBC,A
 	
 	SET		PA.0
 	MOV		A,SM_DATA4
 	MOV		PA,A
 	CALL	DELAY_5MS
 	MOV		A,0FFH
 	MOV		PA,A
 	;第三位数码管显示,PA.0为输入状态,PB.2为输出,且为1
	MOV		A,00000001B
	MOV		PAC,A
	MOV		A,00H
	MOV		PBC,A
	 
	SET		PB.2
	MOV		A,SM_DATA3
	MOV		PA,A
	CALL	DELAY_5MS	;"取消"按键的检测包含在延时子程序里
	MOV		A,0FFH
	MOV		PA,A
	;第二位数码管
	MOV		A,00H
 	MOV		PAC,A
 	MOV		A,11111100B
 	MOV		PBC,A
 	
 	SET		PA.0
 	MOV		A,SM_DATA4
 	MOV		PA,A
 	CALL	DELAY_5MS
 	MOV		A,0FFH
 	MOV		PA,A
 	;第一位数码管显示,PA.0为输入状态,PB.2为输出,且为1
	MOV		A,00000001B
	MOV		PAC,A
	MOV		A,00H
	MOV		PBC,A
	 
	SET		PB.2
	MOV		A,SM_DATA3
	MOV		PA,A
	CALL	DELAY_5MS	;"取消"按键的检测包含在延时子程序里
	MOV		A,0FFH
	MOV		PA,A
	RET
XSHI	ENDP
;------------------------------------------------------------
;当显示的为时间时,数据在数码管的各个位的判断
XSHI_TIME	PROC
	MOV		A,0FFH
	MOV		SM_DATA4,A
	MOV		A,TIME_DATA
 SHI_WEI:
 	SUB		A,TIME_SHI;TIME_SHI=10
 	SZ		C
 	JMP		SHI_WEI_OUT
 	INC		SHI_WEI_DATA
 	JMP		SHI_WEI
 SHI_WEI_OUT:
 	SZ		SHI_WEI_DATA ;判断是否为零,是则跳过下一行--为0则说明延时时间<10
 	JMP		GOTO0
 	ADD		A,10D
 	MOV		SM_DATA1,A
 Z1:
 	MOV		A,02FFH
 	MOV		TBLP,A
 	TABRDC		SM
 	MOV		A,SM
 	SUB		A,SM_DATA1
 	SZ		ACC
 	JMP		Z1
 	MOV		A,SM
 	MOV		SM_DATA1,A   
 	;4,3,2数码管不显示
 	MOV		A,0FFH
 	MOV		SM_DATA3,A
 	MOV		SM_DATA2,A
 	JMP		EXIT_0
 GOTO0:  ;延时时间>10
 	ADD		A,0AH
 	MOV		SM_DATA1,A
 Z2:	
 	MOV		A,02FFH ;A的值加10为个位要显示的数字
 	MOV		TBLP,A
 	TABRDC		SM
 	MOV		A,SM
 	SUB		A,SM_DATA1
 	SZ		ACC
 	JMP		Z2
 	MOV		A,SM
 	MOV		SM_DATA1,A
 	MOV		A,SHI_WEI_DATA
 GOTO1:
 	SUB		A,TIME_SHI
 	SZ		C
 	JMP		SHI_END
 	;能执行下面一行说明延时时间>100,A中的值为十位将要显示的数字
 	MOV		SM_DATA2,A
 Z3:
 	MOV		A,02FFH ;A的值加10为个位要显示的数字
 	MOV		TBLP,A
 	TABRDC		SM
 	MOV		A,SM
 	SUB		A,SM_DATA2
 	SZ		ACC
 	JMP		Z3
 	MOV		A,SM
 	MOV		SM_DATA2,A
 	;百位显示“1”
 	MOV		A,11010111B
 	MOV		SM_DATA3,A
 	JMP		EXIT_0
 SHI_END:	; 延时时间<100,A的值加10为十位将要显示的数字,3,4位数码管不显示
 	MOV		A,TIME_DATA
 	MOV		SM_DATA2,A
 Z4:
 	MOV		A,02FFH 
 	MOV		TBLP,A
 	TABRDC		SM
 	MOV		A,SM
 	SUB		A,SM_DATA2
 	SZ		ACC
 	JMP		Z4
 	MOV		A,SM
 	MOV		SM_DATA2,A
 
 	MOV		A,0FFH
 	MOV		SM_DATA3,A
 EXIT_0:
 	CALL	XSHI
 	RET
XSHI_TIME	ENDP
;-------------------------------------------------------------
      ORG		02FFH
	DC	00010001B	;0
	DC	11010111B	;1
	DC	00100101B	;2
	DC	10000101B	;3
	DC	11000011B	;4
	DC	10001001B	;5
	DC	00001001B	;6
	DC	11010101B	;7
	DC	00000001B	;8
	DC	10000001B	;9
	DC	00101001B	;E
	DC	01001111B	;n
	DC	00000111B	;d
	DC	11101111B	;-
END

⌨️ 快捷键说明

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