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

📄 计时器-2.dt

📁 一个自用的计时器控制电路
💻 DT
字号:
/*
实现上网1小时后,断开网络4小时。

如果断开电源60秒,再上电,可以再上网5分钟。


*/


 include "inc.h"

tm_hour  	== 0x20
tm_minute == 0x21
tm_500ms == 0x22
tm_if_use == 0x23 ;是否开始上网的标志 4分钟算
tm_minute_charge == 0x24 ;开始计时,允许上网60分钟
tm_for_open_5m == 0x25



flagBnetUse     == 0x10
BnetUse         == 0
flagBnetoff     == 0x10
Bnetoff	     == 1
flagB_500ms	 == 0x10
B_500ms		 == 2
flagBlast_staH  == 0x10
Blast_staH	  == 3	



Bled_start == 7 ;		开始计时指示灯
Brelay     == 6 ;控制继电器 =0时,关断网络

;====================================================
    ORG    0X0000

    nop;      ;程序复位入口
    JMP    RESET_START    ;指令中断入口

    ORG    0X0008 ;page 0

;    中断断点保护
 
EXT_INT:
    DISI
    MOV    TEMP_ACC,A    ;将ACC的值存在T_ACC中

    SWAPA   R3    ;将R3的值SWAP后存于ACC
    MOV    TEMP_R3,A    ;将ACC的值存在T_R3中
	BC	R3,rpage

    MOV    A,FSR
    BS    R4,RP1
    BC    R4,RP0
    MOV    TEMP_FSR,A    ;将FSR的值存在TEMP_FSR中

    MOV    A,RPPS    ;将RPPS的值存在TEMP_RPPS中
    MOV    TEMP_RPPS,A

	mov	a,rb
	mov	temp_rb,a
    BC    R4,RP1

    BC    RB,CALL_1
    BC    RB,CALL_2
    MOV    A,RCIDA    ;主程中CID地址保护
    MOV    PTR_MCID,A
	bs	r4,rp1
    PAGE    @0X00

    JBC    RISR,TCIF;发按键声音低频
    JMP    FSK_INT;rtcc中断fsk解码

		 
    MOV	A,@0X00
    JMP    RET_INTX	;dtmf中断
 
		MOV    A,@MASK_int0		 
		JMP    RET_INTX

FSK_INT:
    Bc    R4,RP1
    INC    tm_500ms
    Bs    R4,RP1
    bs flagB_500ms,B_500ms
    
    jbc flagBnetoff,Bnetoff
    jmp led_net_off
    mov a,@0x0e
    xor port7,a
    MOV    A,@MASK_TCIF;MASK_C8_1
    JMP    RET_INTX
    
led_net_off:
    Bc    R4,RP1
    mov a,@0x0e
    jbs    tm_500ms,0
    xor port7,a
    Bs    R4,RP1
    MOV    A,@MASK_TCIF;MASK_C8_1
    JMP    RET_INTX

;    中断返回    恢复断点


RET_INTX    MOV    RISR,A
RET_INTX0:
    mov	a,temp_rb
    mov	rb,a

    BC   R4,RP1
    MOV    A,PTR_MCID
    MOV    RCIDA,A
	bs	r4,rp1

    JBS  RPPS,PWDN
    BC    TEMP_RPPS,PWDN
    MOV    A,TEMP_RPPS    ;恢复RPPS的值
    MOV    RPPS,A

    MOV    A,TEMP_FSR    ;恢复FSR的值
    MOV    FSR,A

    SWAPA    TEMP_R3    ;将T_R3的值SWAP后存于ACC
    MOV    R3,A    ;将ACC的值SWAP后存于R3

    SWAP    TEMP_ACC    ;将T_ACC的值SWAP
    SWAPA    TEMP_ACC    ;将T_ACC的值SWAP后存于ACC

    RETI    ;中断返回






