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

📄 main.src

📁 一个家庭自动控制器
💻 SRC
📖 第 1 页 / 共 5 页
字号:

TJF_TBB2:         CP SHIFTE,#00H
                  JP EQ,TJF_TBB966
                  CP PRO_SHIFTE,#00H
                  JP UGT,TJF_TBB1001
                  
TJF_TBB966:       LD P_WEEK,#01H
                  LD P_TIME,#00H
                  LD P_MINITE,#00H
                  LD P_AMPM,#01H
                  CP PRO_SHIFTE,#00H
                  JP UGT,TJF_TBB1001
                  LD PRO_SHIFTE,#01H
TJF_TBB1001:      CP MODLE,#04H
                  JP NE,MAOJIBA
                  OR P2,#00001000B
                  LD SHIFTE,#01H                  
MAOJIBA:          CP R7,#00H
                  JP UGT,TJF_TB98
                  LD R7,WEEK 
TJF_TB98:         CP R7,P_WEEK
                  JP UGT,TJF_TBB3
                  JP ULT,TJF_TB99
                  ADD R10,#03H
                  CP P_AMPM,@R10             ;关灯时间大于当前时间时,
                  JP ULT,TJF_TBB3            ;检查标记存储器中与该状态的关灯时间熟大 
                  JP UGT,TJF_TB99
                  
                  LD R8,R10
                  CALL JISHIBEN
                  CP P_TIME,R14
                  JP ULT,TJF_TBB3
                  JP UGT,TJF_TB99
                  DEC R10
                  CP P_MINITE,@R10
                  JP UGE,TJF_TB99
TJF_TBB3:         LD P_WEEK,R7                  ;与标记存储器比较后,大的存入标记存储器
                  ADD R11,#03H                  
                  LD R8,R11
                  CALL JISHIBEN
                  LD P_TIME,R14
                  DEC R11
                  LD P_MINITE,@R11
                  INC R11
                  LD P_AMPM,@R11
TJF_TB99:         RET
        ;------JUMP到此处 
RELOLD_P:         CP PRO_SHIFTE,#00H
                  JP UGT,JIER
                  LD PRO_SHIFTE,#01H
JIER:             LD P_WEEK,WEEK
                  LD P_TIME,#0BH
                  TCM TIP,#00001000B
                  JP Z,MAPI
                  LD P_TIME,#17H
MAPI:             LD P_MINITE,#3BH
                  LD P_AMPM,#0FEH
                  RET
     ;--------------检查是否为中午12点,函数-----------------;

JISHIBEN:         SUB R8,#02H
                  LD R15,TIME
                  LD R14,@R8
                  TM TIP,#00001000B
                  JP Z,BAIXUE
                  CP TIME,#0CH
                  JP NE,YONGLEXIN                  
                  LD R15,#00H 
YONGLEXIN:        CP R14,#0CH
                  JP NE,BAIXUE
                  LD R14,#00H
BAIXUE:           RET 
  

        ;-----------------星期有没有相等的?函数---------------; 
DAY_COMPER:       LD R15,#0C0H
FANDEHEN:         CLR @R15
                  INC R15
                  CP R15,#0C7H
                  JP ULE,FANDEHEN

                  LD R13,@R8
                  CP R13,#07H            
                  JP UGT,TJF_TB1
                  LD R7,@R8
                  JP TJF_TB
TJF_TB1:          CP R13,#08H
                  JP UGT,TJF_TB2
                  LD R0,#01H
                  LD R1,#02H
                  LD R2,#03H
                  LD R3,#04H
                  JP TJF_TB
TJF_TB2:          CP R13,#09H
                  JP UGT,TJF_TB3
                  LD R0,#01H
                  LD R1,#02H
                  LD R2,#03H
                  LD R3,#04H
                  LD R4,#05H
                  JP TJF_TB
TJF_TB3:          CP R13,#0AH
                  JP UGT,TJF_TB4
                  LD R0,#01H
                  LD R1,#02H
                  LD R2,#03H
                  LD R3,#04H
                  LD R4,#05H
                  LD R5,#06H
                  JP TJF_TB
TJF_TB4:          CP R13,#0BH
                  JP UGT,TJF_TB5
                  LD R0,#01H
                  LD R1,#02H
                  LD R2,#03H
                  LD R3,#04H
                  LD R4,#05H
                  LD R5,#06H
                  LD R6,#07H
                  JP TJF_TB
TJF_TB5:          CP R13,#0CH
                  JP UGT,TJF_TB6
                  LD R4,#05H
                  LD R5,#06H
                  LD R6,#07H
                  JP TJF_TB
TJF_TB6:          LD R5,#06H
                  LD R6,#07H

TJF_TB:           CP WEEK,R7
                  JP EQ,TJF_TB7
                  CP WEEK,R0
                  JP EQ,TJF_TB7
                  CP WEEK,R1
                  JP EQ,TJF_TB7
                  CP WEEK,R2
                  JP EQ,TJF_TB7
                  CP WEEK,R3
                  JP EQ,TJF_TB7
                  CP WEEK,R4
                  JP EQ,TJF_TB7
                  CP WEEK,R5
                  JP EQ,TJF_TB7
                  CP WEEK,R6
                  JP EQ,TJF_TB7
                  LD R9,#00H      ;星期没有相等的 
                  RET
TJF_TB7:          LD R9,#01H      ;星期有相等的 
                  RET
;**************************************************************************
;-----------------------------------------------------------------
;     -------------倒计数函数  显示部分--------------
;-----------------------------------------------------------------    
COMPER_TIME_Z:    OR P2,#00001000B            ;   开灯 
                  LD SHIFTE,#01H                           
                  INC ROLL_LIGHT  
                  CP ROLL_LIGHT,#01H
                  JP UGT,DIS_5_F
                  LD LCD_BUFFER+5,#10000100B
                  LD LCD_BUFFER+6,#00000000B
                  JP Z_NZ
DIS_5_F:          CP ROLL_LIGHT,#02H
                  JP UGT,DIS_5_E
                  LD LCD_BUFFER+5,#00001100B
                  LD LCD_BUFFER+6,#00000000B
                  JP Z_NZ
DIS_5_E:          CP ROLL_LIGHT,#03H
                  JP UGT,DIS_5_D
                  LD LCD_BUFFER+5,#00011000B
                  LD LCD_BUFFER+6,#00000000B
                  JP Z_NZ
DIS_5_D:          CP ROLL_LIGHT,#04H
                  JP UGT,DIS_6_D
                  LD LCD_BUFFER+5,#00010000B
                  LD LCD_BUFFER+6,#00010000B
                  JP Z_NZ
DIS_6_D:          CP ROLL_LIGHT,#05H
                  JP UGT,DIS_6_C
                  LD LCD_BUFFER+5,#00000000B
                  LD LCD_BUFFER+6,#00110000B
                  JP Z_NZ
DIS_6_C:          CP ROLL_LIGHT,#06H
                  JP UGT,DIS_6_B
                  LD LCD_BUFFER+5,#00000000B
                  LD LCD_BUFFER+6,#01100000B
                  JP Z_NZ
DIS_6_B:          CP ROLL_LIGHT,#07H
                  JP UGT,DIS_6_A
                  LD LCD_BUFFER+5,#00000000B
                  LD LCD_BUFFER+6,#11000000B
                  JP Z_NZ
DIS_6_A:          LD LCD_BUFFER+5,#10000000B
                  LD LCD_BUFFER+6,#10000000B
                  LD ROLL_LIGHT,#00H

Z_NZ:             CP COUNT_TIME,#00H
                  JP EQ,JPJP
                  RET
JPJP:             CP COUNT_MIMITE,#00H
                  JP EQ,JPJPJP
                  RET
JPJPJP:           AND P2,#11110110B
                  LD SHIFTE,#00H
                  LD MODLE,#04H
                  CALL ATUO_SET ;时间到后自动调用“自动模式”之后的关灯与否由 “自动模式判断 
                  RET
;-----------------------------------------------------------------
;     -------------随机模式中加载程序控制函数--------------
;-----------------------------------------------------------------
COMPER_TIME_R:    LD R8,#3FH
                  CALL TJF_TB100                            ;该开的时候严格开,该关的时候严格关 
                  LD R8,#47H
                  CALL TJF_TB100

                  CP PRO_SHIFTE,#00H
                  JP EQ,HULALA369
                  CP PRO_SHIFTE,#04H
                  JP UGE,HULALA                  
                  LD R3,#06H
                  CALL HAPI
HULALA:           CP PRO_SHIFTE,#19H
                  JP UGE,HULALA147
                  CP SHIFT_SHIFT,MINITE
                  JP EQ,HULALA369
                  DEC PRO_SHIFTE
                  LD SHIFT_SHIFT,MINITE
                  CP PRO_SHIFTE,#05H
                  JP NE,HULALA369
                  OR P2,#00001000B         ;开 
                  LD SHIFTE,#01H 
                  LD R3,#28H
                  CALL HAPI
HULALA147:        CP PRO_SHIFTE,#3CH
                  JP UGE,HULALA258
                  CP SHIFT_SHIFT,MINITE
                  JP EQ,HULALA369
                  DEC PRO_SHIFTE
                  LD SHIFT_SHIFT,MINITE
                  CP PRO_SHIFTE,#1EH
                  JP NE,HULALA369
                  AND P2,#11110110B   ;关
                  LD SHIFTE,#00H                  
                  LD R3,#5AH
                  CALL HAPI
HULALA258:        CP SHIFT_SHIFT,MINITE
                  JP EQ,HULALA369
                  DEC PRO_SHIFTE
                  LD SHIFT_SHIFT,MINITE
                  CP PRO_SHIFTE,#41H
                  JP NE,HULALA369
                  OR P2,#00001000B
                  LD SHIFTE,#01H
                  LD R3,#28H
                  CALL HAPI
                  
HULALA369:        CALL TIMEOFF
                  RET

          ;---------------------------;
HAPI:             LD R2,MIDLL_VORT
                  LD R1,#04H
HAPIGG:           RCF
                  RRC R2
                  DEC R1
                  CP R1,#00H
                  JP UGT,HAPIGG
                  ADD R2,R3
                  LD PRO_SHIFTE,R2
                  LD SHIFT_SHIFT,MINITE
                  RET
;----------------------------------------------------------------
;     --------------扫描--------------
;----------------------------------------------------------------
SHAOMIAO:      LD R15,#00H
CHUZHI:        LD P3,#01111111B     ;键盘操作 
               CP SHIFTE,#01H
               JP NE,CHUZHI258
               CALL delay_100ms
               JP CHUZHI147              
CHUZHI258:     CALL delay_500ms
CHUZHI147:     LD KEY_FLAG,P3               
               CP KEY_FLAG,#01111111B
               JP EQ,CHUZHI369
               RET
CHUZHI369:     INC R15
               CP R15,#04H
               JP ULT,CHUZHI
               RET

;-----------------------------------------------------------------------------------               
DISP_TIME:      CALL MASSGE_DISP        ;判断当前时钟设置的位置,并加载显示当前内容
                CALL RADOMER999
                CP R15,#0AAH
                JP EQ,uvwxyzOP
                CALL RANDGRAT02
                RET
uvwxyzOP:       CALL uvwxyz
                RET
;------------------------------------------------------------------------------------
uvwxyz:         LD R14,TIME_FLAG     ;-----------------初始化以前设置的内容 
                CALL DISPLAY_DIGE
                LD LCD_BUFFER+1,R15      
                LD R14,TIME_FLAG1
                CALL DISPLAY_DIGE
                LD LCD_BUFFER+2,R15  ;相应位开(时针)                 
                LD R14,MINITE_FLAG   ;--初始化以前设置的内容      
                CALL DISPLAY_DIGE
                LD LCD_BUFFER+3,R15      
                LD R14,MINITE_FLAG1
                CALL DISPLAY_DIGE
                LD LCD_BUFFER+4,R15  ;相应位开(分针)
                
                OR LCD_BUFFER+7,#40H
                RET
;;----------------------------------------------------------------------------------
RADOMER999:     LD R15,#55H
                CP LEED_FLAG,#0CH                  ;随机模式的判断ALL,start; 
                JP ULE,SAME
                LD R14,TIP
                AND R14,#08H
                CP R14,#08H
                JP EQ,RANDGRAT90                
                CP TIME_FLAG,#02H
                JP ULT,SAME
                CP TIME_FLAG1,#04H
                JP ULT,SAME
                RET               
RANDGRAT90:     CP AMPM_FLAG,#01H
                JP NE,SAME
                CP TIME_FLAG,#01H
                JP ULT,SAME
                CP TIME_FLAG1,#02H
                JP ULT,SAME
                RET
SAME:           LD R15,#0AAH
                RET
               
;---------------------------------------------------------------------------------                
RANDGRAT02:     LD LCD_BUFFER+1,#0EEH
                LD LCD_BUFFER+2,#1CH
                LD LCD_BUFFER+3,#1CH
                LD LCD_BUFFER+4,#00H
                AND LCD_BUFFER,#7FH
                AND LCD_BUFFER+7,#3FH
                RET                              ;随机模式的显示ALL

               .END   
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -