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

📄 timing.asm

📁 本程序使用STC单片机控制
💻 ASM
📖 第 1 页 / 共 2 页
字号:
                 INC    DPTR
                 MOVX   A,@DPTR                   ;THE  NEXT MINUTE IS IN R5
                 MOV    R5,A
                 MOV    A,R4
                 CJNE   A,RHOUR,LL3
                 MOV    A,R5
                 CJNE   A,RMINUTE,LL3
                 MOV    A,TMSG
                 INC    A
                 CLR    C
                 CLR    AC
                 MOV    TMSG,A
                 NOP    
                 LJMP   CKTAB
      LL3:       NOP
                 JC     BIGGER
                 NOP
                 LJMP   FOUND
   BIGGER:       MOV    A,TMSG
                 INC    A
                 CLR    C
                 CLR    AC
                 DA     A   
                 MOV    TMSG,A
                 NOP
                 LJMP   CKTAB                   
    FOUND:       CPL    DOG
                 MOV    A,TMSG              ;获得当前时段
                 LCALL  BCDBIN
               MOV      R4,A
               LCALL    JSSD    ;计算时段条地址,R4为时段值

                 INC    DPTR
                 MOVX   A,@DPTR              ;根据时段,查得当前方案
                 CJNE   A,#55H,CHEKA
                 CLR    ONOFF
    CHEKA:       CJNE   A,#0AAH,CHEKB
                 SETB   ONOFF
    CHEKB:       NOP
                 LJMP   RDTIME





                    
;TABL2 是时段方案表
       TABL2: DB 01H,55H,06H,00H  
              DB 02H,0AAH,08H,30H
              DB 03H,55H,10H,30H
              DB 04H,0AAH,12H,30H
              DB 05H,55H,14H,00H
              DB 06H,0AAH,16H,00H
              DB 07H,55H,18H,00H
              DB 08H,0AAH,21H,30H
              ;时段序号,方案,小时,分钟
;

     BINBCD:    PUSH B     ;二进制与BCD码转换子程序,以寄存器A为接口
                MOV B,#64H
                DIV AB
                MOV A,B
                MOV B,#0AH
                DIV AB
                SWAP A
                ADD A,B
                POP B
                RET

    BCDBIN:     PUSH B    ;BCD码与二进制转换子程序,以寄存器A为接口
                XCH A,R5
                PUSH ACC
                MOV A,R5
                SWAP A
                ANL A,#0FH
                MOV B,#0AH
                MUL AB
                XCH A,R5
                ANL A,#0FH
                ADD A,R5
                MOV R5,A
                POP B
                POP ACC
                XCH A,R5
                RET




;
   S_PORT: PUSH    DPH
	PUSH    DPL
	PUSH    ACC
	PUSH    B
	PUSH    PSW
	SETB    RS1
	SETB    RS0
	
  JBC     TI,SPERR
	LCALL   SPIN
;	JC      SPERR
	CJNE    A,#55H,SPERR
	LCALL   SPIN
;	JC      SPERR
	CJNE    A,#0AAH,SPERR
	LCALL   SPIN
;	JC      SPERR
	CJNE    A,#0FFH,SPERR
	LCALL   SPIN
;	JC      SPERR
	CJNE    A,#LW_ADDR,SCRNOT2
	SJMP    SCRNOT1
SCRNOT2:CJNE    A,#0FFH,SCRNOT3
	SJMP    SCRNOT1
SCRNOT3:MOV     A,#LW_ADDR
	CJNE    A,#0FFH,SCRNOT4
	SJMP    SCRNOT1
SCRNOT4:LJMP    EXITSP
SCRNOT1:
	LCALL   SPIN
;	JC      SPERR
	CJNE    A,#0FAH,REVSD

	MOV		DPTR,#SD_ADDR  ;接收时段
	MOV		R0,#SD_NUM
REVLOP: LCALL   SPIN
	MOVX    @DPTR,A
	INC     DPTR
    CPL		DOG
	DJNZ    R0,REVLOP		
