Lab X1 and 16F877 examples for beginners


Results 1 to 7 of 7

Threaded View

  1. #6
    Join Date
    Jan 2005
    Location
    Montreal, Quebec, Canada
    Posts
    3,172


    Did you find this post helpful? Yes | No

    Default Re: Lab X1 and 16F877 examples for beginners

    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
    Last edited by Demon; - 4th October 2016 at 17:22. Reason: Added note

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts