por vanessa » 13 Jan 2013 22:03
desejo que alguem olhe o codigo a seguir, ele é de um alarme com sensor iv que dispara quando o feixe é interrompido, o feixe é continuo e eu queria usar o sleep para fazer com que o feixe seja desligado de quando em quando economizando energia mas parece que o wdt nao esta acordando o pic. se eu tiro a funcao sleep o codigo funciona.
O QUE EU TO FAZENDO DE ERRADO, POR QUE NAO SAI DO SLEEP?
obs; antes que alguem diga que eu preciso desligar as saídas referentes aos bits <1:0> antes de entrar em sleep para economizar energia, vou fazer isso, mas primeiro eu tenho que fazer o wake up funcionar senao vira bagunca o codigo.
list p=16F688
#include <p16F688.inc>
errorlevel -302 ; no warnings about registers not in bank 0
;***** CONFIGURATION
; ext reset, no code or data protect, no brownout detect,
; no watchdog, power-up timer, 4Mhz int clock
__CONFIG _PWRTE_ON & _BOD_OFF & _MCLRE_OFF & _WDT_ON & _INTRC_OSC_NOCLKOUT & _CP_OFF & _CPD_OFF & _INTOSCIO & _FCMEN_OFF & _IESO_OFF
RESET CODE 0x0000
goto inicio
inicio
clrwdt
movlw b'000000'
banksel TRISA
movwf TRISA
movlw b'000011'
banksel PORTA
movwf PORTA
vigilancia
clrwdt
btfss PORTA,3 ;RA3
goto finalizou
sleep
nop
goto vigilancia
;;;fim vigilancia
finalizou
movlw b'000111'
banksel PORTA
movwf PORTA
goto finalizou
END