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

📄 oo.asm

📁 定时开关控制器
💻 ASM
📖 第 1 页 / 共 2 页
字号:
          NOP 

                  ACALL  DSPDEL             ;延时 

                  MOV    C,P3.7                ;读S4按键状态 

                  JC     NP1 

                  MOV    KEYCODE,#08H    ;S4按下,键盘值=8   

NP1:          MOV    P1,#0FFH              ;消隐 

                  NOP 

                  NOP 

                  MOV    A,B              ;显示秒的个位 

                  SWAP   A 

                  ORL    A,#0FH 

                  MOV    P1,A 

                  MOV    A,P3 

                  ANL    A,#07H 

                  ORL    A,#DPS0 

                  MOV    P3,A 

                  ACALL  DSPDEL 

                  MOV    C,P3.7 

                  JC     SS5 

                  MOV    KEYCODE,#0AH        ;S5按下,键值=#0AH 

SS5:           MOV    P1,#0FFH                   ;消隐 

                  NOP 

                  INC    R1 

          MOV    A,@R1                     ;调入分值 

                  MOV    B,#0AH 

                  DIV    AB             

                  SWAP   A                             ;显示分的十位 

                  ORL    A,#0FH 

                  MOV    P1,A 

                  MOV    A,P3 

                  ANL    A,#07H 

                  ORL    A,#DPM1 

                  MOV    P3,A 

                  ACALL  DSPDEL 

                  MOV    C,P3.7                 ;检测S2是否按下 

                  JC     NP2 

                  MOV    KEYCODE,#04H    ;S2按下,键盘值=4 

                  NOP 

NP2:          MOV    P1,#0FFH              ;消隐 

                  NOP 

                  NOP 

                  MOV    A,B 

                  SWAP   A                       ;显示分的个位 

                  ORL    A,#07H 

                  MOV    P1,A 

                  MOV    A,P3 

                  ANL    A,#07H 

                  ORL    A,#DPM0 

                  MOV    P3,A 

                  ACALL  DSPDEL 

                  MOV    C,P3.7                 ;判断S3是否按下 

                  JC     NP3 

                  MOV    KEYCODE,#06H    ;若S3按下,键盘值=6 

                  NOP         

NP3:          MOV    P1,#0F7H           ;消隐 

                  NOP 

                  INC    R1 

                  MOV    A,@R1                ;调入时值 

                  MOV    B,#0AH   

                  DIV    AB                    

                  SWAP   A                        ;显示时的十位 

                  JNZ    DISPLY1 

                  MOV    A,#0FFH 

DISPLY1:   ORL    A,#0FH 

                  MOV     P1,A 

                  MOV     A,P3 

                  ANL     A,#07H 

                  ORL    A,#DPH1 

                  MOV    P3,A 

                  ACALL  DSPDEL 

                  NOP 

                  MOV    A,B 

                  SWAP  A                   ;显示时的个位 

                  ORL   A,#07H 

                  MOV   P1,A 

                  MOV   A,P3 

                  ANL   A,#07H 

                  ORL   A,#DPH0 

                  MOV   P3,A 

                  ACALL DSPDEL 

                  MOV   C,P3.7                  ;判断S1是否按下 

                  JC    NP4 

                  MOV   KEYCODE,#02H      ;S1按下,键盘值=2 

                  NOP 

NP4:          MOV   P1,#0F7H         ;消隐 

                  NOP 

                  RET 

  

  

DSPDEL:    MOV   R7,#0FFH     ;延时程序0.5ms 

                  DJNZ  R7,$ 

        RET 

;************  比较设定值  ***************** 

  

COMP:      NOP 

YY1_1:        CLR   C 

                  MOV   R0,#K1ON 

                  NOP 

        NOP 

        ACALL  COMP1 

        MOV    A,CCB 

        JZ     YY1_2      ;CBB标志为0则转移('时间到'标志) 

        MOV    A,P3       ;取P3口原值 

        ORL    A,#01H     ;置位P1.0 

        MOV    P3,A 

YY1_2:        CLR   C 

                  MOV   R0,#K1OFF 

                  NOP 

        NOP 

        ACALL  COMP1 

        MOV    A,CCB 

        JZ     YY2_1       ;CBB标志为0则转移 

        MOV    A,P3 

        ANL    A,#0FEH     ;P1.0清0 

        MOV    P3,A 

YY2_1:        CLR C 

                  MOV   R0,#K2ON 

                  NOP 

        NOP 

        ACALL  COMP1 

        MOV    A,CCB 

        JZ     YY2_2      ;CBB标志为0则转移 

        MOV    A,P3 

        ORL    A,#02H     ;P1.1置位 

        MOV    P3,A 

YY2_2:        CLR   C 

                  MOV   R0,#K2OFF 

                  NOP 

        NOP 

        ACALL  COMP1 

        MOV    A,CCB 

        JZ     YY3_1      ;CBB标志为0则转移 

        MOV    A,P3 

        ANL    A,#0FDH    ;P1.1清0 

        MOV    P3,A 

YY3_1:        CLR    C 

                  MOV    R0,#K3ON 

                  NOP 

        NOP 

        ACALL   COMP1 

        MOV     A,CCB 

        JZ      YY3_2      ;CBB标志为0则转移 

        MOV     A,P3 

        ORL     A,#04H     ;P1.2置位 

        MOV     P3,A 

YY3_2:        CLR    C 

                  MOV    R0,#K3OFF 

                  NOP 

        NOP 

        ACALL  COMP1 

        MOV    A,CCB 

        JZ     YY4         ;CBB标志为0则转移 

        MOV    A,P3 

        ANL    A,#0FBH     ;P1.2置位 

        MOV    P3,A 

        NOP 

        NOP 

YY4:     RET 

  

COMP1:     CLR   C 

                  MOV   A,R0 

                  ADD   A,#02H   ;先比较小时值,相等再看分钟,秒钟值是否相等 

          MOV   R0,A           ;R0为比较器的入口地址,指向设定值的小时值 

          MOV   A,TH 

                  SUBB  A,@R0 

                  JNZ   COMP2         ;不相等,停止比较 

                  CLR   C 

                  MOV   A,TM 

                  DEC   R0            ;指向分钟值 

                  SUBB  A,@R0 

                  JNZ   COMP2         ;不相等,停止比较 

                  CLR   C 

                  MOV   A,TS 

                  DEC   R0            ;指向秒钟值 

                  SUBB  A,@R0 

                  JNZ   COMP2         ;不相等,停止比较 

           MOV  CCB,#01H      ;'时间到'标志置位 

           MOV  @R0,#OFF      ;如全部相等则将该预设置复位 

        INC  R0 

        MOV  @R0,#OFF 

        INC  R0 

        MOV   @R0,#OFF 

        SJMP  COMP3 

COMP2:     MOV  CCB,#00H      ;'时间到'标志清0 

COMP3:     RET 

  

  

                  END 

                  

⌨️ 快捷键说明

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