Hi,
It depends on your application. Using any of the timers you can do a counting at the background then depending on the elapsed period you can do other jobs. Normally all the timer registers are accessible through PBP itself. If you need a tight timebase then asm gives you a better control on the actual instruction cycle used. Timer0 may not have a start/stop control. It is clocked from a prescaler or Fosc (external also possible). When timer0 rollsover it sets a hardware interrupt flag TMR0IF. Even if you are not using interrupts you can poll this flag.
Mister_E has done a great utility to make all your timer/pwm/usart calculations a breeze. Find it here http://www.picbasic.co.uk/forum/atta...4&d=1162909841
For your example code something like this can be done in PBP:
Code:
' THIS IS MEANT FOR A 18f452 , 16F PICS HAVE DIFFERENT TIMER0 SETTINGS
X VAR BYTE ' SOME VARIABLE
Y VAR BYTE ' SOME VARIABLE
TIMER_ZERO VAR WORD ' VARIABLE TO STORE TIMER0
T0CON = %00000111 ' OFF,16BIT,PRESCALE=256
INIT:
TMR0H = 0 ' CLEAR THE HIGH BYTE OF TIMER ZERO (UPDATED WHEN TMR0L IS WRITTEN)
TMR0L = 0 ' CLEAR THE LOW BYTE OF TIMER ZERO
T0CON.0 = 1 ' START TIMER0
MAIN_LOOP:
' DO WHATEVER YOU WANT
IF X != Y THEN MEASURE ' IF X AND Y DIFFERS THEN GET THE READING
GOTO MAIN_LOOP
MEASURE:
T0CON.0 = 0 ' STOP TIMER0
TIMER_ZERO.BYTE0 = TMR0L ' READ LOW BYTE FIRST (TMR0H IS UPDATED)
TIMER_ZERO.BYTE1 = TMR0H ' READ HIGH BYTE FIRST
GOTO INIT ' DO IT OVER AGAIN
Please note that since you are checking the condition at the end of the loop, anything consuming time inside would give you erronious results. As for the resolution part it is best to keep the loop running and letting the timer count. The lower the prescale value the greater the resolution. But it seems that you would be doing other tasks as well if x and y are not SFRs or PORT registers. Cause your program need to do something with x and y otherwise they will never end the initially matched condition.
It is best that you post your requirements clearly so that friends here can comeup with something useful for you.
Bookmarks