RESET_START:
		add a,@0xff;
		add a,@0xff;
		add a,@0xff;
		add a,@0xff;
		add a,@0xff;
		add a,@0xff;
		add a,@0xff;
		
		mov a,@0x80
		mov ra,a		
		mov a,@0x44;
		contw		
		mov a,@0x01
		iow iocf
		
		clr r4
		clr tm_hour
		clr tm_minute
		clr tm_500ms
		clr tm_if_use
		clr tm_minute_charge
		mov a,@00
		iow ioc5
		iow ioc6
		iow ioc8
		iow ioc9
		
		mov a,@0x01
		iow ioc7	
		mov a,@0xfa
		mov port7,a
    BS    R3,RPAGE    ;PORT7
    MOV    A,@0X01
    IOW    PPORT7
    clr   R3 
		
		
		bs port7,Brelay ;开 bit6
		bc flagBnetUse,BnetUse
		bc flagBnetoff,Bnetoff				
lp_wait0: clr tm_if_use
LP_wait:
not_1minute:
		eni
;----------------------------------
Press_60S_open_5minute:		
	jbc flagB_500ms,B_500ms;1S的标志
	jbs flagBnetoff,Bnetoff  ;59-62秒
	jmp not_pro_key
	bc flagB_500ms,B_500ms ;变低60秒,开5分钟
	jbs flagBlast_staH,Blast_staH
	jmp have_low
_last_sta_H:
	jbs port7,0
	clr tm_for_open_5m
	jmp not_pro_key
have_low:
	inc tm_for_open_5m;500ms加1	
	
	jbs port7,0
	jmp not_pro_key
	mov a,@56
	sub a,tm_for_open_5m
	jbs psw,c
	jmp not_pro_key
	mov a,@63  ;57-62
	sub a,tm_for_open_5m
	jbs psw,c
	jmp Open_net_5minute
	
	
not_pro_key:
	bc flagBlast_staH,Blast_staH
	jbc port7,0
	bs flagBlast_staH,Blast_staH
;----------------------------------
		clr r4
		mov a,@59*2;59
		sub a,tm_500ms 
		JBs r3,c 
		jmp not_1minute
;-------------到了1分钟!--------
		clr tm_500ms 
		jbs port7,0
		jmp reach_1minute
		inc tm_if_use
		mov a,@5;
		sub a,tm_if_use
		jbs psw,c
		jmp reach_1minute

		jbs  flagBnetUse,BnetUse;
	    clr tm_minute_charge ;
		bs  flagBnetUse,BnetUse;
		bc  port7,Bled_start ;6
reach_1minute:
		inc tm_minute
		jbs  flagBnetUse,BnetUse
		jmp LP_wait
		inc tm_minute_charge
		mov a,@60
		jbc flagBnetoff,Bnetoff		
		mov a,@250 ;关断4小时后,重新复位!
		sub a,tm_minute_charge
		jbS psw,c
		jmp LP_wait
;----------------------------------
		clr tm_minute_charge		
		jbc flagBnetoff,Bnetoff
		jmp net_open
net_off:
		mov a,@0x01+0x40
		iow ioc7  
		bs flagBnetoff,Bnetoff			
		jmp LP_wait
net_open:
		jmp RESET_START

;标准断电30秒,开5分钟的网络。
;		
;		
					
Open_net_5minute:
		mov a,@0x01
		iow ioc7	
		mov a,@0xfe
		mov port7,a
		
		clr r4
		clr tm_minute
lp_5m:
not_1minute0:
		clr r4
		mov a,@59*2;59
		sub a,tm_500ms 
		JBs r3,c 
		jmp not_1minute0
;-------------到了1分钟!--------
		inc tm_minute
		mov a,@0x05
		sub a,tm_minute
		jbs psw,c
		jmp lp_5m
		
		jmp net_off;lp_wait
		
		
		
		
				
	
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		
		

⌨️ 快捷键说明

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