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

📄 display2.dt.bak

📁 一个多士炉的汇编源码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
		jmp     loop11

;===================================================
;按下START键时,应该计时,检测下限位行程开关
;置位下限计时标志
;按下START键,应该让马达下行,在这里置位马达下行标志
;===================================================
RUN_START:
		BS      RUNALLOW,2
		BS      TESTERROR_FLAG,4

		BS      TESTERROR_FLAG,5
		JMP	 MODE_END

MODE_END:
		CLR     KEYRESULT
		RET
;========================
;++++++END SET_MODE++++++
;========================

;========================
;+++++模式显示子程序+++++
;========================
DISP_MODE:				
		JBC    SLEEP_MODE,0    ;如果进入睡眠模式那么显示睡眠图标
		JMP    DISPMODE_END

		JBC    RUNALLOW,0
		JMP    DISPMODE_END

		JBS    RUN_STARTFLAG,0 ;开机自检时显示全部内容
		JMP    DISPMODE_END
		
		JBC	ERROR_MODE,0 		
		JMP    DISP_ERROR
		
		JBC    RUNALLOW,1
		JMP    MOTOR_RUN10

		JBC    RUNALLOW,2
		JMP    MOTOR_RUN11

		JMP    DISP_NORMAL
;============================
;+++++++出错模式的显示+++++++
;============================
DISP_ERROR:                    
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		
		MOV    A,@0B00001100
		OR     DISPBUF0,A
	
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		
		MOV    A,@0B00001110
		OR     DISPBUF1,A
		
		JBS    T1S_FLAG,0      ;闪烁效果

		JMP    DISP_ERROR2
		MOV    A,@0B01111111
		MOV    DISPBUF2,A
		JMP    DISPMODE_END

DISP_ERROR2:
		MOV    A,@0B10000000
		MOV    DISPBUF2,A

		JMP    DISPMODE_END
;============================
;+++马达上升时显示上升图标+++
;============================
MOTOR_RUN10:
		CLR	TEST_SLEEPTIME
        JBC    MOTOR_MOVE,0
        JMP    MOTOR_RUN1
        
        JBC    MOTOR_MOVE,1
        JMP    MOTOR_RUN2
        
        JBC    MOTOR_MOVE,2
        JMP    MOTOR_RUN3
        
        JBC    MOTOR_MOVE,3
        JMP    MOTOR_RUN4
        JMP    DISPMODE_END
MOTOR_RUN1:
		MOV    A,@0B00000000
		MOV    DISPBUF0,A
		MOV    A,@0B00000010
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END
MOTOR_RUN2:
		MOV    A,@0B00000000
		MOV    DISPBUF0,A
		MOV    A,@0B00000110
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END
MOTOR_RUN3:
		MOV    A,@0B00000100
		MOV    DISPBUF0,A
		MOV    A,@0B00000110
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END
MOTOR_RUN4:
		MOV    A,@0B00000000
		MOV    DISPBUF0,A
		MOV    A,@0B00000000
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END
;=======================
;++++马达下降图标显示+++
;=======================
MOTOR_RUN11:
		CLR	TEST_SLEEPTIME
        JBC    MOTOR_MOVE,0
        JMP    MOTOR_RUN21
        
        JBC    MOTOR_MOVE,1
        JMP    MOTOR_RUN22
        
        JBC    MOTOR_MOVE,2
        JMP    MOTOR_RUN23

		JBC    MOTOR_MOVE,3
		JMP    MOTOR_RUN24
		JMP    DISPMODE_END
		
MOTOR_RUN21:
		MOV    A,@0B00000100
		MOV    DISPBUF0,A
		MOV    A,@0B00000000
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END

MOTOR_RUN22:
		MOV    A,@0B00000100
		MOV    DISPBUF0,A
		MOV    A,@0B00000100
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END

MOTOR_RUN23:
		MOV    A,@0B00000100
		MOV    DISPBUF0,A
		MOV    A,@0B00000110
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END

MOTOR_RUN24:
		MOV    A,@0B00000000
		MOV    DISPBUF0,A
		MOV    A,@0B00000000
		MOV    DISPBUF1,A
		MOV    A,@0B00000000
		MOV    DISPBUF2,A
		JMP    DISPMODE_END

DISP_NORMAL:
		JBS    T1S_FLAG,0	;闪烁效果的判断
		JMP    DISP_CHANGE 
		
		JBC	DARKE_GRADE,0
		JMP    DARKER1		
		
		JBC	DARKE_GRADE,1
		JMP    DARKER2
				
		JBC	DARKE_GRADE,2
		JMP    DARKER3
		
		JBC	DARKE_GRADE,3
		JMP    DARKER4
		
		JBC	DARKE_GRADE,4
		JMP    DARKER5

		JBC	DARKE_GRADE,5
		JMP    DARKER6
		JMP    DISPMODE_END

DISP_CHANGE:					;闪烁效果的处理
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		JMP    DISP_DEFROST
DARKER1:
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00000010
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00000001
		OR     DISPBUF1,A
		
		MOV    A,@0B00001010
		MOV    DISPBUF2,A
		JMP    DISP_DEFROST

DARKER2:				
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00000110
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00001110
		OR     DISPBUF1,A

		MOV    A,@0B00011010
		MOV    DISPBUF2,A
		JMP    DISP_DEFROST

DARKER3:		
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00000110
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00000111
		OR     DISPBUF1,A
	
		MOV    A,@0B00011110
		MOV    DISPBUF2,A
		JMP    DISP_DEFROST

DARKER4:
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00001010
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00000101
		OR     DISPBUF1,A
	
		MOV    A,@0B01011110
		MOV    DISPBUF2,A
		JMP    DISP_DEFROST

DARKER5:
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00001100
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00000111
		OR     DISPBUF1,A
		 
		MOV    A,@0B01111110
		MOV    DISPBUF2,A
		JMP    DISP_DEFROST

DARKER6:
		MOV    A,@0B11110001
		AND    DISPBUF0,A
		MOV    A,@0B00001100
		OR     DISPBUF0,A
		
		MOV    A,@0B11110000
		AND    DISPBUF1,A
		MOV    A,@0B00001111
		OR     DISPBUF1,A
		
		MOV    A,@0B01111111
		MOV    DISPBUF2,A
;===========================
;++++解冻模式的显示图标+++++
;===========================		
DISP_DEFROST:
		JBS    MODEBUF,0
		JMP    DISP_REHEAT
		
		MOV    A,@0B00010000
		OR     DISPBUF0,A

		MOV    A,@0B10011110
		AND    DISPBUF0,A
		
		MOV    A,@0B00010000
		OR     DISPBUF1,A

		MOV    A,@0B11011111
		AND    DISPBUF1,A
		JMP    DISPMODE_END
;===========================
;+++重新加热模式的显示图标++
;===========================		
DISP_REHEAT:
		JBS	MODEBUF,1
		JMP    DISP_NORMAL100    

		MOV    A,@0B01100001
		OR     DISPBUF0,A

		MOV    A,@0B11101111
		AND    DISPBUF0,A
		
		MOV    A,@0B00100000
		OR     DISPBUF1,A

		MOV    A,@0B11101111
		AND    DISPBUF1,A
        JMP    DISPMODE_END
;============================
;+++++正常模式下的显示图标+++
;============================
DISP_NORMAL100:           	 
		MOV    A,@0B10001110
		AND    DISPBUF0,A
		
		MOV    A,@0B11001111		
		AND    DISPBUF1,A

DISPMODE_END:
		RET
;================================
;++++++++++END DISP_MODE+++++++++
;================================


;===========================
;+++++马达上升下降子程序++++
;===========================
MOTOR_RUN:
		JBS     RUNALLOW,1
		JMP     MOTOR_NORUN
		
		MOV     A,@0B00010000
		OR      PORT5,A
		JMP     MOTORRUN_END

MOTOR_NORUN:
		MOV     A,@0B11101111
		AND     PORT5,A

MOTORRUN_END:				
		RET	
;===========================
;+++++++END MOTOR_RUN+++++++
;===========================

		EOP
;==========================
;+++++++END TEST_SLEEP+++++
;==========================

;*********************************************
;*+=========================================*+
;++++++++++++++以下程序是换页的!+++++++++++++
;*+=========================================*+
;*********************************************
;曲终人未散,回首梦已远!天涯青风梗,再见理想!
;=============================================
;=============================================
;各种出错方式检测子程序
;1:刚上电28秒内没检测到上限开关
;2:在未进入烘烤状态下按CANCLE键28秒内没检测到上限开关
;3:烘烤状态下按CANCLE键20秒之内没发现上限开关
;4:烘烤状态下按CANCLE键8秒内发现上限开关
;5:按下START键20秒之内没发现下限开关
;6:按下START键8秒内发现下限开关
;7:连续同时检测到上下限开关有效
;=============================================
		ORG     0X0405
  	  NOP
		BC	  R3,5
		BC	  R3,6
		JMP     IN_INT

TEST_ERROR:
		CLR	 R4
		
		MOV	 A,PORT5
		MOV     KEYTEST,A	
		
		MOV     A,@0B11000000
		AND     A,KEYTEST
		
		JBS     STATUS,2
		JMP     TEST_ERROR100
		
		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0
		JMP     TEST_ERRORSTOP
		
TEST_ERROR100:		
;====================================
;1:刚上电28秒内没检测到上限开关
;====================================
		JBS     TESTERROR_FLAG,0
		JMP     TEST_ERROR1
		
		MOV     A,@14
		SUB     A,TEST_UPTIME
		JBS     STATUS,0
		JMP     TEST_UPSWITCH1
		
		BC      TESTERROR_FLAG,0
		CLR     TEST_UPTIME

		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0  ;出错模式置位
		BS      ERROR_MODE,1
		BC      RUNALLOW,1    ;如果出错了马达也停止上升
		JMP     TEST_ERRORSTOP  

TEST_UPSWITCH1:		
		MOV     A,PORT5
		MOV     KEYTEST,A
		
		JBC     KEYTEST,7     
		JMP     TEST_ERROR1
		
		BC      TESTERROR_FLAG,0
		BC      RUNALLOW,1    ;马达停止上升驱动
		BC	  ERROR_MODE,1      
		CLR     TEST_UPTIME

;=====================================================
;2:在未进入烘烤状态下按CANCLE键28秒内没检测到上限开关
;=====================================================
TEST_ERROR1:
		JBS     TESTERROR_FLAG,1
		JMP     TEST_ERROR2

		MOV     A,@14
		SUB     A,TEST_UPTIME1
		JBS     STATUS,0
		JMP     TEST_UPSWITCH2
		
		BC	  TESTERROR_FLAG,1
		CLR     TEST_UPTIME1
		BS      ERROR_MODE,2
		BS      ERROR_MODE,0 
		BS      VOICE_FLAG,1    
		BC      RUNALLOW,1     ;马达停止上升
		JMP     TEST_ERRORSTOP

TEST_UPSWITCH2:		
		MOV     A,PORT5
		MOV     KEYTEST,A
		
		JBC     KEYTEST,7     
		JMP     TEST_ERROR2
		
		BC      TESTERROR_FLAG,1
		BC      ERROR_MODE,2

		BC      RUNALLOW,1     ;马达停止上升
		CLR     TEST_UPTIME1

;===================================================
;+++3:烘烤状态下按CANCLE键20秒之内没发现上限开关++++
;===================================================
TEST_ERROR2:
		JBS     TESTERROR_FLAG,2
		JMP     TEST_ERROR3
		
		MOV     A,@10
		SUB     A,TEST_UPTIME2
		JBS     STATUS,0
		JMP     TEST_UPSWITCH3
		
		BC      TESTERROR_FLAG,2
		CLR     TEST_UPTIME2
		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0
		BS      ERROR_MODE,3
		BC      RUNALLOW,1     ;马达停止上升

		JMP     TEST_ERRORSTOP

TEST_UPSWITCH3:		
		MOV     A,PORT5
		MOV     KEYTEST,A
		
		JBC     KEYTEST,7     
		JMP     TEST_ERROR3
		
		BC      TESTERROR_FLAG,2
		BC      RUNALLOW,1	 ;马达停止上升
		BC      ERROR_MODE,3
		CLR     TEST_UPTIME2

;===============================================
;++++4:烘烤状态下按CANCLE键8秒内发现上限开关++++
;===============================================
TEST_ERROR3:
		JBS     TESTERROR_FLAG,3
		JMP     TEST_ERROR4
		
		MOV     A,@4
		SUB     A,TEST_UPTIME3
		JBS     STATUS,0
		JMP     TEST_UPSWITCH4

		BC      TESTERROR_FLAG,3
		BC      ERROR_MODE,4
		CLR     TEST_UPTIME3
		
		JMP     TEST_ERROR4
		
TEST_UPSWITCH4:
		MOV     A,PORT5
		MOV     KEYTEST,A
		JBC     KEYTEST,7
		
		JMP     TEST_ERROR4
		
		BC      TESTERROR_FLAG,3
		CLR     TEST_UPTIME3
		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0
		BS      ERROR_MODE,4
		BC      RUNALLOW,1
		
;=======================================
;此入口按下START键,20S内检测下限行程开关
;如果检测行程开关正常的话应该置开始标志
;=======================================
TEST_ERROR4:
		JBS     TESTERROR_FLAG,4
		JMP     TEST_ERROR5
		
		MOV     A,@10
		SUB     A,TEST_DOWNTIME
		JBS     STATUS,0
		JMP     TEST_DOWNSWITCH
		
		BC      TESTERROR_FLAG,4
		CLR     TEST_DOWNTIME
		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0
		BS      ERROR_MODE,5
		BC      RUNALLOW,2
		JMP     TEST_ERRORSTOP

TEST_DOWNSWITCH:
		MOV     A,PORT5
		MOV     KEYTEST,A
		JBC     KEYTEST,6
		JMP     TEST_ERROR5
				
		BC      TESTERROR_FLAG,4
		BC      ERROR_MODE,5		
		BC      RUNALLOW,2		
		BS      RUNALLOW,0         ;这个时候该开始运行了
		CLR     TEST_DOWNTIME
;=====================================
;此入口为按START键8S内检测下限行程开关
;=====================================
TEST_ERROR5:
		JBS     TESTERROR_FLAG,5
		JMP     TEST_ERROREND
		
		MOV     A,@4
		SUB     A,TEST_DOWNTIME1
		JBS     STATUS,0
		JMP     TEST_DOWNSWITCH1
		
		BC      TESTERROR_FLAG,5
		CLR     TEST_DOWNTIME1
		BC      ERROR_MODE,6
		JMP     TEST_ERROREND

TEST_DOWNSWITCH1:
		MOV     A,PORT5
		MOV     KEYTEST,A
		JBC     KEYTEST,6
		JMP     TEST_ERROREND
		
		BC      TESTERROR_FLAG,5
		CLR     TEST_DOWNTIME1
		BS      VOICE_FLAG,1
		BS      ERROR_MODE,0
		BS      ERROR_MODE,6
		BC      RUNALLOW,2
		JMP     TEST_ERRORSTOP

TEST_ERRORSTOP:
		BC      RUNALLOW,0
		CLR     TEST_UPTIME
		CLR     TEST_UPTIME1
		CLR     TEST_UPTIME2
		CLR     TEST_UPTIME3
		CLR     TEST_DOWNTIME
		CLR     TEST_DOWNTIME1

TEST_ERROREND:
		RET

;===========================================
;+++++++++++++++运行子程序++++++++++++++++++
;===========================================
RUN_OPERATE:	
		CLR	R4	
		BC	 R3,6
		BS	 R3,5		

		JBS    RUNALLOW,0
	    JMP    TEST_SLEEP

		BC     SLEEP_MODE,0	    

⌨️ 快捷键说明

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