
Originally Posted by
Darrel Taylor
It's suppoased to be a loop every 10ms.
Not an insult every 10 ms.
It's like a "Pack of Wolves".
And wasssup didn't start anything.
Y'all need to mellow out, and write some code.
Here's mine...
[code]ReadingTaken VAR BIT
TRM0IF VAR INTCON.2
TMR0IE VAR INTCON.5
TimerReload CON 60
....
Minor correction to DT's code above:
TRM0IF VAR INTCON.2 should be TMR0IF VAR INTCON.2
Also, I agree with DT. Here is my code thingie with my approach:
1.03mS interrupt at 4 MHz, 1:4 Prescaler Assigned to TMR0.
This works the opposite way of what DT does.
DT's code interrupts every 10mS, my code interrupts every 1mS.
Work on either one.
Code:
<font color="#008000">@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT, WDT_OFF, PWRT_OFF, MCLR_OFF,PROTECT_ON,CPD_ON, BOD_OFF
</font>SetAll:
<font color="#000080"><b>CLEAR
</b></font>TRISA = <font color="#FF0000"><b>%00000000
</b></font>TRISB = <font color="#FF0000"><b>%00000000
</b></font>CMCON = <font color="#FF0000"><b>7
</b></font>VRCON.<font color="#FF0000"><b>7 </b></font>= <font color="#FF0000"><b>0
</b></font>VRCON.<font color="#FF0000"><b>6 </b></font>= <font color="#FF0000"><b>0
</b></font>PORTA = <font color="#FF0000"><b>0
</b></font>PORTB = <font color="#FF0000"><b>0
</b></font>TimeAdder <font color="#000080"><b>VAR BYTE
</b></font>OPTION_REG.<font color="#FF0000"><b>5 </b></font>= <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' TMR0 internal clk select bit.
</i></font>OPTION_REG.<font color="#FF0000"><b>3 </b></font>= <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' Prescaler Assigned to TMR0.
</i></font>OPTION_REG.<font color="#FF0000"><b>2 </b></font>= <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' Bit 2,1,0 : 1:4 prescaler.
</i></font>OPTION_REG.<font color="#FF0000"><b>1 </b></font>= <font color="#FF0000"><b>0
</b></font>OPTION_REG.<font color="#FF0000"><b>0 </b></font>= <font color="#FF0000"><b>1
</b></font>T0IE <font color="#000080"><b>VAR </b></font>INTCON.<font color="#FF0000"><b>5 </b></font><font color="#000080"><i>'INTCON.5 = 1 ' Enable TMR0 interrupt.
</i></font>T0IF <font color="#000080"><b>VAR </b></font>INTCON.<font color="#FF0000"><b>2 </b></font><font color="#000080"><i>'INTCON.2 = 0 ' TMR0 interrupt overflow bit. Must be cleared in software.
</i></font>T0IF = <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' Cleared.
</i></font>T0IE = <font color="#FF0000"><b>1 </b></font><font color="#000080"><i>' Enable TMR0 interrupt.
</i><b>ON INTERRUPT GOTO </b></font>TMR0_Int
Begin:
<font color="#000080"><b>IF </b></font>TimeAdder = <font color="#FF0000"><b>10 </b></font><font color="#000080"><b>THEN </b><i>' We have 10mS cycle.
</i></font>TimeAdder = <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' Clear time adder.
'Do something here.
'.
'..
'...
</i><b>ENDIF
GOTO </b></font>Begin
<font color="#000080"><b>DISABLE
</b></font>TMR0_Int: <font color="#000080"><i>'This routine is called every 1.03mS. Act Fast here.
</i></font>TimeAdder = TimeAdder + <font color="#FF0000"><b>1
</b></font>T0IF = <font color="#FF0000"><b>0 </b></font><font color="#000080"><i>' Clear interrupt flag bit.
</i><b>RESUME
ENABLE
</b></font>
Bookmarks