📄 lengnuanfengji.asm
字号:
RET 42H
RET 42H
RET 43H
RET 44H
RET 44H
RET 45H
RET 46H
RET 46H
RET 47H
RET 48H
RET 48H
RET 49H
RET 50H
RET 50H
RET 51H
RET 51H
RET 52H
RET 53H
RET 54H
RET 55H
RET 55H
RET 56H
RET 57H
RET 57H
RET 58H
RET 59H
RET 59H
RET 59H
RET 60H
RET 60H
RET 61H
RET 62H
RET 62H
RET 63H
RET 64H
RET 64H
RET 65H
RET 66H
RET 66H
RET 66H
RET 67H
RET 68H
RET 68H
RET 69H
RET 69H
RET 70H
RET 71H
RET 72H
RET 73H
RET 73H
RET 74H
RET 75H
RET 75H
RET 76H
RET 77H
RET 77H
RET 78H
RET 78H
RET 79H
RET 80H
RET 80H
RET 81H
RET 82H
RET 82H
RET 83H
RET 84H
RET 84H
RET 85H
RET 86H
RET 86H
RET 87H
RET 87H
RET 88H
RET 89H
RET 89H
RET 90H
RET 91H
RET 92H
RET 93H
RET 93H
RET 94H
RET 95H
RET 95H
RET 96H
RET 96H
RET 97H
RET 98H
RET 98H
RET 99H
;********************************************************************
;****************按键处理程序****************************************
MAINK:
SNZB KEYF,CLICK ;如果指定数据存储器的第b位为1,则程序计数器跳过下一条指令
JP TRET ;程序计数器的内容被指定地址所取代,程序由新地址继续执行,当新地址被加载入时,必须插入一个空指令周期,所以此指令为2 个周期的指令
CLRB KEYF,CLICK ;指定数据存储器中的b位清除为0
MAINK1:
SZB WORK,ON_OFF ;如果指定数据存储器的第b位为0,则程序计数器跳过下一条指令
JP MAINK2
LDIA 02H ;将立即数载入至累加器中
SUBA KCOUNT ;将累加器中内容减去指定数据存储器的数据,把结果储存回累加器。如果结果为负,C 标志位清除为0,反之结果为正或0,C 标
;志位设置为1
SNZB FLAGS,Z
JP TRET
MAINK2:
LD A,KCOUNT ;将累加器的内容复制到指定数据存储器
ANDIA 07H ;将存在累加器中的数据和立即数作AND 的运算,然后把结果储存回累加器
ADDR PCL ;将指定数据存储器和累加器的内容相加后,把结果储存回指定数据存储器
JP TRET
JP MAINK_FAN
JP MAINK_ON_OFF ;开/关机
JP MAINK_HEAT
JP MAINK_ADD ;加
JP MAINK_DEC ;减
JP MAINK_TIMER
JP MAINK_CC_FF
;********************************************************************
;********************************************************************
MAINK_ON_OFF:
LDIA 01H ;将立即数载入至累加器中
ANDR WORK ;将指定数据存储器和累加器的内容相加后,把结果储存回指定数据存储器
XORR WORK ;将存在累加器和指定数据存储器中的数据作XOR 的运算,然后把结果储存回数据存储器
CLR TIMER ;关机状态定时无效
CLR PWR_CNT
JP MAINK_COM
;********************************************************************
;********************************************************************
MAINK_HEAT:
INCR PWR_CNT ;将指定数据存储器内的数据加1
LDIA 03H
ANDR PWR_CNT
SZB FLAGS,Z ;如果指定数据存储器的第b位为0,则程序计数器跳过下一条指令
CLRB WORK,FAN_EN2 ;关闭加热时同时关闭风机
JP MAINK_COM
;********************************************************************
;********************************************************************
MAINK_FAN:
LDIA 20H
XORR WORK
JP MAINK_COM
;********************************************************************
;*****************按键定时关机***************************************
MAINK_TIMER:
CLRB WORK,T1S_EN
CALL INIT_1_SEC
CALL INIT_30_MIN
SETB WORK,TIM_EN ;将指定数据存储器的第b位置位为1
INCR TIMER ;将指定数据存储器内的数据加1
LDIA 0FH
ANDR TIMER ;将存在累加器和指定数据存储器中的数据作AND 的运算,然后把结果储存回数据存储器
SZB FLAGS,Z ;如果指定数据存储器的第b位为0,则程序计数器跳过下一条指令
CLRB WORK,TIM_EN
JP MAINK_COM
;********************************************************************
;*****************按键转换华氏度和摄氏度*****************************
MAINK_CC_FF:
LDIA 04H
XORR WORK
SZB WORK,CC_FF
JP FF_MIN_CHK
JP CC_MIN_CHK
;********************************************************************
;***************设置温度加*******************************************
MAINK_ADD:
SNZB FLAG,SET_MODE
JP ENTER_SET_MODE
SZB WORK,CC_FF
JP MAINK_ADD_FF
MAINK_ADD_CC:
INCR SET_CC
JP CC_MIN_CHK
MAINK_ADD_FF:
INCR SET_FF
JP FF_MIN_CHK
;********************************************************************
;***************设置温度减*******************************************
MAINK_DEC:
SNZB FLAG,SET_MODE
JP ENTER_SET_MODE
SZB WORK,CC_FF
JP MAINK_DEC_FF
MAINK_DEC_CC:
DECR SET_CC
JP CC_MIN_CHK
MAINK_DEC_FF:
DECR SET_FF
JP FF_MIN_CHK
;********************************************************************
;***************摄氏度处理******************************************
CC_MIN_CHK:
LDIA D'15'
SUBA SET_CC
SZB FLAGS,C
JP CC_MAX_CHK
LDIA D'35'
JP CC_MIN
CC_MAX_CHK:
LDIA D'36'
SUBA SET_CC
SNZB FLAGS,C
JP TMP_SET_COM
CC_MAX:
LDIA D'15'
CC_MIN:
LD SET_CC,A
JP TMP_SET_COM
;********************************************************************
;***************华氏度处理*******************************************
FF_MIN_CHK:
LDIA D'59'
SUBA SET_FF
SZB FLAGS,C
JP FF_MAX_CHK
LDIA D'98'
JP FF_MIN
FF_MAX_CHK:
LDIA D'99'
SUBA SET_FF
SNZB FLAGS,C
JP TMP_SET_COM
FF_MAX:
LDIA D'59'
FF_MIN:
LD SET_FF,A
JP TMP_SET_COM
;********************************************************************
;********************************************************************
ENTER_SET_MODE:
SETB FLAG,SET_MODE
TMP_SET_COM:
CLR TCNT
CLR TIME_3S ;设置状态3秒无动作,则退出设置状态
SETB FLAG,CF_EN ;温度单位转换标志位
;********************************************************************
;********************************************************************
MAINK_COM:
LDIA 01H
LD RBEEP,A
LDIA 02H
LD BEEPH,A
CLR BEEPL
JP TRET1
;********************************************************************
;********************************************************************
;程序功能:PTC加热输出控制
;********************************************************************
;********************************************************************
OUT_CTRL:
LDIA 07H
SZB FLAG,SET_MODE
LDIA 03FH
ANDR P2_RAM
SNZB WORK,ON_OFF
JP OUT_CTRL_COM
OUT_CHK:
SZB FLAG,SET_MODE
JP OUT_FAN
SZB FLAG,OUT_EN
JP OUT_CHK2
OUT_CHK1:
LD A,TMP_NTC
SUBA TMP_SET
SZB FLAGS,C
SETB FLAG,OUT_EN
JP OUT_FAN
OUT_CHK2:
LDIA 03H
ANDR PWR_CNT
LDIA 03H
SUBA PWR_CNT
SNZB FLAGS,C
JP PTC_OUT_EN
CLRB WORK,FAN_EN1
SETB WORK,FAN_EN2
;********************************************************************
;********************************************************************
;程序功能:温度控制,当NTC的温度大于设置温度3度后停止加热
;********************************************************************
;********************************************************************
PTC_OUT_EN:
LDIA 03H
ADDA TMP_SET
LD TEMP,A
LDIA 06H
ADDA TEMP
SZB FLAGS,HC
LD TEMP,A
LD A,TEMP
SUBA TMP_NTC
SZB FLAGS,C
CLRB FLAG,OUT_EN
PTC_CHK:
SZB PWR_CNT,0
SETB P2_RAM,5
SZB PWR_CNT,1
SETB P2_RAM,4
OUT_FAN:
SZB WORK,FAN_EN1
SETB P2_RAM,FAN ;风机输出
SZB WORK,FAN_EN2
SETB P2_RAM,FAN
OUT_CTRL_COM:
LD A,P2_RAM
LD P2,A
JP TRET
;********************************************************************
;********************************************************************
;==================程序功能:环境温度检测=============================
;********************************************************************
;********************************************************************
TMP_CHK:
LDIA B'01000000'
LD ADPORT,A
SZDECR TCNT ;250US*16*30=120MS
JP TRET
LDIA D'30'
LD TCNT,A
SZB RBEEP,0
JP TRET
SZB FLAG,SET_MODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -