and another way by polling interrupt flag.
Code:
' RB0 interrupt
' =============
'
' File name : RB0.bas
' Company : Mister E
' Programmer : Steve Monfette
' Date : 03/05/2005
' Device : PIC16F628
'
' PIC setting
' ===========
'
' Using MPASM to compile the code to target device
'
'
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _PWRTE_ON & _MCLRE_OFF & _LVP_OFF & _BODEN_ON
' Internal Oscillator
' Enable watch dog timer
' Enable power up timer
' Disable MCLR pin
' Disable low voltage programming
' Enable brown out detect
'
' Hardware definition
' ===================
'
'
TRISB = %00000001 ' RB0 as input, other as output
' Push button between RB0 & ground
'
' I/O Alias definition
' ====================
'
'
RB0LED var PORTB.6
MainLoopLED var PORTB.7
'
' Interrupt Definition
' ====================
'
'
OPTION_REG = 0 ' Enable pull-up on PORTB
' RB0 interrupt on falling edge
'
' Variable definition
' ===================
'
'
Delay var word
'
' MainLoop
' ========
'
'
Start:
'
'
Toggle mainloopled
for Delay = 1 to 500 ' delay loop 500ms
pause 1 ' using 1 ms delay to avoid latency
if INTCON.1 then ' test RB0 interrupt flag
rb0led=RB0LED ^1 ' toggle RB0LED status
INTCON.1=0 ' reset interrupt flag
endif
next
goto start ' do it forever
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks