Hi;
Here is a program that i wrote in the past.
Code:'**************************************************************** '* Name : Temporizador 3m p/ Lavar Dentes.BAS * '* Author : gadelhas * '* Notice : Copyright (c) 2012 ProSystems * '* : All Rights Reserved * '* Date : 01-03-2012 * '* Version : 1.0 * '* Notes : Proteus + Circuito com SOT-23 e CR2032 * '* : 10F222 - Wake from sleep através de IOC no GP3 * '**************************************************************** @ __config _IOFSCS_4MHZ & _WDT_OFF & _MCLRE_OFF & _CP_OFF & _MCPU_ON DEFINE OSC 4 '===================SRF AND PINOUT CONFIGURATION - 1-In / 0-Out================= '76543210 TRISIO = %00001000 GPIO = %00000000 OPTION_REG = %00000000 'OPTION_REG.7 - Wake on change bit 0=Enable ADCON0 = %00000000 'Analog pins disable '==================================ALIAS======================================== VAZIO1 VAR GPIO.0 VAZIO2 VAR GPIO.1 LED VAR GPIO.2 MCLR vAR GPIO.3 GPWUF var STATUS.7 '=================================VARIABLES===================================== I VAR BYTE C VAR BYTE: C = 0 '================================MAIN LOOP====================================== @ movlw 0x01A ;OSCCAL Value @ movwf OSCCAL IF GPWUF = 0 THEN DESLIGA 'Test what caused the Reset Main: WHILE MCLR = 0 'If button pressed for 3 seconds, turn on led PAUSE 100 C = C + 1 IF C = 30 THEN LIGA WEND FOR I = 0 TO 119 '~120 Segundos a Piscar de 1 em 1 Segundo HIGH LED PAUSE 500 GOSUB VERIFICA LOW LED PAUSE 500 GOSUB VERIFICA NEXT FOR I = 0 TO 59 '~30 Segundos a Piscar de 0,5 em 0,5 Segundo HIGH LED PAUSE 250 LOW LED PAUSE 250 GOSUB VERIFICA NEXT HIGH LED FOR I = 0 TO 59 '~30 Segundos sempre ligado PAUSE 500 GOSUB VERIFICA NEXT LOW LED 'Sequencia de finalização HIGH LED: PAUSE 100: LOW LED: PAUSE 100 HIGH LED: PAUSE 100: LOW LED: PAUSE 100 HIGH LED: PAUSE 100: LOW LED: PAUSE 100 DESLIGA: C = 0 I = GPIO 'Must read GPIO before entering sleep. Read the Datasheet @ SLEEP @ NOP GOTO Main '================================SUB-ROUTINES=================================== LIGA: HIGH LED PAUSE 1000 WHILE MCLR !=0 WEND LOW LED GOTO DESLIGA VERIFICA: IF MCLR = 0 THEN C = C + 1 IF C = 6 THEN 'Sequencia de finalização HIGH LED: PAUSE 100: LOW LED: PAUSE 100 HIGH LED: PAUSE 100: LOW LED: PAUSE 100 HIGH LED: PAUSE 100: LOW LED: PAUSE 100 PAUSE 1000 GOTO DESLIGA ENDIF ENDIF RETURN END




Bookmarks