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

📄 display2.dt.bak

📁 一个多士炉的汇编源码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
KEY_COMPARE4:
		JBC     KEYTEST,4
		JMP     KEY_COMPARE5
		 
		JBS     KEYRESULT_BUF,4
		JMP     KEY_COMRETURN
		
		BS      KEYRESULT,4
		BS      KEY_SKIPFLAG,0
		JMP     KEY_JUDSLEORNORM
		
KEY_COMPARE5:		
		JBC     KEYTEST,7
		JMP     KEY_COMRETURN
		 
		JBS     KEYRESULT_BUF,5
		JMP     KEY_COMRETURN
		
		BS      KEYRESULT,5
		BS      KEY_SKIPFLAG,0
		JMP     KEY_JUDSLEORNORM
		
KEY_JUDSLEORNORM:
		JBC     SLEEP_MODE,0
		JMP     SLEEPMODE_SET
		JMP     KEY_RETURN

SLEEPMODE_SET:
		CLR     KEYRESULT
		CLR     TEST_SLEEPTIME
		BC      SLEEP_MODE,0
		JMP     KEY_RETURN

KEY_COMRETURN:
		CLR     KEYRESULT_BUF
		CLR     KEYRESULT
		BC      KEY_SKIPFLAG,0
		JMP     KEY_RETURN

KEY_SCANSW1:
		JBC     KEYTEST,0      ;cancel  sw1
		JMP     KEY_SCANSW3
		BS      KEYRESULT_BUF,0
		JMP     KEY_SETFLAG

KEY_SCANSW3:		
		JBC     KEYTEST,1      ;defrost sw3
		JMP     KEY_SCANSW4
		BS      KEYRESULT_BUF,1
		JMP     KEY_SETFLAG

KEY_SCANSW4:		
		JBC     KEYTEST,2      ;reheat  sw4
		JMP     KEY_SCANSW5
		BS      KEYRESULT_BUF,2
		JMP     KEY_SETFLAG

KEY_SCANSW5:
		JBC     KEYTEST,3      ;darker  sw5
		JMP     KEY_SCANSW6
		BS      KEYRESULT_BUF,3
		JMP     KEY_SETFLAG

KEY_SCANSW6:
		JBC	 KEYTEST,4      ;lighter sw6
		JMP     KEY_SCANSW2
		BS      KEYRESULT_BUF,4
		JMP     KEY_SETFLAG

KEY_SCANSW2:
		JBC     KEYTEST,7      ;start   sw2
		JMP     KEY_RETURN
		BS      KEYRESULT_BUF,5
		JMP     KEY_SETFLAG
				
KEY_SETFLAG:
		BS      KEYFIRST_FLAG,0
		JMP     KEY_RETURN
;===========================
;++++++++++弹起判断+++++++++
;===========================
KEY_SCANSKIP:
		JBS     KEYRESULT_BUF,0		     
		JMP     KEY_SCANSKIP1
		
		JBC     KEYTEST,0
		JMP     KEY_SKIPSWOK
		JMP     KEY_SKIPNOOK

KEY_SCANSKIP1:		
		JBS     KEYRESULT_BUF,1
		JMP     KEY_SCANSKIP2

		JBC     KEYTEST,1
		JMP     KEY_SKIPSWOK
		JMP     KEY_SKIPNOOK
		
KEY_SCANSKIP2:
		JBS     KEYRESULT_BUF,2
		JMP     KEY_SCANSKIP3
		
		JBC     KEYTEST,2
		JMP     KEY_SKIPSWOK		
		JMP     KEY_SKIPNOOK

KEY_SCANSKIP3:
		JBS     KEYRESULT_BUF,3
		JMP     KEY_SCANSKIP4

		JBC     KEYTEST,3
		JMP     KEY_SKIPSWOK
		JMP     KEY_SKIPNOOK

KEY_SCANSKIP4:
		JBS     KEYRESULT_BUF,4
		JMP     KEY_SCANSKIP5
		
		JBC     KEYTEST,4
		JMP     KEY_SKIPSWOK
		JMP     KEY_SKIPNOOK
		
KEY_SCANSKIP5:
		JBS     KEYRESULT_BUF,5
		JMP     KEY_SKIPNOOK

		JBC     KEYTEST,7
		JMP     KEY_SKIPSWOK
		JMP     KEY_SKIPNOOK
		
;===============================
;+++++以下是置位键弹起标志++++++
;===============================
KEY_SKIPSWOK:
		BC      KEY_SKIPFLAG,0
		CLR     KEYRESULT_BUF
		JMP     KEY_RETURN

KEY_SKIPNOOK:
		BS      KEY_SKIPFLAG,0		

KEY_RETURN:	
		MOV	 A,@0B00000000
		IOW	 IOC60
		RET					
;==================
;+++END KEY_SCAN+++
;==================

DELAY:
		MOV    A,@255
		MOV    0X20,A
		DJZ    0X20
		JMP    $-1
		RET

;=========================
;+++++模式设定子程序++++++
;=========================
SET_MODE:			
		JBC     RUN_STARTFLAG,0
		JMP     SET_MODE10
		
		MOV     A,@1	    ;显示1秒钟的开机界面
	    SUB     A,TESTSELF_TIME
		
		JBS     STATUS,0
		JMP     MODE_END    
		BS      RUN_STARTFLAG,0
		CLR     TESTSELF_TIME

	    CLR     DARKE_GRADE
	    BS      DARKE_GRADE,2
;================================
;在此处马达应该上行了
;开机2S钟显示全部图形时间已经结束
;================================       
SET_MODE10:
        JBC     KEYRESULT,0
        JMP     CANCLE_MODE
        
		JBC     ERROR_MODE,0;如果检验已经出错了,那么除了CANCLE键其他键不应该响应
		JMP     MODE_END

        JBC     KEYRESULT,1
        JMP     DEFROST_MODE
        
		JBC     KEYRESULT,2
		JMP     REHEAT_MODE		
		
		JBC     KEYRESULT,3
		JMP     DARKER
		
		JBC     KEYRESULT,4
		JMP     LIGHTER
		
		JBC	 KEYRESULT,5;START键定义为KEYRESULT.5
		JMP     RUN_START
		JMP     MODE_END     
;===========================
;+++在运行时按下CANCLE键++++
;++在没运行时按下CANCLE键+++
;===========================
CANCLE_MODE:
		JBS     RUNALLOW,0
		JMP     CANCLE_MODE1		

		BS      TESTERROR_FLAG,2
		BS      TESTERROR_FLAG,3
		JMP     CANCLE_MODE2

CANCLE_MODE1:
		BS      TESTERROR_FLAG,2
        BC      ERROR_MODE,0 
        
CANCLE_MODE2:		
		BS      RUNALLOW,1
		BC      RUNALLOW,0
		BS      VOICE_FLAG,2
		BC      ADDORSUBCHANGE_FLAG,0
		JMP     MODE_END

;========================
;++++++解冻模式处理++++++
;========================
DEFROST_MODE:
        JBC     RUNALLOW,0
        JMP     MODE_END

		JBC     MODEBUF,0
		JMP     DEFROST_MODE1
		JMP     DEFROST_MODE2

DEFROST_MODE1:
		BS      VOICE_FLAG,0
		CLR     MODEBUF
		BS      MODEBUF,2 
		JMP	 MODE_END

DEFROST_MODE2:
		BS      VOICE_FLAG,0

		CLR     MODEBUF
		BS      MODEBUF,0
		JMP	 MODE_END
;========================
;+++++重新加热模式处理+++
;========================
REHEAT_MODE:
        JBC     RUNALLOW,0
        JMP     MODE_END

		JBC     MODEBUF,1
		JMP     REHEAT_MODE1
		JMP     REHEAT_MODE2

REHEAT_MODE1:
		BS      VOICE_FLAG,0
		CLR     MODEBUF
		BS      MODEBUF,2  
		JMP	 MODE_END

REHEAT_MODE2:
		BS      VOICE_FLAG,0
		CLR     MODEBUF
		BS      MODEBUF,1
		JMP	 MODE_END

;================================
;++在正常和解冻模式下运行++++++
;+++++++颜色加深处理+++++++++++++
;================================
DARKER:
		BS      VOICE_FLAG,0
		JBC     MODEBUF,1
		JMP     MODE_END

		JBS	 DARKE_GRADE,5
		JMP     DARKER10
		JMP     DEFCHANGE_TIME

DARKER10:				
		BC      STATUS,0
		RLC     DARKE_GRADE
    	JMP     DEFCHANGE_TIME

;================================
;+++正常模式和解冻模式颜色减浅处理
;================================
LIGHTER:
		BS      VOICE_FLAG,0
		JBC     MODEBUF,1
		JMP     MODE_END

		JBS	 DARKE_GRADE,0
		JMP     LIGHTER1
		JMP     MODE_END

LIGHTER1:
		BC      STATUS,0
		RRC     DARKE_GRADE
;===========================
;+++在解冻模式下按-键判断+++
;+++35H存放已运行的时间+++++
;+++34H存放剩余时间+++++++++
;+++33H存放每个点显示的时间+
;+++如果没有运行那么直接跳出
;+++如果已经运行则判断调整后的挡位
;+++时间是否已经超出运行时间
;+++超出运行时间则颜色减浅无效
;+++未超出时间则求出剩余时间
;+++并保存调整时已经运行的时间
;===========================
DEFCHANGE_TIME:
		JBS     RUNALLOW,0
		JMP     MODE_END

		JBS     MODEBUF,0
		JMP     MODE_NORJUDGE
		
		BS      ADDORSUBCHANGE_FLAG,0
;===========================
;+++++运行时调整后为6档的处理
;===========================		
		JBS     DARKE_GRADE,5
		JMP     DARKE_JUDGE4

		mov     a,@140
		MOV     0x34,a
		
		mov     a,run_2s
		mov     0x35,a     ;保存调整时已经运行的时间
		
		bc      status,0
		sub     0x34,a	 ;求出剩余的时间

		mov     a,@6       
		clr     0x33
loop5:					 ;求出调整后每个点应该点亮的时间
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		
		inc     0x33
		jmp     loop5

;==============================
;++运行时调整后为5档的处理+++++
;==============================
DARKE_JUDGE4:
		JBS     DARKE_GRADE,4
		JMP     DARKE_JUDGE3
		mov     a,@125
		MOV     0x34,a
		
		mov     A,RUN_2S   ;调整时已经运行时间的保存
		mov     0x35,a

		bc      status,0
		sub     0x34,a     ;求出5挡时的剩余运行时间

		JBC     STATUS,0
		JMP     MODE_GRADETIME5
		
		BC      STATUS,0   ;如果运行时间已经超过5挡时间则按键无效
		RLC     DARKE_GRADE
		BC      ADDORSUBCHANGE_FLAG,0
        JMP     MODE_END

MODE_GRADETIME5:				
		BC      STATUS,0
        mov     a,@5
		clr     0x33
loop4:					 ;求出5个点中每个点的点亮时间		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop4
;=================================
;+++调整后为4挡的时间处理+++++++++
;=================================        		
DARKE_JUDGE3:
		JBS     DARKE_GRADE,3
		JMP     DARKE_JUDGE2
		mov     a,@110
		MOV     0x34,a
		mov     A,RUN_2S
		mov     0x35,a

		sub     0x34,a		
		JBc     STATUS,0
		JMP     MODE_GRADETIME4
		
		BC      STATUS,0
		RLC     DARKE_GRADE
		BC      ADDORSUBCHANGE_FLAG,0
        JMP     MODE_END

MODE_GRADETIME4:
		BC      STATUS,0
        mov     a,@4
		clr     0x33
loop3:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop3
;==================================
;++++调整后为3挡的时间处理+++++++++
;==================================
DARKE_JUDGE2:
		JBS     DARKE_GRADE,2
		JMP     DARKE_JUDGE1
		mov     a,@95
		MOV     0x34,a
		mov     A,RUN_2S
		mov     0x35,a
		
		sub     0x34,a
		JBc     STATUS,0
		JMP     MODE_GRADETIME3

		BC      ADDORSUBCHANGE_FLAG,0		
		BC      STATUS,0
		RLC     DARKE_GRADE
        JMP     MODE_END

MODE_GRADETIME3:
		BC      STATUS,0
        mov     a,@3
		clr     0x33
loop2:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop2
;===================================
;+++++调整后为2挡的时间处理部分+++++
;===================================
DARKE_JUDGE1:
		JBS     DARKE_GRADE,1
		JMP     MODE_END
		mov     a,@80
		MOV     0x34,a
		
		mov     A,RUN_2S
		mov     0x35,a

		sub     0x34,a
		JBc     STATUS,0
		JMP     MODE_GRADETIME2

		BC      ADDORSUBCHANGE_FLAG,0		
		BC      STATUS,0
		RLC     DARKE_GRADE		
        JMP     MODE_END

MODE_GRADETIME2:
		BC      STATUS,0
		mov     a,run_2s
		mov     0x35,a
        mov     a,@2
		clr     0x33
loop1:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop1

;============================
;+++正常模式按+-键时间判断+++
;++此处理部分同解冻模式部分
;++的处理程序;如时间允许;将
;++其做成一个子程序
;============================

MODE_NORJUDGE:
		JBS     MODEBUF,2
		JMP     MODE_END
		BS      ADDORSUBCHANGE_FLAG,0		

		JBS     DARKE_GRADE,5
		JMP     DARKE_JUDGE14
;===========6挡处理==============
		mov     a,@120
		MOV     0x34,a
		
		mov     a,run_2s
		mov     0x35,a     ;调整时当前运行时间的保存
		
		bc      status,0
		sub     0x34,a     ;求出剩余的时间

		mov     a,@6
		clr     0x33
loop15:					;求出调整后6个点每个点应该显示的时间
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		
		inc     0x33
		jmp     loop15
;============5挡处理==============
DARKE_JUDGE14:
		JBS     DARKE_GRADE,4
		JMP     DARKE_JUDGE13
		mov     a,@105
		MOV     0x34,a
		
		mov     A,RUN_2S
		mov     0x35,a

		bc      status,0
		sub     0x34,a

		JBC     STATUS,0
		JMP     MODE_GRADETIME15
		
		BC      STATUS,0
		RLC     DARKE_GRADE
        JMP     MODE_END

MODE_GRADETIME15:
		BC      STATUS,0
        mov     a,@5
		clr     0x33
loop14:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop14

;==============4挡处理================        		
DARKE_JUDGE13:
		JBS     DARKE_GRADE,3
		JMP     DARKE_JUDGE12
		mov     a,@90
		MOV     0x34,a
		mov     A,RUN_2S
		mov     0x35,a

		sub     0x34,a		
		JBc     STATUS,0
		JMP     MODE_GRADETIME14
		
		BC      STATUS,0
		RLC     DARKE_GRADE
        JMP     MODE_END

MODE_GRADETIME14:
		BC      STATUS,0
        mov     a,@4
		clr     0x33
loop13:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop13

;==============3挡处理================
DARKE_JUDGE12:
		JBS     DARKE_GRADE,2
		JMP     DARKE_JUDGE11
		mov     a,@75
		MOV     0x34,a
		mov     A,RUN_2S
		mov     0x35,a
		
		sub     0x34,a
		JBc     STATUS,0
		JMP     MODE_GRADETIME13
		
		BC      STATUS,0
		RLC     DARKE_GRADE
        JMP     MODE_END

MODE_GRADETIME13:
		BC      STATUS,0
        mov     a,@3
		clr     0x33
loop12:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33
		jmp     loop12

;=============2挡处理================
DARKE_JUDGE11:
		JBS     DARKE_GRADE,1
		JMP     MODE_END
		mov     a,@60
		MOV     0x34,a
		
		mov     A,RUN_2S
		mov     0x35,a

		sub     0x34,a
		JBc     STATUS,0
		JMP     MODE_GRADETIME12
		
		BC      STATUS,0
		RLC     DARKE_GRADE		
        JMP     MODE_END

MODE_GRADETIME12:
		BC      STATUS,0
		mov     a,run_2s
		mov     0x35,a
        mov     a,@2
		clr     0x33
loop11:		
		bc      status,0
		sub     0x34,a
		jbs     status,0
		jmp     mode_end
		inc     0x33

⌨️ 快捷键说明

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