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
|