📄 display2.dt.bak
字号:
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 + -