📄 p06007-6.asm
字号:
INCLUDE "ADAM41K.LIB"
ESD1 EQU 00H
ESD2 EQU 01H
TIME_MARK EQU 10H
KEY_COUNT1 EQU 11H
KEY_COUNT2 EQU 12H
KEY_COUNT3 EQU 13H
KEY_COUNT4 EQU 14H
PBDR_MARK EQU 15H
ROUT_MARK EQU 16H
VARIABLE1 EQU 17H
VARIABLE2 EQU 18H
BLACK_LED EQU 19H
ERROR_MARK EQU 20H
ERROR_COUNT1 EQU 21H
ERROR_COUNT2 EQU 22H
ERROR_CHECK1 EQU 23H
ERROR_CHECK2 EQU 24H
ADCR1_PTC1 EQU 30H
ADCR2_PTC1 EQU 31H
ADCR1_PTC2 EQU 32H
ADCR2_PTC2 EQU 33H
PTC1_TEP_H EQU 34H
PTC1_TEP_L EQU 35H
PTC1_TEP_C EQU 36H
PTC2_TEP_H EQU 37H
PTC2_TEP_L EQU 38H
PTC2_TEP_C EQU 39H
SET_TEP_H EQU 3AH
SET_TEP_L EQU 3BH
ESD3 EQU 40H
LCD_DATA1 EQU 50H
LCD_DATA2 EQU 51H
LCD_DATA3 EQU 52H
LCD_DATA4 EQU 53H
LCD_DATA5 EQU 54H
LCD_DATA6 EQU 55H
LCD_DATA7 EQU 56H
LCD_DATA8 EQU 57H
LCD_DATA9 EQU 58H
LCD_DATA10 EQU 59H
LCD_DATA11 EQU 5AH
COMMAND_H EQU 5BH
COMMAND_L EQU 5CH
LCD_CONTROL EQU 5DH
KEY_STATUS EQU 60H
KEY_STATUS1 EQU 61H
AD_KEY EQU 62H
ON_OFF_MARK EQU 63H
SET_LOGIC EQU 64H
AUTO_LOGIC EQU 66H
AUTO_LEVEL EQU 67H
A_DATA_AH EQU 68H
A_DATA_AM EQU 69H
A_DATA_BH EQU 6AH
A_DATA_BM EQU 6BH
SAVE_TEMP_H EQU 6CH
SAVE_TEMP_L EQU 6DH
ESD4 EQU 80H
TEMP_TURN_MARK EQU 81H
TEMP_TURN_COUNT EQU 82H
TRUE_TEP_H EQU 83H
TRUE_TEP_L EQU 84H
TRUE_TEP_COUNT1 EQU 85H
TRUE_TEP_COUNT2 EQU 86H
TRUE_TEP_H_M EQU 87H
TRUE_TEP_L_M EQU 88H
SOUND_CONTROL EQU 90H
SOUND_COURSE EQU 91H
SOUND_TIME1 EQU 92H
SOUND_TIME2 EQU 93H
SOUND_TIME3 EQU 94H
LED_TIME1 EQU 95H
LED_TIME2 EQU 96H
LED_TIME3 EQU 97H
LED_TIME4 EQU 98H
LOGO_MARK EQU 99H
LOGO_COURSE EQU 9AH
LOGO_TIME1 EQU 9BH
LOGO_TIME2 EQU 9CH
LOGO_TIME3 EQU 9DH
ESD5 EQU 0B0H
OVER_COUNT1 EQU 0C0H
OVER_COUNT2 EQU 0C1H
OVER_COUNT3 EQU 0C2H
OVER_COUNT4 EQU 0C3H
HALF_S_COUNT1 EQU 0C4H
HALF_S_COUNT2 EQU 0C5H
HALF_S_MARK EQU 0C6H
TIME_S_COUNT1 EQU 0C7H
TIME_S_COUNT2 EQU 0C8H
TIME_ML_COUNT EQU 0C9H
TIME_MH_COUNT EQU 0CAH
TIME_H_COUNT EQU 0CBH
SET_TIME_MH EQU 0CCH
SET_TIME_H EQU 0CDH
TOTAL_TIME_MH EQU 0CEH
TOTAL_TIME_H EQU 0CFH
ESD6 EQU 0FEH
ESD7 EQU 0FFH
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ORG 0000H
WDTC
BR !START
WDTC
BR !START
WDTC
BR !START
WDTC
BR !START
LDM TIME_MARK,#1111B
RETI
WDTC
BR !START
START:
DI
SPC
WDTC
LRI R1FN,#0000B
LRI R1OD,#0000B
LRI R1PC,#1111B
LRI R1DD,#0000B
LRI R1DR,#1111B
LRI R1ST,#1110B
LRI PBFN,#0000B
LRI PBOD,#0101B
LRI PBPC,#1111B
LRI PBDD,#0101B
LRI PBDR,#0100B
LRI PBST,#1111B
LRI PGFN,#0000B
LRI PGOD,#0000B
LRI PGDD,#0000B
LRI PGDR,#0000B
LRI PHFN,#0000B
LRI PHOD,#1111B
LRI PHDD,#1111B
LRI PHDR,#1111B
LRI CGMR,#0000B
LRI RCR,#0000B
LDM COMMAND_H,#0000B ;OPEN 1621
LDM COMMAND_L,#0001B
CALL !I2C_COMMAND
CALL !CL_RAM
LDM ESD1,#0101B
LDM ESD2,#0101B
LDM ESD3,#0101B
LDM ESD4,#0101B
LDM ESD5,#0101B
LDM ESD6,#0101B
LDM ESD7,#0101B
LDM COMMAND_H,#0010B ;SET LCD LOGIC
LDM COMMAND_L,#1001B
CALL !I2C_COMMAND
LDM COMMAND_H,#0110B ;SET 2K BZ
LDM COMMAND_L,#0000B
CALL !I2C_COMMAND
LDM LCD_DATA1,#1111B
LDM LCD_DATA2,#1111B
LDM LCD_DATA3,#1111B
LDM LCD_DATA4,#1111B
LDM LCD_DATA5,#1111B
LDM LCD_DATA6,#1111B
LDM LCD_DATA7,#1111B
LDM LCD_DATA8,#1111B
LDM LCD_DATA9,#1111B
LDM LCD_DATA10,#1111B
LDM LCD_DATA11,#1111B
CALL !I2C_LCD
LDM COMMAND_H,#0000B ;OPEN LCD
LDM COMMAND_L,#0011B
CALL !I2C_COMMAND
LDM COMMAND_H,#0000B ;OPEN BZ
LDM COMMAND_L,#1001B
CALL !I2C_COMMAND
LDM KEY_COUNT1,#00H
LDM KEY_COUNT2,#00H
LDM KEY_COUNT3,#0FH
LDM KEY_COUNT4,#0FH
CALL !TIME_DELAY
LDM COMMAND_H,#0000B ;STOP BZ
LDM COMMAND_L,#1000B
CALL !I2C_COMMAND
LDM KEY_COUNT1,#00H
LDM KEY_COUNT2,#00H
LDM KEY_COUNT3,#0FH
LDM KEY_COUNT4,#0FH
CALL !TIME_DELAY
LDM COMMAND_H,#0000B ;OPEN BZ
LDM COMMAND_L,#1001B
CALL !I2C_COMMAND
LDM KEY_COUNT1,#00H
LDM KEY_COUNT2,#00H
LDM KEY_COUNT3,#0EH
LDM KEY_COUNT4,#0FH
CALL !TIME_DELAY
LDM COMMAND_H,#0000B ;STOP BZ
LDM COMMAND_L,#1000B
CALL !I2C_COMMAND
LDM KEY_COUNT1,#00H
LDM KEY_COUNT2,#00H
LDM KEY_COUNT3,#0AH
LDM KEY_COUNT4,#0FH
CALL !TIME_DELAY
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
STOP_FUNCTION:
; LDM COMMAND_H,#0000B ;STOP BZ
; LDM COMMAND_L,#1000B
; CALL !I2C_COMMAND
LDM LCD_DATA1,#0000B
LDM LCD_DATA2,#0000B
LDM LCD_DATA3,#0000B
LDM LCD_DATA4,#0000B
LDM LCD_DATA5,#0000B
LDM LCD_DATA6,#0000B
LDM LCD_DATA7,#0000B
LDM LCD_DATA8,#0000B
LDM LCD_DATA9,#0000B
LDM LCD_DATA10,#0000B
LDM LCD_DATA11,#0000B
CALL !I2C_LCD
LRI PBDR,#0000B
LRI PHDR,#1111B
DI
SPC
WDTC
LRI RCR,#0000B
LRI CGMR,#0000B
LDM ROUT_MARK,#0000B
LRI ADCIS,#0000B
LRI ADCM,#0001B
LRI T1MR,#0000B
LRI IENR,#0000B
LRI IENR2,#0000B
LRI IRQR,#0000B
LRI IRQR2,#0000B
LDM TRUE_TEP_H,#2
LDM TRUE_TEP_L,#0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIME_1:
DI
SPC
WDTC
LRI T1LD,#1111B
LRI T1HD,#1111B
LRI IENR,#1000B
LRI IENR2,#0000B
LRI IRQR,#0000B
LRI IRQR2,#0000B
LRI T1MR,#1110B
LDM TIME_MARK,#0000B
EI
;FUNCTION
CALL !KEY_AD
CALL !KEY_SCAN
CALL !ESD
;FUNCTION
TIME_1_1:
CMNE TIME_MARK,#1111B
BR !TIME_1_1
NOP
;;;;;;;;;;
DI
SPC
WDTC
LRI T1LD,#1111B
LRI T1HD,#1111B
LRI IENR,#1000B
LRI IENR2,#0000B
LRI IRQR,#0000B
LRI IRQR2,#0000B
LRI T1MR,#1110B
LDM TIME_MARK,#0000B
EI
;FUNCTION
CALL !SCREEN_BACK_LED
CALL !SCREEN_LCD
CALL !ESD
;FUNCTION
TIME_1_2:
CMNE TIME_MARK,#1111B
BR !TIME_1_2
NOP
;;;;;;;;;;
DI
SPC
WDTC
LRI T1LD,#1111B
LRI T1HD,#1111B
LRI IENR,#1000B
LRI IENR2,#0000B
LRI IRQR,#0000B
LRI IRQR2,#0000B
LRI T1MR,#1110B
LDM TIME_MARK,#0000B
EI
;FUNCTION
CALL !TIMER_F
CALL !WITH_AD
CALL !HOT_UP_F
CALL !REWRITE_TEMP
CALL !ESD
;FUNCTION
TIME_1_3:
CMNE TIME_MARK,#1111B
BR !TIME_1_3
NOP
;;;;;;;;;;
DI
SPC
WDTC
LRI T1LD,#1111B
LRI T1HD,#1111B
LRI IENR,#1000B
LRI IENR2,#0000B
LRI IRQR,#0000B
LRI IRQR2,#0000B
LRI T1MR,#1110B
LDM TIME_MARK,#0000B
EI
;FUNCTION
CALL !BRAND
CALL !HALF_F
CALL !SOUND_F
CALL !ERROR_F
CALL !OVER_TIME
CALL !ESD
;FUNCTION
TIME_1_4:
CMNE TIME_MARK,#1111B
BR !TIME_1_4
BR !TIME_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;FIRST LAYER
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SCREEN_BACK_LED:
TM BLACK_LED.#0
BR !SCREEN_BACK_LED_1
RET
SCREEN_BACK_LED_1:
TM BLACK_LED.#1
BR !SCREEN_BACK_LED_2
SET1 BLACK_LED.#1
LDM PBDR_MARK,#0100B
LRI PBDR,#0100B
LDM LED_TIME1,#0DH
LDM LED_TIME2,#0EH
LDM LED_TIME3,#0CH
LDM LED_TIME4,#0EH
RET
SCREEN_BACK_LED_2:
LDM PBDR_MARK,#0100B
LRI PBDR,#0100B
CLRC
ADDC LED_TIME1,#1
LDM LED_TIME1,A
ADDC LED_TIME2,#0
LDM LED_TIME2,A
ADDC LED_TIME3,#0
LDM LED_TIME3,A
ADDC LED_TIME4,#0
LDM LED_TIME4,A
TSTC
BR !SCREEN_BACK_LED_3
RET
SCREEN_BACK_LED_3:
LDM BLACK_LED,#0
LDM PBDR_MARK,#0000B
LRI PBDR,#0000B
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SCREEN_LCD:
TM ON_OFF_MARK.#0
BR !SCREEN_LCD_1
LDM LCD_DATA1,#0000B
LDM LCD_DATA2,#0000B
LDM LCD_DATA3,#0000B
LDM LCD_DATA4,#0000B
LDM LCD_DATA5,#0000B
LDM LCD_DATA6,#0000B
LDM LCD_DATA7,#0000B
LDM LCD_DATA8,#0000B
LDM LCD_DATA9,#0000B
LDM LCD_DATA10,#0000B
LDM LCD_DATA11,#0000B
CALL !I2C_LCD
LDM TEMP_TURN_MARK,#0 ;清除设置温度显示维持标致
LDM TEMP_TURN_COUNT,#0 ;清除设置温度显示维持时间
RET
SCREEN_LCD_1:
LDM LCD_DATA1,#0000B
LDM LCD_DATA2,#0000B
LDM LCD_DATA3,#0000B
LDM LCD_DATA4,#0000B
LDM LCD_DATA5,#0000B
LDM LCD_DATA6,#0000B
LDM LCD_DATA7,#0000B
LDM LCD_DATA8,#0000B
LDM LCD_DATA9,#0001B
LDM LCD_DATA10,#0000B
LDM LCD_DATA11,#0001B
;SETUP BRAND
TM LOGO_MARK.#0
BR !SCREEN_BRAND_1
BR !SCREEN_BRAND_2
SCREEN_BRAND_1:
SET1 LCD_DATA10.#0
SCREEN_BRAND_2:
;判断是在设定还是在正常运作
CMNE LCD_CONTROL,#0
BR !SCREEN_LCDA
CMNE ROUT_MARK,#0001B
BR !SCREEN_BRAND_2A
SET1 LCD_DATA9.#1
SCREEN_BRAND_2A:
;SETUP TEMP INCLUDE 处理维持设置温度显示时间
CMLE SET_TEP_H,#0
BR !START
;;;;;;;;;;处理维持设置温度显示时间
CMNE TEMP_TURN_MARK,#0
BR !SCREEN_LCD_1C
TM HALF_S_MARK.#1
BR !SCREEN_LCD_1A
BR !SCREEN_LCD_1D
SCREEN_LCD_1A:
CLRC
ADDC TEMP_TURN_COUNT,#1
LDM TEMP_TURN_COUNT,A
CALE #10
BR !SCREEN_LCD_1D
SCREEN_LCD_1B:
LDM TEMP_TURN_MARK,#1
BR !SCREEN_LCD_1D
SCREEN_LCD_1C:
CALL !LOAD_TEMP_T
BR !SCREEN_LCD_1E
SCREEN_LCD_1D:
CALL !LOAD_TEMP
SCREEN_LCD_1E:
;;;;;;;;;;
;设定标识图标
TM ON_OFF_MARK.#2
BR !SCREEN_LCD_2 ;HAVE AUTO
BR !SCREEN_LCD_3
SCREEN_LCD_2:
SET1 LCD_DATA11.#1
SCREEN_LCD_3:
TM ON_OFF_MARK.#3
BR !SCREEN_LCD_4
BR !SCREEN_LCD_5
SCREEN_LCD_4:
; SET1 LCD_DATA8.#0
SCREEN_LCD_5:
;SETUP TIME
TM ON_OFF_MARK.#1
BR !SCREEN_LCD_6 ;HAVE TIMER
CALL !I2C_LCD
RET
SCREEN_LCD_6:
CALL !LOAD_T_TIME
CALL !I2C_LCD
RET
SCREEN_LCDA:
LDM TEMP_TURN_MARK,#0 ;清除设置温度显示维持标致
LDM TEMP_TURN_COUNT,#0 ;清除设置温度显示维持时间
SET1 LCD_DATA10.#1 ;标识设定图标
TM LCD_CONTROL.#3
BR !SCREEN_LCDB
TM LCD_CONTROL.#0
BR !SCREEN_LCDA_1
BR !SCREEN_LCDA_2
SCREEN_LCDA_1:
TM HALF_S_MARK.#0
BR !SCREEN_LCDB
SCREEN_LCDA_2:
CALL !LOAD_TEMP ;正常的温度显示
SCREEN_LCDB:
TM LCD_CONTROL.#1
BR !SCREEN_LCDB_1
BR !SCREEN_LCDB_2
SCREEN_LCDB_1:
TM HALF_S_MARK.#0
BR !SCREEN_LCDC
SCREEN_LCDB_2:
CALL !LOAD_S_TIME
SCREEN_LCDC:
TM HALF_S_MARK.#0
BR !SCREEN_LCDC_1
SET1 LCD_DATA8.#1 ;点秒点标识
SCREEN_LCDC_1:
TM LCD_CONTROL.#2
BR !SCREEN_LCDC_2
BR !SCREEN_LCDC_3
SCREEN_LCDC_2:
TM HALF_S_MARK.#0
BR !SCREEN_LCDD
SCREEN_LCDC_3:
CALL !LOAD_S1_TIME
SET1 LCD_DATA1.#1
SET1 LCD_DATA2.#1
SET1 LCD_DATA3.#1
SET1 LCD_DATA4.#1
SET1 LCD_DATA5.#1
SET1 LCD_DATA6.#1
SCREEN_LCDD:
TM ON_OFF_MARK.#2 ;智能标识
BR !SCREEN_LCDD_1
BR !SCREEN_LCDE
SCREEN_LCDD_1:
SET1 LCD_DATA11.#1
SCREEN_LCDE:
CMNE LCD_CONTROL,#1000B
BR !SCREEN_LCD_RET
;把智能模式等级转换为温度显示出来
CLR1 LCD_DATA9.#0 ;清除温度符号C标志
TM HALF_S_MARK.#0
BR !SCREEN_LCD_RET
LDA SET_TEP_H
LDM SAVE_TEMP_H,A
LDA SET_TEP_L
LDM SAVE_TEMP_L,A
CMLE AUTO_LEVEL,#9
BR !SCREEN_XX1
CMNE AUTO_LEVEL,#10
BR !SCREEN_XX2
LDM SET_TEP_H,#1
LDM SET_TEP_L,#0
BR !SCREEN_XX
SCREEN_XX1:
LDM SET_TEP_H,#0
LDA AUTO_LEVEL
LDM SET_TEP_L,A
BR !SCREEN_XX
SCREEN_XX2:
CMNE AUTO_LEVEL,#11
BR !SCREEN_XX3
LDM SET_TEP_H,#1
LDM SET_TEP_L,#1
BR !SCREEN_XX
SCREEN_XX3:
LDM SET_TEP_H,#1
LDM SET_TEP_L,#2
SCREEN_XX:
CALL !LOAD_TEMP
CLR1 LCD_DATA1.#3
CLR1 LCD_DATA2.#3
CLR1 LCD_DATA3.#3
CLR1 LCD_DATA4.#3
CLR1 LCD_DATA5.#3
CLR1 LCD_DATA6.#3
CLR1 LCD_DATA7.#3
LDA SAVE_TEMP_H
LDM SET_TEP_H,A
LDA SAVE_TEMP_L
LDM SET_TEP_L,A
;;;;;;;;;;
SCREEN_LCD_RET:
CALL !I2C_LCD
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIMER_F:
TM ON_OFF_MARK.#0
BR !TIMER_F_1
TIMER_F_RET:
LDM TIME_S_COUNT1,#0
LDM TIME_S_COUNT2,#0
LDM TIME_ML_COUNT,#0
; LDA SET_TIME_MH
; LDM TIME_MH_COUNT,A
; LDA SET_TIME_H
; LDM TIME_H_COUNT,A
TIMER_F_RET1:
RET
TIMER_F_1:
TM ON_OFF_MARK.#1
BR !TIMER_F_2
BR !TIMER_F_RET
TIMER_F_2:
CMNE SET_LOGIC,#0
BR !TIMER_F_RET
TM HALF_S_MARK.#1
BR !TIMER_F_3
BR !TIMER_F_RET1
TIMER_F_3:
CLRC
ADDC TIME_S_COUNT1,#1
LDM TIME_S_COUNT1,A
ADDC TIME_S_COUNT2,#0
LDM TIME_S_COUNT2,A
CMNE TIME_S_COUNT1,#8
BR !TIMER_F_RET1
CMNE TIME_S_COUNT2,#7
BR !TIMER_F_RET1
LDM TIME_S_COUNT1,#0
LDM TIME_S_COUNT2,#0
SUBC TIME_ML_COUNT,#1
LDM TIME_ML_COUNT,A
TSTC
BR !TIMER_F_3A
BR !TIMER_F_3C
TIMER_F_3A:
LDM TIME_ML_COUNT,#9
;;;;;;;;;;全时时间减一
CLRC
SUBC TOTAL_TIME_MH,#1
LDM TOTAL_TIME_MH,A
TSTC
BR !TIMER_F_3A_1
BR !TIMER_F_3A_2
TIMER_F_3A_1:
LDM TOTAL_TIME_MH,#5
CLRC
SUBC TOTAL_TIME_H,#1
LDM TOTAL_TIME_H,A
TSTC
BR !START
TIMER_F_3A_2:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -