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

📄 demo_69p25.asm

📁 sinoweath 69p25 demo test program
💻 ASM
📖 第 1 页 / 共 5 页
字号:
     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 + -