By polling INT0 flag bit... no interrupt handler
Code:
' INT0 polling with PWM
' =====================
'
' File name : INT0_poll_PWM.bas
' Company : Mister E
' Programmer : Steve Monfette
' Date : 02/03/2005
' Device : PIC18F2320
'
'
' This program generate 3.6Khz @ 25% duty PWM on CCP1 pin.
'
' CCP1 pin is connected to RB0 pin via 1k resistor.
'
' Program blink a led on PORTB.6 while generating PWM.
' Each rising edge of PWM, PORTB.7 is toggle. This will
' generate 1.8Khz 50% duty on this PORTB.7 pin.
'
' We will check INTCON.1 (Interrupt on RB0(INT0) flag bit) pin to
' detect rising edge
' Hardware Definition
' ===================
'
DEFINE LOADER_USED 1
DEFINE OSC 20
TRISB=%00000001 ' PORTB.0 as input
TRISC.2=0 ' PORTC as output
ADCON1=$0F ' disable A/D converter
' Interrupt definition
' ====================
'
INTCON=%00010000 ' Disable global interrupts
' Enable INT0 interrupt (RB0)
INTCON2.6=1 ' Enable INT0 on rising edge
' Variable definition
' ===================
'
Tmr2dutyvar VAR WORD
DelayLoop var word
' PWM signal generation
' =====================
'
Tmr2dutyvar=86 ' load duty time duration
PR2=$57 ' load frequency period (PWM freq=3.6 KHZ)
' set Duty cycle
' --------------
'
CCP1CON.5=Tmr2dutyvar.1
CCP1CON.4=Tmr2dutyvar.0
CCPR1L =(tmr2dutyvar>>2)
T2CON=%00000110 ' start timer 2
' set prescaler = 16
CCP1CON = %00001100 ' pwm mode for CCP1
' Main Loop
' =========
'
' Stupid led blink on PORTB.6 while testing INT0 flag bit
'
Start:
toggle PORTB.6
for delayloop = 1 to 50000
pauseus 5
if INTCON.1 then
INTCON.1=0
toggle PORTB.7
endif
next
goto start
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks