Proceso de inactividad necesito consejos

Buenos dias, tardes o noches, antes de todo.

Estoy haciendo un proyecto para la escuela, que es el control de una maquina con 5 sensores diferentes y lo he terminado, pero el profesor me pidio que le agregara una fncion extra.

Que se durante 2 minutos no se activa ninguno de los sensores que el pic se apague o pasa a modo "sleep".

el codigo principal es:

Código:
	include	"p16f84.inc"

tiempo1	equ	0x30		;Usados para temporizar
tiempo2	equ	0x31
tiempo3	equ	0x32
tiempo4	equ	0x33

	org	0x0000

	CLRF	STATUS
	CLRF	PORTA
	CLRF	PORTB
	BSF	STATUS, RP0
	MOVLW	0x00		;Configurar Puerto A como Salida
	MOVWF	TRISA
	MOVLW	0xFF		;Configurar Puerto B como Entrada
	MOVWF	TRISB
	BCF	STATUS, RP0


INICIO		BTFSC	PORTB, 0	;Checar Sensor 1
		GOTO	DISPARO
		BTFSC	PORTB, 1	;Checar Sensor 2
		GOTO	DISPARO
		BTFSC	PORTB, 2	;Checar Sensor 3
		GOTO	DISPARO
		BTFSC	PORTB, 3	;Checar Sensor 4
		GOTO	DISPARO
		BTFSC	PORTB, 4	;Checar Sensor 5
		GOTO	DISPARO
		GOTO	INICIO


DISPARO		BSF	PORTA, 0	;Mandar 1 a Maquina
		MOVLW	d'150'		;Esperar 150 mSegundo
		CALL	DEMO1mS
		MOVLW	d'150'		;Esperar 150 mSegundo
		CALL	DEMO1mS
		BCF	PORTA, 0	;Mandar 0 a Maquina
		MOVLW	d'3'
		CALL	DEMO1S
		GOTO	INICIO
		


DEMO1S	movwf	tiempo4
TOP4	movlw	d'4'
	movwf	tiempo3
TOP3	movlw	d'250'
	call	DEMO1mS
	decfsz	tiempo3
	GOTO	TOP3
	decfsz	tiempo4
	GOTO	TOP4
	movlw	d'3'
	call	DEMO1mS
	movlw	d'105'		
	movwf	tiempo1		
TOP5	nop			
	nop			
	nop			
	nop			
	nop			
	nop			
	decfsz	tiempo1, 1	
	GOTO	TOP5
	nop			
	nop			
	nop			
	nop			
	nop			
	nop			
	nop			
	return


DEMO1mS	movwf	tiempo2		;Rutina de 1mS
TOP2	movlw	d'221'		
	movwf	tiempo1		
TOP1	nop			
	nop			
	nop			
	nop			
	nop			
	nop			
	decfsz	tiempo1, 1	
	goto	TOP1		
	decfsz	tiempo2, 1	
	goto	TOP2	
	nop
	nop
	nop
	nop
	nop	
	return		

end


Esos tiempos son parte del proceso que me solicito primero, esoty trabajando con un PIC16f84 con un cristal de 8MHz.

Gracias de Antemano por sus respuestas
 
Con el programa que tienes no creo que puedas implementar esa funcion de un modo simple, lo que tienes que hacer es reestructurar tu programa completamente, hacerlo "modular" y meter interrupciones usando el timer integrado

despues en la rutina principal activar una bandera cada vez que se tenga que realizar un proceso, esta bandera le "informaciónrmara" a la rutina que apague el PIC que se esta trabajando y que no cuente el tiempo, por el contrario si la bandera esta apagada entonces la rutina se mantendra contando y si llega a su tiempo limite procede a apagar el pic....
 
Atrás
Arriba