TM1640 (16 digit display) with PicBAsic Pro, possible is? How?


Closed Thread
Results 1 to 36 of 36

Hybrid View

  1. #1
    Join Date
    Aug 2011
    Location
    Manaus - Brazil
    Posts
    24


    Did you find this post helpful? Yes | No

    Default Re: TM1640 (16 digit display) with PicBAsic Pro, possible is? How?

    Hi HenrikOlsson,

    Thank you by your contribution.


    Regards,

  2. #2
    Join Date
    Sep 2010
    Location
    Las Vegas, NV
    Posts
    305


    Did you find this post helpful? Yes | No

    Default Re: TM1640 (16 digit display) with PicBAsic Pro, possible is? How?

    Well, from the PBP3 manual shows this for asm interrups which although doesn't specify DEFINE needs to be in caps they are all written that way.

    6.2.2 DEFINEs
    PBP offers a DEFINE to specify the name of the interrupt service routine label. The
    label refers to the Assembly Language label that marks the beginning of your
    service routine.
    DEFINE INTHAND Label
    For devices with multiple priority interrupts, PBP offers a single additional DEFINE
    that allows you to specify a second label for a second service routine. This routine
    will be used for low-priority interrupts.
    DEFINE INTLHAND Label

    And here it says they need to be in caps even a line that has the DEFINE RESET_ORG uses caps so I assume it needs caps.

    2.3.2 Global DEFINEs
    Other DEFINEs that are important, though less frequently used, are:
    DEFINE NO_CLRWDT 1 'Don’t insert CLRWDTs
    DEFINE LOADER_USED 1 'Bootloader is being used
    DEFINE OSCCAL_1K 1 'Set OSCCAL for 1K PIC12
    DEFINE OSCCAL_2K 1 'Set OSCCAL for 2K PIC12
    DEFINE RESET_ORG 0h 'Change reset address for PIC18
    DEFINE INTHAND Label 'Assign assembler interrupt
    handler label
    DEFINE INTLHAND Label 'Assign assembler low priority
    interrupt handler label for
    PIC18
    See section 8.6 for a condensed list of DEFINEs with brief explanations.

    2.3.3 DEFINEs defined
    For the user familiar with Assembly Language, the major clue to understanding is
    that DEFINEs in PBP are converted literally to Assembly Language #DEFINE
    directives.
    For the practical PBP user, there are a couple of fundamental points to consider:
    1) DEFINEs are CASE SENSITIVE!
    2) Specific DEFINEs are generally associated with PBP commands. The
    command pages will describe how the relevant DEFINEs affect the
    operation of each command.
    DEFINEs are used by PBP to change the generated Assembly Language that
    makes up the compiled program. A DEFINE might simply change an internal
    register setting, or it might result in the use of an alternative Assembly Language
    routine to accomplish a task.

    For what it's worth I'm not an experienced programmer but If I'm wrong I'd like to know for future use. In the few prorams I've written I've always had to use caps for the defines to work but I haven't been calling asm routines. So I'd at least try it to see if it matters.

    It appears this isn't the problem anyway. If I am wrong I apologize for any waste of time my conributions to this thread has accumulated.

  3. #3
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,612


    Did you find this post helpful? Yes | No

    Default Re: TM1640 (16 digit display) with PicBAsic Pro, possible is? How?

    Hi,
    For what it's worth I'm not an experienced programmer but If I'm wrong I'd like to know for future use. In the few prorams I've written I've always had to use caps for the defines to work but I haven't been calling asm routines. So I'd at least try it to see if it matters.
    But you have been calling ASM routines since that is exactly what PBP does, it "builds" your code into an ASM program by "stitching together" different library routines which are all in ASM. Some of these routines have "settings" which can be "configured" and this is done with the DEFINE directive. The DEFINE directive is a PBP "command" and PBP is not case sensitive so the DeFiNe can be any case but the name of the "setting" you want to configure must match the case of how it is written in the ASM routine it "configures" - and all the PBP library routies use all upper case.

    Let's take the simple example of DEFINE OSC 20, in the library file you'll find something like (and this is ASM):
    Code:
        ifndef OSC
    OSC = 4
        endif
    See, here OSC is all upper case and since this is code that is directly used by the assembler IS case sensitive so if you, in your program, would do define osc 20 it wouldn't work. Not because define is lower case but because osc is. What happens is that the assembler creates a constant named osc (which is different from OSC that the library routines is looking for) and assignes the value 20 to it. The library routines checks if OSC has been defined but doesn't see it so it sets its value to 4 - when you intended for it to be 20.

    If you write a ASM routine where the assembler is looking for aBc then you'd need to use DEFINE aBc for it to work, define ABC wouldn't, neither would DEFINE ABC.

    Man, I really hope I got that right but if I didn't I hope someone will jump in and correct me.

    /Henrik.
    Last edited by HenrikOlsson; - 13th August 2013 at 16:13.

Similar Threads

  1. HSEROUT full 3 digit display of variable howto ?
    By RFsolution in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 24th October 2008, 13:53
  2. Replies: 2
    Last Post: - 14th July 2008, 22:11
  3. Replies: 2
    Last Post: - 22nd January 2008, 14:25
  4. How to display dot on 7-seg , 4 digit
    By chai98a in forum mel PIC BASIC Pro
    Replies: 27
    Last Post: - 19th January 2007, 18:17
  5. SMART Serial 4 Digit LCD Display (SMARD4)
    By paul borgmeier in forum Adverts
    Replies: 0
    Last Post: - 5th January 2005, 05:50

Members who have read this thread : 1

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