📄 demo_69p25.asm
字号:
NOP
NOP
LDI PAR,1111B ;port init
LDI PBR,1111B
LDI PCR,1001B
LDI PDR,0FH ;PORT INITIAL
LDI PER,0FH
LDI PFR,0FH
LDI IE ,00H ;int disable
LDI DPH ,01H
LDI DPM ,07H
LDI DPL ,0FH
;----------------------------CLR RAM ;<256 RAM
ST_LOOP:
LDI WDTR,1111B ; CLR WDT
LDI INX ,00H ; clr ram
CALL DEC_DP ;DPH,DPM,DPL-1-->DPH,DPM,DPL
LDA DPH ,B0
OR DPM ,B0
BNZ ST_LOOP
LDI WDTR,1111B ; CLR WDT
;--------------------------------------------------------
CALL READ_OPTION_SHAO
CALL STORE_OPTION_SHAO
CALL READ_OPTION_SHAO
CALL JUDGE_OPTION_SHAO
LDI PCRBUF,1001B
STA PCR,B0 ;POWER ON PC INITIAL
LDI WK0,0FH
STA LOSTR_ZERO,B1 ; ZERO TEST
ORIM MK_BZ,0100B ;PWER ON SOUND
LDI TIMESR_BZ,01H
ORIM MARKSY,1000B ;SET KEY LOCK
ORIM MK_SWITCH,1000B ;
LDI MK_DL,0111B ;LOCK DATA KEY
LDI T0RM,1111B ;T0RM=1111B--; 1/1 ;T0RM=1110B--;1/2 ;CLOCK/4
LDI T0RL,06H ;T0RL=06H ; WDT=7MS ;T0RL=03H ;WDT=14MS
LDI T0RH,00H ;T0RH=00H----; /250 ;T0RH=08H----;/125
LDI IRQ,0000B
LDI IE,0100B ; T0 INTERRUPT ENABLE
; jmp @@main
;************************************************
;* *
;* Main Routine *
;* *
;************************************************
@@main:
LDI PARM,1111B
LDI PBRM,1111B ;PORT INITIAL
ORIM PCRM,1110B ;PORT INITIAL
LDI PDRM,1111B
LDI PERM,1111B
LDI PFRM,1101B
LDI PULLUPR,1100B ;PULL UP ENABLE
LDI T0CLOCK,00H ;RAM INITIAL
LDI IE,0100B ; T0 INTERRUPT
LDI WDTR,1111B ;clr watch Dog timer
CALL @@INTPART
LDI WDTR,1111B ;clr watch Dog timer
JMP @@appl ; jmp @@appl
APPL_RET:
LDI WDTR,1111B ;clr watch Dog timer
JMP @@INTFACE
INTFACE_RET:
LDI WDTR,1111B ;clr watch Dog timer
JMP @@DISPLAY
DISPLAY_RET:
LDI WDTR,1111B ;clr watch Dog timer
JMP @@BUZZER
BUZZER_RET:
LDI WDTR,1111B ;clr watch Dog timer
NOP
HALT ;power down
NOP
NOP
NOP
JMP @@main
;*******************************************************************
DEC_DP:
SBIM DPL ,01H
LDI MACR0,00H ;DPH,DPM,DPL-1-->DPH,DPM,DPL
SBCM DPM,B0
LDI MACR0,00H
SBCM DPH,B0
RTNI
;------------------------------------
;BIN_BCD: ;BIN CONVERT BCD
; LDI B0BCDRH,00H
;BCD_LOOP:
; LDA MACR1,B0
; BNZ NEXT
; SBI B0BCDRL,0AH
; BNC RETURN
;NEXT:
; SBIM B0BCDRL,0AH ;B0BCDRL-A-->B0BCDRL
; LDI MACR0,00H
; SBCM MACR1,B0
; ADIM B0BCDRH,01H
; JMP BCD_LOOP
;RETURN:
; RTNI
;***********************************************************************
@@INTPART:
ORIM MK01L,1100B ;initIAL
ORIM MK01H,0101B ;initIAL
LDI WK0,0001B ; b0bts1 mark1.6 ;
EOR MK01L,B0
BA0 INTPART99 ;
ANDIM MK01L,1110B ;b0bclr mark1.6
;--------------------------- ;delay 2.5ms
ANDIM MK01L,0111B ;b0bclr mark1.3
;--------------------------
INC4 INTM2L ; inm2+1-->intm4
CJNE4 INTM2L,05H,INTPART11 ; intm4 not equ 05h then goto INTPART11
ANDIM MK01L,1011B
INC4 INTM2H ; INTM2H+1-->INTM2H
INTPART11:
CJB4 INTM2L,0AH,INTPART22 ;INTM2L<0AH THEN GOTO INTPART22
LDI INTM2L,00H
INC4 INTM2H ;INTM2H+1-->INTM2H
ANDIM MK01L,1011B
ANDIM MK01H,1110B ;DELAY 200MS FLAG
EORIM MK01H,0010B
INTPART22:
CJB4 INTM2H,05H,INTPART99 ;INTM2H<05H THEN GOTO INTPART99
LDI INTM2H,00H
ANDIM MK01H,1011B ;DELAY 500 MS FLAG
EORIM MK01H,1000B
INTPART99:
RTNI ; subroubine return
;----------------------------- ; delay 500ms
;**********************************************************
@@INTFACE:
;--------------------------------------------------ZERO
LDA MK01L,B0
BA3 FACE_ZERO99
LDA LOSTR_ZERO,B1 ;ZERO PULS COUNTER
BAZ FACE_ZERO99 ;WHEN ZERO PULS LOST 15 TIMES
LDI WK0,01H ; THEN LOSTR_ZERO IS 00H
SUBM LOSTR_ZERO,B1
FACE_ZERO99:
;----------------------------------------------YUYUE PROCESS
LDI WK0,1000B
EOR MK_YUYUE,B0
BA3 FACE299
LDA MK01H,B0
BA2 FACE299
EORIM MK_INCDEC,0100B
BA2 FACE299
SBIM SECRL_YU,01H
DAS SECRL_YU
LDI WK0,00H
SBCM SECRH_YU,B0
BC JUDGE_YUYUE
LDI SECRH_YU,05H ;YUYUE DOWN COUNTER
SBIM MINRL_YU,01H
DAS MINRL_YU
LDI WK0,00H
SBCM MINRH_YU,B0
JUDGE_YUYUE:
LDA SECRL_YU,B0
OR SECRH_YU,B0
OR MINRL_YU,B0
OR MINRH_YU,B0
BNZ FACE299
ANDIM MK_YUYUE,0110B
LDI YUYUERL,00H
LDA MK_COOK,B0 ;YUYUE END
BA0 FACE22 ;
JMP FACE361
FACE22:
ORIM MK_YUYUE,0100B
LDI MK_DIS,1011B ;YUYUE END THEN
ORIM MK_BZ,0100B ;GOTO WORKING
LDI TIMESR_BZ,03H ;SOUND 2 TIMES
JMP YUYUE_END
;--------------------------------
FACE299:
;===========================================================KEY WATCH
LDA MK_YUYUE,B0
BA3 KWDT99 ;YUYUE THEN END
LDA MK_COOK,B0
BA1 KWDT99 ;WORKING THEN EMD
LDA MK_CIKONG,B0
BA3 KWDT99 ;PAUSH THEN END
LDA MK01H,B0
BA2 KWDT99
LDA KEYRH_WDT,B0
OR KEYRL_WDT,B0
BAZ KWDT99
DEC8 KEYRH_WDT,KEYRL_WDT ;KEYRH_WDT,KEYRL_WDT-1-->KEYRH_WDT,KEYRL_WDT
LDA KEYRH_WDT,B0
OR KEYRL_WDT,B0 ;IF NO KEY PRESS 1 MINUTE THEN
BNZ KWDT99 ;CLR SETING
KWDT1:
ORIM MK_CIKONG,0100B ;SET 1 MINITE KEY WATCH FLAG
JMP KEY_WDT_OVER
KWDT99:
;==============================================GRILL PAUSH DELAY 1 MINUTE
LDA MK01H,B0
BA2 PAUSH99
LDI WK0,0010B ;IF NO SHAO-KAO PAUSH THEN END
EOR MK_LIT,B0
BA1 PAUSH99
DEC8 DELAYRH,DELAYRL ;DELAYRH,DELAYRL-1-->DELAYRH,DELAYRL
LDA DELAYRH,B0
OR DELAYRL,B0 ;DELAY 1 MINUTE
BNZ PAUSH99
ANDIM MK_LIT,1101B ;SET GRILL PAUSH 1 MINUTE FLAG
JMP WORK_CONTINUE
PAUSH99:
;===========================================================COOKING
LDI WK0,0001B
EOR MK_COOK,B0
BA0 FACE399
LDI WK0,0010B
EOR MK_COOK,B0 ;COOKING/DEF1/DEF2/GRILL/AUTO COUNTER
BA1 FACE399
LDA MK01L,B0
BA2 FACE399
INC4 COOKFR ;COOKFR+1-->COOFR
DAA COOKFR
BNZ FACE399
;----------------------------------------->= 5 minute
SBI MINRL_COOK,05H
LDI WK0,00H ;COOKING TIME >= 5 MINTE JUDGE
SBC MINRH_COOK,B0
BNC FACE31 ;IF COOKING TIME >= 5 MINUTE
ORIM MK_COOK,1000B ;THEN SET >= 5 MINUTE FLAG
;--------------------------------------------DOWN COUNTER
FACE31:
DEC4 SECRL_COOK ;COOKING DOWN COUNTER
DAS SECRL_COOK ;SECRL_COOK-1-->SECRL_COOK
LDI WK0,00H
SBCM SECRH_COOK,B0 ;SECRH_COOK-CY-->SECRH_COOK
BC FACE3099
LDI SECRL_COOK,09H
LDI SECRH_COOK,05H
DEC4 MINRL_COOK ;MINRL_COOK-1-->MINRL_COOK
DAS MINRL_COOK
LDI WK0,00H
SBCM MINRH_COOK,B0 ;MINRH_COOK-CY-->MINRH_COOK
FACE3099:
;========================================== P100 OVER 30 MINUTE THEN CHANGE P80
CJNE4 SUPR,01H,CHANGE_P80_END ;IF SUPR NOT EQU 01H THEN GOTO CHANGE_P80_END
CALL INC_SHAO ;SUBRIOUTE COOKING TIME COUNTER
LDI WK0,03H
SUB MINRH_SHAO,B1 ;MINRH_SHAO<30
BNC CHANGE_P80_END ;IF COOKING TIME > 30 MINUTE
;---------------------------------------------------
LDI SUPR,02H ;THEN P100 CHANGE TO P80
LDI LEVELRLBUF,00H
LDI LEVELRHBUF,00H
ANDIM MK_SY,1101B
ANDIM MK_CIKONG,1110B ;SET FIRE P80 OUTPUT
ANDIM MK_DIS,0111B
LDI LEVELRL_H,04H ;P80
LDI LEVELRH_H,0BH ;180
LDI LEVELRL_L,08H
LDI LEVELRH_L,02H ;40
CHANGE_P80_END:
;==============================================SHAO KAO HALFT PAUSH
CJNE4 SUPR,06H,FACE32 ;IF SUPR NO EQU 06H THEN GOTO FACE32
LDA MINRH_SHAO,B1
EOR MINRH_COOK,B0 ;MINRH_COOK NO EQU MINRH_SHAO THEN FACE312
BNZ FACE312
LDA MINRL_SHAO,B1
EOR MINRL_COOK,B0 ;MINRL_COOK NO EQU MINRL_SHAO THEN FACE312
BNZ FACE312
LDA SECRH_SHAO,B1
EOR SECRH_COOK,B0 ;SECRH_COOK NO EQU SECRH_SHAO THEN FACE312
BNZ FACE312
LDA SECRL_SHAO,B1
EOR SECRL_COOK,B0 ;SECRL_COOK NO EQU SECRL_SHAO THEN FACE312
BNZ FACE312
FACE311:
ORIM MK_LIT,0010B ;SET SHAO KAO HALFT PAUSH FLAG
ORIM MARKSY,0100B
LDI DELAYRH,07H
LDI DELAYRL,08H
ANDIM MK_COOK,1101B ;PAUSH WORKING
ORIM MK_CIKONG,1000B ;SET PAUSH FLAG
LDI TIMESR_BZ,03H
ORIM MK_BZ,0100B ;SOUND 2 TIMES
JMP FACE32
FACE312:
CALL INC_SHAO
;------------------------- ;judge shao-kao time lest half or not
LDA MINRH_SHAO,B1
EOR MINRH_COOK,B0 ;MINRH_COOK EQU MINRH_SHAO OR NOT
BNZ FACE32
LDA MINRL_SHAO,B1
EOR MINRL_COOK,B0 ;SHAO = COOK
BNZ FACE32
LDA SECRH_SHAO,B1
EOR SECRH_COOK,B0
BNZ FACE32
LDA SECRL_SHAO,B1 ;SECRL_COOK EQU SECRL_SHAO OR NOT
EOR SECRL_COOK,B0
BNZ FACE32
JMP FACE311
;----------------------------------subroutine
INC_SHAO: ;MINRH_SHAO,MINRL_SHAO,SECRH_SHAO,SERL_SHAO+1
LDA SECRL_SHAO,B1
STA WK1,B0
ADIM WK1,01H ;WK1+01H-->WK1
DAA WK1
STA SECRL_SHAO,B1
LDI WK1,00H
ADCM SECRH_SHAO,B1 ;SECRH_SHAO+00H+CY-->SECRH_SHAO
STA WK1,B0
CJB4 WK1,06H,FACE313 ;MINRH_SHAO-MINRL_SHAO-SECRH_SHAO-SERL_SHAO+1
LDI WK0,00H
STA SECRH_SHAO,B1
LDA MINRL_SHAO,B1
STA WK1,B0
ADIM WK1,01H ;WK1+01H-->WK1
DAA WK1
STA MINRL_SHAO,B1
LDI WK1,00H
ADCM MINRH_SHAO,B1 ;MINRH_SHAO+00H+CY-->MINRH_SHAO
FACE313:
RTNI
;-----------------------------------LEST 15 SECOND THEN only FAN WORKING
FACE32:
LDI WK0,1000B
EOR MK_COOK,B0
BA3 FACE36 ;
SBI SECRL_COOK,06H ;SECRL_COOK-06H-->SECRL_COOK
LDI WK0,01H
SBC SECRH_COOK,B0 ;SECRH_COOK-01H-CY-->SECRH_COOK
LDI WK0,00H
SBC MINRL_COOK,B0 ;MINRL_COOK-00H-CY-->MINRL_COOK
LDI WK0,00H
SBC MINRH_COOK,B0 ;MINRH_COOK-00H-CY-->MINRH_COOK
BC FACE36
LDI LEVELRL_H,00H ;TURN OFF WEI BO
LDI LEVELRH_H,00H
ORIM MK_COOK,0100B
;-------------------------------------------working END JUDGE
FACE36:
LDA SECRL_COOK,B0 ;IF SECRL NOT EQU 00
OR SECRH_COOK,B0 ;AND SECRH NOT EQU 00
OR MINRL_COOK,B0 ;AND MINRL NOT EQU 00
OR MINRH_COOK,B0 ;AND MINRH NOT EQU8 00
BNZ FACE399 ;THEN GO TO FACE399
LDI LOOKR_COOK,00H
CJE4 MODER_PUSH1,02H,FACE364
; ORIM MK_KS,0010B ;COOK END
; ANDIM MARKSY,0111B
; LDI KEYM2LS,0FH
; LDI KEYM2HS,00H
FACE361:
LDI TIMESR_BZ,09H
ORIM MK_BZ,0100B ;working end then SOUND 5 TIMES
LDI MK_COOK,00H
ORIM MK_YUYUE,1000B ; DING SHI END
ANDIM MK_CIKONG,0111B
JMP WORK_END
FACE364:
LDA SUPRH_PUSH1,B1
STA SUPR,B0 ;SUPRH_PUSH1-->SUPR
LDI MODER_PUSH1,00H ;CLR MODER_PUSH1
LDI MK_COOK,0001B
LDI AUTORH,00H
LDI MK_DIS,1011B ;DISPLAY WEIGHT
LDI JETR,00H ; ANDIM MK_SY,1011B
JMP SUP2_START ;goto cooking 2 start
FACE399:
;****************************************************
;===================================================JET fire change
FACE5: ;
CJE4 JETR,00H,FACE599 ;IF AUTORH<0AH THEN GOTO FACE599
FACE5_ST:
LDI WK0,0011B
EOR MK_COOK,B0
BA0 FACE599
BA1 FACE599
LDA MK_COOK,B0 ;MK_COOK-->ACC
BA2 FACE599
LDA MK01L,B0
BA3 FACE599
FACE50:
LDI WDTR,1111B ;clr watch Dog timer
LDA FIRE1RH,B1
OR FIRE1RL,B1
BAZ FACE511
LDI LEVELRL_H,04H ;fire 1-0 (DEF1)
LDI LEVELRH_H,06H ;100
LDI LEVELRL_L,08H
LDI LEVELRH_L,07H ;120
CJB4 JETR,04H,FACE502
LDI LEVELRL_H,04H ;fire 1-1 (def1)
LDI LEVELRH_H,0BH ;180
LDI LEVELRL_L,08H
LDI LEVELRH_L,02H ;40
CJB4 JETR,08H,FACE502
LDI LEVELRL_H,00H ;fire 1-2 (def1)
LDI LEVELRH_H,0AH ;160
LDI LEVELRL_L,0CH
LDI LEVELRH_L,03H ;60
FACE502:
LDI WK0,0001B
EOR MK_CIKONG
BA0 FACE599
ANDIM MK_CIKONG,1110B ;CLR MK_CIKONG BIT 0
LDI WK0,01H
SUBM FIRE1RL,B1
LDI WK0,00H
SBCM FIRE1RH,B1 ;FIRE1RL-00H-CY-->FIRE1RL
JMP FACE599
;------------------------
FACE511:
LDA FIRE2RH,B1
OR FIRE2RL,B1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -