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

📄 display2.dt.bak

📁 一个多士炉的汇编源码
💻 BAK
📖 第 1 页 / 共 5 页
字号:
NORMAL_GRADE3:
		MOV    A,@0B00001010;显示4
		MOV    DISPBUF0,A
		
		MOV    A,@0B00000101
		MOV    DISPBUF1,A

		MOV    A,@90
		SUB    A,RUN_2S
		 
		JBC    STATUS,0
		JMP    STOP_RUN

		jbs	addorsubchange_flag,0
		jmp    nornokey_down4
		jmp    norfour_judge4

nornokey_down4:
		mov    a,@22
		mov    0x33,a
		jmp    norfour_judge4		

;============3挡的处理=============
NORMAL_GRADE2:
		MOV    A,@0B00000110;显示3
		MOV    DISPBUF0,A
		
		MOV    A,@0B00000111
		MOV    DISPBUF1,A

		MOV    A,@75
		SUB    A,RUN_2S
		 
		JBC    STATUS,0
		JMP    STOP_RUN

		jbs	addorsubchange_flag,0
		jmp    nornokey_down3
		jmp    northree_judge3

nornokey_down3:
		mov    a,@25
		mov    0x33,a
		jmp    northree_judge3		

;============2挡的处理=============
NORMAL_GRADE1:
		MOV    A,@0B00000110;显示2
		MOV    DISPBUF0,A
		
		MOV    A,@0B00001110
		MOV    DISPBUF1,A

		MOV    A,@60
		SUB    A,RUN_2S
		 
		JBC    STATUS,0
		JMP    STOP_RUN

		jbs	addorsubchange_flag,0
		jmp    nornokey_down2
		jmp    nortwo_judge2

nornokey_down2:
		mov    a,@30
		mov    0x33,a
		jmp    nortwo_judge2		

;============1挡的处理=============
NORMAL_GRADE0:
		MOV    A,@0B00000010;显示1
		MOV    DISPBUF0,A
		
		MOV    A,@0B00000001
		MOV    DISPBUF1,A

		MOV    A,@45
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    STOP_RUN
		JMP    ONE_LIGHT

;==================================
;++++在6挡时处理每个点应该显示的时间
;==================================
NORSIX_JUDGE6:
		MOV    A,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time66
		jmp    nornotadd_time66

noradd_time66:
		add    a,0x35
		bc     status,0    

nornotadd_time66:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    norFIVE_JUDGE6
		JMP    SIX_LIGHT

NORFIVE_JUDGE6:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time65
		jmp    nornotadd_time65

noradd_time65:
		add    a,0x35
		bc     status,0    

nornotadd_time65:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORFOUR_JUDGE6
		JMP    FIVE_LIGHT

NORFOUR_JUDGE6:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time64
		jmp    nornotadd_time64

noradd_time64:
		add    a,0x35
		bc     status,0    

nornotadd_time64:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTHREE_JUDGE6
		JMP    FOUR_LIGHT
		 
NORTHREE_JUDGE6:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time63
		jmp    notadd_time63

noradd_time63:
		add    a,0x35
		bc     status,0    

nornotadd_time63:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTWO_JUDGE6
		JMP    THREE_LIGHT
		 
NORTWO_JUDGE6:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		add    a,0x33
        add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time62
		jmp    nornotadd_time62

noradd_time62:
		add    a,0x35
		bc     status,0    

nornotadd_time62:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    ONE_LIGHT
		JMP    TWO_LIGHT

;==================================
;++++在5挡时处理每个点应该显示的时间
;==================================
NORFIVE_JUDGE5:
		MOV    A,0x33
		bc     status,0
		 
		jbc	addorsubchange_flag,0
		jmp    noradd_time55
		jmp    nornotadd_time55

noradd_time55:
		add    a,0x35
		bc     status,0    

nornotadd_time55:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORFOUR_JUDGE5
		JMP    FIVE_LIGHT

NORFOUR_JUDGE5:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time54
		jmp    nornotadd_time54

noradd_time54:
		add    a,0x35
		bc     status,0    

nornotadd_time54:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTHREE_JUDGE5
		JMP    FOUR_LIGHT
		 
NORTHREE_JUDGE5:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time53
		jmp    nornotadd_time53

noradd_time53:
		add    a,0x35
		bc     status,0    

nornotadd_time53:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTWO_JUDGE5
		JMP    THREE_LIGHT
		 
NORTWO_JUDGE5:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		add    a,0x33
		bc     status,0		

		jbc	addorsubchange_flag,0
		jmp    noradd_time52
		jmp    nornotadd_time52

noradd_time52:
		add    a,0x35
		bc     status,0    

nornotadd_time52:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    ONE_LIGHT
		JMP    TWO_LIGHT

;==================================
;++++在4挡时处理每个点应该显示的时间
;==================================
NORFOUR_JUDGE4:
		MOV    A,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time44
		jmp    nornotadd_time44