;	
SPERR:  LJMP     EXITSP
REVSD:	CJNE    A,#0FBH,REVHS  ;更改时间
        LCALL   SPIN
        MOV     B,A
        LCALL   SPIN
        PUSH    ACC        
                 MOV DPTR,#000BH 
                 MOV A,#0A2H
                 MOVX @DPTR,A
                 MOV DPTR,#0004H  ;将小时值写入12887
                 MOV A,B
                 MOVX @DPTR,A
                 MOV RHOUR,A
                 MOV DPTR,#0002H ;将分钟值写入12887
                 POP  ACC
                 MOVX @DPTR,A
                 MOV RMINUTE,A
                 MOV DPTR,#000BH
                 MOV A,#22H
                 MOVX @DPTR,A
            LJMP     EXITSP
REVHS:	CJNE    A,#0FCH,REVRET  ;要求控制机回送时段表
	MOV     A,#55H
	LCALL   SENDBYTE
	MOV     A,#0AAH
	LCALL   SENDBYTE
	MOV     A,#0FFH
	LCALL   SENDBYTE
	MOV     A,#LW_ADDR
	LCALL   SENDBYTE
	MOV     A,#0FCH
	LCALL   SENDBYTE
	MOV		DPTR,#SD_ADDR  ;回送时段
	MOV		R0,#SD_NUM
HSLOP: MOVX    A,@DPTR
    LCALL   SENDBYTE	
	INC     DPTR
    CPL		DOG
	DJNZ    R0,HSLOP		
            LJMP     EXITSP
REVRET:	CJNE    A,#0FDH,EXITSP  ;要求控制机重新启动显示屏电源,以便更改主板IP地址
    MOV   C,ONOFF
    MOV   ONOFF_FLG,C
    SETB  ONOFF
    MOV  R0,#30
WAITRST1:    MOV  R1,#10
WAITRST2:    MOV  R2,#180
WAITRST3: MOV  R3,#255
WAITRST4: DJNZ R3,WAITRST4
    CPL		DOG
    DJNZ R2,WAITRST3
    DJNZ R1,WAITRST2
    DJNZ R0,WAITRST1
    MOV   C,ONOFF_FLG
    MOV   ONOFF,C
            LJMP     EXITSP
;                       
EXITSP: NOP
	POP     PSW
	POP     B
	POP     ACC
	POP     DPL
	POP     DPH
	RETI
;
SENDBYTE:;CLR  ES
        ;MOV  C,P
        ;MOV  TB8,C
        MOV  SBUF,A
WAIT:   JBC  TI,OUTS
        AJMP WAIT        
OUTS:   ;SETB ES
        RET                      
;
SENDBYTE2:CLR  TI
        MOV  C,P
        MOV  TB8,C
        MOV  SBUF,A
        CLR  RI
        RET                      
;
	SPIN:   MOV     R6,#80H
SPIN2:  MOV     R7,#0FFH
SPIN1:  JB      RI,SPIN0                ;WAITING RECEIVER
	CLR     C
	DJNZ    R7,SPIN1
	DJNZ    R6,SPIN2
	SETB    C
	RET
SPIN0:  MOV     A,SBUF
	CLR     RI
	RET 
;
	MOV     C,RB8           ;ODD/EVEN TEST
	JC      SPINTS
	ORL     C,P
	RET
SPINTS: ANL     C,P
	CPL     C               ;IF C=0,THEN EVEN,CORRECT
	RET                     ;   c=1, error
;*******************************************************
INCR0R1:CJNE    R0,#0FFH,INCR11
	MOV     R0,#00H
	INC     R1
	SJMP    INCR12
INCR11: INC     R0
INCR12: RET
;
;**********************************************
DECDPTR:PUSH    PSW              ;DPTR=DPTR-1
	XCH     A,DPL
	ADD     A,#0FFH
	XCH     A,DPL
	XCH     A,DPH
	ADDC    A,#0FFH
	XCH     A,DPH
	POP     PSW
	RET
;**********************************************
;计算时段条地址,R4为时段值
      JSSD:     MOV      DPTR,#SD_ADDR     
               MOV      A,DPL
               CLR      C
               SUBB     A,#SD_LONG ;将SD_ADDR减4,是因为在下面的循环加法      
               MOV      DPL,A      ;中,SD_ADDR至少会加一次
               MOV      A,DPH
               SUBB     A,#0
               MOV      DPH,A
      LL:      MOV      A,DPL
               CLR      C
               ADD      A,#SD_LONG
               MOV      DPL,A
               CLR      A
               ADDC     A,DPH
               MOV      DPH,A
               DJNZ     R4,LL          ;DPTR存储时段条地址
               RET
;**********************************************
                END    

⌨️ 快捷键说明

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