Modular Pinball Machine Controller
|
00001 //****************************************************************** 00002 //* PIC Data Types & Macros 00003 //* 00004 //* 00005 //* Kerry Imming 00006 //* kcimming@pobox.com 00007 //* May 15, 2010 00008 //* 00009 //* 00010 //****************************************************************** 00011 #ifndef TYPES_H 00012 #define TYPES_H 00013 00014 /* Rotate var right by n */ 00015 #define ROR8(var,n) (((var)>>n) | ((var)<<( 8-n))) 00016 #define ROR16(var,n) (((var)>>n) | ((var)<<(16-n))) 00017 00018 /* Rotate var left by n */ 00019 #define ROL8(var,n) (((var)<<n) | ((var)>>( 8-n))) 00020 #define ROL16(var,n) (((var)<<n) | ((var)>>(16-n))) 00021 00022 #define bitset(var, bitno) ((var) |= (1UL << (bitno))) 00023 #define bitclr(var, bitno) ((var) &= ~(1UL << (bitno))) 00024 #define bittst(var, bitno) ((var) & (1UL << (bitno))) 00025 #define make8(var,offset) ((unsigned int)var >> (offset * 8)) & 0x00FF 00026 #define make16(varhigh,varlow) (((unsigned int)varhigh & 0xFF)* 0x100) + ((unsigned int)varlow & 0x00FF) 00027 #define make32(var1,var2,var3,var4) \ 00028 ((unsigned long)var1<<24)+((unsigned long)var2<<16)+ \ 00029 ((unsigned long)var3<<8)+((unsigned long)var4) 00030 #define make32i(var1,var2) ((unsigned long)var1<<16)+((unsigned long)var2) 00031 00032 00033 typedef unsigned char BYTE; // 8-bit 00034 typedef unsigned int word; // 16-bit 00035 typedef unsigned long dword; // 32-bit 00036 00037 #define UINT16 word 00038 #define UINT32 dword 00039 00040 typedef union _BYTE_VAL { 00041 struct { 00042 unsigned int b0:1; 00043 unsigned int b1:1; 00044 unsigned int b2:1; 00045 unsigned int b3:1; 00046 unsigned int b4:1; 00047 unsigned int b5:1; 00048 unsigned int b6:1; 00049 unsigned int b7:1; 00050 } bits; 00051 BYTE Val; 00052 } BYTE_VAL; 00053 00054 typedef enum _BOOL { FALSE = 0, TRUE } BOOL; 00055 00056 #define OK TRUE 00057 #define FAIL FALSE 00058 00059 #endif // TYPES_H