firmware/typedefs.h
author root@rika
Thu, 23 Apr 2009 20:55:41 +0200
changeset 33 7a0c4b0354ba
parent 2 2f55e5dd591d
permissions -rw-r--r--
updated documentation
slime@2
     1
/*********************************************************************
slime@2
     2
 *
slime@2
     3
 *                Microchip USB C18 Firmware Version 1.0
slime@2
     4
 *
slime@2
     5
 *********************************************************************
slime@2
     6
 * FileName:        typedefs.h
slime@2
     7
 * Dependencies:    See INCLUDES section below
slime@2
     8
 * Processor:       PIC18
slime@2
     9
 * Compiler:        C18 2.30.01+
slime@2
    10
 * Company:         Microchip Technology, Inc.
slime@2
    11
 *
slime@2
    12
 * Software License Agreement
slime@2
    13
 *
slime@2
    14
 * The software supplied herewith by Microchip Technology Incorporated
slime@2
    15
 * (the “Company”) for its PICmicro® Microcontroller is intended and
slime@2
    16
 * supplied to you, the Company’s customer, for use solely and
slime@2
    17
 * exclusively on Microchip PICmicro Microcontroller products. The
slime@2
    18
 * software is owned by the Company and/or its supplier, and is
slime@2
    19
 * protected under applicable copyright laws. All rights are reserved.
slime@2
    20
 * Any use in violation of the foregoing restrictions may subject the
slime@2
    21
 * user to criminal sanctions under applicable laws, as well as to
slime@2
    22
 * civil liability for the breach of the terms and conditions of this
slime@2
    23
 * license.
slime@2
    24
 *
slime@2
    25
 * THIS SOFTWARE IS PROVIDED IN AN “AS IS” CONDITION. NO WARRANTIES,
slime@2
    26
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED
slime@2
    27
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
slime@2
    28
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT,
slime@2
    29
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR
slime@2
    30
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
slime@2
    31
 *
slime@2
    32
 * Author               Date        Comment
slime@2
    33
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
slime@2
    34
 * Rawin Rojvanit       7/21/04     Original.
slime@2
    35
 ********************************************************************/
slime@2
    36
slime@2
    37
#ifndef TYPEDEFS_H
slime@2
    38
#define TYPEDEFS_H
slime@2
    39
slime@2
    40
typedef unsigned char   byte;           // 8-bit
slime@2
    41
typedef unsigned int    word;           // 16-bit
slime@2
    42
typedef unsigned long   dword;          // 32-bit
slime@2
    43
slime@2
    44
typedef union _BYTE
slime@2
    45
{
slime@2
    46
    byte _byte;
slime@2
    47
    struct
slime@2
    48
    {
slime@2
    49
        unsigned b0:1;
slime@2
    50
        unsigned b1:1;
slime@2
    51
        unsigned b2:1;
slime@2
    52
        unsigned b3:1;
slime@2
    53
        unsigned b4:1;
slime@2
    54
        unsigned b5:1;
slime@2
    55
        unsigned b6:1;
slime@2
    56
        unsigned b7:1;
slime@2
    57
    };
slime@2
    58
} BYTE;
slime@2
    59
slime@2
    60
typedef union _WORD
slime@2
    61
{
slime@2
    62
    word _word;
slime@2
    63
    struct
slime@2
    64
    {
slime@2
    65
        byte byte0;
slime@2
    66
        byte byte1;
slime@2
    67
    };
slime@2
    68
    struct
slime@2
    69
    {
slime@2
    70
        BYTE Byte0;
slime@2
    71
        BYTE Byte1;
slime@2
    72
    };
slime@2
    73
    struct
slime@2
    74
    {
slime@2
    75
        BYTE LowB;
slime@2
    76
        BYTE HighB;
slime@2
    77
    };
slime@2
    78
    struct
slime@2
    79
    {
slime@2
    80
        byte v[2];
slime@2
    81
    };
slime@2
    82
} WORD;
slime@2
    83
#define LSB(a)      ((a).v[0])
slime@2
    84
#define MSB(a)      ((a).v[1])
slime@2
    85
slime@2
    86
typedef union _DWORD
slime@2
    87
{
slime@2
    88
    dword _dword;
slime@2
    89
    struct
slime@2
    90
    {
slime@2
    91
        byte byte0;
slime@2
    92
        byte byte1;
slime@2
    93
        byte byte2;
slime@2
    94
        byte byte3;
slime@2
    95
    };
slime@2
    96
    struct
slime@2
    97
    {
slime@2
    98
        word word0;
slime@2
    99
        word word1;
slime@2
   100
    };
slime@2
   101
    struct
slime@2
   102
    {
slime@2
   103
        BYTE Byte0;
slime@2
   104
        BYTE Byte1;
slime@2
   105
        BYTE Byte2;
slime@2
   106
        BYTE Byte3;
slime@2
   107
    };
slime@2
   108
    struct
slime@2
   109
    {
slime@2
   110
        WORD Word0;
slime@2
   111
        WORD Word1;
slime@2
   112
    };
slime@2
   113
    struct
slime@2
   114
    {
slime@2
   115
        byte v[4];
slime@2
   116
    };
slime@2
   117
} DWORD;
slime@2
   118
#define LOWER_LSB(a)    ((a).v[0])
slime@2
   119
#define LOWER_MSB(a)    ((a).v[1])
slime@2
   120
#define UPPER_LSB(a)    ((a).v[2])
slime@2
   121
#define UPPER_MSB(a)    ((a).v[3])
slime@2
   122
slime@2
   123
typedef void(*pFunc)(void);
slime@2
   124
slime@2
   125
typedef union _POINTER
slime@2
   126
{
slime@2
   127
    struct
slime@2
   128
    {
slime@2
   129
        byte bLow;
slime@2
   130
        byte bHigh;
slime@2
   131
        //byte bUpper;
slime@2
   132
    };
slime@2
   133
    word _word;                         // bLow & bHigh
slime@2
   134
    
slime@2
   135
    //pFunc _pFunc;                       // Usage: ptr.pFunc(); Init: ptr.pFunc = &<Function>;
slime@2
   136
slime@2
   137
    byte* bRam;                         // Ram byte pointer: 2 bytes pointer pointing
slime@2
   138
                                        // to 1 byte of data
slime@2
   139
    word* wRam;                         // Ram word poitner: 2 bytes poitner pointing
slime@2
   140
                                        // to 2 bytes of data
slime@2
   141
slime@2
   142
    rom byte* bRom;                     // Size depends on compiler setting
slime@2
   143
    rom word* wRom;
slime@2
   144
    //rom near byte* nbRom;               // Near = 2 bytes pointer
slime@2
   145
    //rom near word* nwRom;
slime@2
   146
    //rom far byte* fbRom;                // Far = 3 bytes pointer
slime@2
   147
    //rom far word* fwRom;
slime@2
   148
} POINTER;
slime@2
   149
slime@2
   150
typedef enum _BOOL { FALSE = 0, TRUE } BOOL;
slime@2
   151
slime@2
   152
#define OK      TRUE
slime@2
   153
#define FAIL    FALSE
slime@2
   154
slime@2
   155
#endif //TYPEDEFS_H