Modular Pinball Machine Controller

types.h

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