noradd_time44:
		add    a,0x35
		bc     status,0    

nornotadd_time44:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTHREE_JUDGE4
		JMP    FOUR_LIGHT
		 
NORTHREE_JUDGE4:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time43
		jmp    nornotadd_time43

noradd_time43:
		add    a,0x35
		bc     status,0    

nornotadd_time43:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTWO_JUDGE5
		JMP    THREE_LIGHT
		 
NORTWO_JUDGE4:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time42
		jmp    nornotadd_time42

noradd_time42:
		add    a,0x35
		bc     status,0    

nornotadd_time42:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    ONE_LIGHT
		JMP    TWO_LIGHT

;==================================
;++++在3挡时处理每个点应该显示的时间
;==================================
NORTHREE_JUDGE3:
		MOV    A,0x33
		bc     status,0		

		jbc	addorsubchange_flag,0
		jmp    noradd_time33
		jmp    nornotadd_time33

noradd_time33:
		add    a,0x35
		bc     status,0    

nornotadd_time33:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    NORTWO_JUDGE3
		JMP    THREE_LIGHT
		 
NORTWO_JUDGE3:
		bc     status,0
		MOV    A,0x33
		add    a,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time32
		jmp    nornotadd_time32

noradd_time32:
		add    a,0x35
		bc     status,0    

nornotadd_time32:
		SUB    A,RUN_2S
		JBC    STATUS,0
		JMP    ONE_LIGHT
		JMP    TWO_LIGHT

;==================================
;++++在2挡时处理每个点应该显示的时间
;==================================
NORTWO_JUDGE2:
		MOV    A,0x33
		bc     status,0

		jbc	addorsubchange_flag,0
		jmp    noradd_time22
		jmp    nornotadd_time22

noradd_time22:
		add    a,0x35
		bc     status,0    

nornotadd_time22:
		SUB    A,RUN_2S
		JBC    STATUS,0

		JMP    ONE_LIGHT
		JMP    TWO_LIGHT
;====================================
;+++++++正常模式点数处理结束+++++++++
;====================================
STOP_RUN:
		CLR	RUN_2S 
		BC     RUNALLOW,0 
		BS     RUNALLOW,1
		BS     TESTERROR_FLAG,2;面包烤完应该检查上限行程开关标志
		BC     ADDORSUBCHANGE_FLAG,0
;================================
;+++++++++停止加热+++++++++
;================================
		MOV	 A,@0B11110111
		AND     PORT5,A
		
		CALL    DELAY
		CALL    DELAY
		CALL    DELAY
		
		MOV     A,@0B00001000
		OR      PORT5,A
;=================================
;+++++++++++睡眠模式检测++++++++++
;=================================
TEST_SLEEP:
		MOV     A,@60
		SUB     A,TEST_SLEEPTIME
		
		JBS     STATUS,0
		JMP     SLEEP_END
			 
		CLR     TEST_SLEEPTIME
		MOV     A,@0B00000000
		MOV     DISPBUF0,A
		MOV     DISPBUF1,A
		
		MOV     A,@0B11111111
		MOV     DISPBUF2,A
		BS      SLEEP_MODE,0

SLEEP_END:
		RET					
;========================
;+++++END RUN_OPERATE++++
;========================		

;========================
;+++++++显示子程序+++++++	
;========================
DISPLAY:
		JBS    DISPBITTIME_FLAG,0
		JMP    DISPLAY1
		
		BC     DISPBITTIME_FLAG,0
		BC	 STATUS,0
		RLC	DISP_BUF
		
		JBC	DISP_BUF,6
		JMP	DISP_TIME1
        
        MOV    A,DISP_BUF
        MOV    DISP_REAL,A
        JMP    DISPLAY1      

DISP_TIME1:
		BC	 DISP_BUF,6
		BS	 DISP_BUF,0
        CLR    DISP_REAL
        BS     DISP_REAL,0		

;==========================			
DISPLAY1:
		JBS	DISP_REAL,0
	    JMP    DISP_BIT0
		CLR    DISP_REAL
		
		MOV    A,DISPBUF0
		MOV    PORT6,A
        
		MOV	A,@0B00000101
		MOV	PORT7,A
		JMP    DISP_END

DISP_BIT0:				
		JBS    DISP_REAL,1  
		JMP	DISP_BIT2
		CLR    DISP_REAL
		
		COM    DISPBUF0
		MOV    A,DISPBUF0
		MOV    PORT6,A
		COM    DISPBUF0
	
		MOV	A,@0B00110101
		MOV	PORT7,A
		JMP    DISP_END
		
DISP_BIT2:
		JBS    DISP_REAL,2
		JMP	DISP_BIT3
		CLR    DISP_REAL

		MOV    A,DISPBUF1
		MOV    PORT6,A
		
		MOV	A,@0B00010001
		MOV	PORT7,A
		JMP    DISP_END
		
DISP_BIT3:
		JBS    DISP_REAL,3
		JMP	DISP_BIT4
		CLR    DISP_REAL

		COM    DISPBUF1
		MOV    A,DISPBUF1
		MOV    PORT6,A
		COM    DISPBUF1

		MOV	A,@0B00011101
		MOV	PORT7,A
		JMP    DISP_END

DISP_BIT4:
		JBS    DISP_REAL,4
		JMP	DISP_BIT5
		CLR    DISP_REAL
		
		MOV    A,DISPBUF2
		MOV    PORT6,A

		MOV	A,@0B00010100
		MOV	PORT7,A
		JMP    DISP_END

DISP_BIT5:
		JBS    DISP_REAL,5
		JMP	DISP_END
		CLR    DISP_REAL

		COM    DISPBUF2
		MOV    A,DISPBUF2
		MOV    PORT6,A
		COM    DISPBUF2

		MOV	A,@0B00010111
		MOV	PORT7,A
		JMP    DISP_END
DISP_END:
		RET			
;====================
;+++++END DISPLAY++++
;====================
   	 END
;++++++++++++++++++++++++++++程序到此结束++++++++++++++++++++++++++;

;=================================================================
;++++++++滚滚长江东逝水,
;++++++++浪花淘尽英雄。
;++++++++是非成败转头空,
;++++++++青山依旧在,
;++++++++几度夕阳红。
;++++++++白发渔樵江渚上,
;++++++++惯看秋月春风,
;++++++++一壶浊酒喜相逢,
;++++++++古今多少事,
;++++++++皆付笑谈中。
;++++++++2004年12月3日于深圳华电信通电子有限公司
;==================================================================

;NOTE:
;		模式处理子程序
;		1:按lighter键设减浅颜色
;		2:按darker键设加深颜色
;		3:按defrost键设定解冻功能
;		4:按reheat键设定重新加热功能
;		5:按cancel键取消本次操作
;		6:按start键开始工作
;		7:模式位定义0:解冻 1:重新加热 2:正常模式 3:待机模式
;		   4:用户设定模式 5 :睡眠模式 6:出错警告模式  
;		8: 在运行时,只识别CANCLE键,DARKER,LIGHTER键在此处不做处理
;NOTE:
;		键盘处理程序
;		此程序在主程序中调用
;		键值保存在KEYRESULT中
;		注:P60-P67,P47,P75
;		内部上拉由CONT。7控制
;		注:编程顺序如下
;		1:将用于键盘扫描的P60。0--60。4设置为输出状态的高
;		2:将P60。0---60。4设置为输入状态
;		3:读键盘扫描口的状态
;		4:将键盘扫描口设置为输出状态,因为它同液晶复用
;        5:给出的电路原理图的标识有误在笔记本上有记录
;		6: 在调试过程中出现内置上拉失效问题,经过邓工分析
;		   因为有滤波电容的影响,而要在读端口状态的时候加
;			加一段时间的延时,等待电容充电完毕。
;		7;发现原来的使能上拉是错误的,应该是CONT。7=0为使能
;		   为1为禁止上拉	  
;		8: 键盘必须进行消抖处理,否则会出现一次键被按下,多次被识别的问题
;		   (2004/11/15)  
;
;					基本定时器中断
;TCC inturrept
;4MHz clock  1:2 scaler rate
;in this example
;int = (ff-06) * 2cycle*2rate/4us = 249us(+保存状态位时间+基本定时器中间运行时间);
;需要加上定时器中间运行的时间,所以每次基本定时器中断可能都不一样;
;定时时间要求准,需要实际调试
;				    TCC setting
;1	mov a,@0x00  ; 4MHz clock, prescaler 1:2  
;2	contw	     ; write to control register   
;3	mov a,@0x09  ; set inturrept to bit0	   
;4	iow 0x0f     ; iocf			    
;5	mov a,@0x06  ;				   
;6	mov 0x01,a   ; TCC initial value 	    
;7	eni	     ; inturrept enable		    
;		250 uS中断一次;

;唤醒后程序继续执行,由中断状态来决定程星否转入中断处理程序。
;如果在SLEP 指令执行前执行ENI 指令,程序将从地址0X08 处执行中断处理。
;如果在执行SLEP 指令前执行DISI 指令,程序将从SLEP 指令后继续执行。
;进入休眠状态前,B、C 两种情况只有一种可被使能。
;1.如果休眠前PORT6 输入唤醒使能,则WDT 应由软件禁止
;(代码选择寄存器中WDT 仍为使能),因此,EM78P156E 可被A、C 两种情况唤醒。
;2.如果WDT 使能,则PORT6 输入唤醒应禁止,因此,EM78P156E可被A,B 两种情况唤醒。
;如果PORT6 输入变化中断被用于唤醒单片机,则如下指令应在SLEP 指令前执行

;SLEEP_ENTRANCE:
;MOV A,@0BXX000110      ;选择TCC 内部时钟
;CONTW
;CLR R1 				 ;TCC 和预分频器清0
;MOV A,

⌨️ 快捷键说明

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