Here's an example of elapsed time using DT's Interrupts:
http://darreltaylor.com/DT_INTS-14/intro.html
Interrupt include files are available here:
http://darreltaylor.com/DT_INTS-14/downloads.htm
Elapsed include file available here:
http://www.picbasic.co.uk/forum/show...7473#post17473
NOTE: You must use MPASM Assembler to use DT Interrupt routine.
Code:'***************************************************************** '* Name : LAB X1 Timer Interrupt.BAS Version : 1.0 * '* Author : Demon Date : 2012-01-06 * '* Task : Display elapsed time on LCD using DT Interrupts * '* Hardware : PIC 16F877, 20mhz crystal * '* : Lab X1 Experimental Board * '* : MeLabs U2 Programmer v4.32 * '* Software : PIC Basic Pro v2.60C * '* : MicroCode Studio Plus v2.2.1.1 * '* : MPASM Assembler v3.50 * '***************************************************************** 'DEFINE LOADER_USED 1 ' Comment out CONFIG in MPASM include (File: 16F877.INC in PBP folder). @ __config _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CPD_OFF & _WRT_ENABLE_OFF & _DEBUG_OFF DEFINE OSC 20 DEFINE LCD_DREG PORTD ' Set LCD data port DEFINE LCD_DBIT 0 ' Set starting data bit DEFINE LCD_RSREG PORTE ' Set LCD register select port DEFINE LCD_RSBIT 0 ' Set LCD register select bit DEFINE LCD_EREG PORTE ' Set LCD enable port DEFINE LCD_EBIT 1 ' Set LCD enable bit DEFINE LCD_BITS 8 ' Set LCD bus size DEFINE LCD_LINES 2 ' Set number of lines on LCD DEFINE LCD_COMMANDUS 2000 ' Set command delay time in microseconds DEFINE LCD_DATAUS 50 ' Set data delay time in microseconds TRISD = %00000000 ' Set all port D pins to output TRISE = %00000000 ' Set all port E pins to output ADCON1 = 7 ' A/D off, all digital wsave VAR BYTE $70 SYSTEM ' Required by Instant Interrupt routine PAUSE 1000 ' Wait for LCD to initialize LCDOUT $FE,1,"LabX1 16F877 Tim Int" '---[INT - interrupt includes]-------------------------------------------------- INCLUDE "DT_INTS-14.bas" ; Base Interrupt System INCLUDE "ReEnterPBP.bas" ; Include if using PBP interrupts INCLUDE "Elapsed_INT.bas" ; Elapsed Time interrupts '---[INT - interrupt definition]------------------------------------------------ ASM INT_LIST macro ; IntSource, Label, Type, ResetFlag? INT_Handler TMR1_INT, _ClockCount, PBP, yes endm INT_CREATE ; Creates the interrupt processor ENDASM @ INT_ENABLE TMR1_INT ; Enable Timer 1 Interrupts GOSUB ResetTime ' Reset Time to 0d-00:00:00.00 GOSUB StartTimer ' Start the Elapsed Timer Main: IF SecondsChanged = 1 THEN SecondsChanged = 0 LCDOUT $FE,$C0, DEC Days,"d-",DEC2 Hours,":",DEC2 Minutes,":",DEC2 Seconds ENDIF GOTO Main end




Bookmarks