📄 mcu_c_macro_data_define.h
字号:
#ifndef enable_interrupt
#define enable_interrupt() __enable_interrupt()
#endif
#ifndef _NOP
#define _NOP() __no_operation()
#endif
#ifndef _SLEEP
#define _SLEEP() __sleep()
#endif
#ifndef _LPM
#define _LPM(ADDR) __load_program_memory(ADDR)
#endif
#ifdef __HAS_ELPM__
#ifndef _ELPM
#define _ELPM(ADDR) __extended_load_program_memory(ADDR)
#endif
#endif
#ifndef _WDR
#define _WDR() __watchdog_reset()
#endif
#ifndef _OPC
#define _OPC(opCode) __insert_opcode(opCode)
#endif
#endif // “__COMP_A90_H”条件编译结束
#endif // “defined(_IAR_EW_AVR_)”条件编译结束
/*==========================================================================================
IAR Embedded Workbench for AVR 头部文件“INAVR.H”中的兼容性宏定义
==========================================================================================*/
#if defined(_IAR_EW_AVR_) // “IAR Embedded Workbench AVR”条件编译开始
#ifndef __INAVR_H // “__INAVR_H”条件编译开始
#define __INAVR_H
__intrinsic void __no_operation(void);
__intrinsic void __enable_interrupt(void);
__intrinsic void __disable_interrupt(void);
__intrinsic void __sleep(void);
__intrinsic void __watchdog_reset(void);
#define __clear_watchdog_timer() __watchdog_reset()
#pragma language=extended
__intrinsic unsigned char __load_program_memory(const unsigned char __flash *);
#ifdef __HAS_ELPM__
__intrinsic unsigned char __extended_load_program_memory(const unsigned char __farflash *);
#endif
#pragma language=default
__intrinsic void __insert_opcode(unsigned short op);
#if __MEMORY_MODEL__ == 4
#if __CPU__ < 2
#define __STR_MATTR__ __flash
#else
#define __STR_MATTR__ __hugeflash
#endif
#else
#define __STR_MATTR__
#endif
__intrinsic void __require(void *);
__intrinsic void __delay_cycles(unsigned long);
__intrinsic unsigned char __save_interrupt(void);
#define __get_interrupt_state() __save_interrupt()
__intrinsic void __restore_interrupt(unsigned char);
#define __set_interrupt_state(STATE) __restore_interrupt(STATE)
__intrinsic unsigned char __swap_nibbles(unsigned char);
__intrinsic void __indirect_jump_to(unsigned long);
/*--------------------------------------------------------------------------------------
增强型核心指令集的内在函数定义
--------------------------------------------------------------------------------------*/
#ifdef __HAS_ENHANCED_CORE__
#ifdef __HAS_MUL__
__intrinsic unsigned int __multiply_unsigned(unsigned char, unsigned char);
__intrinsic signed int __multiply_signed(signed char, signed char);
__intrinsic signed int __multiply_signed_with_unsigned(signed char, unsigned char);
__intrinsic unsigned int __fractional_multiply_unsigned(unsigned char, unsigned char);
__intrinsic signed int __fractional_multiply_signed(signed char, signed char);
__intrinsic signed int __fractional_multiply_signed_with_unsigned(signed char, signed char);
#endif
#pragma language=extended
/* SPM */
__intrinsic void __DataToR0ByteToSPMCR_SPM(unsigned char data,
unsigned char byte);
__intrinsic void __AddrToZByteToSPMCR_SPM(void __flash* addr,
unsigned char byte);
__intrinsic void __AddrToZWordToR1R0ByteToSPMCR_SPM(void __flash* addr,
unsigned short word,
unsigned char byte);
#define _SPM_LOCKBITS(Data) __DataToR0ByteToSPMCR_SPM((Data), 0x09)
#define _SPM_ERASE(Addr) __AddrToZByteToSPMCR_SPM((void __flash*)(Addr), 0x03)
#define _SPM_FILLTEMP(Addr,Data) \
__AddrToZWordToR1R0ByteToSPMCR_SPM((void __flash*)(Addr), (Data), 0x01)
#define _SPM_PAGEWRITE(Addr) __AddrToZByteToSPMCR_SPM((void __flash*)(Addr), (0x05))
__intrinsic unsigned char __AddrToZByteToSPMCR_LPM(void __flash* addr,
unsigned char byte);
#define _SPM_GET_LOCKBITS() __AddrToZByteToSPMCR_LPM((void __flash*)0x0001, 0x09)
#define _SPM_GET_FUSEBITS() __AddrToZByteToSPMCR_LPM((void __flash*)0x0000, 0x09)
#ifdef __HAS_ELPM__
__intrinsic void __AddrToZ24ByteToSPMCR_SPM(void __farflash* addr,
unsigned char byte);
__intrinsic void __AddrToZ24WordToR1R0ByteToSPMCR_SPM(void __farflash* addr,
unsigned short word,
unsigned char byte);
#define _SPM_24_ERASE(Addr) __AddrToZ24ByteToSPMCR_SPM((void __farflash*)(Addr), 0x03)
#define _SPM_24_FILLTEMP(Addr,Data) \
__AddrToZ24WordToR1R0ByteToSPMCR_SPM((void __farflash*)(Addr), (Data), 0x01)
#define _SPM_24_PAGEWRITE(Addr) __AddrToZ24ByteToSPMCR_SPM((void __farflash*)(Addr), (0x05))
__intrinsic unsigned char __AddrToZ24ByteToSPMCR_ELPM(void __farflash* addr,
unsigned char byte);
#endif
#pragma language=default
#endif //__HAS_ENHANCED_CORE__
/* PORT is a sfrb defined variable */
#define input(PORT) (PORT)
#define output(PORT,VAL) ((PORT)=(VAL))
#define input_block_dec(PORT,ADDRESS,COUNT)\
{ \
unsigned char i;\
unsigned char *addr=(ADDRESS);\
for(i=0;i<(COUNT);i++)\
*addr--=(PORT);\
}
#define input_block_inc(PORT,ADDRESS,COUNT)\
{ \
unsigned char i;\
unsigned char *addr=(ADDRESS);\
for(i=0;i<(COUNT);i++)\
*addr++=(PORT);\
}
#define output_block_dec(PORT,ADDRESS,COUNT)\
{ \
unsigned char i;\
unsigned char *addr=(ADDRESS);\
for(i=0;i<(COUNT);i++)\
(PORT)=*addr--;\
}
#define output_block_inc(PORT,ADDRESS,COUNT)\
{ \
unsigned char i;\
unsigned char *addr=(ADDRESS);\
for(i=0;i<(COUNT);i++)\
(PORT)=*addr++;\
}
/*--------------------------------------------------------------------------------------
一些常用的宏定义
--------------------------------------------------------------------------------------*/
#define __out_word(BaseName, value)\
{\
unsigned char _tH=(value) >> 8;\
unsigned char _tL=(value) & 0xFF;\
BaseName ## H = _tH;\
BaseName ## L = _tL;\
}
#define __out_word_atomic(BaseName, value)\
{\
unsigned char _t=__save_interrupt();\
__disable_interrupt();\
__out_word(BaseName,value);\
__restore_interrupt(_t);\
}
#define __in_word(BaseName, value)\
{\
(value) = (BaseName ## L);\
(value) |= (unsigned short)BaseName ## H << 8;\
}
#define __in_word_atomic(BaseName, value)\
{\
unsigned char _t=__save_interrupt();\
__disable_interrupt();\
__in_word(BaseName, value);\
__restore_interrupt(_t);\
}
#endif // “__INAVR_H”条件编译结束
#endif // “defined(_IAR_EW_AVR_)”条件编译结束
/*==========================================================================================
下面这三条指令是用于与上面三条区分编译系统为 C++ 或 C 的预处理指令相对应。用于指定
extern "C" 链接指示符作用域,此处的"}"与上面的"{"相对应,为链接指示符作用结束符。
==========================================================================================*/
#ifdef __cplusplus
}
#endif
#endif // “MCU_C_MACRO_DATA_DEFINE_H”条件编译结束
/*
********************************************************************************************
本头部文件到此结束
********************************************************************************************
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -