⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compiler.h

📁 基于瑞萨 M16C 的最新版本 IIC 通信
💻 H
字号:
/* ************************************************************************* */
/*  DISCLAIMER:                                                              */
/*  We (RENESAS TECHNOLOGY EUROPE) do not warrant that the Software is       */
/*  free from claims by a third party of copyright, patent, trademark,       */
/*  trade secret or any other intellectual property infringement.            */
/*                                                                           */
/*  Under no circumstances are we liable for any of the following:           */
/*                                                                           */
/*  1. third-party claims against you for losses or damages;                 */
/*  2. loss of, or damage to, your records or data; or                       */
/*  3. economic consequential damages (including lost profits or             */
/*     savings) or incidental damages, even if we are informed of            */
/*     their possibility.                                                    */
/*                                                                           */
/*  We do not warrant uninterrupted or error free operation of the           */
/*  Software. We have no obligation to provide service, defect               */
/*  correction, or any maintenance for the Software. We have no              */
/*  obligation to supply any Software updates or enhancements to you         */
/*  even if such are or later become available.                              */
/*                                                                           */
/*  IF YOU DOWNLOAD OR USE THIS SOFTWARE YOU AGREE TO THESE TERMS.           */
/*                                                                           */
/*  THERE ARE NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING THE               */
/*  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A                  */
/*  PARTICULAR PURPOSE.                                                      */
/* ------------------------------------------------------------------------- */
/*  Copyright (c) 2004 RENESAS TECHNOLOGY EUROPE   All rights reserved.      */
/* ------------------------------------------------------------------------- */
/*  Project Name:                                                            */
/*  File        : compiler.h                                                 */
/*  Description : Compiler related macros & defines                          */
/*  Author      : Juergen Himmelberg                                         */
/* ------------------------------------------------------------------------- */
/*  Supported   :                                                            */
/*  Compiler                                                                 */
/*                                                                           */
/* --------------------------------------------------------------------------*/
/*              S O U R C E   F O R M A T                                    */
/* --------------------------------------------------------------------------*/
/* tab width 3 (tab at 3 6 9 ...) uses spaces instead of real tabs           */
/* --------------------------------------------------------------------------*/
/*              R E V I S I O N                                              */
/* --------------------------------------------------------------------------*/
/* --------------------------------------------------------------------------*/
/*              R E M A R K S                                                */
/* --------------------------------------------------------------------------*/
/*                                                                           */
/* ************************************************************************* */
#ifdef EXTERN
#undef EXTERN
#endif

#define _IAR_ICCM16C      1
#define _IAR_ICCM16C_V2   2
#define _IAR_ICCM80C      3 
#define _IAR_ICCM32C      4
#define _RENESAS_NC30     5
#define _RENESAS_NC308    6
#define _RENESAS_CC32R    7
#define _TASKING_CM16C    8
#define _TASKING_C166     9
#define _IAR_ICCV850      10 
#define _IAR_ICCHC12      11
#define _IAR_ICCARM7      12
#define _ARM_ADS          13
#define _OTHER            14


#ifdef NC30                    
  #define _COMPILER _RENESAS_NC30
#else
  #ifdef __IAR_SYSTEMS_ICC__
     #if ((__TID__ >> 8) & 0x7F) ==28  
        #if  __VER__ < 200
           #define _COMPILER _IAR_ICCM16C
        #else
           #define _COMPILER _IAR_ICCM16C_V2
        #endif
     #elif ((__TID__ >> 8) & 0x7F)== 48
        #define _COMPILER _IAR_ICCM32C
     #elif ((__TID__ >> 8) & 0x7F)== 85
        #define _COMPILER _IAR_ICCV850
     #elif ((__TID__ >> 8) & 0x7F)== 33
        #define _COMPILER _IAR_ICCHC12
     #elif ((__TID__ >> 8) & 0x7F)== 79
        #define _COMPILER _IAR_ICCARM7
     #endif
  #else
     #ifdef _CM16C               
        #define _COMPILER _TASKING_CM16C
     #else
        #ifdef NC308
           #define _COMPILER _RENESAS_NC308        
        #else
        
           #ifdef _C166
                 #define _COMPILER _TASKING_C166
           #else
            #ifdef __arm
                 #define _COMPILER  _ARM_ADS
              #else 
                #ifdef __M32R__
                    #define _COMPILER _RENESAS_CC32R                         
                 #else         
                    #define _COMPILER _OTHER
                 #endif
              #endif
              #endif
        #endif
     #endif
  #endif
#endif

#if   _COMPILER == _IAR_ICCM16C
  #define _INTERRUPT interrupt
  #define _HW_INTERRUPT interrupt
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define _NEAR near
  #define _FAR far
  #define _HUGE huge
  #define _CONST far const
  #define _far far
  #define _near near

  #define _SSK_SAVE_FLG asm("PUSHC FLG")
  #define _SSK_RESTORE_FLG asm("POPC FLG")

  #include <intrm16c.h>
  #include <intm16c.h>
  
#elif _COMPILER == _IAR_ICCM16C_V2
  #define _INTERRUPT __interrupt
  #define _HW_INTERRUPT __interrupt
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define _NEAR __near
  #define _FAR __far
  #define _HUGE __huge
  #define _CONST __far const
  #define _CONST_PTER __far * const
  #define _far __far
  #define _near __near

  #define _SSK_SAVE_FLG asm("PUSHC FLG")
  #define _SSK_RESTORE_FLG asm("POPC FLG")

  #include <migration.h>
  #include <intrinsics.h>
  
#elif _COMPILER == _IAR_ICCM32C
  #define enable_interrupt()   __enable_interrupt()
  #define disable_interrupt()  __disable_interrupt()
  #define wait_for_interrupt() __wait_for_interrupt()
  #define nop_instruction()    __no_operation()
  #define _INTERRUPT __interrupt
  #define _HW_INTERRUPT __interrupt
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define _NEAR __near
  #define _FAR __far
  #define _HUGE __huge
  #define _CONST __far const
  #define _CONST_PTER __far * const
  #define _far __far
  #define _near __near
  #define far __far
  #define near __near
  #define huge __huge
  #define C_task __C_task
  #define monitor __monitor
  #define interrupt __interrupt
  #define no_init __no_init

  #define _SSK_SAVE_FLG asm("PUSHC FLG")
  #define _SSK_RESTORE_FLG asm("POPC FLG")

  #include <inm32c.h>
  
#elif _COMPILER == _RENESAS_NC30
  #define _INTERRUPT  
  #define _HW_INTERRUPT
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)

  #define disable_interrupt()         asm("FCLR I")
  #define enable_interrupt()          asm("FSET I")
  #define wait_for_interrupt()        asm("WAIT")
  #define nop_instruction()           asm("NOP")  
  #define break_instruction()         asm("BRK")
  #define und_instruction()           asm("UND")
  #define interrupt_on_overflow()     asm("INTO")
  #define software_interrupt(int_no)  asm("INT int_no")
  /*
  long rmpa_instruction (short near *s1, short near *s2, unsigned short n);
  short short_rmpa_instruction (signed char near *c1, signed char near *c2, unsigned short n);
  void write_ipl (unsigned char val);
  unsigned char read_ipl (void);
  void software_interrupt (unsigned char int_no);
  void set_interrupt_table(unsigned long);
  short overflow_flag_value (void);
  */
  #define _NEAR near
  #define _FAR far
  #define _HUGE huge
  #define _CONST const  

  #define _SSK_SAVE_FLG asm("PUSHC FLG")
  #define _SSK_RESTORE_FLG asm("POPC FLG")
  
  
#elif _COMPILER == _RENESAS_NC308
  #define _INTERRUPT  
  #define _HW_INTERRUPT
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)

  #define disable_interrupt()         asm("FCLR I")
  #define enable_interrupt()          asm("FSET I")
  #define wait_for_interrupt()        asm("WAIT")
  #define nop_instruction()           asm("NOP")  
  #define break_instruction()         asm("BRK")
  #define und_instruction()           asm("UND")
  #define interrupt_on_overflow()     asm("INTO")
  #define software_interrupt(int_no)  asm("INT int_no")
  /*
  long rmpa_instruction (short near *s1, short near *s2, unsigned short n);
  short short_rmpa_instruction (signed char near *c1, signed char near *c2, unsigned short n);
  void write_ipl (unsigned char val);
  unsigned char read_ipl (void);
  void software_interrupt (unsigned char int_no);
  void set_interrupt_table(unsigned long);
  short overflow_flag_value (void);
  */
  #define _NEAR near
  #define _FAR far
  #define _HUGE huge
  #define _CONST const  

  #define _SSK_SAVE_FLG asm("PUSHC FLG")
  #define _SSK_RESTORE_FLG asm("POPC FLG")
  
#elif _COMPILER == _RENESAS_CC32R
  #define _INTERRUPT  
  #define _HW_INTERRUPT
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)

  #define disable_interrupt()         
  #define enable_interrupt()          
  #define wait_for_interrupt()        
  #define nop_instruction()           
  #define break_instruction()         
  #define und_instruction()           
  #define interrupt_on_overflow()     
  #define software_interrupt(int_no)  
  
  #define _NEAR 
  #define _FAR 
  #define _HUGE 
  #define _CONST const  
  #define far 
  #define near
  #define asm(dummy)

  #define _SSK_SAVE_FLG
  #define _SSK_RESTORE_FLG
  
#elif _COMPILER == _TASKING_CM16C
  #define _INTERRUPT _interrupt
  #define _HW_INTERRUPT _hw_interrupt
  #define _VECTOR_NO(no) (no)
  #define _HW_VECTOR_NO(no) (no)
  
  #define disable_interrupt()         (_fclr(6))
  #define enable_interrupt()          (_fset(6))
  #define wait_for_interrupt()        (_wait())
  #define nop_instruction()           (_nop())
  #define break_instruction()         (_brk())
  #define und_instruction()           (_und())
  #define interrupt_on_overflow()     (_into())
  #define software_interrupt(int_no)  (_int(int_no))
  
  #define _NEAR _near
  #define _FAR _far
  #define _HUGE _far
  #define _CONST _far const
  #define far _far
  #define near _near

  #define _SSK_SAVE_FLG _pushc(3)
  #define _SSK_RESTORE_FLG _popc(3)
  
  #define struct_byte unsigned int
    
#elif _COMPILER == _TASKING_C166
  #define _INTERRUPT _interrupt
  #define _HW_INTERRUPT _hw_interrupt
  #define _VECTOR_NO(no) (no)
  #define _HW_VECTOR_NO(no) (no)
  
  #define disable_interrupt()         
  #define enable_interrupt()          
  #define wait_for_interrupt()        
  #define nop_instruction()           
  #define break_instruction()         
  #define und_instruction()           
  #define interrupt_on_overflow()     
  #define software_interrupt(int_no)  
  
  #define _NEAR _near
  #define _FAR _far
  #define _HUGE _far
  #define _CONST _far const
  #define far _far
  #define near _near

  #define _SSK_SAVE_FLG 
  #define _SSK_RESTORE_FLG

  #define asm(parameter)
   
  #define struct_byte unsigned int
  
#elif _COMPILER == _IAR_ICCV850
  #define far 
  #define _far 
  #define __far
  #define near
  #define _near
  #define __near 
  #define asm(parameter)

#elif   _COMPILER == _IAR_ICCHC12
  #define _INTERRUPT interrupt
  #define _HW_INTERRUPT interrupt
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define _NEAR near
  #define _FAR far
  #define _HUGE huge
  #define _CONST far const
  #define _far far
  #define _near near
  #define far
  #define near

  #define asm(parameter) 
  #define _SSK_SAVE_FLG 
  #define _SSK_RESTORE_FLG 

#elif _COMPILER == _IAR_ICCARM7

  #define _INTERRUPT
  #define _HW_INTERRUPT
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define disable_interrupt()
  #define enable_interrupt()
  #define wait_for_interrupt()
  #define _SSK_SAVE_FLG 
  #define _SSK_RESTORE_FLG
  #define _NEAR
  #define _FAR 
  #define _HUGE 
  #define _CONST 
  #define far 
  #define near 
  #define _far
  #define _near
  #define asm(parameter) 

#elif _COMPILER == _ARM_ADS

  #define _INTERRUPT
  #define _HW_INTERRUPT
  #define _VECTOR_NO(no)
  #define _HW_VECTOR_NO(no)
  #define disable_interrupt()
  #define enable_interrupt()
  #define wait_for_interrupt()
  #define _SSK_SAVE_FLG 
  #define _SSK_RESTORE_FLG
  #define _NEAR
  #define _FAR 
  #define _HUGE 
  #define _CONST 
  #define far 
  #define near 
  #define _far
  #define _near
  #define asm(parameter) 
  
  #define struct_byte unsigned int  

#elif _COMPILER == _OTHER

  #define disable_interrupt()		asm("FCLR I")
  #define enable_interrupt()		asm("FSET I")			
#endif

/* ------------------------------------------------------------------------- */
/*           End of of Code                                                  */
/* ------------------------------------------------------------------------- */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -