Here is what I've got so far on a 12F675
Code:
'defines
DEFINE OSCCAL_1K 1
define OSC 4
DEFINE NO_CLRWDT
'end defines
'includes
'Include "Elapsed.bas"
'end includes
' Config Fuses
@ __config _INTRC_OSC_NOCLKOUT & _CPD_OFF & _CP_OFF & _BODEN_ON & _MCLRE_ON & _PWRTE_ON & _WDT_ON
' Variable Definitions
LED VAR GPIO.1
TEMPERATURE_CNT VAR WORD
TEMPERATURE VAR WORD
'End Variable Defs
' Initialize
INTCON=%10100000
CMCON=7
TRISIO=%11111101 ' Input 0,2,3,4,5 Output 1
ANSEL=0
'End Initialize
ON INTERRUPT GOTO TMR:
OPTION_REG.3=1 ; set WDT prescaler to 1:8
OPTION_REG.2=0
OPTION_REG.1=1
OPTION_REG.0=1
startup:
LED=0
main:
IF STATUS.4=0 THEN ;CHECKS TO SEE IF WDT TIMEOUT OCCURED
TEMPERATURE = TEMPERATURE_CNT ;TEMPERATURE EQUALS COUNT VARIABLE
TEMPERATURE_CNT=0 ;CLEARS COUNT VARIABLE
@CLRWDT ;CLEARS STATUS.4 REG BACK TO 1
ENDIF
IF TEMPERATURE>300 THEN
LED=1 ;IF TEMPERATURE IS ABOVE A DETERMINED COUNT VARIABLE TURN ON LED
ELSE
LED=0
ENDIF
GOTO MAIN
DISABLE INTERRUPT
TMR: ;INTERUPT OCCURS WHEN TMR0 ROLLS OVER
TEMPERATURE_CNT=TEMPERATURE_CNT+1 ;INCREMENT COUNT VARIABLE
INTCON=%10100000 ;CLEAR TMR0 INTERRUPT
resume
ENABLE INTERRUPT
Bookmarks