You are close to what I mean. TMR0 Should be setup as a time base, you had mentioned 8uSec in another post. So compute the reload value for TMR0 such that you get an interrupt flag at 8uSec. (hint: use PicMultiCalc to help get the values)
Next the freq values are computed by YOU and hardcoded. so if TMR0 is 8uSec, and you need a period of 800 uSec, freq will be 800/8 or freq = 100.
Your while loop just needs to check for TMR0 interrupt flag bit. You do not want to enable interrupts, but the flag will be set anyway. So as soon as the flag is set you need to do this:
Code:
reload the TMR
clear the flag
decrement freq1 &freq2
check each for zero (IF !freq1 then) this will check if freq1 = 0
I will let you work on how to actually code the above. You almost have the Freq checks correct. Put comments in your code. This will do 2 things:
1 tells others and yourself what things are doing. If you code more beyond this class, you will be VERY happy you started doing this.
2 When you comment what you think things are doing, It will make it easier to see what is wrong. Here is a for instance:
Code:
while tmr0>=250 ' this line checks if TMR0 is greater then 250
tmr0= 0 'this line sets TMR0 to equal 0 if it is greater then 250
wend ' this is where the program jumps to when TMR0 is less then 250
This will not work ok, the ugly is all your program will run while waiting for the timer to reach 250. Then when tmr does reach 250, you just set it back to zero. Effectively tmr0 is doing nothing for you here. I will leave it to you to try to figure out why.
BTW, I am in no way a very good teacher, so please bear with me. My goal is to give you clues and help you to understand what is going on as opposed to telling you how to do each step. Is there a deadline when you must be done?
Bookmarks