Was about end 2007 to 2008 ...
not sure it has been lost ...
Wow !!! got it in my archives ( 04/2008 )
Code:
'@ device pic12f675,INTRC_OSC_NOCLKOUT , wdt_on, mclr_off, protect_off, bod_on
@ __config _INTRC_OSC_NOCLKOUT & _PWRTE_ON & _WDT_OFF &_BODEN_ON & _MCLRE_OFF & _CP_OFF
'*****************************************************************************
'Config
'*****************************************************************************
'OSCCON = %01100110
CMCON = %00000111 ' Disable comparator
VRCON = %00000000 ' disable
ADCON0 = %11100000
ANSEL = %10000000
'*****************************************************************************
' I/Os
'*****************************************************************************
GPIO = %00000000 ' All outputs low
TRISIO = %00000000 ' no inputs
'*****************************************************************************
'Aliases
'*****************************************************************************
BODbit var GPIO.0
PORbit var GPIO.1
BOD var GPIO.2
LED var GPIO.4
'*****************************************************************************
' Init vars
'*****************************************************************************
Selection var Byte
Ton var Word
Toff var Word
'*****************************************************************************
Coldstart:
'*****************************************************************************
IF PCON.1 = 0 and PCON.0 = 0 THEN BODbit = 1 'BROWN OUT RESET BIT
IF PCON.1 = 0 THEN
PORbit = 1 'POWER ON RESET BIT
' For debugging purpose only !!!
Selection = 1 'Lights LED @ 25%
ENDIF
PAUSE 1000
GPIO = 0
IF PCON.1 = 1 AND PCON.0 = 0 THEN 'PCON.0 = BOD ;PCON.1 = POR
BOD = 1 'GPIO.1 red led PIN6 shows a BOD state
PAUSE 1000 ' For debugging purpose only !!!
GPIO = 0
Selection = ( Selection + 1 )// 5
ENDIF
PCON.1 = 1
PCON.0 = 1
'*****************************************************************************
'Program choice
'*****************************************************************************
SELECT CASE Selection
CASE 0
Ton = 0 ' Stop
CASE 1
Ton = 500 ' 25%
CASE 2
Ton = 700 ' 50%
CASE 3
Ton = 870 ' 75%
CASE 4
Ton = 1000 '100%
END SELECT
'*****************************************************************************
'Power Drive
'*****************************************************************************
Toff = 2000 - Ton
IF Ton = 0 THEN ' LED OFF
LED = 0
@ SLEEP ' IF Power = 0 then snore !!!
@ NOP ' and wait for a Power off ...
' That ALSO saves the batt ...
ENDIF
'NOTE : WAKE UP is achieved by Powering OFF the device ... not the classical way !
' !!! WDT MUST be OFF !!!
IF Ton = 1000 THEN ' LED @ 100%
LED = 1
WHILE 1 ' Endless loop until power Off !!!
WEND
ENDIF
WHILE 1 ' Soft PWM @ 500Hz until power OFF
LED = 1
PAUSEUS Ton
LED = 0
PAUSEUS Toff
WEND
END
have fun ...
Alain
Bookmarks